C语言程序设计-实验程英粲C语言上机报告.doc_第1页
C语言程序设计-实验程英粲C语言上机报告.doc_第2页
C语言程序设计-实验程英粲C语言上机报告.doc_第3页
C语言程序设计-实验程英粲C语言上机报告.doc_第4页
C语言程序设计-实验程英粲C语言上机报告.doc_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告题目: C语言程序设计实验报告 课程名称: C语言程序设计 专业班级: 信安1302 学 号: 姓 名: 指导教师: 报告日期: 2014.6.16 计算机科学与技术学院总序本次的上机实验,除了最后一题与课设差不多,感觉工作量太大没做外,其它的题目全部都已写完。报告的基本形式为:标题(实验次数)+目的+任务+程序(结果)构成(注:部分题目共用同一个结果)。在做题的过程中,参考的资料有:C语言程序设计(曹计昌 卢萍 李开 编) C语言实验与课程设计(曹计昌 卢萍 李开 编)以及百度文库的部分内容。语言表述能力不是特别好,体会啥的都自己理解了,也没写好,多的空话我也就不多说了,120多页的报告,写得真是头都大了。(注:C语言实验与课程设计上的题真坑,好几个程序都百行了,还有一个写了200多行啊,有木有,有木有!不过确实想通了不少东西,也算是挺有用吧。)唉,没忍住又开始吐槽了,算了,就说这么多吧,最近快要开始考试了,复习去了,争取拿个好看点儿的分儿吧。程英粲2014.6.14目录第一次上机实验1一、实验目的1二、实验任务1三、实验步骤及结果11.3.1题目一:在字符模式下,拼出“王”。11.3.2 题目二:华氏温度转摄氏温度。2分析:写一个简单的程序。21.3.3题目三:设计三种算法,交换两个整型变量。31.3.4题目4:三位数的反向输出。41.3.5题目5: 2种计算MAXx,y,z的程序。51.3.6题目6:三个数的居中数。61.3.7题目7:二次方程的根71.3.8题目8:海伦公式计算面积。8四、实验体会9第二次上机实验10一、实验目的10二、实验任务10三、实验步骤及结果102.3.1题目一:计算个人所得税。102.3.2题目二:最大公约数和最小公倍数。112.3.3题目三:判定n是否为素数。122.3.4题目四: 2100内的所有素数13四、实验体会14第三次上机实验15一、实验目的15二、实验任务15三、实验步骤及结果153.3.1题目一:求N个数的最大值,最小值和平均值。153.3.2题目二:计算pi 要求最后一项小于10-6.163.3.3题目三:求出11000内的所有完全数173.3.4题目四:水仙花数,三位数,立方和为本身。173.3.5题目五:求一个数的七进制和九进制都是三位数且这三个数刚好相反183.3.6题目六:求解1313的最后三位。193.3.7题目七:求解100!尾数有多少个0.19四、实验体会20第四次上机实验21一、实验目的21二、实验任务21三、实验步骤及结果214.3.1题目一:斐波那契数列,求Fn。214.3.2题目二:计算多项式的值224.3.3题目三:利用最大值函数max(x,y)求n个数的最大值。234.3.4题目四:素数的函数prime(x),输出2100内的所有素数。24四、实验体会25第五次上机实验26一、实验目的26二、实验任务26三、实验步骤及结果265.3.1题目一:设计一个演示系统。265.3.2题目二:26.递归程序计算组合数C(n,m)=A(n,m)/m!。285.3.3题目三:mccathy函数,编写递归程序计算x的m(x)。295.3.4题目四:海伦公式,使用宏计算计算任意三角形的面积。30四、实验体会30第六次上机实验31一、实验目的31二、实验任务31三、实验步骤及结果316.3.1题目一:设计函数reverse(a, n)将一维数组a的值逆置。316.3.2题目二:设计一个函数采用冒泡排序算法排序。336.3.3题目三:设计函数find(a, n, x),进行查找功能。346.3.4题目四:有序数组找两个数,使和正好等于输入数字。356.3.5题目五:检验并打印魔方矩阵36四、实验体会。39第七次上机实验40一、实验目的40二、实验任务40三、实验步骤及结果407.3.1题目一:3种swap(x,y)交换值。407.3.2题目二:max(a,b),要求用命令行。427.3.3题目三:先进后出链表(栈)437.3.4题目四:链表插入。447.3.5题目五:删除结点467.3.6题目六:约瑟夫487.3.7题目七:文件输入输出。50四、实验体会。50C语言实践与课程设计第二章512.1熟悉C语言程序的开发环境512.2表达式和标准输入输出实51一、实验目的51二、程序设计51三、实验步骤及结果51 2.3.1题目一:大写换小写51 2.3.2题目二:取位52 2.3.3题目三:IP地址532.3 流程控制54一、实验目的54二、程序设计55三、实验步骤及结果55 3.3.1题目一:计算税收55 3.3.2题目二:压缩行56 3.3.3题目三:杨辉三角57 3.3.4题目四:正数逆转58 3.3选做:牛顿迭代法求近似根:592.4 函数与程序结构实验60一、实验目的60二、程序设计60三、实验步骤及结果604.3.1题目一:公约数604.3.2题目二:歌德巴赫猜想614.3.3题目三:在两数之间的数满足歌德巴赫猜想624.3.选做题:多文件编译632.5 编译预处理64一、实验目的64二、程序设计64三实验步骤及结果645.3.1题目一:宏定义求三角形面积645.3.2题目二:条件编译652.6 标准库及用户自定义库实验662.7 数组实验66一、实验目的66二、程序设计66三、实验步骤及结果:667.3.1题目一:转置矩阵667.3.2题目二:二进制677.3.3题目三:学生成绩687.3.选(1)字符串插入697.3.选(2):八皇后问题712.8 指针实验73一、实验目的73二、程序设计73三、实验步骤及结果738.3.1题目一:取高低位738.3.2题目二:压缩行748.3.3题目三:命名行-d排序758.3.4题目四:N个学生M门课程778.3.选(1):高精度798.3选(2)复杂声明。812.9 结构与联合实验82一、实验目的82二、程序设计83三、实验步骤及结果839.3.1题目一:字段结构839.3.2题目二:链表成绩859.3.选(1):按成绩排序919.3.选(2):用交换结点的方法排序999.3.选(3):双向链表1072.10 文件实验118一、实验目的118二、程序设计118三、实验步骤及结果11810.3.1题目一:输出到文件118第一次上机实验一、实验目的 (1)熟悉VC6.0. (2)进行简单编程。 (3)掌握输入输出。二、实验任务1. 设计一个程序,在字符模式下,以某个字符拼出“王”汉字图形,显示输出。2. 输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)。3. 设计3种算法,完成交换整型两个变量值的程序。4. 设计一个程序,完成如下功能:输出一个三位数,将它反向输出。如输入127,输出721。5. 设计2种完成计算MAXx,y,z的程序。6. 设计一个程序,完成计算3个数的居中数。7. 设计计算一元二次方程的根的程序。8. 根据任意三角形的面积公式(海伦公式):S = p (p-a)( p-b)( p-c ), 其中,p=(a+b+c)/2, a.b.c为三角形三边,设计一个程序计算任意三角形的面积。三、实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)1.3.1题目一:在字符模式下,拼出“王”。 (1)题目分析:本题重点要熟悉printf函数的运用。 (2)程序:#includevoid main() printf( *n); printf( *n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( * n); printf( *n); printf( *n); (3)运行结果: 1.3.2 题目二:华氏温度转摄氏温度。分析:写一个简单的程序。(1) 总结:/两边至少要有一个浮点型,否则会计算5/90,另外,输入时double型要用lf,不然会出现错误。(2) 程序:#includevoid main()double c,f;scanf(%lf,&f);/读入要用lf不然会出错。c=5.0/9*(f-32); printf(%lfn,c);/经试验,输出不用lf可以正确。(3) 结果:1.3.3题目三:设计三种算法,交换两个整型变量。(1) 分析:坑人的程序,好难想。最简单的是用第三个变量来换。其次两者想加减a=a+b-a。最后一个居然用异或运算!abb=a !(2) 程序: /1#includevoid main()int a,b,c;printf(请输入a,bn); scanf(%d %d,&a,&b);c=a;a=b;b=c;printf(a=%d b=%dn,a,b);/2#includeint main()int a,b;printf(请输入a,bn);scanf(%d %d,&a,&b);a=a+b;b=a-b;a=a-b;printf(a=%d b=%dn,a,b); return 0;/3#includeint main()int a,b;printf(请输入a,bn);scanf(%d %d,&a,&b);a=ab;b=ab;a=ab;printf(a=%d b=%dn,a,b); return 0;(3) 结果:1.3.4题目4:三位数的反向输出。(1) 分析:目前没学多少东西,简单的运用了一个/各来进行输出。(2) 程序:#includeint main()int a;printf(请输入一个三位数n);scanf(%d,&a);printf(%d,a%10);a=a/10;printf(%d%dn,a%10,a/10); return 0;(3) 结果:1.3.5题目5: 2种计算MAXx,y,z的程序。(1) 分析:一个if的判断 一个三元操作符。(2) 程序:/1#includeint main()int a,b,c;printf(请输入a,b,cn);scanf(%d%d%d,&a,&b,&c);if(a=b)if(a=c) printf(%dn,a);else printf(%dn,c);elseif(b=c) printf(%dn,b);else printf(%dn,c); return 0;/2#includeint main()int a,b,c;printf(请输入a,b,cn);scanf(%d%d%d,&a,&b,&c);printf(%dn,a=b&a=c?a:(b=a&b=c?b:c);return 0; (3)结果:1.3.6题目6:三个数的居中数。(1) 分析:一个类似于三个数的最大数的程序,改一下判断的过程就行了(2) 程序:#includeint main()int a,b,c,t;printf(请输入a,b,cn);scanf(%d%d%d,&a,&b,&c);if(a=b)if(b=c) printf(%dn,b);else printf(%dn,a=c?c:a);else if(a=c) printf(%dn,a);else printf(%dn,b=c?c:b);return 0;(3) 结果:1.3.7题目7:二次方程的根(1) 分析:简单的计算,不过要考虑细节,比如a=0,d0,d=0的情况。(2) 程序:#include#includeint main()double a,b,c,d,x1,x2;printf(请输入a,b,cn);scanf(%lf%lf%lf,&a,&b,&c);d=b*b-4*a*c;if(a=0) printf(a=0,请重新输入n); else if(d0) printf(无实根n);else if(d=0) printf(x1=x2=%lfn,-b/(2*a);elsex1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%lf x2=%lfn,x1,x2);return 0;(3) 结果:1.3.8题目8:海伦公式计算面积。(1) 分析:计算比较简单,但考虑bug要判断能否构成三角形。(2) 程序:#include#includeint main()double a,b,c,p,s;printf(请输入三条边的长度n);scanf(%lf%lf%lf,&a,&b,&c);if(a+b=c|a+c=b|b+c=a) printf(无法构成三角形n);else p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(%lfn,s);return 0;(3) 结果:四、实验体会 本次的实验内容都是些较简单的题目,重在熟悉编程环境。119第二次上机实验 一、实验目的熟练掌握编译器,学会用循环语句。二、实验任务9. 设计一个计算个人所得税的程序。10. 计算两个自然数的最大公约数和最小公倍数。11. 输入一个数n(2),判定n是否为素数。12. 输出2100范围内的所有素数。要求:不使用子函数。13. 输出九九乘法口诀表三、实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)2.3.1题目一:计算个人所得税。 分析:简单的计算,计算方法要上网查,要使用判断语句。 程序:#include/个人所得税 int main()double x,sum;printf(请输入扣除三险一金后的工资n);scanf(%lf,&x);x=x-3500;if(x=0&x1500&x4500&x=9000&x=35000&x80000) sum=x*0.45-10505;else sum=x*0.35-5505; printf(应缴纳的个人所得税为:%.2lf,sum);getchar();getchar();return 0; 运行结果: 2.3.2题目二:最大公约数和最小公倍数。 分析:一个考算法的程序,辗转想除法,更想减损术求公约数,最小公倍数两数的积除以最大公约数。此外,还要考虑输入是否为负。 程序:#include/最大公约数和最小公倍数int yue(int x,int y)int a,b,r;if(x=y) a=x; b=y; else a=y; b=x; r=b;while(r!=0) r=a%b; a=b; b=r; return a; int main()int x,y,p;printf(请输入两个正整数n);scanf(%d%d,&x,&y);if(x0|y0) printf(输入中有负数,请重新输入);else p=yue(x,y); printf(两数的最大公约数为:%dn,p); printf(两数的最小公倍数为:%dn,x*y/p); getchar(); getchar(); return 0; 运行结果: 2.3.3题目三:判定n是否为素数。分析:循环的运用,程序优化到运行sqrt(n) 。此外看是否为大于2的数程序:#include#includeint main()int x,i=2;printf(请输入一个正数n);scanf(%d,&x);if(x=1) printf(请重新输入n);else for(;i=sqrt(x);i+) if(x%i=0) break; if(i=sqrt(x) printf(%d不是素数n,x);else printf(%d是素数n,x); getchar(); getchar();return 0;运行结果:2.3.4题目四: 2100内的所有素数分析:循环的嵌套。在上一题的基础上略改即可。程序:#include#includeint main()int i,k;printf(2-100内的所有素数为:n);for(i=2;i=97;i+) for(k=2;ksqrt(i) printf(%d ,i); getchar(); return 0;运行结果:2.3.5题目五:输出九九乘法表分析:完全是考循环和输出。重点要看在多少是转行。程序:#includeint main()int i,k,r=1;for(i=1;i=9;i+) for(k=1;k=9;k+) printf(%d*%d=%2d ,k,i,i*k); if(k=r) r+; printf(n); break; getchar(); return 0;运行结果:四、实验体会本节重在对循环的运用,难度不大,同时也有些简单的算法题目。第三次上机实验 一、实验目的设计算法,解决简单问题。二、实验任务12. 求n个数的最大值、最小值和平均值。要求:不使用数组。13. 依据下列格里高利公式,计算圆周率。要求最后一项10-6。14. 完全数是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和恰好等于它本身。试求出11000范围内的所有完全数。15. 水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身。例如:13 + 53 + 33 = 153。试求出所有的水仙花数。16. 一个的数,其七进制和九进制均为3位数,且3位数的数字正好相反。试求出这个数。17. 求解1313的尾数三位是多少。18. 求解100!尾数有多少个0。三、实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)3.3.1题目一:求N个数的最大值,最小值和平均值。 分析:循环。 程序:#includeint main() int max,min,n,i,k; float average,sum; printf(请输入数据个数Nn); scanf(%d,&n); printf(请输入数据n); scanf(%d,&k); max=min=k; sum=k; for(i=2;imax) max=k; if(kmin) min=k; average=sum/n; printf(最大值为:%dn,max); printf(最小值为:%dn,min); printf(均值为:%fn, average); getchar(); getchar(); return 0;运行结果:3.3.2题目二:计算pi 要求最后一项小于10-6. 分析:循环,以级结束的判断,可用do while 进行。 程序:#includeint main()int i=1;float pi=0;do if(i%2=1) pi+=1.0/(2*i-1); else pi-=1.0/(2*i-1); i+; while(1.0/(2*i-1)0.000001); printf(%f,4*pi); getchar(); return 0; 运行结果:3.3.3题目三:求出11000内的所有完全数分析:在判断是否为素数的程序上改一下就可以解决,两个循环嵌套。程序:#includeint main()int i=2,k,sum; for(;i=1000;i+) sum=0; for(k=1;k=i-1;k+) if(i%k=0) sum+=k; if(sum=i) printf(%d ,i); getchar(); return 0; 运行结果:3.3.4题目四:水仙花数,三位数,立方和为本身。分析:/ %取出各位数,然后一个循环进行判断。程序:#includeint main() int q,w,r,i; for(i=100;i=999;i+) q=i/100; w=i%100/10; r=i%10; if(q*q*q+w*w*w+r*r*r=i) printf(%d ,i); getchar(); return 0;运行结果:3.3.5题目五:求一个数的七进制和九进制都是三位数且这三个数刚好相反 分析:进制转换和运用,以及循环。程序: #includeint main() int i,q1,w1,r1,q2,w2,r2; for(i=81;i=342;i+) q1=i%9; q2=i%7; w1=i/9%9; w2=i/7%7; r1=i/9/9; r2=i/7/7; if(q1=r2&w1=w2&r1=q2) printf(%d ,i); getchar(); return 0;运行结果:3.3.6题目六:求解1313的最后三位。分析:一个循环,每次只留最后三位即可(1000)。程序:#includeint main()int i,sum=1;for(i=1;i=13;i+) sum=sum*13%1000;printf(%d,sum);getchar();return 0;运行结果:3.3.7题目七:求解100!尾数有多少个0.分析:主要看有多少个5的倍数,重点要小心25的倍数。程序:#includeint main()int i,sum=0;for(i=5;i=2,nN*),求Fn。22. 计算多项式的值anxn+ an-1xn-1+ an-2xn-2+a3x3+ a2x2+ a1x1+ a023. 设计一个计算两个x和y的最大值函数max(x,y),并利用该函数实现求n个数的最大值。24. 设计一个判断x是否是素数的函数prime(x),并利用该函数实现输出2100范围内的所有素数。三、实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)4.3.1题目一:斐波那契数列,求Fn。 分析:利用递推的算法来进行计算,子函数可用可不用。 源程序: #includeint f(int n) int a=0,b=1,c,i; if(n=1) return 0; else if(n=2) return 1; else for(i=3;i=n;i+) c=a+b; a=b; b=c; return c;int main() int n; scanf(%d,&n); printf(%d,f(n); getchar(); getchar(); return 0;运行结果:4.3.2题目二:计算多项式的值 分析:一个多项式的求法,(an*x+an-1)*x; 源程序: #includeint main() int n,x,i; float a; double sum; printf(x=); scanf(%d,&x); printf(n=); if(na0n); scanf(%d,&a); sum=a; for(i=1;i=n;i+) scanf(%d,&a); sum=sum*x+a; printf(%ld,sum); getchar(); getchar(); return 0;运行结果:4.3.3题目三:利用最大值函数max(x,y)求n个数的最大值。 分析:此题要求学会用子函数。程序比较简单。 源程序: #includeint max(int a,int b) if(ab) return a; else return b;int main() int n,x,i,m; printf(请输入数据个数n); scanf(%d,&n); printf(请输入数据n); scanf(%d,&m); for(i=2;i=n;i+) scanf(%d,&x); m=max(m,x); printf(最大值为:%d,m); getchar(); getchar(); return 0; 运行结果:4.3.4题目四:素数的函数prime(x),输出2100内的所有素数。分析:还是要求学会用子函数,一个简单的调用即可。源程序: #include#includevoid prime(int x) int k; for(k=2;ksqrt(x) printf(%d ,x); int main()int i,k;printf(2-100内的所有素数为:n);for(i=2;i=97;i+) prime(i); getchar(); return 0;运行结果:四、实验体会 学会写子函数。第五次上机实验一、实验目的 掌握#include的使用和#define的使用二、实验任务25. 设计一个实现多个功能(如,N个数求最大数和一元二次方程求根等等)的演示系统。26. 设计一个递归程序计算组合数C(n,m)=A(n,m)/m!。27. mccathy函数m(x)定义如下,编写一个递归程序计算给定x的m(x)的值。 28. 根据任意三角形的面积公式(海伦公式):S = p (p a )( p-b)( p-c), 其中,p=(a+b+c)/2, a.b.c为三角形三边,使用宏计算计算任意三角形的面积。三、实验步骤及结果(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)5.3.1题目一:设计一个演示系统。 分析:掌握#include的使用 源程序: #include #include#includeshushu.h/如果是.c文件的话直接声明即可,如:void shushu();#includemaxminaverage.hint main() int i; printf(100shushu请输入1,最大最小值平均值请输入2n); scanf(%d,&i); if(i=1) shushu(); else if(i=2) maxminaverage(); return 0;void maxminaverage0() int max,min,n,i,k; float average,sum; printf(请输入数据个数Nn); scanf(%d,&n); printf(请输入数据n); scanf(%d,&k); max=min=k; sum=k; for(i=2;imax) max=k; if(kmin) min=k; average=sum/n; printf(最大值为:%dn,max); printf(最小值为:%dn,min); printf(平均值为:%fn, average); printf(n);void shushu()int i,k;printf(2-100内的所有素数为:n);for(i=2;i=97;i+) for(k=2;ksqrt(i) printf(%d ,i); getchar();运行结果:5.3.2题目二:26.递归程序计算组合数C(n,m)=A(n,m)/m!。 分析:要学会递归的使用,程序不难。 源程序:#includeint c(int n,int k)if(n=k|k=0) return 1;else return c(n-1,k-1)+c(n-1,k); int main()int n,k;printf(cin n,kn);scanf(%d%d,&n,&k);printf(%d,c(n,k);getchar();getchar();return 0;运行结果: 5.3.3题目三:mccathy函数,编写递归程序计算x的m(x)。 分析:还是递归的应用。(此题挺有意思,101以下的数好像都是输出91)源程序: #includeint m(int x)if(x100) return x-10;else return m(m(x+11);int main() int n; scanf(%d,&n); printf(%d,m(n); getchar(); getchar(); return 0;运行结果:5.3.4题目四:海伦公式,使用宏计算计算任意三角形的面积。分析:此题要求学会使用宏替换来写程序,用处比较大。源程序:#include#include#define p (a+b+c)/2)#define s(a,b,c) sqrt(p*(p-a)*(p-b)*(p-c)int main()int a,b,c,t;scanf(%d%d%d,&a,&b,&c);t=s(a,b,c);printf(%d,t);getchar();getchar();return 0;运行结果:四、实验体会#include的使用对于.h和.c是不同的,一个是当头文件来使用,一个是当子函数来使用。第六次上机实验一、实验目的学会指针的运用,掌握简单的算法。二、实验任务29. 设计一个函数reverse(a, n),将一维数组a的值逆置。如,逆置前,A:20、10、90、59、60、80、70,逆置后,A:70、80、60、59、90、10、20。30. 设计一个函数BubbleSort(a, n),采用冒泡排序算法,实现一维数组的整数进行排序的功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论