Member 13053749 Ответов: 1

Как создать программу на языке Си


Создайте программу, которая запросит у пользователя его итоговую оценку и отобразит эквивалентную оценку (см. таблицу ниже) и ее замечания.
Класс
Эквивалент
Замечания
от
к
нет.
письмо

0.0
59.4
0.00
Ф
???
59.5
64.4
1.00
Д
???
64.5
70.4
1.50
Д+
???
70.5
76.4
2.00
С
???
76.5
82.4
2.50
С+
???
82.5
88.4
3.00
Б
???
88.5
94.4
3.50
B+
???
94.5
100.0
4
Один
???

Что я уже пробовал:

#include< stdio.h>
главный() {

/* Эта программа запросит у пользователя его окончательную оценку и отобразит эквивалентную оценку (см. нижеприведенную таблицу) и свои замечания
Примечание: - Вы сами создаете свои собственные замечания. замечания должны вдохновлять их
Оценки
от 0.0 до 59.4 - это число (0.0), которое F в букве
от 59.5 до 64.4 - это число (1.00), которое равно D
от 64,5 до 70,4 - это число (1,50), которое равно D+
от 70.5 до 76.4 - это число (2.00), которое является C
от 76.5 до 82.4 - это число (2.50), которое равно C+
от 82.5 до 88.4 - это число (3.00), которое является B
от 88.5 до 94.4 - это число (3.50), которое равно B+
от 94,5 до 100,0 - это число (4), которое является
пример вывода
введите свой класс fina : 55
эквивалентная оценка-0.0 или F
ремарка= " приятного отдыха"
*/
int grade, equi_grade_num, Примечания;
оценка=от 0 до 100,0
char a, b, c, d, f, p, l, u;
a='A';
b='B';
c='C';
д=д';
f='F';
p= ' B+';
l= ' C+';
u= ' D+';

printf ("введите свою итоговую оценку: ");
scanf ("%d", & amp; grade);

printf ("ваша эквивалентная оценка - %d: или %c: ");
то scanf("%D" на "%С",&ампер;equi_grade_num,&амп;а&амп;б&амп;с,&амп;д&амп;Ф&амп;п&амп;л&амп;у);

if (grade==0 / / grade<=59.4) {
то scanf("%D" на "%С",&ампер;equi_grade_num,&амп;а&амп;б&амп;с,&амп;д&амп;Ф&амп;п&амп;л&амп;у);
printf ("не удалось, требуется немедленное улучшение");
}



геч();
}

1 Ответов

Рейтинг:
8

OriginalGriff

Это не сработает - как вы, наверное, заметили!
Один char переменная может содержать только одну "букву", поэтому такие вещи, как это:

p='B+';
l='C+';
u='D+';
Не будет компилироваться.
Вернитесь на стадию и подумайте еще раз: делайте это поэтапно.
Начните с получения оценки от пользователя и сохранения ее в соответствующей переменной-и int переменные содержат только целочисленные значения, поэтому они не работают с "59.4" или "88.5". Вам придется использовать другой тип данных для вашей оценки.

Когда у вас это работает (и под этим я подразумеваю компиляцию, запуск и убедитесь, что, когда пользователь вводит значение, вы можете прочитать его как число и распечатать обратно правильно, отвергая любые "плохие" входные данные, такие как "привет"), посмотрите на то, в какую "группу" попадает оценка. Это не сложно, это просто набор if...else if...else if...else заявления:
if (grade >= lowestGradeInFirstGroup && grade <= highestGradeInFirstGroup)
   {
   ... In first group
   }
else if (grade >= lowestGradeInSecondGroup && grade <= highestGradeInSecondGroup)
   {
   ... in second group
   }
...
else
   {
   ... in last group
   }
Когда у вас это работает (компиляция и запуск ОК), посмотрите на печать соответствующего кода класса и сообщения.

Делайте это поэтапно, и это будет довольно легко!
Но... это ваше домашнее задание, так что код полностью зависит от вас!


Member 13053749

но как я могу отобразить эквивалентную оценку входу оценки

OriginalGriff

е?

Member 13053749

например, как насчет этого : - float grade, equivalent_grade_num;
чар письмо;
int p, l, u;
p=(B+);
L=с+;
u=D+;
письмо={'А','Б','С','Д','Е'};

printf ("введите свою итоговую оценку: ");
scanf ("%f", & amp; grade);

equivalent_grade_num=0.0
if (grade==0.0 / / grade<=59.4)
printf("ваша эквивалентная оценка - %f или %c%d", eqivalent_grade_num, letter, p, l, u);

OriginalGriff

Лучше, но ... он не будет компилироваться!
Зачем вам вообще нужен "equivalent_grade_num"? Почему p, l, u? Почему "письмо"?

Рассматривали ли вы возможность использования фиксированной строки в каждом блоке if?

Member 13053749

как насчет этого

поплавок G;

printf ("\nEnter your final grade: ");
scanf ("%f",& G);

если (G & gt;=0.0 & & amp; G<=59.4){
printf ("\nYour equivalent grade is 0.0/F!!");
printf ("\n\nYou failed!!, это действительно очень плохая производительность");
}
остальное, если(г&ГТ;=59.5 &&усилителя; г&ЛТ;=64.4){
printf ("\nYour equivalent grade is 1.00/D!!");
функции printf("\N\пвы просто десятичное очка на выезде с ошибкой, необходимо применить обширную настойчивость!!!!!");
}
остальное, если (г&ГТ;=64.5 &&усилителя; г&ЛТ;=70.4){
printf ("\nYour equivalent grade is 1.50/D+!!");
printf ("\n\nYou ");
}
остальное, если(г&ГТ;=70.5 &&усилителя; г&ЛТ;=76.4){
printf ("\nYour equivalent grade is 2.00/C!!");
printf ("\n\nYou");
}
остальное, если(г&ГТ;=76.5 &&усилителя; г&ЛТ;=82.4){
printf ("\nYour equivalent grade is 2.50/C+!!");
printf ("\n\nYou ");
}
остальное, если(г&ГТ;=82.5 &&усилителя; г&ЛТ;=88.4){
printf ("\nYour equivalent grade is 3.00/B!!");
printf ("\n\nYou ");
}
остальное, если(г&ГТ;=88.5 &&усилителя; г&ЛТ;=94.4){
printf ("\nYour equivalent grade is 3.50/B+!!");
printf ("\n\nYou ");
}
остальное, если(г&ГТ;=94.5 &&усилителя; г&ЛТ;=100.0) {
printf ("\nYour equivalent grade is 4/A!!");
printf ("\n\nYou прошел успешно, поздравляю с вашим исключительным достижением!!");
}

OriginalGriff

Назовите его "grade" вместо " G "(это хорошая идея, чтобы привыкнуть к" правильным " именам переменных, это делает код намного более читаемым, особенно когда он становится больше, чем этот), но кроме этого и нескольких орфографических / грамматических ошибок в сообщениях, которые должны работать нормально!
Вы его проверяли?

Member 13053749

я исправлю свои грамматические ошибки .. но только один последний вопрос ... я проверил его, он работает, но когда я ввожу точные цифры, такие как 64,4 или 70,4, он не отображает сообщение, которое я не знаю почему

OriginalGriff

Что он делает?
Посмотрите, что происходит с отладчиком - я не могу дать вам инструкции, так как понятия не имею, какую систему вы используете для его написания и компиляции, но если вы загуглите "отладчик" и название приложения, которое вы используете, вы должны найти все необходимые инструкции.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что именно то, что вы ожидали, произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Member 13053749

поблагодарить у так много :)

OriginalGriff

Пожалуйста!