大鹅努力学编程 2022-12-14 18:24 采纳率: 85.7%
浏览 23
已结题

for循环中一直重复一个printf

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

#include<stdio.h>
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;i<m+n;i++)
        {
            printf("请输入第%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;j<i;j++)
                {
                    if(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("输入错误,请重新输入!"); 
}
  • 写回答

3条回答 默认 最新

  • a5156520 2022-12-14 18:40
    关注

    应该是因为判断学生学号是否重复的那个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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 创建了问题 12月14日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度