for循环中一直重复一个printf

循环哪点出问题了?一直重复让输入第一个学生学号。

#include
int n=0;
struct student{
    char num[20]; //学号
    char name[20]; //姓名
    char class[20]; //班级
    int scores[3]; //该生在三门课程中所获得的积分
    int levels[3]; //三门课程的等级,与scores一一对应
};
struct student stu[100];
int main()
{
    void add_information(); 
    add_information();
    return 0;
}
void add_information()//新增信息 
{
    int judge,m=0,j,i;//judge判断输入信息是否重复,n是已经存在的学生数量 
    printf("请输入待添加学生信息人数:\n");
    scanf("%d",&m);
    if(m>0) 
    {
        for(i=n;iprintf("请输入第%d位学生学号:\n",i+1);
            scanf("%s",&stu[i].num);
            for(judge=1;judge=1;)
            {    
                judge=0;
                printf("请输入第%d位学生学号:\n",i+1);
                scanf("%s",&stu[i].num);
                for(j=0;jif(stu[i].num==stu[j].num)
                    {
                        printf("该学生已存在!请重新输入");
                        judge=1;
                        break;
                    }
                    else 
                    judge=0;
                }//判断输入是否重复 
            }
            printf("请输入姓名:");
            scanf(" %c",&stu[i].name);
            printf("请输入班级:");
            scanf(" %c",&stu[i].class);
            stu[i].scores[3]=stu[i].levels[3]=0;
            printf("新增学生信息成功!");
        }
    }
    else 
    printf("输入错误,请重新输入!"); 
}

应该是因为判断学生学号是否重复的那个for循环,judge=1 错了,改为judge==1, 然后其他地方修改下即可,修改如下:

#include<stdio.h>
#include <string.h>
int n=0;
struct student{
    char num[20]; //学号
    char name[20]; //姓名
    char cls[20]; //班级
    int scores[3]; //该生在三门课程中所获得的积分
    int levels[3]; //三门课程的等级,与scores一一对应
};
struct student stu[100];
int main()
{
    void add_information(); 
    add_information();
    
//    printf("输入的学生信息如下:\n");
//    for(int i=0;i<3;i++){
//        printf("%s,%s,%s\n",stu[i].num,stu[i].name,stu[i].cls);
//    }
//    
    return 0;
}
void add_information()//新增信息 
{
    int judge,m=0,j,i;//judge判断输入信息是否重复,n是已经存在的学生数量 
    printf("请输入待添加学生信息人数:\n");
    scanf("%d",&m);
    if(m>0) 
    {
        for(i=n;i<m+n;i++)
        {
            printf("请输入第%d位学生学号:",i+1);
            scanf("%s",&stu[i].num);
            for(judge=1;judge==1;)
            {    
                judge=0;
                
                for(j=0;j<i;j++)
                {
                    if(strcmp(stu[i].num,stu[j].num)==0)  // 因为学号是字符串,所以比较学号是否相等要用比较字符串是否相等的方式
                    {
                        printf("该学生已存在!请重新输入\n");
                        
                        judge=1;
                        break;
                    }
                    else 
                        judge=0;
                }//判断输入是否重复 
                
                if(judge==1){
                    printf("请输入第%d位学生学号:",i+1);
                    scanf("%s",&stu[i].num);
                }
            }
            printf("请输入姓名:");
            scanf("%s",stu[i].name);
            printf("请输入班级:");
            scanf("%s",stu[i].cls);
            for(int k=0;k<3;k++){
                stu[i].scores[i]=0;
                stu[i].levels[i]=0;    
            }
            
            printf("新增学生信息成功!\n");
        }
    }
    else 
    printf("输入错误,请重新输入!"); 
}

img

judge是循环变量,但循环里你强制judge=0,那不就一直输第1个了么