高级语言程序设计(C语言)实验指导书

上传人:gbs****77 文档编号:10548883 上传时间:2020-04-12 格式:DOC 页数:55 大小:374KB
返回 下载 相关 举报
高级语言程序设计(C语言)实验指导书_第1页
第1页 / 共55页
高级语言程序设计(C语言)实验指导书_第2页
第2页 / 共55页
高级语言程序设计(C语言)实验指导书_第3页
第3页 / 共55页
点击查看更多>>
资源描述
高级语言(C语言)程序设计实验指导书第一章前言一、C语言实验的目的学习程序设计课程应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果,不能满足于能看懂书上的程序。上机实验的目的,绝不仅仅是为了验证所编写的程序是否正确,而是为了:1加深对讲授内容的理解,尤其是一些语法规定。通过实验来掌握语法规则是行之有效的方法。2熟悉所用的操作系统和相应的上机环境。3学会上机调试程序,根据出错信息掌握修改程序的方法。4通过调试完善程序。二、C语言实验前的准备工作1了解所用的上机环境(包括编译系统)的性能和使用方法。2复习和掌握与本实验有关的教学内容。3准备好上机所需的程序,不要完全复制或抄写别人的程序去上机。4对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时注意。5准备好调试程序和运行程序所需的数据。三、C语言实验的步骤上机实验原则上应一人一组,独立实验(如果程序太大,也可以23人一组)。上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。尤其对“出错信息”,应善于分析判断,找出出错的行,然后检查该行或其上一行。上机实验一般应包括以下几个步骤:1双击桌面Visual C+快捷方式进入Visual C+,或通过执行“开始=程序=Microsoft Visual Studio 6.0= Microsoft Visual C+6.0”。2单击“文件”菜单的“新建”命令。3在打开的“新建”对话框中选择“文件”标签。4选择C+ Source File,选择文件保存位置,然后在文件输入栏中输入文件名。如图所示:5输入源程序。6编译程序:按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译编译连接运行若程序有错则找到出错行修改程序。7连接:若程序没有语法错误,则可按功能键或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。8运行程序:按组合键“Ctrl+F5”,或通过“编译”菜单中的执行命令,或通过工具栏中的“!”工具运行程序。四、写好C语言实验报告实验报告应包括以下内容:1实验目的。2实验内容。3程序清单。4运行结果。5对运行结果的分析,以及本次调试程序所取得的经验。五、C语言实验任务与时间安排实验序号实验内容拟实验时间实验形式1Visual C+ 6.0集成环境的使用2验证性2基本数据类型与输入输出2验证性3顺序结构程序设计2验证性4选择结构程序设计2验证性5循环结构程序设计2验证性6数组5设计性7函数5设计性9指针4设计性10结构体4设计性12文件2验证性第二章实验实验一 Visual C+ 6.0集成环境的使用1.1 实验目的1.掌握VC 6.0集成开发环境的使用方法。2.了解C语言程序从编辑、编译、连接到运行的全过程3.掌握C语言程序的结构特征与书写规则1.2 实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。1.3 实验准备1.阅读Visual C+ 6.0集成环境的相关材料。2.复习C语言程序基本结构与书写规则的有关内容。1.4 实验内容1. 上机调试(1)请输入以下程序,练习在Visual C+6.0环境下程序的编辑、编译、连接和运行。#includevoid main()printf(这是我的第一个程序n);(2)请说明以下程序的功能,然后上机验证。#includevoid main() int a,b,c; printf(Please input a,b:); scanf(%d%d,&a,&b); /*注意,输入数据时,数据间用空格分隔*/ c=a+b; printf(%d+%d=%dn,a,b,c);(3)请说明以下程序的功能,然后上机验证。#includefloat ave(float y1,float y2,float y3) float y; y=(y1+y2+y3)/3; return y;void main() float x,y,z,a; scanf(%f,%f,%f,&x,&y,&z); /* 注意,输入数据时,数据间用逗号分隔 */ a=ave(x,y,z); printf(%fn,a);2.实验思考(1)输入并运行下面的程序。#includevoid main() char c,h; int i,j; c=a; h=b; i=97; j=98; printf(%c%c%c%cn,c,h,i,j); printf(%d%d%d%dn,c,h,i,j);(2)运行下列程序并分析出现的信息提示。#includevoid main() int i=23,s; s=i+j; printf(s=%dn,s);实验二 基本数据类型与输入输出2.1 实验目的1.掌握C语言基本数据类型以及常量的表示方法、变量的定义与使用规则。2.掌握C语言的算束运算、逗号运算的运算规则与表达式的书写方法。3.掌握各种输入输出函数的使用方法。2.2 实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。2.3 实验准备1.复习数据类型和运算符的有关概念。2.复习各种类型常量的表示方法以及变量的概念与命名规则。3.复习输入输出函数各种格式符的含义与使用规则。2.4 实验内容1.上机调试(需作出必要的注释!)(1) 请说明以下程序的功能,然后上机验证。#include void main() printf(t*n); printf(tb*n); printf(tbb*n); (2) 请说明以下程序的功能,然后上机验证。# includevoid mian() int x=010,y=10,z=0x10; char c1=M,c2=x4d,c3=115,c4=77 ,c; printf(x=%o,y=%d,z=%xn,x,y,z); printf(x=%d,y=%d,z=%dn,x,y,z); printf(c1=%c,c2=%c,c3=%c,c4=%cn,c1,c2,c3,c4);printf(c1=%d,c2=%d,c3=%d,c4=%dn,c1,c2,c3,c4);c=c1+32;print(c=%c,c=%dn,c,);(3) 请说明以下程序的功能,然后上机验证。#include void main() int m=18,n=13; float a=27.6,b=5.8,x,; x=m/2+n*a/b+1/4; printf(%fn,x);(4)当输入是8.5,2.5,5,分析程序运行结果,并上机验证。#include void main() float x,y; Int z; scanf(%f,%f,%d,&x,&x,&z); y=x-z%2*(int)(x+17)%4/2; printf(x=%f,y=%f,z=%dn,x,y,z); 2.填空题(1) 以下程序输入3个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a,b,c的值。例如,输入a=10,b=20,c=30,交换后a=20,b=30,c=10。#include void main() int a,b,c,_; printf(Enter a,b,c: ); scanf(%d%d,_); _; printf(%d,%d,%d,a,b,c);(2) 以下程序输入一个大写字母,要求输出对应的小写字母。#include void main() char upperc,lowerc; upperc=_; lowerc=_; printf(小写字母);putchar(upperc); printf(大写字母);putchar(lowerc);putchar(/n);3.思考题(1)分析程序,写出运行结果,并上机验证#include void main() char c1=a,c2=b,c3=c,c4=101,c5=101; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(tb%c%c.c4,c5); c4=65535; c5=-1.2345; printf (%d%d,c4,c5); (2) 分析程序,写出运行结果,并上机验证#include void main() int i=3,j=5,k,l,m=19,n=-56; k=+i; l=j+; m=i+; n-=-j; printf(%d,%d,%d,%d,%d,%d,n,ij,k,l,m,n)(3) 分析程序,写出运行结果,并上机验证#include void main() float r,h,pi=3.1415926; float c0,s0,s,v; printf(input r,h(m):); scanf(%f,%f,&r,&h); c0=2*pi*r; s0=c0*h+2*s0; s=c0*h+2*s0; v=pi*r*r*h; printf(c0=%.2f(m)ns0=%.2fns(m20nv=%.2f(m3)n,c0,s0,s,v);实验三 顺序结构程序设计3.1 实验目的1.熟练掌握格式输入与格式输出函数与各种格式符的使用;2.掌握各类数据输入/输出的实现方法;3.学习完成简单的顺序结构程序设计。3.2 实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。3.3 实验准备1.复习格式输入、输出语句的使用。2.复习各类输入、输出语句。3.复习简单的顺序程序设计的基本方法。3.4 实验内容1.上机调试(需作出必要的注释!)(1)输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为area=s(s-a)(s-b)(s-c), 其中s=(a+b+c)/2include ain() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=10/2(a+b+c); area=srt(s(s-a)(s-b)(s-c); printf(a=%7.2f, b=%7.2f, c =%7.2f, s =%7.2fn,a,b,c,s); printf(area=%72fn,area); (2)求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac0。众所周知,一元二次方程式的根为x1=-b+b2-4ac2ax2=-b-b2-4ac2a,可以将上面的分式分为两项:p=-b2a ,q=b2-4ac2a,x1=p+q, x2=p-qinclude ain(); float a,b,c,disc,x1,x2,p,; scanf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a);q=sqrt(disc)/(2*a); x1=p+;x2=p-; printf(nnx1=%5.2fnx2=%5.2fn,x1,x2); 2.填空题(1)已有如下定义和输入语句,若要求a,b,c1,c2的值分别为5、6、A和B,当从第一列开始输入数据时,正确的数据输入方式是 _ (表示回车)。int a,b;char c1,c2;scanf(%d%c%d%c,&a,&c1,&b,&c2);A) 5 A 6 B B) 5 A6B C) 5A6B D) 5A6 B(2)以下说法正确的是_。A)输入项可以为一个实型常量,如scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入,如scanf(“a=%d,b=%d”);C)当输入实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D)当输入数据时,必须指明地址,如scanf(“%f”,&f);E)可以采用不同的格式符,实现对一个实型数据以八进制或十六进制形式输入/输出。F)整型数据不能使用%f或%lf格式符。(3)若a是int型变量,则表达式(a=5*6,a*3),a+8的值是 _ 。(4)若有定义:int b=7; float a=2.5,c=4.7; 则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为_。 (5)输出长整型数据使用格式符_,输出无符号的整数用格式符_ ,以指数形式输出单精实数用格式符_。(6)下面程序运行时输入:10 11,输出_。#includevoid main()int a,b; scanf(%o%x,&a,&b); printf(a=%d,b=%dn,a,b); (7)下面程序段执行时,怎样输入才能让a=10,b=20 ?_ int a,b;scanf(a=%d,b=%d,&a,&b);(8)若a和b均为int变量,以下语句的功能是_。a+=b;b=a-b;a-=b;(9)在scanf函数调用中,可以在格式字符和%之间加一星号*,它的作用是_。(10)a+、+a、a=a+1都能实现使变量a的值增1,与之等效的表达式还有_3.编程题下面程序功能:键盘输入一个三位数,输出逆序后的数。例如,输入236,输出632。程序中有多处错误,改正后在机器上调试通过。#includevoid main()int x,int y; int a,b,c; a=x/100; b=x/10%10; c=x%10; printf(Please input a num:); scanf(%d,&x); y=100c+10b+a; printf(y=%dn,y);4.思考题如果输入的数据可以是任意大小的数,并不限制一定是一个三位数,怎样才能将该数逆序并输出?实验四 选择结构程序设计4.1 实验目的1.掌握C语言的关系表达式和逻辑表达式的运算规则与书写方法。2.掌握各种类型的if语句和switch语句的使用方法。3.熟悉选择结构程序设计的方法。4.2 实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。 4.3 实验准备1.复习关系运算符与关系表达式、逻辑运算符与逻辑表达式的相关内容。2.复习if语句和switch语句的格式与执行过程。4.4 实验内容1.上机调试(需作出必要的注释!)(1)先静态分析一下程序的运行结果,然后上机验证。#include void main() int a=3,b=4,c=5,x,yz; x=c,b,a; y=!a+by则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。)#include void main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy) t=x;x=y;y=t; /*交换x,y的值*/if(xz) t=z;z=x;x=t;/*交换x,z的值,此时则x获最小值*/if(yz) t=y;y=z;z=t;/*交换z,y的值*/printf(small to big: %d %d %dn,x,y,z);2.编程题(1)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(单位:元):profit1000 没有提成1000 profit2000 提成10%2000 profit5000 提成15%5000 profit10000 提成20%10000 profit 提成25%请打印员工实际薪水。#include void main() int grade,profit; float salary=500; printf(Input profit:); scanf(%d,&profit); grade=(profit-1)/1000; switch(grade) case 0: break; case 1: salary+=profit*0.1;break; case 2: case 3: case 4: salary+=profit*0.15;break; case 5: case 6: case 7: case 8: case 9: salary+=profit*0.2;break; default: salary+=profit*0.25; printf(salary=%.0fn,salary);请按一下步骤实习思考:(调试并注释)分析程序中的switch结构。重点学习case标号的设计,本例将利润与提成的关系转换成整数的方法是,由于提成的变化点都是1000的整数被(1000、2000、5000、),同时为了解决相邻两个区间重叠问题,因此采用将利润porfit先减1(最小增量),然后再整除1000.输入并运行程序,用不同的利润去检验运行结果,如果结果不正确,请找出原因,改正后重新运行,直到结果正确为止。 若没有break; 结果如何?3.思考题已知银行整存整取存款不同期限的月息利率分别为: 0.63% 期限1年 0.66% 期限2年月息利率= 0.69% 期限3年 0.75% 期限5年0.84% 期限8年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。实验五 循环结构程序设计5.1 实验目的1.掌握语句、语句和语句实现循环的使用方法。2.掌握循环语句实现一些常用的算法。3.熟悉程序的跟踪调试技术。5.2 实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。5.可以用断点调试法完成部分上机调试题,并观察运行过程。 5.3 实验准备1.复习while语句、dowhile语句、fo语句、continue语句和beeak语句的格式与执行过程。2.复习一些常用的算法,并总结它们的设计方法和思路。3.阅读“程序调试与测试”的相关内容。5.4 实验内容1.上机调试(需作出必要的注释!)(1)求n!提示:(1)注意结果的取值范围! (2)3中循环方式由你选择!也可以用两种方法做。 (3)程序的简单验证:正确结果应是:3!=6。5!=120。8!=40320 注可用单步跟踪(F10)观测循环语句的执行过程。(4)提示案例:(例3.7) 用while语句来实现1*2*3*10的乘积。#includevoid main() int i=1,mul=1; while (i=10) /*用while 语句求1*2*3*10的乘积*/ mul=mul*i; i+; printf(n%ldn, mul);(2)求5个数的和及平均值的程序代码如下:#includevoid main() int a; float b,sum; for(a=1,sum=0.0;a6;a+) printf(“please input NO:%dn”,a); scanf(%f,&b); /*从键盘上输入5个数*/ sum+=b; /*求输入的5个数的加和*/ printf(average=%fn,sum/5);/*求5个数的平均值,并将其输出*/(3)从键盘输入10个数,求出最大值及最小值。#include void main() int a,max,min,i; /输入整数 b=0; for(i=0;imax) max=a; if(amin) min=a; printf(in you inout digit the bigist is: %d,max); printf(in you inout digit the 最小值 is: %d,min);2.编程题抓交通肇事者。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说牌照的前两位数字是相同的;乙说牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说四位的车号刚好是一个整数的平方。请根据以上线索求出肇事者的车号。提示:(1)车牌号为4位。实验六 数组6.1 实验目的1.掌握数组的定义、初始化及数组元素的引用方法。2.掌握数组的赋值和输入输出方法。3.掌握与数组有关的算法,如排序、查找、插入、删除和矩阵运算等。4.掌握字符数组和字符串函数的使用。6.2 实验要求1.实验学时:5学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。5.可以用断点调试法完成部分上机调试题,并观察运行过程。 6.3 实验准备1.复习数组的定义、初始化以及数组元素的引用形式,理解数组的作用。2.学习使用循环语句控制数组元素下标的变化,实现对数组元素的处理。3.复习并理解与数组有关算法的基本思路。4.复习字符数组的使用方法。6.4 实验内容1.上机调试(需作出必要的注释!)(1)运行下面的C程序,该运行结果说明什么?main( ) int num5=1,2,3,4,5;inti i;for(i=0;i=5;i+)printf(%d,numi);(2)请说明以下程序的功能,对加粗部分进行注释,然后上机验证。#include void main()int i,t,a10=0,1,2,3,4,5,6,7,8,9;t=a9;for(i=9;i0;i-)ai=ai-1;a0=t;praint(n);for(i=0;i10;i+)printf(%d,ai);(3)数组a存放10位学生成绩,请说明以下程序的功能,对加粗部分进行注释,然后上机验证。#includevoid main() int i; float aver,a10=78,89,65,72,68,60,80,75,83,70;sum=a0; max=min=a0; for(i=1;imax) max=ai; else if (aimin) min=ai; sum=sum+ai; aver=sum/n; printf(“平均分=%f, 最高分%f, 最低分%fn”,aver,max,min); (4)请说明以下程序的功能,对加粗部分进行注释,然后上机验证。#includestdio.hvoid main() int I,j,t,a33=100,101,102,45,46,47,77,78,79; for(i=0;i3;i+)for(j=0;ji;j+)t=aij;aij=aji;aji=t; for(i=0;i3;i+) printf(”n”);for(j=0;j3;j+) printf(” %d ”,aij);(5)数组a存放一个方阵数据,请说明以下程序的功能,对加粗部分进行注释,然后上机验证。#includestdio.hvoid main() int a100100,i,j,x,y,max,sum,c,n;printf(输入方阵的行列数:);scanf(%d,&c);if(c=1) printf(输入错误!n); else for(i=0;i=c-1;i+) for(j=0;j=c-1;j+) scanf(%d,&aij); max=a00; x=0,y=0; for(i=0;i=c-1;i+) for(j=0;jmax)max=aij; x=i;y=j;printf(这个方阵中最大的数是%dn,max);sum=0; for(n=0;n=A&ai=a&ai=a&ai=z)aj+=ai; aj=0; printf(“%sn”,a);2.填空题(1)以下程序的功能是:若已定义:int a11,i;:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1,然后输出。请在程序的下划线处填空。#includestdio.hmain() int a10,i; for(i=1;i=10;i+) =i; for(i=1;i=10;i+)printf( %d,, ); for(i=1;i=5;i+) =ai; for(i=1;i=10;i+) printf( %d,, );(2)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请在程序的下划线处填空。main() int x10,a9,i; for(i=0;i10;i+) scanf(%d,&xi); for( i=1; i10;i+) ai-1=xi+_; for(i=0;i9;i+ ) printf(%d,ai ) ; printf(n );(3)以下程序的功能是进行方阵的转置。在程序的下划线处填空。#include void main()int i,j,t,a44;printf(n input a:);for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);for(i=0;i4;i+)for(j=0;j4;j+)t=aij; ;aji=t;for(i=0;i4;i+) printf(n); for(j=0;j4;j+)printf(%5d,aij);(4)若要按以下形式输出数组num右上半三角1 2 3 4 6 7 811 12 16请在程序的下划线处填空,满足以上要求。main()int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j;for(i=0;i4;i+)for(j=1;j=i;j+) printf( );for(j= ;j4;j+) printf(%4d,numij);printf(“n”);(5)以下程序的功能是:已知按升序排好的字符串a,将字符串s中的每个字符按升序的规则插到数组a中。请在程序的下划线处填空。#include#include void main()char a20=cehiknqtw;char s=fbla;int i,k,j;for(k=0;sk!=0;k+) j=0; while(sk=aj&aj!=0 j+; for( ) ; aj=sk;puts(a);3.编程题(1)编写程序,测试下列数组的定义方式是否正确,部分程序如下:main()int n;scanf(%d,&n);int an;(2)用“冒泡法”对10个整数进行排序,使其数组元素的值按从大到小的顺序排列。部分程序如下,请完善并注释。#include void main() int a10,i,j;for(i=0;i10;i+) scanf(%d,&ai); /输入十个整数printf(”%d ”,ai); /输出排序前的十个整数for(i=0;i10;i+) printf(”%d ”,ai); /输出排序后的十个整数(3)歌星大奖赛中,有N个评委为参赛的选手打分,分数为1100分,选手最后得分为:去掉一个最高分和一个最低分后其余N-2个分数的平均值。请编写一个程序实现。 已经有部分程序如下(10个评委),请完善并注释。#include void main() int a10,i,min,max; double aver; i=max=0; min=100; aver=0; printf(please input digit); for(i=0;i10;i+) /输入十个评分 scanf(%d,&ai); if(aimin) min=ai; if(maxai) max=ai; for(i=0;i10;i+) if(min=ai) min=0; continue; else if(max=ai) max=0; continue; else aver+=ai; aver=aver/8.0; printf(average is : %.3f,aver); (4)在N行M列的二维数组中,选出一个最大值作为函数值返回,并用变量记录下此最大值所在的行的下标和列下标。部分程序如下,请完善并注释。#define N 3#define M 3#includemain() int aNM=22,43,12,18,90,54,76,31,67; int r,l,x; x= fun(a,&r,&l) ; printf(The max num is:%d %d %d,x,r,l);int fun(int (*p)M,int *row,int *col) int i,j,max=0; for(i=0;iN;i+) for(j=0;jM;j+) if(max pij) return max;4.思考题(1)用选择法对10个整数排序。(2)将两个字符串连接起来,不要使用strcat函数。(3)求30个数以内的完数。(4)求Fibonacci数列的前20个数,并以每行5个数输出。说明:Fibonacci数列的前2个数是1,从第3个数开始,每个数是前2个数之和。例如,1 1 2 3 5 8 13 (5)在一个已排序的整型数组(设从小到大)中,插入一个数,使之仍然有序。(6)定义一个二维数组,存储5个人的姓名和电话号码,从键盘输入姓名后,要求能输出电话号码。(7)输入一个字符串,将指定位置的字符删除。(8) 打印出下面的杨辉三角形(要求印7行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1实验七 函数7.1 实验目的1.掌握C 语言中函数的定义格式和调用方法。2.掌握函数实参与形参的对应关系,理解“值传递”过程。3.理解函数的嵌套调用和递归调用。4. 掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法。7.2 实验要求1.实验学时:5学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。5.可以用断点调试法完成部分上机调试题,并观察运行过程。7.3 实验准备1.复习函数的概念、定义格式、调用规则与参数传递。2.复习嵌套调用和递归调用的程序设计方法。7.4 实验内容1.上机调试(需作出必要的注释!) (1) 调试下面程序,记录出错信息,并指出出错原因。main()int,y;printf(%dn,sum(x+y);int sum(a,b)int a,b;return(a+b);(2)下面程序实现什么功能,对加粗部分进行注释。#includefun(int x,int y,int z)int sum=0;sum=x+y+z;printf(%d,sum);#include void main()int a,b,c;a=10;b=5;c=3;fun(a,b,c);(3)下面程序实现什么功能,对加粗部分进行注释。int max(int,int)void showmessage()int max(int a,int b)if(ab)return a;else return b;void showmessage()printf(“函数调用开始:n);main()int x,y,z; printf(input two int numbers:n); scanf(%d,%d,&x,&y);showmessage(); z=max(x,y);printf(maxmum=%d,z);(4)下面程序实现什么功能,对加粗部分进行注释。#includevoid main( ) int t=1;fun( fun ( t) );fun( int h) static int a3=1,2,3;int k;for (k=0;k3;k+)ak+=ak-h;for (k=0;k3;k+)printf(%d,ak);printf(n);return(ah); (5)下面程序实现什么功能,对加粗部分进行注释。float aver(float a5)int i; float av,s=a0; for(i=1;i5;i+) s=s+ai; av=s/5; return av;void main() float sco5,av; int i; printf(ninput 5 scores:n); for(i=0;i5;i+) scanf(%f,&scoi); av=aver(sco) printf(average score is %5.2f,av); getch(); (6) 下面程序实现什么功能,对加粗部分进行注释。#includelong fib(int n) if(n 2)return (fib(n-1) + fib(n - 2);elsereturn (2);void main( ) printf(%dn,fib(3);2.填空题(1)以下程序通过函数SunFun和f(x),x=0到10,这里f(x)=x2+1,由F函数实现,请填空。main() printf(The sun=%dn;sunFun(10);SunFun(int n) int x,s=0; for(x=0;x=n;x+) s+=F(_); return s;F(int x) return (x*x+1);(2)下列的函数实现将数组中的元素值加1,请将程序补充完整void a(_);void show(_);main()int array7=41,52,43,24,15,56,32,i,length=7;printf(before change:);show(array,length);printf(nafter change:);a(array,length);for(i=0;ilength;i+)printf(%dt,arrayi);getch();void a(int array,int length)int i;for(i=0;_;i+)arrayi+;void show(int a,int length)int i;for(i=0;_;i+)printf(%dt,ai);(3)下列程序实现从键盘上输入一组整数,存放到一个数组中,然后对它们进行从小到大排序,然后输出排序后的数据,请将程序补充完整:#include stdio.h/*数组传递,数组名传递,形参,实参数组类型应该一致,长度应该一致*/*
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!