Определить среднюю оценку ученика и всего класса - C (СИ)
Формулировка задачи:
известны оценки каждого из 20-ти учеников по 12 предметам. Определить среднюю оценку ученика и всего класса. Вывести фамилии учеников чья средняя оценка выше средней по классу. Решить через структуры.
Решение задачи: «Определить среднюю оценку ученика и всего класса»
textual
Листинг программы
- #include <stdio.h>
- #define NUM 20 /* количество студентов */
- #define PREDM 12 /* количество предметов */
- typedef struct /* структура для ученика */
- {
- char name [16]; /*поле под имя ученика*/
- int ball[PREDM]; /*массив оценок*/
- int avr; /*поле под средний балл*/
- }Student;
- int main(void)
- {
- Student s[NUM]={0};
- int i,j; /*переменные-счетчики*/
- int cavr=0; /*переменная под среднюю класса*/
- for (i=0;i<NUM;i++) /*заполняем сведения*/
- {
- printf("%s","Please enter name:");
- fflush(stdin);
- gets(s[i].name);
- for (j=0;j<PREDM;j++)
- {
- printf("%s#%d:","Exam",j+1);
- scanf("%d",&s[i].ball[j]);
- s[i].avr+=s[i].ball[j];
- }
- s[i].avr/=PREDM; /*нашли среднее ученика*/
- cavr+=s[i].avr; /*добавили к общеклассной сумме*/
- }
- cavr/=NUM; /* нашли среднее класса */
- printf("Average of class: %d\n",cavr);
- for (i=0;i<NUM;i++) /* ищем успевающих */
- {
- if(s[i].avr > cavr)
- printf("Name: %s | Average: %d",s[i].name,s[i].avr);
- }
- return 0;
- }
Объяснение кода листинга программы
- Объявление переменных и структур — NUM (количество студентов) — PREDM (количество предметов) — Student (структура для ученика, содержит имя ученика и массив оценок)
- Создание массива структур Student — s[NUM]={0} (инициализация всех элементов массива структур Student нулями)
- Ввод данных
— for (i=0;i<NUM;i++) (счетчик для прохождения по всем студентам)
— printf(
%s
,Please enter name:
); (вывод приглашения для ввода имени студента) — fflush(stdin); (очистка буфера ввода) — gets(s[i].name); (ввод имени студента) — for (j=0;j<PREDM;j++) (счетчик для прохождения по всем предметам) — printf(%s#%d:
,Exam
,j+1); (вывод приглашения для ввода оценки по предмету) — scanf(%d
,&s[i].ball[j]); (ввод оценки по предмету) — s[i].avr+=s[i].ball[j]; (сумма всех оценок студента) - Вычисление среднего значения студента и класса — s[i].avr/=PREDM; (среднее значение студента) — cavr+=s[i].avr; (добавление среднего значения студента к общеклассной сумме) — cavr/=NUM; (среднее значение класса)
- Поиск студентов, успевающих больше среднего класса
— for (i=0;i<NUM;i++) (счетчик для прохождения по всем студентам)
— if(s[i].avr > cavr) (условие для вывода имени студента и его среднего значения, если они больше среднего класса)
— printf(
Name: %s | Average: %d
,s[i].name,s[i].avr); - Вывод результатов
— printf(
Average of class: %d\n
,cavr); (среднее значение класса) — for (i=0;i<NUM;i++) (счетчик для прохождения по всем студентам) — if(s[i].avr > cavr) (условие для вывода имени студента и его среднего значения, если они больше среднего класса) — printf(Name: %s | Average: %d
,s[i].name,s[i].avr); (вывод имени студента и его среднего значения, если они больше среднего класса) - Завершение программы — return 0; (завершение работы программы)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д