各位帮我看看,为啥我输入三个数它会只有一个数出来
我在循环那部分的想法是:当i为0时,j也为0,然后进入判断,在判断那里j与一个相同时候跳出那个循环,之后加一,我给i也加一,就让他进行下一个之后break进行三个,如此下去把stu三个都输出
有几方面的原因:
1、输入的数据与代码的里scanf()位置不匹配,如果以图片里的输入的方式,可以把获取字符串姓名那行放到第二个位置;
2、输入数据的分隔符错误,因为scanf()里面没有逗号,然后scanf()默认以空格等字符分隔获取数据,所以输入的每行数据以空格间隔即可;
3、使用循环打印每行输入的数据,j的下标不能匹配到所有的i值,如果一定要使用循环的方式打印每行的数据,可以改为j从0开始,然后匹配到每行的i值后再一次打印每行的数据即可,如果只是单纯的想打印出每行的数据,直接使用下标i变量来打印结构的数据即可。
#include <stdio.h>
struct student{
int age;
char name[20];
int id;
};
struct student stu[3];
int main(void){
int i,j;
for(i=0;i<3;i++){
scanf("%d",&stu[i].age);
scanf("%s",stu[i].name); //根据图片的输入方式,把姓名放在第一个位置获取输入
scanf("%d",&stu[i].id);
// printf(" %d %d %s\n",stu[i].age,stu[i].id,stu[i].name);
// or
for(j=0;j<3;j++){ // 使用循环的方式来匹配i,匹配到i就打印,然后break退出
if(j==i){
printf("%d ",stu[i].age);
printf("%d ",stu[i].id);
printf("%s\n",stu[i].name);
break;
}
// else if((j+1)==i){
// printf("%d ",stu[i].age);
// printf("%d ",stu[i].id);
// printf("%s\n",stu[i].name);
// break;
// }else if((j+2)==i){
// printf("%d ",stu[i].age);
// printf("%d ",stu[i].id);
// printf("%s\n",stu[i].name);
// break;
// }
}
}
return 0;
}