朱虎林实验单元二 程序模块化设计修改版.docx
《朱虎林实验单元二 程序模块化设计修改版.docx》由会员分享,可在线阅读,更多相关《朱虎林实验单元二 程序模块化设计修改版.docx(13页珍藏版)》请在冰豆网上搜索。
朱虎林实验单元二程序模块化设计修改版
《C语言程序设计》实验报告
专业:
应用化学班级:
应化15EIE学号:
201513280205学生姓名:
朱虎林
实验日期:
成绩:
指导老师:
实验单元二程序模块化设计
一、实验题目
实验六函数
二、实验目的
(1)掌握函数的定义和调用方法。
(2)掌握形参和实参之间的对应关系。
(3)利用函数实现相应的功能模块。
(4)熟悉函数的嵌套调用和递归调用的方法。
三、实验内容
1.编写一个函数,该函数的功能是判断一个整数是不是素数(素数是指除了1和它本身以外,不能被任何整数整除的数)。
在main函数中输入一个整数,调用该函数,判断该数是不是素数,若是则输出“yes”,否则输出“no”。
2.编写一个函数,用“冒泡法”对输入的10个数按由小到大的顺序排列。
3.编写一个函数,利用迭代法求X2−a=0的近似根,要求精度为10−5,迭代公式为:
Xn+1=(Xn+a/Xn)/2。
四、实验环境
1.硬件环境:
当前所有电脑硬件环境均支持。
2.软件环境:
VisualC++6.0
五、实验代码及结果(程序运行结果请以截屏图给出)
1.源程序代码:
#include
2.intmain()
3.{
4.inta,i;
5.intflag=1;
6.printf("请输入一个整数:
\n");
7.scanf("%d",&a);
8.if(a>1)
9.{
10.for(i=2;i11.{12.if(a%i==0)13.flag=-1;14.}15.if(flag==-1)16.{17.printf("no\n");18.}19.else20.printf("朱虎林yes\n");21.}22.else23.printf("no\n");24.}运行结果为:25.源程序代码:#include26.intmain()27.{28.inta[10];29.inti,j;30.for(i=0;i<10;i++)31.{32.scanf("%d",&a[i]);33.}34.for(i=0;i<10;i++)35.{36.for(j=0;j<9-i;j++)37.{38.if(a[j]>a[j+1])39.{40.intt=a[j];41.a[j]=a[j+1];42.a[j+1]=t;43.}44.}45.}46.printf("Aftersorting,thearrayis:");47.for(i=0;i<10;i++)48.{49.printf("%d",a[i]);50.}51.printf("朱虎林\n");52.return0;53.}运行结果为:54.源程序代码:#include55.#include56.main()57.{58.floatx,x1,a;59.scanf("%f",&a);60.x1=a;61.do62.{63.x=x1;64.x1=(x+a/x)/2;65.}66.while(fabs(x-x1)>1e-5);67.printf("朱虎林x=%.5f\n",x1);68.return0;69.}运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机《C语言程序设计》实验报告专业:应用化学班级:应化15EIE学号:201513280205学生姓名:朱虎林实验日期:成绩:指导老师:实验单元二程序模块化设计一、实验题目实验七指针二、实验目的(1)掌握指针的概念和定义方法。(2)掌握指针的操作符和指针运算。(3)掌握指针和数组的关系。三、实验内容1.有3个整型变量i、j、k,请编写程序,设置3个指针变量p1、p2、p3,分别指向i、j、k。然后通过指针变量使变量i、j、k的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。要求输出i、j、k的原值和新值。2.输入3个整数,按由小到大的顺序输出。要求定义函数用来交换两个变量的值,函数参数要使用指针变量。3.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,写三个函数:①输入10个数;②进行处理;③输出10个数。四、实验环境1.硬件环境:当前所有电脑硬件环境均支持。2.软件环境:VisualC++6.0五、实验代码及结果(程序运行结果请以截屏图给出)1.有三个整型变量i,j,k,请编写程序,设置3个指针变量p1,p2,p3,分别指向i,j,k。然后通过指针变量使i,j,k3个变量的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。要求输出i,j,k的原值和新值。源程序代码:#includeintmain(){inti=1,j=2,k=3,c;int*p1=&i,*p2=&j,*p3=&k;printf("未交换前:\n");printf("%4d,%4d,%4d",i,j,k);c=*p3;*p3=*p2;*p2=*p1;*p1=c;printf("\n");printf("朱虎林交换后:\n");printf("%4d,%4d,%4d",i,j,k);return0;}运行结果为:2.输入3个整数,按由小到大的顺序输出。源程序代码:#includevoidswap(int*i,int*j){intp;p=*i;*i=*j;*j=p;}intmain(){intx,y,z;int*pos1,*pos2,*pos3;printf("请输入三个整数:");scanf("%d,%d,%d",&x,&y,&z);pos1=&x;pos2=&y;pos3=&z;if(x>y)swap(pos1,pos2);if(x>z)swap(pos1,pos3);if(y>z)swap(pos2,pos3);printf("朱虎林201513280205三个整数的顺序为:%d,%d,%d",x,y,z);return0;}运行结果为:3.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,写三个函数:①输入10个数;②进行处理;③输出10个数。源程序代码#includevoidinp(int*a);voidcomp(int*a);voidout(inta[10]);intmain(){inta[10];inp(a);comp(a);out(a);}void\inp(int*a){inti;for(i=0;i<10;i++){scanf("%d",a+i);}}voidcomp(int*a){intmin,max;inti;intm;min=0;max=0;for(i=0;i<10;i++){if(a[i]{min=i;}if(a[i]>a[max]){max=i;}}m=a[0];a[0]=a[min];a[min]=m;m=a[9];a[9]=a[max];a[max]=m;}voidout(inta[10]){inti;for(i=0;i<10;i++){printf("朱虎林%d",a[i]);}}: 运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。《C语言程序设计》实验报告专业:应用化学班级:应化15EIE学号:201513280205学生姓名:朱虎林实验日期:成绩:指导老师:实验单元二程序模块化设计一、实验题目实验八结构体二、实验目的(1)掌握结构体数据类型的定义;(2)掌握结构体变量中成员的赋值及引用;(3)掌握结构体数组的定义及初始化;(4)掌握结构体数组元素中成员的赋值和引用。三、实验内容1.设计一个程序,用结构体实现复数的运算。定义复数结构体,包含复数的实部real,虚部img,输入两个复数,进行加、减、乘运算,最后输出结果。(复数乘法:(a+bi)(c+di)=(ac−bd)+(bc+ad)i)2.编写程序完成10门课程信息的管理。每门课程包括课程号、课程名、授课老师、学分、上课时间、上课教室,编写函数完成课程信息的输入、查询、输出。四、实验环境1.硬件环境:当前所有电脑硬件环境均支持。2.软件环境:VisualC++6.0五、实验代码及结果(程序运行结果请以截屏图给出)1.源程序代码:#include2.3.structComplex4.{5.doublereal,img;6.};7.intmain()8.{9.structComplexa,b;10.printf("依次输入两个复数a和b的实部和虚部:\n");11.scanf("%lf%lf%lf%lf",&a.real,&a.img,&b.real,&b.img);12.if(a.img+b.img>0)printf("a+b=%.1lf+%.1lfi\n",a.real+b.real,a.img+b.img);13.elseprintf("a+b=%.1lf%.1lfi\n",a.real+b.real,a.img+b.img);14.if(a.img-b.img>0)printf("a-b=%.1lf+%.1lfi\n",a.real-b.real,a.img-b.img);15.elseprintf("a-b=%.1lf%.1lfi\n",a.real-b.real,a.img-b.img);16.if(a.img*b.real+a.real*b.img>0)17.printf("a*b=%.1lf+%.1lfi\n",a.real*b.real-a.img*b.img,a.img*b.real+a.real*b.img);18.elseprintf("朱虎林a*b=%.1lf%.1lfi\n",a.real*b.real-a.img*b.img,a.img*b.real+a.real*b.img);19.return0;20.}运行结果为:21.源程序代码:#include22.#defineNUM1023.#defineSHOW324.25.structstudent26.{27.intid;28.charname[20];29.floatscore[3];30.floataverage;31.}32.info[NUM];33.34.voidgetdata()35.{36.inti;37.38.for(i=0;i39.{40.printf("pleaseinputthe%dstudentinfomationlike:\n",i+1);41.printf("idnamescore(1)score(2)score(3)\n");42.scanf("%d%s%f%f%f",&info[i].id,info[i].name,&info[i].score[0],&info[i].score[1],&info[i].score[2]);43.info[i].average=(info[i].score[0]+info[i].score[1]+info[i].score[2])/3.0;44.}45.return;46.}47.48.voidshowlist()49.{50.inti;51.52.printf("thestudentinformationlist:\n");53.printf("id\tname\tscore(1)\tscore(2)\tscore(3)\taverage\n");54.for(i=0;i55.{56.printf("%d\t%s\t%.2f",info[i].id,info[i].name,info[i].score[0]);57.printf("\t\t%.2f\t\t%.2f\t\t%.2f\n",info[i].score[1],info[i].score[2],info[i].average);58.}59.60.}61.62.voidshowtop()63.{64.inti,j;65.structstudenttop;66.67.for(i=0;i68.{69.for(j=0;j<(NUM-i);j++)70.{71.if(info[j].average>info[j+1].average)72.{73.top=info[j];74.info[j]=info[j+1];75.info[j+1]=top;76.}77.}78.}79.80.printf("thetopthreeaverageis:\n");81.printf("name\taverage\n");82.for(i=NUM;i>NUM-SHOW;i--)83.{84.printf("%s\t%.2f\n",info[i].name,info[i].average);85.}86.87.return;88.}89.90.intmain()91.{92.getdata();93.showlist();94.showtop();95.return0;96.}运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
11.{
12.if(a%i==0)
13.flag=-1;
14.}
15.if(flag==-1)
16.{
17.printf("no\n");
18.}
19.else
20.printf("朱虎林yes\n");
21.}
22.else
23.printf("no\n");
24.}
运行结果为:
25.源程序代码:
26.intmain()
27.{
28.inta[10];
29.inti,j;
30.for(i=0;i<10;i++)
31.{
32.scanf("%d",&a[i]);
33.}
34.for(i=0;i<10;i++)
35.{
36.for(j=0;j<9-i;j++)
37.{
38.if(a[j]>a[j+1])
39.{
40.intt=a[j];
41.a[j]=a[j+1];
42.a[j+1]=t;
43.}
44.}
45.}
46.printf("Aftersorting,thearrayis:
");
47.for(i=0;i<10;i++)
48.{
49.printf("%d",a[i]);
50.}
51.printf("朱虎林\n");
52.return0;
53.}
54.源程序代码:
55.#include
56.main()
57.{
58.floatx,x1,a;
59.scanf("%f",&a);
60.x1=a;
61.do
62.{
63.x=x1;
64.x1=(x+a/x)/2;
65.}
66.while(fabs(x-x1)>1e-5);
67.printf("朱虎林x=%.5f\n",x1);
68.return0;
69.}
六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)
要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机
实验七指针
(1)掌握指针的概念和定义方法。
(2)掌握指针的操作符和指针运算。
(3)掌握指针和数组的关系。
1.有3个整型变量i、j、k,请编写程序,设置3个指针变量p1、p2、p3,分别指向i、j、k。
然后通过指针变量使变量i、j、k的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。
要求输出i、j、k的原值和新值。
2.输入3个整数,按由小到大的顺序输出。
要求定义函数用来交换两个变量的值,函数参数要使用指针变量。
3.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,写三个函数:
①输入10个数;②进行处理;③输出10个数。
1.有三个整型变量i,j,k,请编写程序,设置3个指针变量p1,p2,p3,分别指向i,j,k。
然后通过指针变量使i,j,k3个变量的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。
要求输出i,j,k的原值和新值。
源程序代码:
intmain()
{
inti=1,j=2,k=3,c;
int*p1=&i,*p2=&j,*p3=&k;
printf("未交换前:
printf("%4d,%4d,%4d",i,j,k);
c=*p3;
*p3=*p2;
*p2=*p1;
*p1=c;
printf("\n");
printf("朱虎林交换后:
return0;
}
voidswap(int*i,int*j)
intp;
p=*i;
*i=*j;
*j=p;
intx,y,z;
int*pos1,*pos2,*pos3;
printf("请输入三个整数:
scanf("%d,%d,%d",&x,&y,&z);
pos1=&x;
pos2=&y;
pos3=&z;
if(x>y)swap(pos1,pos2);
if(x>z)swap(pos1,pos3);
if(y>z)swap(pos2,pos3);
printf("朱虎林201513280205三个整数的顺序为:
%d,%d,%d",x,y,z);
源程序代码#include
voidinp(int*a);
voidcomp(int*a);
voidout(inta[10]);
inta[10];
inp(a);
comp(a);
out(a);
void\inp(int*a)
inti;
for(i=0;i<10;i++)
scanf("%d",a+i);
voidcomp(int*a)
intmin,max;
intm;
min=0;
max=0;
if(a[i]{min=i;}if(a[i]>a[max]){max=i;}}m=a[0];a[0]=a[min];a[min]=m;m=a[9];a[9]=a[max];a[max]=m;}voidout(inta[10]){inti;for(i=0;i<10;i++){printf("朱虎林%d",a[i]);}}: 运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。《C语言程序设计》实验报告专业:应用化学班级:应化15EIE学号:201513280205学生姓名:朱虎林实验日期:成绩:指导老师:实验单元二程序模块化设计一、实验题目实验八结构体二、实验目的(1)掌握结构体数据类型的定义;(2)掌握结构体变量中成员的赋值及引用;(3)掌握结构体数组的定义及初始化;(4)掌握结构体数组元素中成员的赋值和引用。三、实验内容1.设计一个程序,用结构体实现复数的运算。定义复数结构体,包含复数的实部real,虚部img,输入两个复数,进行加、减、乘运算,最后输出结果。(复数乘法:(a+bi)(c+di)=(ac−bd)+(bc+ad)i)2.编写程序完成10门课程信息的管理。每门课程包括课程号、课程名、授课老师、学分、上课时间、上课教室,编写函数完成课程信息的输入、查询、输出。四、实验环境1.硬件环境:当前所有电脑硬件环境均支持。2.软件环境:VisualC++6.0五、实验代码及结果(程序运行结果请以截屏图给出)1.源程序代码:#include2.3.structComplex4.{5.doublereal,img;6.};7.intmain()8.{9.structComplexa,b;10.printf("依次输入两个复数a和b的实部和虚部:\n");11.scanf("%lf%lf%lf%lf",&a.real,&a.img,&b.real,&b.img);12.if(a.img+b.img>0)printf("a+b=%.1lf+%.1lfi\n",a.real+b.real,a.img+b.img);13.elseprintf("a+b=%.1lf%.1lfi\n",a.real+b.real,a.img+b.img);14.if(a.img-b.img>0)printf("a-b=%.1lf+%.1lfi\n",a.real-b.real,a.img-b.img);15.elseprintf("a-b=%.1lf%.1lfi\n",a.real-b.real,a.img-b.img);16.if(a.img*b.real+a.real*b.img>0)17.printf("a*b=%.1lf+%.1lfi\n",a.real*b.real-a.img*b.img,a.img*b.real+a.real*b.img);18.elseprintf("朱虎林a*b=%.1lf%.1lfi\n",a.real*b.real-a.img*b.img,a.img*b.real+a.real*b.img);19.return0;20.}运行结果为:21.源程序代码:#include22.#defineNUM1023.#defineSHOW324.25.structstudent26.{27.intid;28.charname[20];29.floatscore[3];30.floataverage;31.}32.info[NUM];33.34.voidgetdata()35.{36.inti;37.38.for(i=0;i39.{40.printf("pleaseinputthe%dstudentinfomationlike:\n",i+1);41.printf("idnamescore(1)score(2)score(3)\n");42.scanf("%d%s%f%f%f",&info[i].id,info[i].name,&info[i].score[0],&info[i].score[1],&info[i].score[2]);43.info[i].average=(info[i].score[0]+info[i].score[1]+info[i].score[2])/3.0;44.}45.return;46.}47.48.voidshowlist()49.{50.inti;51.52.printf("thestudentinformationlist:\n");53.printf("id\tname\tscore(1)\tscore(2)\tscore(3)\taverage\n");54.for(i=0;i55.{56.printf("%d\t%s\t%.2f",info[i].id,info[i].name,info[i].score[0]);57.printf("\t\t%.2f\t\t%.2f\t\t%.2f\n",info[i].score[1],info[i].score[2],info[i].average);58.}59.60.}61.62.voidshowtop()63.{64.inti,j;65.structstudenttop;66.67.for(i=0;i68.{69.for(j=0;j<(NUM-i);j++)70.{71.if(info[j].average>info[j+1].average)72.{73.top=info[j];74.info[j]=info[j+1];75.info[j+1]=top;76.}77.}78.}79.80.printf("thetopthreeaverageis:\n");81.printf("name\taverage\n");82.for(i=NUM;i>NUM-SHOW;i--)83.{84.printf("%s\t%.2f\n",info[i].name,info[i].average);85.}86.87.return;88.}89.90.intmain()91.{92.getdata();93.showlist();94.showtop();95.return0;96.}运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
min=i;
if(a[i]>a[max])
max=i;
m=a[0];
a[0]=a[min];
a[min]=m;
m=a[9];
a[9]=a[max];
a[max]=m;
voidout(inta[10])
printf("朱虎林%d",a[i]);
}:
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。
只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。
实验八结构体
(1)掌握结构体数据类型的定义;
(2)掌握结构体变量中成员的赋值及引用;
(3)掌握结构体数组的定义及初始化;
(4)掌握结构体数组元素中成员的赋值和引用。
1.设计一个程序,用结构体实现复数的运算。
定义复数结构体,包含复数的实部real,虚部img,输入两个复数,进行加、减、乘运算,最后输出结果。
(复数乘法:
(a+bi)(c+di)=(ac−bd)+(bc+ad)i)
2.编写程序完成10门课程信息的管理。
每门课程包括课程号、课程名、授课老师、学分、上课时间、上课教室,编写函数完成课程信息的输入、查询、输出。
2.
3.structComplex
4.{
5.doublereal,img;
6.};
7.intmain()
8.{
9.structComplexa,b;
10.printf("依次输入两个复数a和b的实部和虚部:
11.scanf("%lf%lf%lf%lf",&a.real,&a.img,&b.real,&b.img);
12.if(a.img+b.img>0)printf("a+b=%.1lf+%.1lfi\n",a.real+b.real,a.img+b.img);
13.elseprintf("a+b=%.1lf%.1lfi\n",a.real+b.real,a.img+b.img);
14.if(a.img-b.img>0)printf("a-b=%.1lf+%.1lfi\n",a.real-b.real,a.img-b.img);
15.elseprintf("a-b=%.1lf%.1lfi\n",a.real-b.real,a.img-b.img);
16.if(a.img*b.real+a.real*b.img>0)
17.printf("a*b=%.1lf+%.1lfi\n",a.real*b.real-a.img*b.img,a.img*b.real+a.real*b.img);
18.elseprintf("朱虎林a*b=%.1lf%.1lfi\n",a.real*b.real-a.img*b.img,a.img*b.real+a.real*b.img);
19.return0;
20.}
21.源程序代码:
22.#defineNUM10
23.#defineSHOW3
24.
25.structstudent
26.{
27.intid;
28.charname[20];
29.floatscore[3];
30.floataverage;
31.}
32.info[NUM];
33.
34.voidgetdata()
36.inti;
37.
38.for(i=0;i39.{40.printf("pleaseinputthe%dstudentinfomationlike:\n",i+1);41.printf("idnamescore(1)score(2)score(3)\n");42.scanf("%d%s%f%f%f",&info[i].id,info[i].name,&info[i].score[0],&info[i].score[1],&info[i].score[2]);43.info[i].average=(info[i].score[0]+info[i].score[1]+info[i].score[2])/3.0;44.}45.return;46.}47.48.voidshowlist()49.{50.inti;51.52.printf("thestudentinformationlist:\n");53.printf("id\tname\tscore(1)\tscore(2)\tscore(3)\taverage\n");54.for(i=0;i55.{56.printf("%d\t%s\t%.2f",info[i].id,info[i].name,info[i].score[0]);57.printf("\t\t%.2f\t\t%.2f\t\t%.2f\n",info[i].score[1],info[i].score[2],info[i].average);58.}59.60.}61.62.voidshowtop()63.{64.inti,j;65.structstudenttop;66.67.for(i=0;i68.{69.for(j=0;j<(NUM-i);j++)70.{71.if(info[j].average>info[j+1].average)72.{73.top=info[j];74.info[j]=info[j+1];75.info[j+1]=top;76.}77.}78.}79.80.printf("thetopthreeaverageis:\n");81.printf("name\taverage\n");82.for(i=NUM;i>NUM-SHOW;i--)83.{84.printf("%s\t%.2f\n",info[i].name,info[i].average);85.}86.87.return;88.}89.90.intmain()91.{92.getdata();93.showlist();94.showtop();95.return0;96.}运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
40.printf("pleaseinputthe%dstudentinfomationlike:
\n",i+1);
41.printf("idnamescore
(1)score
(2)score(3)\n");
42.scanf("%d%s%f%f%f",&info[i].id,info[i].name,&info[i].score[0],&info[i].score[1],&info[i].score[2]);
43.info[i].average=(info[i].score[0]+info[i].score[1]+info[i].score[2])/3.0;
45.return;
46.}
47.
48.voidshowlist()
49.{
50.inti;
51.
52.printf("thestudentinformationlist:
53.printf("id\tname\tscore
(1)\tscore
(2)\tscore(3)\taverage\n");
54.for(i=0;i55.{56.printf("%d\t%s\t%.2f",info[i].id,info[i].name,info[i].score[0]);57.printf("\t\t%.2f\t\t%.2f\t\t%.2f\n",info[i].score[1],info[i].score[2],info[i].average);58.}59.60.}61.62.voidshowtop()63.{64.inti,j;65.structstudenttop;66.67.for(i=0;i68.{69.for(j=0;j<(NUM-i);j++)70.{71.if(info[j].average>info[j+1].average)72.{73.top=info[j];74.info[j]=info[j+1];75.info[j+1]=top;76.}77.}78.}79.80.printf("thetopthreeaverageis:\n");81.printf("name\taverage\n");82.for(i=NUM;i>NUM-SHOW;i--)83.{84.printf("%s\t%.2f\n",info[i].name,info[i].average);85.}86.87.return;88.}89.90.intmain()91.{92.getdata();93.showlist();94.showtop();95.return0;96.}运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
55.{
56.printf("%d\t%s\t%.2f",info[i].id,info[i].name,info[i].score[0]);
57.printf("\t\t%.2f\t\t%.2f\t\t%.2f\n",info[i].score[1],info[i].score[2],info[i].average);
58.}
59.
60.}
61.
62.voidshowtop()
63.{
64.inti,j;
65.structstudenttop;
66.
67.for(i=0;i68.{69.for(j=0;j<(NUM-i);j++)70.{71.if(info[j].average>info[j+1].average)72.{73.top=info[j];74.info[j]=info[j+1];75.info[j+1]=top;76.}77.}78.}79.80.printf("thetopthreeaverageis:\n");81.printf("name\taverage\n");82.for(i=NUM;i>NUM-SHOW;i--)83.{84.printf("%s\t%.2f\n",info[i].name,info[i].average);85.}86.87.return;88.}89.90.intmain()91.{92.getdata();93.showlist();94.showtop();95.return0;96.}运行结果为:六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
68.{
69.for(j=0;j<(NUM-i);j++)
70.{
71.if(info[j].average>info[j+1].average)
72.{
73.top=info[j];
74.info[j]=info[j+1];
75.info[j+1]=top;
76.}
77.}
78.}
79.
80.printf("thetopthreeaverageis:
81.printf("name\taverage\n");
82.for(i=NUM;i>NUM-SHOW;i--)
83.{
84.printf("%s\t%.2f\n",info[i].name,info[i].average);
85.}
86.
87.return;
88.}
89.
90.intmain()
91.{
92.getdata();
93.showlist();
94.showtop();
95.return0;
96.}
完成程序的编写,决不意味着万事大吉。
你认为万无一失的程序,实际上机运行时可能不断出现麻烦。
如编译程序检测出一大堆错误。
有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。
开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。
程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。
有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1