2016-10-19 2 views
-4

Я хочу начать, сказав, что я не прошу ответа, однако мне хотелось бы получить некоторые советы о том, что я должен искать в синтаксисе. Это одно из моих первых заданий 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", &a1); 
    printf("\nEnter the score for Assignment 2: "); 
    scanf("%d", &a2); 
    printf("\nEnter the score for Assignment 3: "); 
    scanf("%d", &a3); 
    printf("\nEnter the score for Assignment 4: "); 
    scanf("%d", &a4); 
    printf("\nEnter the score for Assignment 5: "); 
    scanf("%d", &a5); 
    printf("\nEnter the score for Assignment 6: "); 
    scanf("%d", &a6);  
    printf("\nEnter the score for Assignment 7: "); 
    scanf("%d", &a7); 
    printf("\nEnter the score for Assignment 8: "); 
    scanf("%d", &a8); 
    printf("\nEnter the score for Assignment 9: "); 
    scanf("%d", &a9); 
    printf("\nEnter the score for Assignment 10: "); 
    scanf("%d", &a10); 
    printf("\nEnter the score for Assignment 11: "); 
    scanf("%d", &a11); 
    printf("\nEnter the score for Assignment 12: "); 
    scanf("%d", &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

Есть много вещей, которые можно найти в Интернете о циклах и массивах на C. Вы можете начать читать там. «C-уроки» и «Введение в C» также являются полезными поисковыми фразами. – Evert

+0

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он принадлежит http://codereview.stackexchange.com/ – John3136

+0

Используйте цикл for и используйте массив для хранения значений. Также не забудьте проверить возвращаемое значение sprintf в том случае, если вход не может быть преобразован в целое число. См. [This] (http://coliru.stacked-crooked.com/a/d51254d6db5cf117) –

ответ

1

Вы можете использовать for цикл для ввода числа значений:

int a, sum = 0; 
int n; 
printf("\nHow many grade items would you like to enter? "); 
scanf("%d", &n); 
int i; 
for (i = 1; i <= n; ++i) { 
    printf("\nEnter the score for Assignment %d: ", i); 
    scanf("%d", &a); 
    sum = sum + a; 
} 
printf("\nsum: %d", sum); 

Теперь, когда у вас есть сумму, которую вы в состоянии вычислить Средн. класс и т. д.

P.S. Обратите внимание, что такие вопросы, как «исправить мой код», не приветствуются. Я знаю, что сделать первые шаги в обучении непросто. Прочитайте некоторые базовые руководства, запустите с ними пример кода. И постарайтесь сделать ваши вопросы более конкретными.

+0

Спасибо, это очень помогает. Есть ли у вас какое-либо представление о хорошем все вокруг ресурсного сайта для C? – Ardowi

+0

@ Erdowi, я изучил C++ в университете, и книга Герберта Шильдта очень помогла мне. У него есть книги о С тоже. Также я использовал российскую онлайн-систему судей (informatics.mccme.ru) для практики. Посмотрите на такие же сайты, как Codechef или SPOJ – Pavel

+0

@ Erdowi, также отметьте мой ответ, если он решает вашу проблему. – Pavel

1

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

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

    per = (totalMarks)/(n*100)

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

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

+0

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

+0

Да, ты прав ... :) –

0

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

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

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

Смежные вопросы