Построение «системы оценок» школы с использованием управляющего оператора «switch»

Я новичок в своем путешествии по программированию. Я пытался создать систему, которая могла бы собирать цифры и показывать оценку по каждому отдельному числу. Я делаю это в Code::Blocks. Но система не работает. Кроме того, ввод каждого отдельного числа действительно отнимает очень много времени и его сложно выполнить. Я попробовал этот код ниже -->

#include<stdio.h>
 int main()
 
{ 
int num; 
printf("Enter any number : ");
scanf("%d",&num);

switch(a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
    printf("F");
    break;

case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
    printf("D");
    break;

case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 48:
case 49:
    printf("C");
    break;

case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 58:
case 59:
    print("B");
    break;

case 60:
case 61:
case 62:
case 63:
case 64:
case 65:
case 66:
case 67:
case 68:
case 69:
    printf("A-");
    break;

case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
    printf("A");
    break;

case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 97:
case 98:
case 99:
case 100:
    printf("A+");
    break;

default:
    printf("Not valid");
}

}

Я ожидал, что если я введу какое-либо число, система покажет мне оценку этого отдельного числа.

Этот код даже не должен компилироваться. Имя переменной — num, но вы использовали switch(a) вместо switch(num).

Barmar 03.09.2024 23:15

Это неподходящее использование для switch(). используйте if (num <= 32) { ... } else if (num <= 39) { ... } и так далее

Barmar 03.09.2024 23:16

Кроме приведенной выше опечатки, я не вижу причин, по которым код не работал бы. Что вы получаете вместо ожидаемого результата?

Barmar 03.09.2024 23:18

Также опечатка print("B"); вместо printf("B"). Код не компилируется, поэтому не может работать.

Weather Vane 03.09.2024 23:23

Когда вам дают число и просят мысленно перевести его в букву, собираетесь ли вы спросить себя: «Это число 1? Это 2? Это 3?...» и т. д.? Нет, вы спросите себя – в каком это диапазоне? Теперь вам следует перевести ту же логику в свою программу.

Eugene Sh. 03.09.2024 23:24

Вам нужно опубликовать фактический код, который вызывает у вас проблему, а не перепечатывать его, поскольку вы вносите новые ошибки и можете скрыть исходные ошибки.

Barmar 03.09.2024 23:24

Добро пожаловать в мир кодирования! Если вы обнаружите, что пример «очень трудоемкий и трудный для выполнения», то вас может ожидать разочарование, когда вы тратите часы работы после того, как свернули не туда :) В этом случае рассмотрите возможность использования гораздо более простого и быстрого if . .. else if.

Weather Vane 03.09.2024 23:29

@WeatherVane Настоящий программист написал бы сценарий для автоматического создания этого списка случаев: D

Eugene Sh. 04.09.2024 00:20

Вы забыли упомянуть несколько очень важных вещей. Что не работает? Если это ваш точный реальный код (а это определенно должно быть!), то вы даже не сможете запустить свою программу, потому что компилятор выведет некоторые сообщения об ошибках. В этом случае важно отобразить эти сообщения (точные и полные) в вашем вопросе. Если этот код представляет собой просто случайное изменение вашего кода (что делает его довольно бесполезным), но ваш реальный код компилируется нормально, тогда вам нужно сказать нам, что «Но система не работает». означает. Это рушится? Он сжигает ваш компьютер? Он просто завершается без какого-либо вывода?

Gerhardh 04.09.2024 07:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

отличный выбор C — отличный язык для изучения.

Прежде всего, в строке 79 есть ошибка. Вместо print следует использовать printf.

Во-вторых, число, полученное с помощью scanf, сохраняется в переменной num. Однако вы пытаетесь использовать оператор переключения для переменной A, которая не определена и не содержит вашего значения. Вместо этого вам следует использовать оператор switch с переменной num.

Чтобы получить более краткий код, попробуйте использовать оператор if следующим образом:

if (num > = 32) { printf("F"); } else if ...

Другие вопросы по теме

Переключатели С++ Возврат внутри/вне скобок? перерыв?
Я пытаюсь создать систему управления библиотекой и не понимаю, почему в случае переключения также есть цикл с оператором прерывания
Использование выражения переключения C# с вводом массива
Как воспроизвести поведение сопоставления шаблонов в операторе переключения C# 4? Функция «сопоставление шаблонов» недоступна в C# 4
Напишите метод, который принимает 3 целых числа в качестве параметров, возвращает true, если они равны, в противном случае возвращает false, не используя оператор if
Как я могу использовать измененную строку в операторе C# switch → case?
Существует ли прагматичное решение для удаления переключателей перечисления?
Что лучше в этом сценарии — цикл if else или случай в сценариях оболочки?
Немедленный перерыв после ввода с помощью переключателя или если
Как пропустить vars_prompt, если в import_playbook существуют переменные?