源程序代码.doc
《源程序代码.doc》由会员分享,可在线阅读,更多相关《源程序代码.doc(6页珍藏版)》请在冰点文库上搜索。
![源程序代码.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/b85a77f3-a5fe-4936-9a8d-cd8e5282917c/b85a77f3-a5fe-4936-9a8d-cd8e5282917c1.gif)
主要功能
可按学号、按科目计算最高分、最低分、平均分及总最高分、最低分、平均分
并可按照提示进行查询,查询时序号错误可提示重新输入。
程序代码
#definekm4//宏定义科目个数//
#include
#include
voidfun(floatarry[103][km+3],intn)//函数一计算每个同学、各科、总体的最高分、最低分及平均分//
{
inti,j;
for(i=0;i {
arry[i][km]=arry[i][km+1]=arry[i][0];
arry[i][km+2]=0;
for(j=0;j {
arry[i][km]=(arry[i][j]>arry[i][km])?
arry[i][j]:
arry[i][km];
arry[i][km+1]=(arry[i][j]arry[i][j]:
arry[i][km+1];
arry[i][km+2]+=arry[i][j]/km;
}
}
for(j=0;j {
arry[n][j]=arry[xs+1][j]=arry[0][j];
arry[n+2][j]=0;
for(i=0;i {
arry[n][j]=(arry[i][j]>arry[n][j])?
arry[i][j]:
arry[n][j];
arry[n+1][j]=(arry[i][j]arry[i][j]:
arry[n+1][j];
arry[n+2][j]+=arry[i][j]/n;
}
}
}
intcx(charstr1[xs][15],charstr2[15],intn)//函数二查询学号对应的行,学好错误重新输入//
{
inta,i,b=1;
loop:
for(i=0;i if(strcmp(str1[i],str2)==0)a=i,b=0;
if(b==1){printf("学号不存在!
请重新输入:
");scanf("%s",str2);gotoloop;}
return(a);
}
voidmain()//主函数//
{
floatcj[103][km+3];
inti,j,tc=0,xs;
charaj,xh[100][15],xh_[15];
printf("★☆★☆★☆★☆★☆★☆★→C程序设计〓综合实验←★☆★☆★☆★☆★☆★☆★\n");
printf("------班\n");
printf("◇***\n");
printf("---------------------------------------------------------------------------\n");
do
{printf("请输入学生个数<1-100>\n");
scanf("%d",&xs);}
while(xs<1||xs>100);
printf("请输入学号:
\n");
for(i=0;iscanf("%s",xh[i]);
printf("请依次输入每个学生的各科成绩:
\n");//输入成绩//
for(i=0;i for(j=0;j scanf("%f",&cj[i][j]);
printf("科目数学英语专业政治\n");//输出成绩//
for(i=0;i{
printf("%15s",xh[i]);
for(j=0;j printf("%8.2f",cj[i][j]);
printf("\n");
}
fun(cj,xs);//调用函数一//
while(tc==0)
{
tc=0;
printf("个人成绩信息查询请按0\n单科成绩信息查询请按1\n总最高、最低、平均分查询请按2\n退出查询请按3\n");
printf("---------------------------------------------------------------------------\n");
lp:
scanf("%c",&aj);
if(aj!
='0'&&aj!
='1'&&aj!
='2'&&aj!
='3')gotolp;
switch(aj)
{
case'3':
tc=1;printf("您已退出查询!
");break;//退出查询//
case'0':
//个人成绩信息查询//
printf("请输入学号和查询项目,用空格隔开\n");
printf("个人最高分———————0\n个人最低分———————1\n个人平均分———————2\n");
scanf("%s%d",xh_,&j);//输入学号和查询项目//
printf("学号%s查询项目%6d查询结果%8.2f\n",xh_,j,cj[cx(xh,xh_),xs][j+km]);
break;
case'1':
//单科成绩信息查询//
printf("请输入科目代码和查询项目代码,用空格隔开\n");
printf("数学——————0\n");
printf("英语——————1单科最高分———————0\n");
printf("专业——————2单科最低分———————1\n");
printf("政治——————3单科平均分———————2\n");
scanf("%d%d",&j,&i);//输入科目代码和查询项目代码//
printf("查询科目%6d查询项目%6d查询结果%8.2f\n",j,i,cj[i+xs][j]);
break;
case'2':
//总最高、最低、平均分查询//
printf("请输入查询项目代码:
\n");
printf("最高分———————0\n最低分———————1\n平均分———————2\n");
scanf("%d",&i);
printf("查询项目%6d查询结果%8.2f\n",i,cj[i+xs][i+km]); printf("-------------------------------------------------------------------------\n");
break;
}
}
}
流程图
函数一(求最高分、最低分、平均分)
voidfun(floatarray[xs+3][km+3],intn)
一、计算各行(学号)的最高分、最低分、平均分
定义i,j
i=0
最大、最小值赋初值array[i][km]=array[i][km+1]=array[i][0];
平均值赋初值array[i][km+2]=0;
外循环
j=0
求最大值array[i][km]=(array[i][j]>array[i][km])?
array[i][j]:
array[i][km];
内
循
环
求最小值array[i][km+1]=(array[i][j]array[i][j]:
array[i][km+1];
求平均值array[i][km+2]+=array[i][j]/km;
直到j>=km+3
直到i>=n
二、计算各列(科目)及总体的最高分、最低分、平均分
j=0
最大、最小值赋初值arry[n][j]=arry[n+1][j]=arry[0][j];
平均值赋初值arry[n+2][j]=0;
外循环
i=0
求最大值arry[n][j]=(arry[i][j]>arry[n][j])?
arry[i][j]:
arry[n][j];
内
循
环
求最小值arry[n+1][j]=(arry[i][j]arry[i][j]:
arry[n+1][j];
求平均值arry[n+2][j]+=arry[i][j]/n;
直到i>=n
直到j>=km+3
函数二(查询学号对应的行)
intcx(charstr1[xs][15],charstr2[15])
inta,i,b=1;
strcmp(str1[i],str2)==0?
i=0
外
循
环
Y
内
循
环
b=1?
a=i,b=0
Y
printf("学号不存在!
请重新输入:
");scanf("%s",str2);
直到i>=xs
直到b=0
return(a)
主函数
floatcj[103][km+3];inti,j,tc=0,xs;charaj,xh[100][15],xh_[15];
printf("请输入学号:
\n");
do
输入学生个数{printf("请输入学生个数<1-100>\n");
scanf("%d",&xs);}
while(xs<1||xs>100);
输入学号i=0
scanf("%s",xh[i])
循
环
直到i>=xs
输入成绩i=0
j=0
外
循
环
scanf("%f",&cj[i][j])
内
循
环
直到j>=km
直到i>=xs
输出成绩printf("科目数学英语专业政治\n");
i=0
输出学号printf("%15s",xh[i])
外
循
环
直到i>=xs
j=0
printf("%8.2f",cj[i][j]);
内循环
直到j>=km
printf("\n");
直到i>=xs
调用函数一fun(cj);
循环开始当tc(退出)≠0时结束tc=0
printf("个人成绩信息查询请按0单科成绩信息查询请按1\n
总最高、最低、平均分查询请按2\n退出查询请按3\n");
scanf("%c",&aj)
直
到
tc
!
=0
switch(aj)
case'0'
case'1'
case'2'
case'3'
printf("请输入学号和查询项目");
printf("最高分—0\n个人最低分——1\n个人平均分—2\n");
printf("请输入科目代码和查询项目\n");
printf("
数学—0英语——1专业—2政治——3单科最高分——0
单科最低分——1
单科平均分2\n");
printf("请输入查询项\n")
printf("
最高分——0最低分——1平均分——2
\n");
tc=1;
printf("您已退出查询!
")
scanf("%s%d",xh_,&j);
scanf("%d%d",&j,&i)
scanf("%d",&i);
printf("学号%s查询项目%6d
查询结果%8.2f\n"xh_,j,cj[cx(xh,xh_)]
[j+km]);
printf("查询科目%6d查询项目%6d查询结果%8.2f\n",j,i,cj[i+xs][j]);
printf("查询项目%6d查询结果%8.2f\n",i,cj[i+xs][i+km]);
break;
break;
break;
break;
直到tc!
=0