Как использовать gets в цикле - C (СИ)
Формулировка задачи:
Всем привет!
Подскажите, пожалуйста, в чем дело.Странно вводятся Фамилии и инициалы второго и последующих студентов.(на скриншоте видно)
Огромное спасибо
#include<stdio.h>
#include<strings.h>
struct STUDENT
{
char NAME[30];
int NUMBER;
int USP[5];//успеваемость
} mas[3];
int main (void)
{
int i,i_usp;
for(i=0;i<3;i++)
{
printf("Введите фамилию и инициалы\n");
gets(mas[i].NAME);
printf("Введите номер группы\n");
scanf("%d", &mas[i].NUMBER);
printf("Введите оценки через пробел и нажмите Enter\n");
for(i_usp=0;i_usp<5;i_usp++)
scanf("%d", &mas[i].USP[i_usp]);
}
for(i=0;i<3;i++)
{
printf("Фамилия и инициалы=%s Номер группы=%d ", mas[i].NAME, mas[i].NUMBER);
printf("Оценки=");
for(i_usp=0;i_usp<5;i_usp++)
printf("%d ",mas[i].USP[i_usp]);
printf("\n");
}
}Решение задачи: «Как использовать gets в цикле»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
struct STUDENT
{
char NAME[30];
int NUMBER;
int USP[5];
} mas[3];
int main(void)
{
int i,i_usp;
for(i=0;i<3;i++)
{
printf("Введите фамилию и инициалы\n");
gets(mas[i].NAME);
printf("Введите номер группы\n");
scanf("%d", &mas[i].NUMBER);
printf("Введите оценки через пробел и нажмите Enter\n");
for(i_usp=0;i_usp<5;i_usp++)
scanf("%d", &mas[i].USP[i_usp]);
getchar();
}
for(i=0;i<3;i++)
{
printf("Фамилия и инициалы=%s Номер группы=%d ", mas[i].NAME, mas[i].NUMBER);
printf("Оценки=");
for(i_usp=0;i_usp<5;i_usp++)
printf("%d ",mas[i].USP[i_usp]);
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
- Объявлены структура данных STUDENT и массив структур mas[3]
- Введен цикл for для обработки каждого элемента массива mas
- В каждой итерации цикла выводится запрос на ввод фамилии и инициалов, которые считываются функцией gets(mas[i].NAME)
- Выводится запрос на ввод номера группы, который считывается функцией scanf(
%d, &mas[i].NUMBER) - Выводится запрос на ввод оценок через пробел, которые считываются функцией scanf(
%d, &mas[i].USP[i_usp]) в цикле for - После окончания ввода вызовется функция getchar() для сброса буфера ввода
- После окончания цикла выводится информация о каждом студенте в формате фамилия и инициалы, номер группы, оценки
- Возвращается 0, чтобы указать, что программа успешно завершилась