鱼C论坛

 找回密码
 立即注册
查看: 2877|回复: 6

求助,c语言题目

[复制链接]
发表于 2021-5-3 17:10:53 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 邪念波 于 2021-5-3 19:06 编辑

#include <stdio.h>
#include <string.h>
#define N 100                 /* 最大学生人数 */
#define M 20                 /* 最大课程数 */

main()
{
        int person,course;                 /* 真实人数,课程数 */
        char num[N][5];                 /* 存放学生学号(后五位) */
        char name[N][10];                 /* 存放学生姓名 */
        char sub[M][20];                 /* 存放科目名称 */
        int score[N][M];                 /* 存放学生成绩,score[i][j]为第(i+1)个学生第j门课的分数 */
        float aver[N];
        float total[N];                 /* 存放每位学生所有科目的平均分(aver)和总分(total) */

        char choice;                 /* 在菜单中选择的序号 */
        char temp_n[10];                 /* 用于查询时存放姓名和学号 */
        float temp_s;                 /* 用于交换平均分和总分 */
        int flag,i,j,k,h,t;                 /* 定义了一系列后续循环结构中要用到的变量 */
        flag=0;                 /* flag=0表示系统中还没有输入已有数据 */
        person=0;                 /* 学生人数初始化 */
       
/* 输入课程数 */
        do
        {
                printf("请输入课程数(课程数量小于%d):",M);
                scanf("%d",&course);
        }
        while(course<=0 || course>M);

/* 输入每门课的名称 */
        for(j=0;j<course;j++)
        {
                printf("请输入第%d门课的名称:",j+1);
                scanf("%s",&sub[j]);
        }
       
/* 菜单 */
        while(1)                 /* 当条件判断为"真"时循环 */
        {
         printf("\n");
         printf("1. 输入学生信息\n");
     printf("2. 查询学生信息\n");
     printf("3. 显示学生信息\n");
     printf("4. 排        序\n");
     printf("0. 退        出\n");
     printf("\n请输入你的选择:\n");
     fflush(stdin);
     scanf("%c",&choice);
     switch(choice)
         {
           case '1':                 /* 输入信息模块 */
           printf("\n请输入学生的总人数:");
           scanf("%d",&h);
           for(i=1,k=0;i<=h;i++,k++)
           {
            printf("请输入第%d个学生的姓名:",i);
                fflush(stdin);                 /* 清空缓存区 */
                scanf("%s",&name[k]);                 /* 储存学生姓名 */
                printf("请输入该学生的学号后五位:");
                fflush(stdin);
                scanf("%s",&num[k]);                 /* 储存学生学号 */
                printf("请输入该学生的各科成绩:\n");
                total[k]=0;                 /* 清空上一位同学的总分 */
                for(j=0;j<course;j++)
                {
                 printf("*%s:",sub[j]);                 /* 输入各科成绩 */
                 scanf("%d",&score[k][j]);
                 total[k]=total[k]+score[k][j];                 /* 计算总分 */
                }
                 aver[k]=total[k]/course;                 /* 计算平均分 */
           }
           person=person+h;                 /* 更新总人数 */
           flag=1;                 /* 标记已输入数据 */
           break;
                            
           case '2':                 /* 查询信息模块 */
           if(flag==0)
           {
                   printf("您还未输入学生信息!请先选择1输入学生信息。\n");
                   break;
              }
              printf("请输入所要查询的学生学号后五位:");
           scanf("%s",&temp_n);
           for(i=0;i<person;i++)
           {
                   if(strcmp(temp_n,num[i])==0)
            break;                 /* 匹配学号与学生 */
                   if(i>=person)
                   printf("查无此人,请退出菜单重新输入。\n");
            break;
           }
                /* 输出查询到的学生信息 */
                printf("\n学号       姓名");
                for(j=0;j<course;j++)
                {
                        printf("        %-s",sub[j]);
                }
                printf("        平均分        总分        ");
                printf("\n-----------------------------------------------------------------------------------\n");
                printf("%-10s%-10s",num[i],name[i]);
                for(j=0;j<course;j++)
                {
                        printf("      %d       ",score[i][j]);
                }
                printf("     %.1f        %.1f\n",aver[i],total[i]);
                break;
       
                case '3':                 /* 显示信息模块 */
                if(flag==0)
                {printf("\n您还未输入学生信息!请先选择1输入学生信息。\n");break;}
                printf("\n学号    姓名");
                for(i=0;i<course;i++)
                {
                         printf("       %s",sub[i]);
                 }
                for(i=0;i<person;i++)
                {
                        printf("\n%-8s%-8s",num[i],name[i]);
                        for(j=0;j<course;j++)
                        {
                                printf("%d        ",score[i][j]);
                        }
                        printf("%-8.1f%-8.1f\n",aver[i],total[i]);
                }
                        
                  case '4':                 /*排序模块 */
                if(flag==0)
                printf("\n您还未输入学生信息!请先选择1输入学生信息。\n");break;
                      for(i=0;i<person-1;i++)
                      {
                              k=i;
                              for(j=i+1;j<person;j++)
                              {
                                   if(strcmp(name[j],name[k])<0)
                                   k=j;                 /* 姓名数组最小的下标赋值给k用于交换 */
                       }
                              if(i==k) continue;
             
                          /* 交换姓名 */
                              strcpy(name[i],temp_n);
                           strcpy(name[k],name[i]);
                              strcpy(num[i],temp_n);
                              /* 交换分数 */
                           for(h=0;h<course;h++)
                           {
                                   temp_s=score[k][h];
                                   score[k][h]=score[i][h];
                                   score[i][h]=temp_s;
                           }
                          /* 交换总分和平均分 */
                        temp_s=total[k];
                        total[k]=total[i];
                        total[i]=temp_s;
                        temp_s=aver[k];
                        aver[k]=aver[i];
                        aver[i]=temp_s;
                      }
              }
}
mmexport1620033023844.png

评分

参与人数 1荣誉 +1 鱼币 +5 贡献 +1 收起 理由
王之叹息 + 1 + 5 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-3 17:58:24 | 显示全部楼层
查询哪里就看不到代码了。
图挡住了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-3 19:06:39 From FishC Mobile | 显示全部楼层
yuedong 发表于 2021-5-3 17:58
查询哪里就看不到代码了。
图挡住了

现在好了,大神帮忙看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-4 12:43:54 From FishC Mobile | 显示全部楼层
大佬帮帮忙嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 12:36:28 | 显示全部楼层
大佬的对话果然不一样,本来看这个没设置最佳答案想进来举报一波的,大佬我给你送贡献啊(疯狂暗示)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 12:38:12 | 显示全部楼层
大佬的问题真心看不懂,,不过应该没人了吧(疯狂暗示)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 18:36:47 | 显示全部楼层
不是 你想问啥  这不都有代码了吗  模块化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 14:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表