经典重庆

标题: [原创]C语言_学习题套_第五套 [打印本页]

作者: 文木四水    时间: 2007-2-1 13:17
标题: [原创]C语言_学习题套_第五套
<p>题目:学生成绩统计<br/>语言和环境<br/>实现语言<br/>C语言<br/>B、环境要求<br/>&nbsp;&nbsp; Turbo C 或 Turbo C 3.0<br/>要求<br/>请编写一个C语言程序,接收5个学生的信息,获得各自的3门课程中的最高分和最低分,并保存文件中。<br/>程序的功能要求如下:<br/>从键盘输入5个学生的基本信息(学号、姓名)和3门课程的考试成绩。<br/>比较每个学生3门课程考试成绩,获得3门课程中的最高分和最低分。<br/>将每个学生的信息保存在文件StudentScore.txt中,其中包括最高分和最低分。该文件应保存在C程序的同一文件夹中。<br/>算法与数据结构说明<br/>定义一个学生信息结构student(学号、姓名、3门课程的考试成绩、以及这3门课程中的最高分和最低分)。声明一个该结构的数组变量,分别利用函数high()和low()对输入学生的成绩进行比较,获得最高分和最低分,通过WriteFile()函数把每个学生的信息写入文件StudentScore.txt中来保存。<br/>推荐实践步骤<br/>编写main函数<br/>1)声明一个结构数组变量,用来存放5个学生的基本信息。<br/>2)从键盘输入5个学生的基本信息(学号、姓名)和3门课程的考试成绩。请见图1。<br/>&nbsp;<br/>Please input the 1 student information:<br/>Student number&lt;101~999&gt;:101<br/>Student name:Harry<br/>The 1 subject score:100<br/>The 2 subject score:99<br/>The 3 subject score:89<br/>Please input the 2 student information:<br/>Student number&lt;101~999&gt;:&nbsp; <br/>&nbsp;输入数据过程中,要求实现对学生信息有效性验证。具体要求如下:<br/>学生学号由3位数字组成。如果输入的学号大于999 或者小于101,程序应该给出错误提示信息“The number is wrong.Please repeat now.”,要求重新输入。<br/>每门课程的考试成绩的取值范围是:0到100 之内的整数或带一位小数的值。若不在这个范围之内,屏幕应该给出提示信息“The score is worng,Please reqeat now.”。详见图2。<br/>&nbsp;<br/>Please input the 1 student information:<br/>Student number&lt;101~999&gt;:10<br/>The number is worng.Pease repeat now.<br/>Student number&lt;101~999&gt;:101<br/>Student name:Harry<br/>The 1 subject score&lt;0——100&gt;:99.5<br/>The 2 subject score&lt;0——100&gt;:102<br/>The score is wrong.Please repeat now.<br/>The 2 subject score&lt;0——100&gt;:100<br/>The 3 subject score&lt;0——100&gt;:-25<br/>The score is wrong.Please repeat now.<br/>The 3 subject score&lt;0——100&gt;:69.5<br/>Please input the 2 student information:<br/>Student number (100——99): &nbsp; </p><p>&nbsp;&nbsp;&nbsp;&nbsp; (3 ) 调用函数high() 和 low() 分别对输入学生的成绩进行比较,获得最高分和最低分。<br/>&nbsp;&nbsp;&nbsp;&nbsp; (4 )输出这5个学生的基本信息和3门课程的考试成绩,以及其中得最高分和最低分。<br/>输出结果清参加图3.<br/>&nbsp;<br/>The 1 Student information:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student – no:101<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student –name:Harry<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 1 subject :100.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 2 subject:99.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 3 subject:89.0</p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The highest score is 100.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The lowest score is 89.0<br/>The 2 Student information:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student – no:101<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student –name:Harry<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 1 subject :99.5<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 2 subject:100.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 3 subject:69.5</p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The highest score is 100.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The lowest score is 69.5<br/>The 3 Student information:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student – no:102<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student –name:john<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 1 subject :89.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 2 subject:92.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 3 subject:94.0</p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The highest score is 92.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The lowest score is 89.0&nbsp; <br/>&nbsp; (5) 通过WriteFile()函数把每个学生的信息写入文件StudentScore.txt中来保存。<br/>(6) 根据函数的返回值判断文件操作是否正常,并在屏幕上显示出相应得提示信息。<br/>要求:<br/>屏幕输出请参照图4。<br/>&nbsp;<br/>The 5 Student information:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student – no:104<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student –name:hit<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 1 subject : 90.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 2 subject:92.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The 3 subject:88.0</p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The highest score is 92.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The lowest score is 88.0<br/>The file successed.<br/>Prease any key to continue.&nbsp; <br/>2.编写high()子函数<br/>参数:<br/>&nbsp; 存放了学生3门课程的考试成绩的数组,float 类型。<br/>返回值:<br/>&nbsp; Float 类型,返回最高分数。<br/>功能:<br/>&nbsp;利用循环对存放了学生3 门课程的考试成绩的数组参数进行大小比较,返回3门课程的最高分。<br/>编写low()子函数<br/>参数:<br/>&nbsp; 存放了学生3门课程的考试成绩的数组,float 类型。<br/>返回值:<br/>&nbsp; Float 类型,返回最低分数。<br/>功能:<br/>&nbsp;利用循环对存放了学生3 门课程的考试成绩的数组参数进行大小比较,返回3门课程的最低分。<br/>编写writefile()子函数<br/>参数:<br/>存放5 个学生信息的结构数组,struct student * stu.<br/>返回值:<br/>&nbsp; 整型数。-1表示文件操作失败;0表示文件操作正常。<br/>功能:<br/>1)&nbsp;以写文本方式创建并打开文件。如有错误,2)&nbsp;返回-1。<br/>3)&nbsp;通过循环,4)&nbsp;把每个字符串写入文件“studentScore.txt”中。<br/>5)&nbsp;关闭文件。<br/>6)&nbsp;返回0。<br/>使用记事本打开StudentScore.txt文件,文件中保存的********如下图所示:<br/>&nbsp;<br/>101&nbsp;Harry&nbsp; 100.0&nbsp; 99.0&nbsp; 89.0&nbsp; 100.0&nbsp; 89.0<br/>102&nbsp;Mary&nbsp; 99.5&nbsp; 100.0&nbsp; 69.5&nbsp; 100.0&nbsp; 69.5&nbsp; <br/>103&nbsp;John&nbsp; 89.5&nbsp;&nbsp; 92.0&nbsp; 94.5&nbsp;&nbsp; 94.5&nbsp; 89.0<br/>104&nbsp;Macho 98.0&nbsp;&nbsp; 93.0&nbsp; 83.4&nbsp; 98.0&nbsp; 83.4<br/>105&nbsp;Hit&nbsp; 90.0&nbsp; 92.0&nbsp; 88.0&nbsp; 92.0&nbsp; 88.0&nbsp; </p><p>&nbsp;</p>
作者: 文木四水    时间: 2007-2-1 13:18
<p>解:</p><p>#include&lt;stdio.h&gt;<br/>#include&lt;string.h&gt;<br/>typedef struct<br/>{<br/>&nbsp;int id;//学号<br/>&nbsp;char name[20];//姓名<br/>&nbsp;int&nbsp; score1;//第一门课成绩<br/>&nbsp;int&nbsp; score2;<br/>&nbsp;int&nbsp; score3;<br/>}student;<br/>int high(int sc1,int sc2,int sc3);<br/>int low(int sc1,int cs2,int sc3);<br/>int WriteFile(student str[]);<br/>void main()<br/>{<br/>&nbsp;student str[5];<br/>&nbsp;int i,n=0,j=0,m;<br/>&nbsp;int temp=0;<br/>&nbsp;int high1,low1;<br/>&nbsp;printf("请输入5位学生的信息\n");<br/>&nbsp;for(i=0;i&lt;5;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;temp=0;<br/>&nbsp;&nbsp;do<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;temp=0;<br/>&nbsp;&nbsp;&nbsp;printf("请输入第%d位学生学号&lt;101--999&gt;:",i+1);<br/>&nbsp;&nbsp;&nbsp;scanf("%d",&amp;temp);<br/>&nbsp;&nbsp;&nbsp;if(temp&gt;=101&amp;&amp;temp&lt;=999)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;n=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;str.id=temp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("请正确输入学生学号!\n");<br/>&nbsp;&nbsp;&nbsp;&nbsp;n++;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}while(n!=0);<br/>&nbsp;&nbsp;printf("请输入第%d位学生姓名:",i+1);<br/>&nbsp;&nbsp;scanf("%s",str.name);<br/>&nbsp;&nbsp;//接受第一课成绩<br/>&nbsp;&nbsp;do<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;temp=0;<br/>&nbsp;&nbsp;&nbsp;printf("请输入第%d位学生的第一门课成绩&lt;0--100&gt;:",i+1);<br/>&nbsp;&nbsp;&nbsp;scanf("%d",&amp;temp);<br/>&nbsp;&nbsp;&nbsp;if(temp&gt;=0&amp;&amp;temp&lt;=100)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;str.score1=temp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("请正确输入学生成绩!\n");<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}while(!(temp&gt;=0&amp;&amp;temp&lt;=100));<br/>&nbsp;&nbsp;//第二门课成绩<br/>&nbsp;&nbsp;do<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;temp=0;<br/>&nbsp;&nbsp;&nbsp;printf("请输入第%d位学生的第二门课成绩&lt;0--100&gt;:",i+1);<br/>&nbsp;&nbsp;&nbsp;scanf("%d",&amp;temp);<br/>&nbsp;&nbsp;&nbsp;if(temp&gt;=0&amp;&amp;temp&lt;=100)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;str.score2 =temp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("请正确输入学生成绩!\n");<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}while(!(temp&gt;=0&amp;&amp;temp&lt;=100));<br/>&nbsp;&nbsp;//第三门课成绩<br/>&nbsp;&nbsp;do<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;temp=0;<br/>&nbsp;&nbsp;&nbsp;printf("请输入第%d位学生的第三门课成绩&lt;0--100&gt;:",i+1);<br/>&nbsp;&nbsp;&nbsp;scanf("%d",&amp;temp);<br/>&nbsp;&nbsp;&nbsp;if(temp&gt;=0&amp;&amp;temp&lt;=100)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;str.score3 =temp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("请正确输入学生成绩!\n");<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}while(!(temp&gt;=0&amp;&amp;temp&lt;=100));<br/>&nbsp;}<br/>&nbsp;for(j=0;j&lt;5;j++)<br/>&nbsp;{<br/>&nbsp;&nbsp;printf("\n第%d个学生的信息\n",j+1);<br/>&nbsp;&nbsp;printf("\t\t学生学号:%d\n",str[j].id );<br/>&nbsp;&nbsp;printf("\t\t学生姓名:%s\n",str[j].name );<br/>&nbsp;&nbsp;printf("\t\t学生第一门课成绩:%d\n",str[j].score1 );<br/>&nbsp;&nbsp;printf("\t\t学生第二门课成绩:%d\n",str[j].score2 );<br/>&nbsp;&nbsp;printf("\t\t学生第三门课成绩:%d\n\n\n",str[j].score3 );<br/>&nbsp;&nbsp;high1=high(str[j].score1,str[j].score2,str[j].score3 );//比较各位同学各课成绩的最高分<br/>&nbsp;&nbsp;printf("\t\t学生三门课成绩最高分:%d\n",high1);<br/>&nbsp;&nbsp;low1=low(str[j].score1,str[j].score2,str[j].score3);//比较各位同学各果成绩的最低分<br/>&nbsp;&nbsp;printf("\t\t学生三门课成绩最低分:%d\n\n\n",low1);<br/>&nbsp;}</p><p>&nbsp;m=WriteFile(str);<br/>&nbsp;if(m==-1)<br/>&nbsp;{<br/>&nbsp;&nbsp;printf("保存文件失败!\n");<br/>&nbsp;}<br/>&nbsp;else if(m==1)<br/>&nbsp;{<br/>&nbsp;&nbsp;printf("保存文件成功!\n");<br/>&nbsp;}<br/>&nbsp;getch();<br/>}<br/>int high(int sc1,int sc2,int sc3)//比较各位同学各课成绩的最高分<br/>{<br/>&nbsp;if(sc1&gt;sc2)<br/>&nbsp;{<br/>&nbsp;&nbsp;if(sc1&gt;sc3)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc1;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc3;<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;else<br/>&nbsp;{<br/>&nbsp;&nbsp;if(sc2&gt;sc3)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc2;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc3;<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>}<br/>int low(int sc1,int sc2,int sc3)//比较各位同学各果成绩的最低分<br/>{<br/>&nbsp;if(sc1&lt;sc2)<br/>&nbsp;{<br/>&nbsp;&nbsp;if(sc1&lt;sc3)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc1;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc3;<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;else<br/>&nbsp;{<br/>&nbsp;&nbsp;if(sc2&lt;sc3)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc2;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return sc3;<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>}<br/>int WriteFile(student str[])<br/>{<br/>&nbsp;FILE *fp1;<br/>&nbsp;int high1,low1,i,n;<br/>&nbsp;if((fp1=fopen("studentscore.txt","w"))==NULL)<br/>&nbsp;{<br/>&nbsp;&nbsp;printf("打开或创建文件出错!");<br/>&nbsp;&nbsp;n=-1;<br/>&nbsp;&nbsp;&nbsp;exit(1);&nbsp;<br/>&nbsp;}<br/>&nbsp;else<br/>&nbsp;{<br/>&nbsp;&nbsp;for(i=0;i&lt;5;i++)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;high1=high(str.score1,str.score2,str.score3 );<br/>&nbsp;&nbsp;&nbsp;low1=low(str.score1,str.score2,str.score3);<br/>&nbsp;&nbsp;&nbsp;fprintf(fp1,"%d",str.id);<br/>&nbsp;&nbsp;&nbsp;fputs("\t",fp1);<br/>&nbsp;&nbsp;&nbsp;fputs(str.name,fp1);<br/>&nbsp;&nbsp;&nbsp;fputs("\t",fp1);<br/>&nbsp;&nbsp;&nbsp;fprintf(fp1,"%d",str.score1 );<br/>&nbsp;&nbsp;&nbsp;fputs("\t",fp1);<br/>&nbsp;&nbsp;&nbsp;fprintf(fp1,"%d",str.score2 );<br/>&nbsp;&nbsp;&nbsp;fputs("\t",fp1);<br/>&nbsp;&nbsp;&nbsp;fprintf(fp1,"%d",str.score3 );<br/>&nbsp;&nbsp;&nbsp;fputs("\t",fp1);<br/>&nbsp;&nbsp;&nbsp;fputs("\n",fp1);<br/>&nbsp;&nbsp;&nbsp;n=1;<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;return n;<br/>&nbsp;fclose(fp1);<br/>}</p>




欢迎光临 经典重庆 (http://bbs.jdcq.net/) Powered by Discuz! X3.1