c语言没错误运行出现烫,C程序运行出现烫烫烫,怎么办啊急死了,求高手改进...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

成绩处理系统

#include

#include

#include

struct single

{

char course[10];//结构体数组,课程名称

int score;

};

typedef struct single single;

struct Student

{

char num[20];

char name[20];

single s[4];//结构体数组的嵌套

int total;

double average;

};

typedef struct Student Student; void TotalAverage(Student *a,int n);

void Rank(Student *a,int n);

void Highscore(Student *a); int main()

{

int j=0,count=0;//count用来计算学生人数

char ch;

FILE *fp;

Student a[30]; printf("*************************欢迎进入学生成绩处理程序*************************\n");

fp=fopen("D:\\student.rec","wb");

if(!fp)

{

printf("file cannot be opened!");

exit(1);

}

printf("请输入四门课程名称:\n");

scanf("%8s%8s%8s%8s",&a[0].s[0].course,&a[0].s[1].course,&a[0].s[2].course,&a[0].s[3].course);//结构体数组的嵌套

printf("请输入学生信息:\n");

do

{

printf("下一个(y/n)?");

getchar();

ch=getchar();

getchar();

if(ch=='n')

break;

printf("学号:");

getchar();//一定要写

gets(a[j].num);

printf("姓名:");

gets(a[j].name);

printf("请输入四门课程成绩:\n");

scanf("%d%d%d%d",&a[j].s[0].score,&a[j].s[1].score,&a[j].s[2].score,&a[j].s[3].score);

count++;

fwrite(&a[j],sizeof(a[j]),1,fp);

j++;

}while(1);

printf("输入人数=%d\n",count);

TotalAverage(a,count);

Rank(a,count );

Highscore(a);

fclose(fp);

return 0;

}

void TotalAverage(Student *a,int n)//求每个学生的总分和平均分

{

int i;

printf("*************************学生基本信息如下*************************\n");

for(i=0;i

{

a[i].total=0;

a[i].average=0;

a[i].total=a[i].s[0].score+a[i].s[1].score+a[i].s[2].score+a[i].s[3].score;

a[i].average=(a[i].total)/4.0;

printf("%s %6s %d %d %d %d %.2f %d\n",a[i].num,a[i].name,a[i].s[0].score,a[i].s[1].score,a[i].s[2].score,a[i].s[3].score,a[i].average,a[i].total);

}

}

void Rank(Student *a,int n)//按学生总分由高到低排名

{

int i,k,index;

Student temp;

for(k=0;k

{

index=k;

for(i=k+1;i

if(a[i].total>a[index].total)

index=i;

if(index!=k)

{

temp=a[index];

a[index]=a[k];

a[k]=temp;

}

}

printf("********************学生成绩排名情况如下********************\n");

printf("学号 姓名 %6s%8s%8s%8s 平均分 总分\n",a[0].s[0].course,a[0].s[1].course,a[0].s[2].course,a[0].s[3].course);

for(i=0;i

printf("%s %6s %6d %d %d %d %.2f %d\n",a[i].num,a[i].name,a[i].s[0].score,a[i].s[1].score,a[i].s[2].score,a[i].s[3].score,a[i].average,a[i].total);

}

void Highscore(Student *a)//输出某门课程成绩在90分以上(含90分)且总分在前五名的学生

{

int i,k;

printf("请输入要查询的课程号i(0<=i<=3):");

scanf("%d",&i);

printf("********************查询结果如下********************\n");

for(k=0;k<5;k++)

{

if(a[k].s[i].score>=90)

printf("%s %6s %6d %d %d %d %.2f %d\n",a[i].num,a[i].name,a[i].s[0].score,a[i].s[1].score,a[i].s[2].score,a[i].s[3].score,a[i].average,a[i].total);

} }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值