#c
#c
Вопрос:
Я хочу начать с того, что скажу, что я не прошу ответа, однако я хотел бы получить несколько советов о том, что я должен искать в синтаксисе. Это одно из моих первых заданий на C. Мой код имеет вывод, подобный показанному ниже.
How many grade items would you like to enter? 4
Enter the grade for grade item number 1: 67
Enter the grade for grade item number 2: 79.4
Enter the grade for grade item number 3: 90
Enter the grade for grade item number 4: 83.5
Average grade: 79.97%
Letter grade: C
Я пытаюсь выяснить, как заставить его реплицироваться для введенного числа, однако я застрял на приведенном ниже коде, который я написал для первого задания, и я понимаю, что циклы могли бы быть использованы, чтобы сделать это НАМНОГО короче, но у меня всего около недели опыта использования в C.
#include <stdio.h>
int main() {
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, sum, total = 1200;
float per;
printf("nEnter the score for Assignment 1: "); // Assignment statements
scanf("%d", amp;a1);
printf("nEnter the score for Assignment 2: ");
scanf("%d", amp;a2);
printf("nEnter the score for Assignment 3: ");
scanf("%d", amp;a3);
printf("nEnter the score for Assignment 4: ");
scanf("%d", amp;a4);
printf("nEnter the score for Assignment 5: ");
scanf("%d", amp;a5);
printf("nEnter the score for Assignment 6: ");
scanf("%d", amp;a6);
printf("nEnter the score for Assignment 7: ");
scanf("%d", amp;a7);
printf("nEnter the score for Assignment 8: ");
scanf("%d", amp;a8);
printf("nEnter the score for Assignment 9: ");
scanf("%d", amp;a9);
printf("nEnter the score for Assignment 10: ");
scanf("%d", amp;a10);
printf("nEnter the score for Assignment 11: ");
scanf("%d", amp;a11);
printf("nEnter the score for Assignment 12: ");
scanf("%d", amp;a12);
sum = a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12;
per = (sum * 100) / total;
printf("nPercentage : %f", per);
return (0);
}
Любой совет был бы отличным (или ссылка на то, что я должен просмотреть?), Я довольно запутался после простой инструкции печати / сканирования.
Комментарии:
1. В Интернете можно найти много информации о циклах for и массивах в C. Возможно, вы захотите начать чтение с этого. «Учебные пособия по C» и «Введение в C» также являются полезными поисковыми фразами.
2. Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что он относится к codereview.stackexchange.com
3. Используйте цикл for и используйте массив для хранения значений. Также не забудьте проверить возвращаемое значение sprintf на случай, если входные данные не могут быть преобразованы в целое число. Смотрите это
Ответ №1:
Вы можете использовать for
цикл для ввода нескольких значений:
int a, sum = 0;
int n;
printf("nHow many grade items would you like to enter? ");
scanf("%d", amp;n);
int i;
for (i = 1; i <= n; i) {
printf("nEnter the score for Assignment %d: ", i);
scanf("%d", amp;a);
sum = sum a;
}
printf("nsum: %d", sum);
Теперь, когда у вас есть сумма, вы можете рассчитать среднюю оценку и так далее.
P.S. Обратите внимание, что вопросы типа «исправьте мой код» здесь не приветствуются. Я знаю, что нелегко делать первые шаги в изучении C. Прочитайте несколько базовых руководств, запустите пример кода из них. И постарайтесь сделать ваши вопросы более конкретными.
Комментарии:
1. Спасибо, это действительно очень помогает. Есть ли у вас какое-либо представление о хорошем универсальном ресурсе для C?
2. @Erdowi, я изучал C в университете, и книга Герберта Шилдта мне очень помогла. У него тоже есть книги о C. Также я использовал российскую онлайн-систему оценки (informatics.mccme.ru ) для практики. Посмотрите на те же сайты, такие как Codechef или SPOJ
3. @Erdowi, также отметьте мой ответ, если он решит вашу проблему
4. Спасибо, я сделал! Скоро я задам другой вопрос. Я застрял на другом.
Ответ №2:
Итак, я помогаю вам, потому что я каким-то образом знаю это чувство новичка. Прежде всего, поток кода:
- Возьмите целое число, чтобы получить количество объектов (
n
) и массив (arr[]
) соответственно. - Теперь запустите
for
цикл, повторяющий все темы (0 to n-1
). - Теперь введите значения от пользователя и сохраните их в массиве (
arr[i] = marks
) и добавьте значения объектов одновременно в переменную (TotalMarks) для total marks(totalMarks = totalMarks marks)
. или - Напрямую добавьте объекты в переменную (
totalMarks
), если вы не хотите их печатать. -
Наконец, разделите общее количество баллов (
totalMarks
) на общую переменную как (n*100
) и умножьте его на 100 и сохраните в per.per = (totalMarks)/(n*100)
Это поток программы.
Надеюсь, это поможет.
Комментарии:
1. Массивы полезны, но в этом случае мы можем обойтись без массивов. Мы можем просто прочитать каждое значение и сразу добавить его к сумме.
Ответ №3:
Хорошей мерой было бы проверить типы данных (int, float и т.д.) Переменных, которым вы будете присваивать проверенные значения. Взгляните на «спецификаторы формата». Что касается требования показывать итоговую оценку, возможно, вы захотите узнать, как использовать условные операторы.
Видя, что у вас относительно низкий опыт, я бы пока не стал предлагать больше оптимизаций.
Хорошим ресурсом для начала работы с C было бы изучение C трудным способом, который бы решал все ваши текущие проблемы.