c语言的问题 a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;

a.定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;b.将文本文件的内容读入到结构体数组中;c.显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示... a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;
b. 将文本文件的内容读入到结构体数组中;
c. 显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);
d. 显示平均成绩、高于、低于和等于平均成绩的人数;
e. 显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;

发到我邮箱 305221826@qq.com 十分感谢
展开
 我来答
匿名用户
2011-06-18
展开全部
c语言的问题 a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域; 浏览次数:80次悬赏分:30 | 离问题结束还有 5 小时 | 提问者:zfpkf1990
a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;
b. 将文本文件的内容读入到结构体数组中;
c. 显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);
d. 显示平均成绩、高于、低于和等于平均成绩的人数;
e. 显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;

发到我邮箱 305221826@qq.com 十分感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
panweiy
推荐于2016-06-20 · TA获得超过1239个赞
知道大有可为答主
回答量:760
采纳率:0%
帮助的人:721万
展开全部
/*自己写 的,已经发多一份到你的邮箱!*/

#include "stdio.h"
#include "stdlib.h"
typedef struct stutttt
{ /*定义结构体*/
char name[50];
char num[50];
double score;
}stu;
stu student,s[1000];
int n;
double max;
double average;
char fileI[20] = "stuin.txt";
char fileO[20] = "stuout.txt";
int cmp( const void * a, const void * b )
{
if(((stu*)a)->score < ((stu*)b)->score) return 1;
else return -1;
}

void Sort()
{
qsort(s,n,sizeof(stu),cmp);
}

void Pnt()
{
int i;
for(i=0;i<n;i++)
{
printf("%s %s %.0lf\n",s[i].num,s[i].name,s[i].score);
}
printf("\n");
}

void Read()
{
n = 0;
FILE *fp;
if((fp=fopen(fileI,"r"))==NULL)
{ /*以只读打开文件*/
printf("cannot open file");
getchar();
exit(0);
}
while( fscanf(fp,"%s%s%lf\n",s[n].num,s[n].name,&s[n].score)!=EOF /* 从文件读*/ )
{
n++;
}
fclose(fp);
}

void Solve()
{
int i;
int h=0,e=0,l=0;
int m90_100 = 0,m80_89 = 0, m70_79 = 0,m60_69=0,m0_59=0;
char sss[81] = "";/*"--------------------------------------------------------------------------------";*/
FILE * fp;
if((fp=fopen(fileO,"w"))==NULL)
{ /*以只读打开文件*/
printf("cannot open file");
getchar();
exit(0);
}
average = 0;
max = 0;
for(i=0;i<n;i++)
{
if( s[i].score > max ) max = s[i].score;
average += s[i].score;
}
average /= n;
puts("最高分的人:");
fputs("最高分的人:\n",fp);
for(i=0;i<n;i++)
{
if( s[i].score < average ) l++;
else if( s[i].score > average ) h++;
else e++;

if( s[i].score>=90 ) m90_100++;
else if( s[i].score>=80 ) m80_89 ++;
else if( s[i].score>=70 ) m70_79 ++;
else if( s[i].score>=60 ) m60_69 ++;
else m0_59 ++;

if( s[i].score < max ) continue;
printf("%s %s %.0lf\n",s[i].num,s[i].name,s[i].score);
fprintf(fp,"%s %s %.0lf\n",s[i].num,s[i].name,s[i].score);
}
printf("\n");
fprintf(fp,"\n");
printf("平均成绩:%lf\n",average);
printf("高于平均 %d 人\n",h);
printf("等于平均 %d 人\n",e);
printf("低于平均 %d 人\n",l);
fprintf(fp,"平均成绩:%lf\n",average);
fprintf(fp,"高于平均 %d 人\n",h);
fprintf(fp,"等于平均 %d 人\n",e);
fprintf(fp,"低于平均 %d 人\n",l);
puts("");
fputs("",fp);
printf("优秀(90~100) %d 人数, 百分比;%%%lf\n",m90_100,100.0*m90_100/n);
printf("优秀(80~89 ) %d 人数, 百分比;%%%lf\n",m80_89 ,100.0*m80_89 /n);
printf("优秀(70~79 ) %d 人数, 百分比;%%%lf\n",m70_79 ,100.0*m70_79 /n);
printf("优秀(60~69 ) %d 人数, 百分比;%%%lf\n",m60_69 ,100.0*m60_69 /n);
printf("优秀(00~50 ) %d 人数, 百分比;%%%lf\n",m0_59 ,100.0*m0_59 /n);
fprintf(fp,"优秀(90~100) %d 人数, 百分比;%%%lf\n",m90_100,100.0*m90_100/n);
fprintf(fp,"优秀(80~89 ) %d 人数, 百分比;%%%lf\n",m80_89 ,100.0*m80_89 /n);
fprintf(fp,"优秀(70~79 ) %d 人数, 百分比;%%%lf\n",m70_79 ,100.0*m70_79 /n);
fprintf(fp,"优秀(60~69 ) %d 人数, 百分比;%%%lf\n",m60_69 ,100.0*m60_69 /n);
fprintf(fp,"优秀(00~50 ) %d 人数, 百分比;%%%lf\n",m0_59 ,100.0*m0_59 /n);
fclose(fp);
printf("\n结果已经写入文件%s\n",fileO);
}

main( )
{
int i;
Read();
Solve();
/* printf("来自文件的数据:\n");*/
/* Pnt();*/
/* Sort();*/
/* printf("按分数降序排序后的数据:\n");*/
/* Pnt();*/
getchar();
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JHY烟雨
2011-06-03 · TA获得超过246个赞
知道答主
回答量:170
采纳率:0%
帮助的人:0
展开全部
你这是做什?用excel表格做嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式