我在做书上的练习要求为输入5个学生的基本信息,然后将学号最大的输入的屏幕端
这是我的代码
#include <stdio.h>
#include <string.h>
struct STU{
char name[200];
int age;
char sex;
char num[20];
};
void OutputSTU(struct STU stu[5]);
int main(void)
{
int i;
struct STU stu[5];
for(i=0;i<5;i++){
printf("请输入第%d个学生的信息:\n",i+1);
scanf("%s%d% c%s",stu[i].name,&stu[i].age,&stu[i].sex,&stu[i].num);
}
OutputSTU(stu);
return 0;
}
void OutputSTU(struct STU stu[5])
{
struct STU stumax=stu[0];//函数中借用一个暂时的stumax变量
int j;
for(j=1;j<5;++j){
if(strcmp(stumax.num,stu[j].num) < 0){
stumax=stu[j];
}
}
printf("姓名:%s\n年龄:%d\n性别:%c\n学号:%s\n",stumax.name,&stumax.age,stumax.sex,stumax.num);
return 0;
}
当我运行时出现了这样的问题,如图:
warning : 删除最后面的return 0; 第31行
你在main函数的for方法里面加一个while(getchar()!='\n')
清除一下缓冲
调试了一下你的程序,问题就出在scanf上,首先里面那个%和c之间有个空格不知道是不是你打错了。但其实scanf比较忌讳多种数据类型同时读取,因为终端录入的数据不调试的话你很难发现每一个%对应录入了什么,拿你现在的程序做个例子:
提一些修改建议,楼主可以尝试去做一下:
希望我的回答能帮到你,有什么不理解的地方可以再问:-)