一晚上都没有找出来的一个小错误,求大佬
本帖最后由 爱学习520 于 2020-6-30 09:08 编辑为什么我这个程序到 输入第二个学生学号 的时候直接跳过了,根本无法输入第二个学生的学号,如图 :
昨天到今天都没有找出来的错误,请求大佬
/*
* 有10个学生
* 每个学生的数据包括学号、姓名、3门课的成绩
* 从键盘输入10个学生数据
* 要求分别输出
* 3门课程的平均成绩
* 总分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)
*/
#include<stdio.h>
#include<stdlib.h>
struct student{
char sno;
char name;
int score;
};
main()
{
int i;
struct student * stu;
//申请2块学生类数据
for(i=0;i<2;i++)
stu=(struct student *)malloc(sizeof(struct student));
//输入数据
for(i=0;i<2;i++)
{
printf("--------请输入第%d个学生信息的学号、姓名、三科对应分数--------\n",i+1);
printf("请输入第%d个学生的学号:",i+1) ;
gets(stu->sno);//输入学号
printf("\n");
printf("请输入第%d个学生的姓名:",i+1) ;
gets(stu->name);//输入姓名
printf("\n");
printf("请输入第%d个学生的三科对应成绩:",i+1) ;
scanf("%d %d %d",&stu->score,&stu->score,&stu->score); //输入分别对应成绩
printf("\n");
}
} 试试:/*
* 有10个学生
* 每个学生的数据包括学号、姓名、3门课的成绩
* 从键盘输入10个学生数据
* 要求分别输出
* 3门课程的平均成绩
* 总分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)
*/
#include<stdio.h>
#include<stdlib.h>
struct student{
char sno;
char name;
int score;
};
main()
{
int i;
struct student * stu;
//申请2块学生类数据
for(i=0;i<2;i++)
stu=(struct student *)malloc(sizeof(struct student));
//输入数据
for(i=0;i<2;i++)
{
printf("--------请输入第%d个学生信息的学号、姓名、三科对应分数--------\n",i+1);
printf("请输入第%d个学生的学号:",i+1) ;
gets(stu->sno);//输入学号
printf("\n");
printf("请输入第%d个学生的姓名:",i+1) ;
gets(stu->name);//输入姓名
printf("\n");
printf("请输入第%d个学生的三科对应成绩:",i+1) ;
scanf("%d %d %d",&stu->score,&stu->score,&stu->score); //输入分别对应成绩
getchar();
printf("\n");
}
} 永恒的蓝色梦想 发表于 2020-6-30 09:31
试试:
为什么要在后面加一个getchar(),能解释一下吗 最后一行代码前加一句,情况下面代码
/*
* 有10个学生
* 每个学生的数据包括学号、姓名、3门课的成绩
* 从键盘输入10个学生数据
* 要求分别输出
* 3门课程的平均成绩
* 总分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)
*/
#include<stdio.h>
#include<stdlib.h>
struct student{
char sno;
char name;
int score;
};
main()
{
int i;
struct student * stu;
//申请2块学生类数据
for(i=0;i<2;i++)
stu=(struct student *)malloc(sizeof(struct student));
//输入数据
for(i=0;i<2;i++)
{
printf("--------请输入第%d个学生信息的学号、姓名、三科对应分数--------\n",i+1);
printf("请输入第%d个学生的学号:",i+1) ;
gets(stu->sno);//输入学号
printf("\n");
printf("请输入第%d个学生的姓名:",i+1) ;
gets(stu->name);//输入姓名
printf("\n");
printf("请输入第%d个学生的三科对应成绩:",i+1) ;
scanf("%d %d %d",&stu->score,&stu->score,&stu->score); //输入分别对应成绩
getchar();//加上这个函数 把输入成绩后的回车从缓冲区清除掉
printf("\n");
}
} 爱学习520 发表于 2020-6-30 09:33
为什么要在后面加一个getchar(),能解释一下吗
scanf 完了还留了一个回车,需要把这个回车清掉,否则 gets 只会从缓冲区读一个回车。
页:
[1]