Что я должен исправить в своем C-коде?

#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:

Итак, я помогаю вам, потому что я каким-то образом знаю это чувство новичка. Прежде всего, поток кода:

  1. Возьмите целое число, чтобы получить количество объектов ( n ) и массив ( arr[] ) соответственно.
  2. Теперь запустите for цикл, повторяющий все темы ( 0 to n-1 ).
  3. Теперь введите значения от пользователя и сохраните их в массиве ( arr[i] = marks ) и добавьте значения объектов одновременно в переменную (TotalMarks) для total marks (totalMarks = totalMarks marks) . или
  4. Напрямую добавьте объекты в переменную ( totalMarks ), если вы не хотите их печатать.
  5. Наконец, разделите общее количество баллов ( totalMarks ) на общую переменную как ( n*100 ) и умножьте его на 100 и сохраните в per.

    per = (totalMarks)/(n*100)

Это поток программы.

Надеюсь, это поможет.

Комментарии:

1. Массивы полезны, но в этом случае мы можем обойтись без массивов. Мы можем просто прочитать каждое значение и сразу добавить его к сумме.

Ответ №3:

Хорошей мерой было бы проверить типы данных (int, float и т.д.) Переменных, которым вы будете присваивать проверенные значения. Взгляните на «спецификаторы формата». Что касается требования показывать итоговую оценку, возможно, вы захотите узнать, как использовать условные операторы.

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

Хорошим ресурсом для начала работы с C было бы изучение C трудным способом, который бы решал все ваши текущие проблемы.