求助,c语言题目
本帖最后由 邪念波 于 2021-5-3 19:06 编辑#include <stdio.h>
#include <string.h>
#define N 100 /* 最大学生人数 */
#define M 20 /* 最大课程数 */
main()
{
int person,course; /* 真实人数,课程数 */
char num; /* 存放学生学号(后五位) */
char name; /* 存放学生姓名 */
char sub; /* 存放科目名称 */
int score; /* 存放学生成绩,score为第(i+1)个学生第j门课的分数 */
float aver;
float total; /* 存放每位学生所有科目的平均分(aver)和总分(total) */
char choice; /* 在菜单中选择的序号 */
char temp_n; /* 用于查询时存放姓名和学号 */
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);
}
/* 菜单 */
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); /* 储存学生姓名 */
printf("请输入该学生的学号后五位:");
fflush(stdin);
scanf("%s",&num); /* 储存学生学号 */
printf("请输入该学生的各科成绩:\n");
total=0; /* 清空上一位同学的总分 */
for(j=0;j<course;j++)
{
printf("*%s:",sub); /* 输入各科成绩 */
scanf("%d",&score);
total=total+score; /* 计算总分 */
}
aver=total/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)==0)
break; /* 匹配学号与学生 */
if(i>=person)
printf("查无此人,请退出菜单重新输入。\n");
break;
}
/* 输出查询到的学生信息 */
printf("\n学号 姓名");
for(j=0;j<course;j++)
{
printf(" %-s",sub);
}
printf(" 平均分 总分 ");
printf("\n-----------------------------------------------------------------------------------\n");
printf("%-10s%-10s",num,name);
for(j=0;j<course;j++)
{
printf(" %d ",score);
}
printf(" %.1f %.1f\n",aver,total);
break;
case '3': /* 显示信息模块 */
if(flag==0)
{printf("\n您还未输入学生信息!请先选择1输入学生信息。\n");break;}
printf("\n学号 姓名");
for(i=0;i<course;i++)
{
printf(" %s",sub);
}
for(i=0;i<person;i++)
{
printf("\n%-8s%-8s",num,name);
for(j=0;j<course;j++)
{
printf("%d ",score);
}
printf("%-8.1f%-8.1f\n",aver,total);
}
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,name)<0)
k=j; /* 姓名数组最小的下标赋值给k用于交换 */
}
if(i==k) continue;
/* 交换姓名 */
strcpy(name,temp_n);
strcpy(name,name);
strcpy(num,temp_n);
/* 交换分数 */
for(h=0;h<course;h++)
{
temp_s=score;
score=score;
score=temp_s;
}
/* 交换总分和平均分 */
temp_s=total;
total=total;
total=temp_s;
temp_s=aver;
aver=aver;
aver=temp_s;
}
}
} 查询哪里就看不到代码了。
图挡住了 yuedong 发表于 2021-5-3 17:58
查询哪里就看不到代码了。
图挡住了
现在好了,大神帮忙看看 大佬帮帮忙嘛 大佬的对话果然不一样,本来看这个没设置最佳答案想进来举报一波的{:10_256:},大佬我给你送贡献啊(疯狂暗示){:5_104:} 大佬的问题真心看不懂,{:5_104:},不过应该没人了吧(疯狂暗示) 不是 你想问啥这不都有代码了吗模块化
页:
[1]