C语言for循环问题

img


各位帮我看看,为啥我输入三个数它会只有一个数出来

img


我在循环那部分的想法是:当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;
}


img