- UID
- 23742
注册时间2006-10-1
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
- /* 题目:有6个学生,每个学生有3门功课的成绩。要求输入(学号,姓名,3门功课的成绩),
- 并计算出平均成绩,所有数据按照平均成绩排序后存放在磁盘文件“学生.txt"中.
- */
- #include "stdafx.h"
- #include "stdio.h"
- #include "string.h"
- #include "stdlib.h"
- #define NUM 6
- #define FORMAT "%-8s%-8s%-8.2f%-8.2f%-8.2f%.2f\n"
- int _tmain(int argc, _TCHAR* argv[])
- {
-
- struct student /*定义一个结构体类型*/
- {
- char number[5];
- char name[20];
- float score[3];
- float average;
- };
- struct student stud[6];
- int i;
- for(i=0;i<NUM;i++)
- {
- printf("\n请输入第%d位学生的学号、姓名及各门功课的成绩!\n",i+1);
- Loop1:
- printf("学号:");
- scanf("%s",stud[i].number); /*输入学号,并判断学号必须为0~9的数字组成的四位的字符串*/
- if(strcmp("0000",stud[i].number)>0||strcmp("9999",stud[i].number)<0||strlen(stud[i].number)!=4)
- {
- printf("您输入的学号有误,请重新输入!\n");
- goto Loop1;
- }
-
- printf("姓名:"); /*输入姓名*/
- scanf("%s",stud[i].name);
- Loop2:
- printf("语文:");
- scanf("%f",&stud[i].score[0]); /*输入语文成绩*/
- if(stud[i].score[0]<0||stud[i].score[0]>100)
- {
- printf("您输入的成绩有误,请重新输入!\n");
- goto Loop2;
- }
- Loop3:
- printf("数学:"); /*输入数学成绩*/
- scanf("%f",&stud[i].score[1]);
- if(stud[i].score[1]<0||stud[i].score[1]>100)
- {
- printf("您输入的成绩有误,请重新输入!\n");
- goto Loop3;
- }
- Loop4:
- printf("英语:"); /*输入英语成绩*/
- scanf("%f",&stud[i].score[2]);
- if(stud[i].score[2]<0||stud[i].score[2]>100)
- {
- printf("您输入的成绩有误,请重新输入!\n");
- goto Loop4;
- }
- stud[i].average=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/3.0; /*求出3门功课的平均成绩*/
- printf("平均成绩:%.2f\n",stud[i].average);
- }
- char temp1[5];
- char temp[20];
- float temp2;
- FILE *fp;
-
- for(i=0;i<NUM-1;i++) /*根据平均成绩,按照冒泡法进行排序*/
- for(int j=0;j<NUM-1-i;j++)
- {
- if(stud[j].average>stud[j+1].average)
- {
- strcpy(temp1,stud[j].number);
- strcpy(stud[j].number,stud[j+1].number);
- strcpy(stud[j+1].number,temp1);
- strcpy(temp,stud[j].name);
- strcpy(stud[j].name,stud[j+1].name);
- strcpy(stud[j+1].name,temp);
- temp2=stud[j].score[0];
- stud[j].score[0]=stud[j+1].score[0];
- stud[j+1].score[0]=temp2;
- temp2=stud[j].score[1];
- stud[j].score[1]=stud[j+1].score[1];
- stud[j+1].score[1]=temp2;
- temp2=stud[j].score[2];
- stud[j].score[2]=stud[j+1].score[2];
- stud[j+1].score[2]=temp2;
- temp2=stud[j].average;
- stud[j].average=stud[j+1].average;
- stud[j+1].average=temp2;
- }
- }
- if((fp=fopen("F:\\学生.txt","w"))==NULL) /*打开一个"学生.txt"的文本文件*/
- {
- printf("can not open this file!\n");
- exit(0);
- }
- fprintf(fp,"按平均成绩排序后的学生成绩管理文件:\n");
- fprintf(fp,"\n学号 姓名 语文 数学 英语 平均成绩\n"); /*从“学生.txt”中输出所有数据*/
- for(i=0;i<NUM;i++)
- fprintf(fp,FORMAT,stud[i].number,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].average);
- fclose(fp); /*关闭"学生.txt"的文本文件*/
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|