![C语言程序设计实验上机报告_第1页](http://file4.renrendoc.com/view/c08485b975b7e20574bbba2f576500de/c08485b975b7e20574bbba2f576500de1.gif)
![C语言程序设计实验上机报告_第2页](http://file4.renrendoc.com/view/c08485b975b7e20574bbba2f576500de/c08485b975b7e20574bbba2f576500de2.gif)
![C语言程序设计实验上机报告_第3页](http://file4.renrendoc.com/view/c08485b975b7e20574bbba2f576500de/c08485b975b7e20574bbba2f576500de3.gif)
![C语言程序设计实验上机报告_第4页](http://file4.renrendoc.com/view/c08485b975b7e20574bbba2f576500de/c08485b975b7e20574bbba2f576500de4.gif)
![C语言程序设计实验上机报告_第5页](http://file4.renrendoc.com/view/c08485b975b7e20574bbba2f576500de/c08485b975b7e20574bbba2f576500de5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 实 验 报 告课程名称: C语言程序设计 专业班级: 信息安全 1302 学 号: 姓 名: 指导教师: 报告日期: 2014年6月16日 计算机科学与技术学院目 录 TOC o 1-3 h z u HYPERLINK l _Toc388720546 1 实验概述1 HYPERLINK l _Toc388720547 2 第一次实验2 HYPERLINK l _Toc388720548 2.1 实验目的 PAGEREF _Toc388720548 h 3 HYPERLINK l _Toc388720549 2.2 实验内容 PAGEREF _Toc388720549 h 3 HYPER
2、LINK l _Toc388720550 2.3 实验小结19 HYPERLINK l _Toc388720551 3 第二次实验20 HYPERLINK l _Toc388720552 3.1 实验目的20 HYPERLINK l _Toc388720553 3.2 实验内容20 HYPERLINK l _Toc388720554 3.3 实验小结35 HYPERLINK l _Toc388720555 4 第三次实验36 HYPERLINK l _Toc388720556 4.1 实验目的36 HYPERLINK l _Toc388720557 4.2 实验内容36 HYPERLINK l
3、 _Toc388720558 4.3 实验小结49 HYPERLINK l _Toc388720559 5 第四次实验50 HYPERLINK l _Toc388720556 5.1 实验目的50 HYPERLINK l _Toc388720557 5.2 实验内容50 HYPERLINK l _Toc388720558 5.3 实验小结62 HYPERLINK l _Toc388720560 6 第五次实验63 HYPERLINK l _Toc388720556 6.1 实验目的63 HYPERLINK l _Toc388720557 6.2 实验内容63 HYPERLINK l _Toc3
4、88720558 6.3 实验小结69 HYPERLINK l _Toc388720561 7 第六次实验70 HYPERLINK l _Toc388720556 7.1 实验目的70 HYPERLINK l _Toc388720557 7.2 实验内容70 HYPERLINK l _Toc388720558 7.3 实验小结83 HYPERLINK l _Toc388720562 8 第七次实验84 HYPERLINK l _Toc388720556 8.1 实验目的8 PAGEREF _Toc388720556 h 4 HYPERLINK l _Toc388720557 8.2 实验内容8
5、4 HYPERLINK l _Toc388720558 8.3 实验小结105 HYPERLINK l _Toc388720563 9 实验总结106 HYPERLINK l _Toc388720564 参考文献1071实验概述本实验采用C语言常用的上机开发环境Visual C+6.0集成开发环境。其关键是掌握程序的编辑、修改、编译、链接和执行的方法,以及如何调试程序,跟踪程序,通过断点控制程序,观察变量、表达式在程序运行过程中的取值,如何综合运用这些方法定位程序中的的错误和排除错误。在实验中除了传统的编程设计题外,增加了源程序改错题,源程序完善、修改、替换题,程序的调试跟踪题等,培养学生跟踪
6、程序、设置断点、调试程序的能力,排除程序中语法、逻辑方面错误与故障的能力,并养成细致、周密、严谨的编程作风。实验中的源程序改错题,先给出一些含有经典、常见错误的源程序,让学生通过编译或运行发现错误,并加以改正,从而纠正初学者易犯的常见错误,实验中的源程序修改替换题,也是先给出源程序,然后要求学生按要求编写修改替换原来程序中的部分代码。实验中的跟踪调试结果填空题,给出源程序,要求学生填写程序运行过程中的某些中间结果。强迫学生用断点设置、单步跟踪等调试程序,观察并填写相应的中间结果。实验中的编程设计题,只给出题目,要求学生完成从源程序的编程、编辑、修改,编译产生目标代码,链接产生可执行文件,运行程
7、序得到正确结果的全部环节。学习C语言与学习和使用任何一门其他程序设计语言一样。首先要理解程序设计语言的语法和语义,然后通过上机熟悉该语言集成开发环境,掌握编辑、修改、编译、链接、跟踪、调试程序等方面的技巧。最后,还要熟悉语言编译系统提供的库函数或类库,以便快速实现程序的设计与开发。上机实验就是学习与掌握上面三个环节的重要途径。上机实验之前一定要预先编好有关程序,把上机的重点放到程序的编辑、修改、编译、链接、跟踪、调试程序等方面,放到观察程序运行过程中的中间结果和运行完毕后的运行结果方面来。最终使自己的大脑变成一台“计算机”,能够在脑袋中运行自己的程序,判断各种情况下程序的走向等等,从而提高上机
8、的效率和程序设计的准确性。 总之,上机实验是进一步深刻了解C语言的语法、语义,掌握用C语言进行初步程序设计所需要的方法和技能的一个重要环节。2 第一次实验2.1 实验目的1.熟悉C语言开发环境VC+6.0的使用;2.学会在VC+6.0中编译、运行、调试程序;3.熟悉表达式和标准输入与输出;4.熟悉掌握掌握各种运算符运算功能,操作数的类型,运算结果的类型及运算过程中的类型转换,重点是c语言特有的运算符,例如位运算符,问号运算符,逗号运算符;书籍运算符的优先级和结合性;5.掌握getchar,putchar,scanf和printf函数的用法;6.掌握c程序(顺序结构程序)的编写方法。2.2 实验
9、内容(一) 修改四个源程序得到正确的结果和如下程序设计:编写一个程序,输入字符,如果是大写字母,则将转换成对应的小写,否则的值不变,最后输出。编写一个程序,输入无符号短整数x,(0 15, 1 16-),取出x从第位开始向左的位(从右至左编号为015),并使其向左端(第15位)靠齐。(3)IP地址通常是4个用句点分隔的小整数(即点分十进制),如32.55.1.102。这些地址在机器中用无符号长整形表示。编写一个程序,以机器存储的形式读入一个互联网IP地址,对其译码,然后用常见的句点分隔的4部分的形式输出。例如,整形676879571二进制表示就是:00101000 01011000 01011
10、100 11010011,按照8位一组可表示为:40 88 92 211,由于CPU处理数据的差异,它的顺序是颠倒的,所有最终格式为211.92.88.40。(二)1. 设计一个程序,在字符模式下,以某个字符拼出“王”汉字图形,显示输出。2. 输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)。3. 设计3种算法,完成交换整型两个变量值的程序。4. 设计一个程序,完成如下功能:输出一个三位数,将它反向输出。如输入127,输出721。5. 设计2种完成计算MAXx,y,z的程序。6. 设计一个程序,完成计算3个数的居中数。7. 设计计算一元二次方程的根的程序。8. 根据任意三角形
11、的面积公式(海伦公式):S=p(p-a)(p-b)(p-c), 其中,p=(a+b+c)/2, a.b.c为三角形三边,设计一个程序计算任意三角形的面积。实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象) (一)改错:(红色字体为修改部分)源程序1.#include #includeint main(void) float a,b,c,s,t; print(input three dege of the trianglen) scanf(%f%f%f,&a,&b,&c); s=(a+b+c)/2 t=s*(s-a)*(s-b)
12、*(s-c); area=sqrt(t); print(area=%dn,area); return 0;修改后:源程序1.#include #include int main(void) float a,b,c,s,t; print(input three dege of the trianglen); scanf(%f%f%f,&a,&b,&c); s=(a+b+c)/2; t=s*(s-a)*(s-b)*(s-c); t=sqrt(t); printf(area=%dn,t); return 0;源程序2:#include #define N 5;int sum(int x,int n)
13、;int main() int i,aN,total; printf(Input %d integer please!n,N); for(i=0;iN;i+) scanf(%d,ai); total=sum(a,N); printf(The sum is %dn,total); return 0;int sum(int x,int n); int i,s; for(s=0;i=0;in;i+); s+=xi; return s;修改后:#include #define N 10int sum(int x,int n);int main() int i,aN,total; printf(Inpu
14、t %d integer please!n,N); for(i=0;iN;i+) scanf(%d,ai); total=sum(a,N); printf(The sum is %dn,total); return 0;int sum(int x,int n) int i,s; for(s=0,i=0;in;i+) s+=xi; return s;源程序3:#include #define PI 3.14159; voidmain(void) int f; short p,k; double c,r,s; /*for task 1*/ printf(Input Fahrenheit:); sc
15、anf(%d,f); c=5/9*(f-32); printf(n %d(F)=%.2(C)nn,f,c /*for task 2*/ printf(input the radius r:); scanf(%f,&r); s=PI*r*r; printf(nThe acreage is %.2fnn,s); /*for task 3*/ printf(input hex int k,p:); scanf(%x %x,&k,&p);newint=(p&0 xff00)|(k&0 xff00)8; printf(new int=%xnn,newint);修改后:#include #define P
16、I 3.14159 int main(void) int f,newint; short p,k; double c,r,s; /*for task 1*/ printf(Input Fahrenheit:); scanf(%d,&f); c=5/9*(f-32); printf(n %d(F)=%.2f(C)nn,f,c); /*for task 2*/ printf(input the radius r:); scanf(%lf,&r); s=PI*r*r; printf(nThe acreage is %.2fnn,s); /*for task 3*/ printf(input hex
17、short int k,p:); scanf(%hd %hd,&k,&p); newint=(p&0 xff00)+(k8)&0 x00ff; printf(newint=%hdnn,newint); return 0;源程序4:#include void main() int a,b,t; printf(Input two integers:); scanf(%d %d,&a,&b); t=a;a=b;b=t; prinf(na=%d,b=%d,a,b);替换下划线,语句:#include void main() int a,b; printf(Input two integers:); s
18、canf(%d %d,&a,&b); a=a+b; b=a-b; a=a-b; printf(na=%d,b=%d,a,b);程序设计:程序1: #include void main() int c ; c=getchar(); if(c=A&c=Z) c=c-A+a; putchar(c);程序2: #include int main() unsigned short int x,m,n; unsigned short int result; scanf(%hu%hu%hu,&x,&m,&n); result=xm(16-n); printf(%hu,result); return 0;程序
19、3:#includevoid main() long ip; unsigned int i=0,tem=0,c=0; scanf(%ld,&ip); for (i=0;i32;i+) tem|=(ip%2)(i-8*c); if(i+1)%8=0) c=2?printf(%3d.,tem):printf(%3d,tem); tem=0; c+; ip=ip/2;(二)、题1:#include void main()printf(1111111111n);printf( 11 n);printf( 11 n);printf( 11111111 n);printf( 11 n);printf( 1
20、1 n);printf(1111111111n);题2:#include void main ()int tem,res;printf(please input your temperaturen);scanf(%d,&tem);res=5.0/9.0*(tem-32);printf(the result is: %dn,res);题3: #include void main () int a,b; printf(The first Methoad:n); printf(please input the value of a,bn); scanf(%d%d,&a,&b); int tem; t
21、em=a,a=b,b=a; printf(a=%d b=%d,a,b); printf(The second Methoad:n); printf(please input the value of a,bn); scanf(%d%d,&a,&b); a+=b; b=a-b; a=a-b; printf(a=%d b=%d,a,b); printf(The third Methoad:n); printf(please input the value of a,bn); scanf(%d%d,&a,&b); a=b; b=a; a=ab; printf(a=%d b=%d,a,b); 题4:#
22、include void main() int num,res;printf (input the number :n);scanf(%d,&num);res=100*(num%10);res+=num%100-num%10;res+=num/100;printf(the result is the :n%dn,res); 题5: #include void main() int a,b,c;printf(the first:ninput three numbersn);scanf(%d%d%d,&a,&b,&c);a=ab?a:b;a=ab?a:c;if (ab) if(ac); elsea
23、=c; else a=b; if (bc); else a=c; printf(Max=:%dn,a);printf(the second:ninput three numbersn);scanf(%d%d%d,&a,&b,&c);a=(ab)?(ac?a:c):(bc?b:c);printf(Max=:%dn,a);题6: #include void main() int a,b,c,d;printf(input three numbers:n);scanf(%d%d%d,&a,&b,&c);d=a+b+c;a=(ab)?(bc?c:b):(ac?c:a);b=(ab)?(ac?a:c):(
24、bc?b:c);d=d-a-b;printf(mid=%dn,d); 题7:#include#includeint main(void)float a,b,c,d,x1,x2,realpart,imagepart;printf(Input a,b,c:n);scanf(%f%f%f,&a,&b,&c);if(a=0)printf(Inupt ERRORn);elsed=b*b-4*a*c;if(d0)realpart=-b/(2*a);imagepart=sqrt(-d)/(2*b);printf(complex roots:%g+%.3gin,realpart,imagepart);prin
25、tf(complex roots:%g-%.3gin,realpart,imagepart);elsex1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a);printf(x1=%f,x2=%fn,x1,x2);return 0;题8:#include #include void main() float a,b,c,s,p; printf(input three numbers:n); scanf(%f%f%f,&a,&b,&c); p=(a+b+c)/2; if(p*(p-a)*(p-b)*(p-c)0) s=sqrt(p*(p-a)*(p-b)*(p-c);
26、 printf(the result :%fn,s); else printf(these numbers isn a triangle!n);2.3 实验小结1.编写程序时,要注意加上“#include ” ,这是一个包含基本输入输出的头文件。2,在温度转换题中。公式是c=5/9*(f-32),但是用c语言不能这么写。因为在C语言中,5/9是得到一个int 型的结果,所以会得到0,导致程序运行结果始终为0;必须写成5.0/9才能得到浮点型结果。3.一个工程中只能有一个main()函数,不然编译器会报错。4.在使用标准输入语句scanf()是其中需要赋值的变量要使用其地址,即使用&来获取其地址
27、,以存入数据。6.define 语句后不带分号,for条件表达式后不需要分号。7.数据输入定义类型要和输入一致;使用变量必须声明。3 第二次实验3.1 实验目的1.掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while 三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。2.熟练运用for、while、do-while语句来编写程序。3.练习转移语句和标号语句的使用。4.使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。3.2 实验内容(一) 下面是计算s=n!的源程序,在这个源程序中存在若干语法和逻辑错误。 要求在计算机上
28、对这个例子程序进行调试修改,使之能够正确完成指定任 务。例如,8!=40320。 源程序修改替换(1)修改上述计算s=n!的源程序,要求分别用while和do-while语句替换for语句。(2)修改上述计算s=n!的源程序,要求输入改为“整数S”,输出改为“满足n!S的最小整数n”。例如,输入整数为40310,输出结果为n=8。 编写并上机调试运行能实现以下功能的程序。 (1) 假设工资税金按以下方法计算:x 1000元,不收取税金;1000 x 2000,收取5%的税金;2000 x 3000,收取10%的税金;3000 x 4000,收取15%的税金;4000 x 5000,收取20%的
29、税金;x5000,收取25%的税金。编写一个程序,输入工资金额,输出应收取税金额度,要求分别用if语句和switch语句来实现。(2)编写一个程序,将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替(3)编写一个程序,打印如下的杨辉三角形。1/*第0行 */11/*第1行 */121/*第2行 */13311464115101051161520156117213535217118285670562881193684126126 843691每个数据值可以由组合计算(表示第i行第j列位置的值),而的计算如下: (i=0,1,2,)(j=0,1,2,3,i)说明:本程序中为了
30、打印出金字塔效果,要注意空格的数目。一位数之间是3个空格,说明:本程序中为了打印出金字塔效果,要注意空格的数目。一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。(4)编写一个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。 编写并上机调试运行能实现以下功能的程序。编写一个程序,用牛顿迭代法求方程满足精度e=10-6的一个近似根,并在屏幕上输出所求近似根。牛顿迭代法求方程近似根的迭代公式为:,其中,是函数f(x)的导函数。牛顿迭代法首先任意设定的一个实数来作为近似根的迭代初值x0,然后用迭代公式计算下一个近似根x1。如此继续迭代计
31、算x2, x3, , xn, 直到,此时值xn即为所求的近似根。(二) 9. 设计一个计算个人所得税的程序。 10. 计算两个自然数的最大公约数和最小公倍数。 11. 输入一个数n(2),判定n是否为素数。 12. 输出2100范围内的所有素数。要求:不使用子函数。 13. 输出九九乘法口诀表实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象) (一)改错:(红色字体为修改部分)2.3-1#include int main()int i,n,s=1;printf(Please enter n:);scanf(%d,n);for(
32、i=1,i=n,i+)s=s*i;printf(%d!=%d,n,s);return 0;#include int main()int i,n,s=1;printf(Please enter n:);scanf(%d,&n);for(i=1;i=n;i+)s=s*i;printf(%d!=%d,n,s);return 0;源程序修改替换:2.3-2(1)#include int main()int i=1,n,s=1;printf(Please enter n:);scanf(%d,&n);while(i=n)s*=i;i+;printf(used the while :%d!=%dn,n,s
33、);printf(Please enter n:);scanf(%d,&n);i=1;s=1;dos*=i;i+;while(i=n);printf(used the do-while :%d!=%dn,n,s);return 0;(2)#include int main()int i,n=1,s,tem=1;printf(Please enter s:);scanf(%d,&s);for(;n+)for(i=1;i=s) break;tem=1;printf(MAX n: %d!=%dn,n,s);return 0; 程序设计:#include void main()int sala;pri
34、ntf(input your salary:n);scanf(%d,&sala);switch(sala/1000)case 0: printf(your tax is 0%n);break;case 1: printf(your tax is 5%n);break;case 2: printf(your tax is 10%n);break;case 3: printf(your tax is 15%n);break;case 4: printf(your tax is 20%n);break;default: printf(your tax is 25%n);2.3-3.2#include
35、 void main()char c1,c2;while(c1=getchar()!=EOF) while(c1= ) if(c2=getchar()!= ) printf(%c,c1); c1=c2; printf(%c,c1);2.3-3.3#include int c(int j,int i);void main() int i,j,m; for(i=0;i=9;i+) for(m=0;m20-2*i;m+) printf( ); for(j=0;j=i;j+) printf(%-4d,c(j,i); printf(n); int c(int j,int i) if(j=0) retur
36、n 1; return(c(j-1,i)*(i-j+1)/j;2.3-3.4#include void main() long m,res=0; int i,n; printf(input your number:n); scanf(%d,&m); for(i=0;(m=(n=m%10,m/10)=0;i+) res=res*10+n; if(m=0) break; printf(result: %dn,res);2.3-4#include #include #define e 1e-6int c(int j,int i);void main() double x0=1,xk=1;do x0=
37、xk; xk=x0-(3*x0*x0*x0-4*x0*x0-5*x0+13)/(9*x0*x0-8*x0-5); while(fabs(x0-xk)e); printf(%.9lf,xk);(二)题9:#includeint main(void)float a,n,m;printf(Inupt a number:n);scanf(%f,&a);n=a-3500;if(a=0&a=3500)printf(0);else if(n=1500)m=n*0.03;else if(n=4500)m=n*0.1-105;else if(n=9000)m=n*0.2-555;else if(n=35000)
38、m=n*0.25-1005;else if(n=55000)m=n*0.3-2755;else if(n=80000)m=n*0.35-5505;else m=n*0.45-13505;printf(m=%.3f,m);return 0;题10:#includeint main(void)int x,y,max,min,c,d;printf(Input two numbersn);scanf(%d%d,&x,&y);if(x=0|yy)max=x;min=y; else max=y;min=x;while(!(min%x=0&min%y=0)y-;c=y;d=(x*y)/c;printf(c=
39、%d,d=%d,c,d);return 0;题11:#include#includeint main(void)int n,i,r;int k;printf(Input a number:n);scanf(%d,&n);if(n2)i=1;dok=sqrt(n);i+;r=n%i;while(r!=0)&(i=k);if(r)printf(%d is a prime.n,n);elseprintf(%d is not a prime.n,n);return 0;题12:#include#includeint main(void)int n,i,r,k;printf(n=2 is a prime
40、.n);for(n=2;n=100;n+)i=1;dok=sqrt(n);i+;r=n%i;while(r!=0)&(i=k);if(r)printf(n=%d is a prime.n,n);return 0;题13:#includemain(void)int i,j,result;for(i=1;i10;i+)for(j=1;j10;j+)result=i*j;printf(%d*%d=%-3d,i,j,result);printf(n);3.3 实验小结1. 在使用标准输入语句scanf()是其中需要赋值的变量要使用其地址,即使用&来获取其地址,以存入数据。2,while是先进行条件判断
41、,为真就进入循环;do-while是先执行循环体一次,在进行判断,并且while条件体后需要添加分号;。3.for循环是注意判断条件是)还是=)。4.使用switch语句是记着加上break语句跳出switch,有必要时需加上default。6.double型数据输入输出要使用“%lf”。7.两个数的最小公倍数就是两数之积除以两数的最大公约数。8.九九乘法表,注意“t”和“n”的使用时机。4 第三次实验4.1 实验目的熟悉和掌握函数的定义、声明;函数调用与参数传递方法;以及函数返回值类型的定义和返回值使用。熟悉和掌握不同存储类型变量的使用。熟悉多文件编译技术。4.2 实验内容(一) 源程序改错
42、下面是计算s=1!+2!+3!+n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。 源程序修改替换(1)修改上述源程序中的sum_fac函数,使其计算量最小(2)修改上述源程序中的sum_fac函数,计算 跟踪调试下面是计算fabonacci数列前n项和的源程序,现要求单步执行该程序,并观察p,i,sum,n值,即:(1)刚执行完scanf(%d,&k);语句时,p,i值是多少?(2)从fabonacci函数返回后,光条停留在哪个语句上?(3)进入fabonacci函数时,watch窗口显示的是什么?(4)当i=3时,从调用
43、fabonacci函数到返回,n值如何变化? 程序设计编写并上机调试运行能实现以下功能的程序。(1)编写一个程序,让用户输入两个整数,计算两个数的最大公约数并且输出之。要求用递归函数实现求最大公约数,同时以单步方式执行该程序,观察其递归过程。(2)编写一个程序,验证歌德巴赫猜想:一个大于等于4的偶数都是两个素数之和。(3)编写一个程序,证明对于在符号常量BEGIN和END之间的偶数这一猜测成立。例如,如果BEGIN为10,END为20,则程序的输出应为:GOLDBACHS CONJECTURE:(二)14. 求n个数的最大值、最小值和平均值。要求:不使用数组。15. 依据下列格里高利公式,计算
44、圆周率。要求最后一项10-6。16. 完全数是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和恰好等于它本身。试求出11000范围内的所有完全数。17. 水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身。例如:13 + 53 + 33 = 153。试求出所有的水仙花数。18. 一个的数,其七进制和九进制均为3位数,且3位数的数字正好相反。试求出这个数。19. 求解1313的尾数三位是多少。求解100!尾数有多少个0。实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象) (一)1源程序改错下面是
45、计算s=1!+2!+3!+n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。源程序:#includevoid main(void) int k; for(k=1;k6;k+) printf(k=%dtthe sum is %ldn,k,sum_fac(k);long sum_fac(int n) long s=0; int i; long fac; for(i=1;i=n;i+) fac*=i; s+=fac; return s;修改后:#includelong sum_fac(int n);void main(void)
46、int n; printf(please input N :n); scanf(%d,&n); printf(the sum is %ldn,sum_fac(n); long sum_fac(int n) long s=0; int i; long fac=1; for(i=1;i=n;i+) fac*=i; s+=fac; return s;2源程序修改替换(1)修改上述源程序中的sum_fac函数,使其计算量最小。long sum_fac(int n) long s=0; int i=1; long fac=1;while(i=n) fac*=i+; s+=fac; return s;(2
47、)修改上述源程序中的sum_fac函数,计算 double sum_fac(int n) double s=0,fac=1; int i=1; double p;while(i=n) fac*=i+; p=1/fac; s+=p; return s;3跟踪调试下面是计算fabonacci数列前n项和的源程序,现要求单步执行该程序,并观察p,i,sum,n值,即:刚执行完scanf(%d,&k);语句时,p,i值是多少?0 x28ff10 i=2从fabonacci函数返回后,光条停留在哪个语句上?printf(i=%dtthe sum is %ldn,i,*p);进入fabonacci函数时,
48、watch窗口显示的是什么?当i=3时,从调用fabonacci函数到返回,n值如何变化?从1变到3源程序:#includelong fabonacci(int);void main(void) int i,k; long sum=0,*p= scanf(%d,&k); for(i=1;i=k;i+) sum+=fabonacci(i); printf(i=%dtthe sum is %ldn,i,*p); long fabonacci(int n) if(n=1 | n=2) return 1; else return fabonacci(n-1)+fabonacci(n-2);其中,“ l
49、ong sum=0,*p= ”声明p为长整型指针并用&sum取出sum的地址对p初始化。*p表示引用p所指的变量(*p即sum)。4程序设计编写并上机调试运行能实现以下功能的程序。(1) 编写一个程序,让用户输入两个整数,计算两个数的最大公约数并且输出之。要求用递归函数实现求最大公约数,同时以单步方式执行该程序,观察其递归过程。#include int divisor(int n,int m);void main()int a,b,res;printf(input two integer:n);scanf(%d%d,&a,&b);res=divisor(a,b);printf(The max
50、divisor: %dn,res);int divisor(int n,int m)int tem;if(nm) n=m+n; m=n-m; n=n-m; tem=n%m;if(tem=0) return m;return divisor(m,tem); (2) 编写一个程序,验证歌德巴赫猜想:一个大于等于4的偶数都是两个素数之和。#include int main() int m,i,j; printf(input a number:n); scanf(%d,&m); for(i=2,j=m-i;j=2;i+,j=m-i) if(p(j)&p(i) printf(%d=%d+%d,m,i,j
51、); break; return 0; int p(int m) int i; for( i=2;i=4 is the sum of two primes.10=3+712=5+720=3+17源代码:#include int p(int m);int main() int m,i,j,BEGIN,END; printf(input BEGIN and END :n); scanf(%d%d,&BEGIN,&END); printf(GOLDBACHS CONJECTURE:nEvery even number n=4 is the sum of two primesn); if(BEGIN%
52、2!=0) BEGIN+; for(m=BEGIN;m=2;i+,j=m-i) if(p(j)&p(i) printf(%d=%d+%dn,m,i,j); break; return 0; int p(int m) int i; for( i=2;im;i+) if(m%i=0) return 0; return 1; (二)题14:#includeint main(void)int i=0,n;float max,min,sum,average;printf(Input numbersn);scanf(%d,&n);max=n;min=n;sum=0;while(n!=0)if(maxn)m
53、in=n;i+;sum+=n;scanf(%d,&n);average=sum/i;printf(max=%.gn,max); printf(min=%.gn,min);printf(average=%.gn,average);return 0;题15:#include#includeint main(void)int s;float a,b,n;s=-1;a=0;n=1;for(;fabs(b)=1e-6;n+=2)s=-s;b=s/n;a+=b;a=4*a;printf(%.6fn,a);return 0;题16:#includeint main(void)int n,a,sum,b;n=
54、1;while(n=1000)a=1;sum=0;while(an)b=n%a;if(!b)sum+=a; a=a+1;if(sum=n) printf(sum=%dt,sum);n+;return 0;题17:#includeint main(void)int a,b,c;for(a=1;a=9;a+)for(b=0;b=9;b+) for(c=0;c=9;c+)if(100*a+10*b+c)=a*a*a+b*b*b+c*c*c)printf(%d%d%dn,a,b,c);return 0;题18:#includeint main(void)int a,b,c,x;a=1;b=0;c=1;
55、 while(a=6) while(b=6) while(c=6) if(49*a+7*b+c)=(81*c+9*b+a) x=49*a+7*b+c;printf(x=%dn,x); c+; c=1;b+; b=0;a+; return 0;题19:#includeint main(void)int i,x,y,last=1;printf(Input x and y(x*y)n);scanf(%d*%d,&x,&y);for(i=1;i=y;i+)last=last*x%1000;printf(The last 3 digits of %d*%d is:%dn,x,y,last%1000);r
56、eturn 0;题20:#includeint main(void)int a,count=0;for(a=5;a=100;a+=5)+count;if(!(a%25)+count;printf(%d.n,count);return 0;4.3 实验小结1.当循环需要每次累加的时候用for循环更好,否则用while循环更好。2.当循环体需要先执行一时用do-while比用while更好。3do-while循环在while之后需要加上分号。4. static变量可以多次运行,但是只进行一次初始化;并且在退出函数后变量值仍然不改变。5.extern变量可以可以共享其他文件中的变量。6.regist
57、er变量常用在for循环的循环变量,使用寄存器变量可以加快速度,但是寄存器数量有限,所以是否使用寄存器存储,取决于具体实现,5. 调试程序时需要细心。5 第四次实验5.1实验目的(1)掌握文件包含、宏定义、条件编译、assert宏的使用;(2)练习带参数的宏定义、条件编译的使用;(3)练习assert宏的使用;(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。5.2实验内容(一) 源程序改错下面是用宏来计算平方差和交换两数的源程序。在这个源程序中,存在若干语法和逻辑错误,要求在计算机上对这个源程序进行调试修改,使之能够正确完成计算平方差和交换两数的任务。源程序:#includ
58、e#define SUM a+b#define DIF a-b#define SWAP(a,b) a=b,b=avoid main(void) int b, t; printf(Input two integers a, b:); scanf(%d,%d, &a,&b); printf(nSUM=%dn the difference between square of a and square ofbis:%d,SUM, SUM*DIF); SWAP(a,b); Printf(nNow a=%d,b=%dn,a,b); 源程序修改替换下面是用函数实现求三个数中最大数、计算两数之和的源程序。在这
59、个源程序中存在若干语法和逻辑错误,要求:(1) 对这个例子程序进行调试修改,使之能够正确完成指定任务。(2) 用带参数的宏替换函数max,来实现求最大数的功能。源程序:void main(void) int a, b, c; float d, e; printf(Enter three integers:); scanf(%d,%d,%d,&a,&b,&c); printf(nthe maximum of them is %dn,max(a,b,c);printf(Enter two floating point numbers:);scanf(%f,%f,&d,&e);printf(nthe
60、 sum of them is %fn,sum(d,e);int max(int x, int y, int z) int t; if (xy) t=x; else t=y; if (tz) t=z; return t;float sum(float x, float y) return x+y; 跟踪调试下面程序的功能是利用R计算圆的面积s,以及面积s的整数部分。现要求:(1) 修改程序,使程序编译通过且能运行。(2) 单步执行。进入函数decimal_fraction时,watch窗口中x为何值?在返回mai时, watch窗口中i为何值(3) 排除错误,使程序能正确输出面积s值的整数部分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国可吸收骨折内固定螺钉行业投资前景及策略咨询研究报告
- 2025年一线城市二手房买卖合同(2篇)
- 二零二五版农业劳动力劳动合同样本(含农村电商营销)
- 2025年度合同封面图片定制与电子签名技术集成合同
- 2025年化妆品行业数据统计分析服务合同
- 2025年度新能源汽车电池采购合同模板
- 2025年度新型建筑工地技术员专项用工合同
- 2025年度企业形象宣传片拍摄与制作合同
- 2025年度智能城市建设合作框架合同
- 二零二五年度生鲜配送服务合同与质量追溯系统合同
- 建筑与市政工程第三方质量安全巡查方案
- 成品移动公厕施工方案
- 二零二五版财务顾问保密与工作内容协议3篇
- 2025-2030年中国干混砂浆行业运行状况及发展趋势预测报告
- 2025年度部队食堂食材采购与质量追溯服务合同3篇
- 2025江苏盐城市交通投资建设控股集团限公司招聘19人高频重点提升(共500题)附带答案详解
- 新人教版一年级下册数学教案集体备课
- 2024托管班二人合伙的协议书
- 任务型阅读 -2024年浙江中考英语试题专项复习(解析版)
- 绘本 课件教学课件
- 大型央国企信创化与数字化转型规划实施方案
评论
0/150
提交评论