奋斗的涛 2023-12-09 19:37 采纳率: 0%
浏览 2

(标签-C语言|关键词-int)


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int i;
    while(1){
        system("cls");
        void LoadInformation();
    printf("================================\n");
    printf("=======***欢迎使用***=======\n"); 
    printf("===***学生成绩管理系统菜单***===\n");
    printf("===***1.录入学生信息***===\n");
    printf("===***2.打印学生信息***===\n");
    printf("===***3.修改学生信息***===\n");
    printf("===***4.查找学生信息***===\n");
    printf("===***5.删除学生信息***===\n");
    printf("===***6.排列学生信息***===\n");
    printf("===***7.生成学生信息文件***===\n");
    printf("===***8.读取学生信息文件===***\n");
    printf("===***9.退出菜单系统***===\n"); 
    printf("================================\n");
    printf("请选择:\n");
        printf("请选择<1-9>:\n");
        scanf("%d",&i);
        switch(i){                        //switch语句来选择 
            case 1:
             void Enterstudents();
            break;
            case 2:
             void Printstudents();
            break;
            case 3:
             void Changestudents();
            break;
            case 4:
             void Findstudents();
            break;
            case 5:
             void Deletestudents();
            break;
            case 6:
             void Arrangestudents();
            break;
            case 7:
             void SaveStudent();
             break;
             case 8:
             void LoadInformation();
             break;
            case 9:
            printf("Thanks for using, See you again!");
            exit(0);
            default: ;        
        }   
    } 
        return 0;
}
struct Student{                    //创建学生信息结构体 
    char ID[20];                   //学号
    char name[10];                 //姓名
    float score1;                  //高等数学
    float score2;                  //大学英语
    float score3;                  //大学物理
    float score4;                  //C语言程序设计
    float Allscore;                //总分
    float average;                 //平均分 
}students[100];
 int num=0;                        //计数器 
 void replace(struct Student *array,int i,int j){  //取代函数:学生i索引位置将被学生j索引位置取代信息 
     strcpy(array[i].ID,array[j].ID);
     strcpy(array[i].name,array[j].name);
     array[i].score1=array[j].score1;
     array[i].score2=array[j].score2;
     array[i].score3=array[j].score3;
     array[i].score4=array[j].score4;
     array[i].Allscore=array[j].Allscore;
     array[i].average=array[j].average;
 }
 int Students_SearchByID(char id[]){                //学生学号检索函数 
     int i;
     for(i=0;i<num;i++){
         if(strcmp(students[i].ID,id)==0){          //使用strcmp函数来比较学号是否相同 
             return i;                          //相同,返回i 
         } 
     }
      if(strcmp(students[i].ID,id)!=0)
     return -1;                           //不相同,返回-1  
 }
int Students_SearchByName(char name[]){             //学生姓名检索函数 
     int i;
     for(i=0;i<num;i++){
         if(strcmp(students[i].name,name)==0){         //使用strcmp函数来比较姓名是否相同 
             return i;
         }
     }
     if(strcmp(students[i].name,name)!=0) 
     return -1;
 }
 void Student_printf(int index){               //指针位置打印信息函数 
     int i;
     printf("学生学号,学生姓名,高等数学成绩,大学英语成绩,大学物理成绩,C语言程序设计成绩,总分,平均成绩");
     for(i=0;i<num;i++){
         printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[index].ID,students[index].name, 
            students[index].score1,students[index].score2,students[index].score3,students[index].score4,students[index].Allscore,students[index].average);
     }
 }
 void SaveStudent()
{
  FILE *fp = fopen("student-information.txt", "w+");
  fprintf(fp, "%d\n", num);
  for (int i = 0; i < num; i++)
  {
    fprintf(fp, "%s %s %f %f %f %f %f %f\n", students[i].ID, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].score4, students[i].Allscore, students[i].average);
  }
  fclose(fp);
  printf("学生信息文件已保存在本地\n");
}
void LoadInformation()
{
  FILE *fp = fopen("student-information.txt", "r");
  fscanf(fp, "%d", &num);
  for (int i = 0; i < num; i++)
  {
    fscanf(fp, "%s %s %f %f %f %f %f %f\n", students[i].ID, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3, &students[i].score4, &students[i].Allscore, &students[i].average);
  }
  fclose(fp);
  printf("系统已读取文件学生信息\n");
}
void Enterstudents(){                               //录入学生信息 
    while(1){
        printf("输入学号:");
        scanf("%s",&students[num].ID);
         getchar();
         printf("输入姓名:");
         scanf("%s",students[num].name);
         getchar();
         printf("输入成绩:");
         scanf("%f",&students[num].score1);
         getchar();
          printf("输入成绩:");
         scanf("%f",&students[num].score2);
         getchar();
         printf("输入成绩:");
         scanf("%f",&students[num].score3);
         getchar();
         printf("输入成绩:");
         scanf("%f",&students[num].score4);
         getchar();                        //逐步输入各项数据
         printf("总分为:"); 
         students[num].Allscore=students[num].score1+students[num].score2+students[num].score3+students[num].score4; 
         printf("平均成绩为:"); 
         students[num].average=(students[num].score1+students[num].score2+students[num].score3+students[num].score4)/4;
         if(Students_SearchByID(students[num].ID)==-1){
             num++;          //向下移动一位 
         }
         else
         printf("学号重复,输入数据错误!\n");
          
          printf("是否要继续?(y/n)");
          if(getchar()=='n'){
              break;
          }                                   
    }
}
void Printstudents(){                                           //打印学生信息 
    int i;
    printf("学生学号,学生姓名,高等数学成绩,大学英语成绩,大学物理成绩,C语言程序设计成绩,总分,平均成绩");
    for(i=0;i<num;i++){
        printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[num].ID,students[num].name, 
            students[num].score1,students[num].score2,students[num].score3,students[num].score4,students[num].Allscore,students[num].average);
    }
}
void  Changestudents(){                                      //修改学生成绩 
    while(1){
        char id[20];          //定义修改学号 
        int index;
        printf("请输入要修改的学号:");
        scanf("%s",&id);
        getchar();
        index=Students_SearchByID(id);        //调用id查询函数
        if(index==-1){
            printf("系统中无该学号!");
        }
        else{ 
            printf("请输入修改后的学号:");
            scanf("%s",&students[num].ID);
            getchar(); 
            printf("请输入修改后的姓名:");
            scanf("%s",&students[num].name);
            getchar(); 
            printf("请输入修改后的高等数学成绩:");
            scanf("%f",&students[num].score1);
            getchar(); 
            printf("请输入修改后的大学英语成绩:");
            scanf("%f",&students[num].score2);
            getchar();
            printf("请输入修改后的大学物理成绩:");
            scanf("%f",&students[num].score3);
            getchar();
            printf("请输入修改后的C语言程序设计成绩:");
            scanf("%f",&students[num].score4);
            getchar();
            printf("修改后总分为:");
            students[num].Allscore=students[num].score1+students[num].score2+students[num].score3+students[num].score4;
            printf("修改后的平均成绩为:");
            students[num].average=(students[num].score1+students[num].score2+students[num].score3+students[num].score4)/4;
            printf("是否要继续:<y/n>");
            if(getchar()=='n'){
                break;
            }
        }             
    }
} 
void  Findstudents(){                      //查询学生信息 
    while(1){
        char name[20];
        int index;
        printf("请输入您要查询的学生名字:");
        scanf("%s",&name);
        getchar();
        index=Students_SearchByName(name);
        if(index==-1){
            printf("查无此人!"); 
        }
        else{
            printf("您要查询的信息如下:");
            Student_printf(index);          //调用指针位置打印信息函数 
        }
        printf("是否要继续:<y/n>");
            if(getchar()=='n'){
                break;
            }
    }
}
void   Deletestudents(){              //删除学生信息函数 
    int i;
    while(1){
        char id[20];
        int index;
        printf("请您输入要删除的学生学号:");
        scanf("%s",&id);
        getchar();
        index=Students_SearchByID(id);
        if(index==-1){
            printf("无此人信息!");
        }
        else{
            printf("你要删除的学生信息如下:");
            Student_printf(index);
            printf("是否要继续:<y/n>");
            if(getchar()=='y'){
                for(i=index;i<num-1;i++){
                    replace(students,i,i+1);
                }
            }
            num--;
        }
        printf("是否要继续:<y/n>");
            if(getchar()=='n'){
                break;
            }
    }
}
void Arrangestudents(){                       //按学生的平均分成绩排序 
    int i ,j;
    //struct Student t;
    for(i=0;i<num;i++){
        students[num].average=(students[num].score1+students[num].score2+students[num].score3+students[num].score4)/4;
    }
    for(i=0;i<num;i++){
        for(j=1;j<num-i;j++){
            if(students[j-1].average<students[j].average){
                replace(students,num,j-1);
                replace(students,j-1,j);
                replace(students,j,num);
                //t=i;
                //i=j;
                //j=t;         冒泡排序 
            }
        }
    }
   printf("学生学号,学生姓名,高等数学成绩,大学英语成绩,大学物理成绩,C语言程序设计成绩,总分,平均成绩");
     int a;
     for(a=0;a<num;a++){
         printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[a].ID,students[a].name, 
            students[a].score1,students[a].score2,students[a].score3,students[a].score4,students[a].Allscore,students[a].average);
     }
} 

为什么无法运行switch语句中1~8的函数内容,只有9能运行,其他都会卡在页面不进去

img

img

img

  • 写回答

4条回答 默认 最新

  • @ChenPi 嵌入式领域新星创作者 2023-12-09 21:19
    关注

    img


    这几个地方错了呀,调用函数,不需要加前面的void

    
    
    ```c
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    struct Student{                    //创建学生信息结构体 
        char ID[20];                   //学号
        char name[10];                 //姓名
        float score1;                  //高等数学
        float score2;                  //大学英语
        float score3;                  //大学物理
        float score4;                  //C语言程序设计
        float Allscore;                //总分
        float average;                 //平均分 
    }students[100];
    
    int num=0;                        //计数器 
    
    void replace(struct Student *array,int i,int j){  //取代函数:学生i索引位置将被学生j索引位置取代信息 
        strcpy(array[i].ID,array[j].ID);
        strcpy(array[i].name,array[j].name);
        array[i].score1=array[j].score1;
        array[i].score2=array[j].score2;
        array[i].score3=array[j].score3;
        array[i].score4=array[j].score4;
        array[i].Allscore=array[j].Allscore;
        array[i].average=array[j].average;
    }
    
    int Students_SearchByID(char id[]){                //学生学号检索函数 
        int i;
        for(i=0;i<num;i++){
            if(strcmp(students[i].ID,id)==0){          //使用strcmp函数来比较学号是否相同 
                return i;                          //相同,返回i 
            } 
        }
        if(strcmp(students[i].ID,id)!=0)
            return -1;                           //不相同,返回-1  
    }
    int Students_SearchByName(char name[]){             //学生姓名检索函数 
        int i;
        for(i=0;i<num;i++){
            if(strcmp(students[i].name,name)==0){         //使用strcmp函数来比较姓名是否相同 
                return i;
            }
        }
        if(strcmp(students[i].name,name)!=0) 
            return -1;
    }
    void Student_printf(int index){               //指针位置打印信息函数 
        int i;
        printf("学生学号,学生姓名,高等数学成绩,大学英语成绩,大学物理成绩,C语言程序设计成绩,总分,平均成绩");
        for(i=0;i<num;i++){
            printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[index].ID,students[index].name, 
    students[index].score1,students[index].score2,students[index].score3,students[index].score4,students[index].Allscore,students[index].average);
        }
    }
    void SaveStudent()
    {
        FILE *fp = fopen("student-information.txt", "w+");
        fprintf(fp, "%d\n", num);
        for (int i = 0; i < num; i++)
        {
            fprintf(fp, "%s %s %f %f %f %f %f %f\n", students[i].ID, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].score4, students[i].Allscore, students[i].average);
        }
        fclose(fp);
        printf("学生信息文件已保存在本地\n");
    }
    void LoadInformation()
    {
        FILE *fp = fopen("student-information.txt", "r");
        fscanf(fp, "%d", &num);
        for (int i = 0; i < num; i++)
        {
            fscanf(fp, "%s %s %f %f %f %f %f %f\n", students[i].ID, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3, &students[i].score4, &students[i].Allscore, &students[i].average);
        }
        fclose(fp);
        printf("系统已读取文件学生信息\n");
    }
    void Enterstudents(){                               //录入学生信息 
        while(1){
            printf("输入学号:");
            scanf("%s",students[num].ID);
            getchar();
            printf("输入姓名:");
            scanf("%s",students[num].name);
            getchar();
            printf("输入成绩:");
            scanf("%f",&students[num].score1);
            getchar();
            printf("输入成绩:");
            scanf("%f",&students[num].score2);
            getchar();
            printf("输入成绩:");
            scanf("%f",&students[num].score3);
            getchar();
            printf("输入成绩:");
            scanf("%f",&students[num].score4);
            getchar();                        //逐步输入各项数据
            printf("总分为:"); 
            students[num].Allscore=students[num].score1+students[num].score2+students[num].score3+students[num].score4; 
            printf("平均成绩为:"); 
            students[num].average=(students[num].score1+students[num].score2+students[num].score3+students[num].score4)/4;
            if(Students_SearchByID(students[num].ID)==-1){
                num++;          //向下移动一位 
            }
            else
                printf("学号重复,输入数据错误!\n");
    
            printf("是否要继续?(y/n)");
            if(getchar()=='n'){
                break;
            }                                   
        }
    }
    void Printstudents(){                                           //打印学生信息 
        int i;
        printf("学生学号,学生姓名,高等数学成绩,大学英语成绩,大学物理成绩,C语言程序设计成绩,总分,平均成绩");
        for(i=0;i<num;i++){
            printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[num].ID,students[num].name, 
                    students[num].score1,students[num].score2,students[num].score3,students[num].score4,students[num].Allscore,students[num].average);
        }
    }
    void  Changestudents(){                                      //修改学生成绩 
        while(1){
            char id[20];          //定义修改学号 
            int index;
            printf("请输入要修改的学号:");
            scanf("%s",id);
            getchar();
            index=Students_SearchByID(id);        //调用id查询函数
            if(index==-1){
                printf("系统中无该学号!");
            }
            else{ 
                printf("请输入修改后的学号:");
                scanf("%s",students[num].ID);
                getchar(); 
                printf("请输入修改后的姓名:");
                scanf("%s",students[num].name);
                getchar(); 
                printf("请输入修改后的高等数学成绩:");
                scanf("%f",&students[num].score1);
                getchar(); 
                printf("请输入修改后的大学英语成绩:");
                scanf("%f",&students[num].score2);
                getchar();
                printf("请输入修改后的大学物理成绩:");
                scanf("%f",&students[num].score3);
                getchar();
                printf("请输入修改后的C语言程序设计成绩:");
                scanf("%f",&students[num].score4);
                getchar();
                printf("修改后总分为:");
                students[num].Allscore=students[num].score1+students[num].score2+students[num].score3+students[num].score4;
                printf("修改后的平均成绩为:");
                students[num].average=(students[num].score1+students[num].score2+students[num].score3+students[num].score4)/4;
                printf("是否要继续:<y/n>");
                if(getchar()=='n'){
                    break;
                }
            }             
        }
    } 
    void  Findstudents(){                      //查询学生信息 
        while(1){
            char name[20];
            int index;
            printf("请输入您要查询的学生名字:");
            scanf("%s",name);
            getchar();
            index=Students_SearchByName(name);
            if(index==-1){
                printf("查无此人!"); 
            }
            else{
                printf("您要查询的信息如下:");
                Student_printf(index);          //调用指针位置打印信息函数 
            }
            printf("是否要继续:<y/n>");
            if(getchar()=='n'){
                break;
            }
        }
    }
    void   Deletestudents(){              //删除学生信息函数 
        int i;
        while(1){
            char id[20];
            int index;
            printf("请您输入要删除的学生学号:");
            scanf("%s",id);
            getchar();
            index=Students_SearchByID(id);
            if(index==-1){
                printf("无此人信息!");
            }
            else{
                printf("你要删除的学生信息如下:");
                Student_printf(index);
                printf("是否要继续:<y/n>");
                if(getchar()=='y'){
                    for(i=index;i<num-1;i++){
                        replace(students,i,i+1);
                    }
                }
                num--;
            }
            printf("是否要继续:<y/n>");
            if(getchar()=='n'){
                break;
            }
        }
    }
    void Arrangestudents(){                       //按学生的平均分成绩排序 
        int i ,j;
        //struct Student t;
        for(i=0;i<num;i++){
            students[num].average=(students[num].score1+students[num].score2+students[num].score3+students[num].score4)/4;
        }
        for(i=0;i<num;i++){
            for(j=1;j<num-i;j++){
                if(students[j-1].average<students[j].average){
                    replace(students,num,j-1);
                    replace(students,j-1,j);
                    replace(students,j,num);
                    //t=i;
                    //i=j;
                    //j=t;         冒泡排序 
                }
            }
        }
        printf("学生学号,学生姓名,高等数学成绩,大学英语成绩,大学物理成绩,C语言程序设计成绩,总分,平均成绩");
        int a;
        for(a=0;a<num;a++){
            printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[a].ID,students[a].name, 
                    students[a].score1,students[a].score2,students[a].score3,students[a].score4,students[a].Allscore,students[a].average);
        }
    } 
    
    
    int main()
    {
        int i = 0;
        while(1){
            system("cls");
            void LoadInformation();
            printf("================================\n");
            printf("=======***欢迎使用***=======\n"); 
            printf("===***学生成绩管理系统菜单***===\n");
            printf("===***1.录入学生信息***===\n");
            printf("===***2.打印学生信息***===\n");
            printf("===***3.修改学生信息***===\n");
            printf("===***4.查找学生信息***===\n");
            printf("===***5.删除学生信息***===\n");
            printf("===***6.排列学生信息***===\n");
            printf("===***7.生成学生信息文件***===\n");
            printf("===***8.读取学生信息文件===***\n");
            printf("===***9.退出菜单系统***===\n"); 
            printf("================================\n");
            printf("请选择:\n");
            printf("请选择<1-9>:\n");
            scanf("%d",&i);
            switch(i){                        //switch语句来选择 
                case 1:
                    Enterstudents();
                    break;
                case 2:
                    Printstudents();
                    break;
                case 3:
                    Changestudents();
                    break;
                case 4:
                    Findstudents();
                    break;
                case 5:
                    Deletestudents();
                    break;
                case 6:
                    Arrangestudents();
                    break;
                case 7:
                    SaveStudent();
                    break;
                case 8:
                    LoadInformation();
                    break;
                case 9:
                    printf("Thanks for using, See you again!");
                    exit(0);
                default: ;        
            }   
        } 
        return 0;
    }
    
    
    
    

    ```

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月9日

悬赏问题

  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊