📄 23.c
字号:
#include<stdio.h>
struct student /*声明结构体*/
{
char num[15]; /*定义数组存放学生学号*/
char name[20]; /*定义数组存放名字*/
char sex; /*定义字符存放学生性别*/
int age; /*定义整形age存放年龄*/
float score[3]; /*定义数组存放三门成绩*/
float total; /*定义浮点变量tatal存放三门成绩总和*/
float average; /*定义average存放平均分*/
int rank; /*定义 rank存放排名*/
};
struct student stu[]={"3106005418","chenweiwu",'M',20,{100,100,100},0,0,0,
"3106005415","caichunnan",'M',20,{63,87,90},0,0,0,
"3106005416","chenkangqian",'M',19,{61,77,82},0,0,0,
"3106005417","chentingxian",'M',19,{64,87,71},0,0,0,
"3106005419","chenhaijun",'M',21,{98,64,64},0,0,0,
"3106005420","gaodingwen",'M',19,{75,82,82},0,0,0,
"3106005421","guanjunjie",'M',20,{78,63,66},0,0,0,
"3106005422","huangchaoyun",'M',19,{90,65,59},0,0,0,
"3106005423","huangzhenjiang",'M',19,{65,76,80},0,0,0,
"3106005424","lijianfei",'M',19,{69,81,79},0,0,0,
"3106005427","lixueyan",'M',22,{69,81,75},0,0,0,
"31060054230","mozeliang",'M',19,{69,81,72},0,0,0,
"3106005429","linxin",'M',19,{90,81,72},0,0,0,
"31060054231","liuchuanjing",'M',19,{90,59,72},0,0,0,
"31060054232","luoronghui",'M',19,{90,81,79},0,0,0,
"3106005433","panbingpei",'M',21,{90,91,72},0,0,0,
"31060054234","wanglinbin",'M',19,{90,81,82},0,0,0,
"3206005448","chenwenzhu",'w',19,{90,81,96},0,0,0,
"3206005449","gaochenfang",'w',19,{98,81,82},0,0,0,
"3206005450","lichaoxia",'w',19,{98,81,82},0,0,0,
"3206005449","zhangxiaomin",'w',19,{98,81,82},0,0,0,
"3106005425","liguangxi",'M',19,{69,81,78}};
/*对结构体赋初值*/
struct student stu_temp[]={"3106005418","chenweiwu",'M',20,{100,100,100},0,0,0,
"3106005415","caichunnan",'M',20,{63,87,90},0,0,0,
"3106005416","chenkangqian",'M',19,{61,77,82},0,0,0,
"3106005417","chentingxian",'M',19,{64,87,71},0,0,0,
"3106005419","chenhaijun",'M',21,{98,64,64},0,0,0,
"3106005420","gaodingwen",'M',19,{75,82,82},0,0,0,
"3106005421","guanjunjie",'M',20,{78,63,66},0,0,0,
"3106005422","huangchaoyun",'M',19,{90,65,59},0,0,0,
"3106005423","huangzhenjiang",'M',19,{65,76,80},0,0,0,
"3106005424","lijianfei",'M',19,{69,81,79},0,0,0,
"3106005427","lixueyan",'M',22,{69,81,75},0,0,0,
"31060054230","mozeliang",'M',19,{69,81,72},0,0,0,
"3106005429","linxin",'M',19,{90,81,72},0,0,0,
"31060054231","liuchuanjing",'M',19,{90,59,72},0,0,0,
"31060054232","luoronghui",'M',19,{90,81,79},0,0,0,
"3106005433","panbingpei",'M',21,{90,91,72},0,0,0,
"31060054234","wanglinbin",'M',19,{90,81,82},0,0,0,
"3206005448","chenwenzhu",'w',19,{90,81,96},0,0,0,
"3206005449","gaochenfang",'w',19,{98,81,82},0,0,0,
"3206005450","lichaoxia",'w',19,{98,81,82},0,0,0,
"3206005449","zhangxiaomin",'w',19,{98,81,82},0,0,0,
"3106005425","liguangxi",'M',19,{69,81,78}};
/*声明结构体temp为student类型并赋值,用于保存原始数据不致于实现计算和排序后原始数据顺序打乱*/
struct student t; /*声明结构体属于student 类型*/
void main()
{
void search(struct student stu[]); /*声明函数,下同*/
void calculate(struct student stu[]);
void sort(struct student stu[],int n);
void print(struct student stu_temp[]);
void ave(struct student stu[]);
textcolor(12) ;
textbackground(9);
clrscr();
function_choose(); /*调用主界面函数function choose*/
}
void sort(struct student stu[],int n) /*定义排序函数sort:运用选择法对数组中的元素按大到小进行排序*/
{
int i,j,k,m=1;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(stu[j].total>stu[k].total)k=j;
t=stu[k];stu[k]=stu[i];stu[i]=t;
}
for(i=0;i<20;i++){stu[i].rank=m;m++;}
}
void print(struct student stu_temp[]) /*函数print,实现第一个功能*/
{
int i,j;
int m;
printf("\nNumber Name Sex Age Score.E Score.M Score.C\n");
for(i=0;i<20;i++) /*循环结构,输出学生信息*/
{
printf("%-12s%-16s%-3c%-3d",stu_temp[i].num,stu_temp[i].name,stu_temp[i].sex,stu_temp[i].age);
for(j=0;j<3;j++)
printf("%6.1f ",stu_temp[i].score[j]);printf("\n");
}
printf("\n1 Return choose function.\n2 Exit.\n"); /*控制返回主届面或退出*/
scanf("%d",&m);if(m==1)function_choose(); /*调用主界面函数function choose*/
else if(m==2);
}
void calculate(struct student stu[]) /*定义计算函数calculate:计算成绩并排序*/
{
float sum;int m;
float average=0;
int i,j;int temp=1;
for(i=0;i<20;i++) /*循环结构,计算学生总分和平均分*/
{
sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j]; /*计算第i个学生的总分*/
stu[i].total=sum;
average=sum/3.0; /*计算第i个学生的平均分 */
stu[i].average=average;
temp+=1; /*temp统计需要排序的学生数,用于下面的sort函数*/
}
sort(stu,temp); /*调用排序函数sort*/
}
void ave(struct student stu[]) /*定义函数ave:实现计算并排序的功能*/
{
int m;
int i,j;
calculate(stu); /*调用计算函数calculate*/
printf("\nNumber Name Sex Age Score.E Score.M Score.C Total Average Rank\n");
for(i=0;i<20;i++)
{
printf("%-12s%-16s%-3c%-3d",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
for(j=0;j<3;j++)
printf("%6.1f ",stu[i].score[j]);
printf(" %6.1f %3.1f %d\n",stu[i].total,stu[i].average,stu[i].rank);
}
printf("\n1 Return choose function.\n2 Exit.\n"); /*控制返回主届面或退出*/
scanf("%d",&m);
if(m==1)function_choose(); /*调用主界面函数function choose*/
else if(m==2);
}
void search(struct student stu[])
{
int m;
int i,j;
char student_name[20];
calculate(stu); /*调用计算函数calculate*/
printf("input the name of who do you want to search? thank you!\n");
scanf("%s",student_name);
for(i=0;i<20;i++)
{
if(strcmp(student_name,stu[i].name)==0) /*调用strcmp函数实现查找功能*/
{
printf("\nNumber Name Sex Age Score.E Score.M Score.C Total Average Rank\n");
printf("%-12s%-16s%-3c%-3d",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
for(j=0;j<3;j++)
printf("%6.1f ",stu[i].score[j]);
printf(" %6.1f %3.1f %d\n",stu[i].total,stu[i].average,stu[i].rank);
printf("\n");
}
}
printf("\n1 Search again.\n2 Return choose function.\n3 Exit."); /*控制多次查找*/
scanf("%d",&m);if(m==1)search(stu);
else if(m==2)function_choose(); /*返回主界面*/
else if(m==3);
}
function_choose() /*定义主界面函数function choose:给用户选择功能*/
{
int temp;
printf("\t\tplease Choose one function.\n\n");
printf("\t1 Print all the student's mark.\n\t2 Calculate and Range.\n\t3 Search student.\n\t4 Exit.\n");
scanf("%d",&temp);
if(temp==1)print(stu_temp); /*选择第一个功能*/
if(temp==2)ave(stu); /*选择第二个功能*/
if(temp==3)search(stu); /*选择第三个功能*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -