设 计 报 告
三、程序的调试
调试过程中遇到fread函数使用错误,导致文件读取失败。后改用fscanf函数,解决了文件读取问题。
变量的运用出现了一些问题。最后把多个函数需要用到的需要保存原值的变量设为了全局变量。
四、课程设计总结与体会
通过这次课程设计,我对循环结构控制、函数调用、结构体、文件操作更加熟悉,对C语言程序设计有了更加深入的认识,锻炼了编写大型程序的能力,了解了大型程序设计的开发步骤。
C语言主体应是由函数调用构成的,应尽可能把相对独立的功能单独用一个函数来编写,这样可以提高程序的可读性,也能降低编写大型程序的难度,减少编程出错的可能性。
第 11 页 ,共 16 页
设 计 报 告
源代码: #include
int num; char name[11]; int score;
}student[100];
int i,score_max,sum,more_than,equal,less_than,A,B,C,D,E; float ave;
void max() { }
void save_max() {
第 12 页 ,共 16 页
void save_max();
score_max=student[0].score; for(i=0;i<100;i++)
if(student[i].score>score_max)
score_max=student[i].score;
printf(\取得最高成绩的学生的信息:\\n\for(i=0;i<100;i++)
if(student[i].score==score_max) { }
printf(\
printf(\save_max();
设 计 报 告
}
FILE *fp2;
fp2=fopen(\
fputs(\取得最高成绩的学生的信息:\\n\for(i=0;i<100;i++)
if(student[i].score==score_max) { }
fprintf(fp2,\
fclose(fp2);
void average() { }
void save_average() { }
第 13 页 ,共 16 页
void save_average(); sum=0;
for(i=0;i<100;i++)
sum+=student[i].score;
ave=sum/100.0;
printf(\平均成绩为:%f\\n\\n\save_average();
FILE *fp2;
fp2=fopen(\fputs(\平均成绩为:\fprintf(fp2,\fclose(fp2);
设 计 报 告
void average_compare() { }
void save_average_compare() { }
第 14 页 ,共 16 页
void save_average_compare(); more_than=0; equal=0; less_than=0; for(i=0;i<100;i++) { }
printf(\高于平均成绩的学生人数:%d\\n\printf(\等于于平均成绩的学生人数:%d\\n\printf(\低于平均成绩的学生人数:%d\\n\\n\save_average_compare();
if(student[i].score>ave)
more_than++;
else if(student[i].score==ave)
equal++;
else less_than++;
FILE *fp2;
fp2=fopen(\
fprintf(fp2,\高于平均成绩的学生人数:%d\\n\fprintf(fp2,\等于平均成绩的学生人数:%d\\n\fprintf(fp2,\低于平均成绩的学生人数:%d\\n\\n\fclose(fp2);
设 计 报 告
void rank() { }
void save_rank() {
void save_rank(); A=B=C=D=E=0; for(i=0;i<100;i++) { }
printf(\取得“优秀”的学生人数:%d\\t%.1f%%\\n\printf(\取得“良好”的学生人数:%d\\t%.1f%%\\n\printf(\取得“中等”的学生人数:%d\\t%.1f%%\\n\printf(\取得“及格”的学生人数:%d\\t%.1f%%\\n\printf(\取得“不及格”的学生人数:%d\\t%.1f%%\\n\save_rank();
if((student[i].score>=90)&&(student[i].score<=100))
A++;
else if((student[i].score>=80)&&(student[i].score<=89))
B++;
else if((student[i].score>=70)&&(student[i].score<=79))
C++;
else if((student[i].score>=60)&&(student[i].score<=69))
D++;
else E++;
FILE *fp2;
fp2=fopen(\
fprintf(fp2,\取得“优秀”的学生人数:%d\\t%.1f%%\\n\
第 15 页 ,共 16 页
设 计 报 告
}
fprintf(fp2,\取得“良好”的学生人数:%d\\t%.1f%%\\n\fprintf(fp2,\取得“中等”的学生人数:%d\\t%.1f%%\\n\fprintf(fp2,\取得“及格”的学生人数:%d\\t%.1f%%\\n\fprintf(fp2,\取得“不及格”的学生人数:%d\\t%.1f%%\\n\fclose(fp2);
void main() { }
FILE *fp1;
if((fp1=fopen(\{ }
for(i=0;i<100;i++)
fscanf(fp1,\printf(\exit(0);
max(); average();
average_compare(); rank(); fclose(fp1);
第 16 页 ,共 16 页