已阅读5页,还剩99页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 实 验 报 告课程名称: C语言程序设计 专业班级: 信息安全1302班 学 号: U201315130 姓 名: 王超 指导教师: 周时阳 报告日期: 2014年6月16日 计算机科学与技术学院目录1 实验概述12 第一次实验12.1 实验目的12.2 实验内容12.3 实验小结73 第二次实验83.1 实验目的83.2 实验内容83.3 实验小结124 第三次实验134.1 实验目的134.2 实验内容134.3 实验小结185 第四次实验195.1 实验目的195.2 实验内容195.3 实验小结226 第五次实验236.1 实验目的236.2 实验内容236.3 实验小结287 第六次实验297.1 实验目的297.2 实验内容297.3 实验小结359 实验总结36参考文献371 实验概述c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。 这几个个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。 学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了6次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: 1加深对课堂讲授内容的理解 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。 学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。 通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去掩盖程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。2熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。3学习上机调试程序 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。 通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。2 第一次实验2.1 实验目的1. 设计简单的程序并完成简单的计算任务。2. 掌握基本输入输出语句。 3. 掌握C语言程序的编译,运行和链接。2.2 实验内容(一)设计一个程序,在字符模式下,以某个字符拼出“王”汉字图形,显示输出。 程序代码: #include int main(void) printf(*n); printf(*n); printf( * n);printf( * n); printf( * n); printf(*n); printf(*n); printf( * n); printf( * n); printf(*n); printf(*n); return 0;输出效果: (二)输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)。 程序代码: #include int main(void)float f,c;printf(input the temperaturen);printf(by liuxvzhen);scanf(%f,&f);c=5.0/9*(f-32);printf(%f,c);return 0;输出效果: (三)设计3种算法完成交换整形两个变量值的程序。算法思想:算法1 :寻找另一变量作为中间变量完成交换。(空杯法)算法2 :取a、b之间的差值对a和b进行四则运算,完成a、b的交换。算法3 :根据一数与另一数 异或 两次后仍得原数的规律,将a、b值进行交换。程序代码:算法1 :#includeint main(void)int a,b,m; printf(input two numbers,please);scanf(%d%d,&a,&b);m=a;a=b;b=m;printf(a=%d,b=%d,a,b);return 0;算法2 :#includeint main(void)int a,b; printf(input two numbers,please);scanf(%d%d,&a,&b);a=b-a;b=b-a;a=a+b;printf(a=%d,b=%d,a,b);return 0;算法3 :#includeint main(void)int a,b; printf(input two numbers,please);scanf(%d%d,&a,&b);a=ab;b=ab;a=ab;printf(a=%d,b=%d,a,b);return 0;输出效果: (四)设计一个程序,完成如下功能:输出一个三位数,将他反向输出。如输入123,输出321。 算法思想: 利用整型数字除法的方法将三位数的百位,十位,个位数字提取出来并交换位置,达到反向输出的目的。程序代码:#includeint main(void)int a,b,c,m;scanf(%d,&m);a=m/100;b=(m-a*100)/10;c=m-a*100-b*10;m=c*100+b*10+a;printf(%dn,m);return 0;输出效果: (五)设计两种完成计算maxx,y,z的程序。算法思想:算法1 :使用if语句。算法2 :使用三目运算语句()?():()进行计算。程序代码:算法1 :#includeint main(void)int a,b,c,m; printf(“ please input three numbersn”);scanf(%d%d%d,&a,&b,&c);if(ab)if(ac)m=a;elsem=c;elseif(bc)m=b;elsem=c;printf(max=%dn,m);return 0;算法2 : #includeintmain()intx,y,z,max;printf(pleaseinputthreenumbersn);scanf(%d%d%d,&x,&y,&z);max=xy?(xz?x:z):(yz?y:z);printf(max%d,%d,%d=%dn,x,y,z,max);return0;输出效果: (六)设计一个程序,完成计算三个数的居中数。程序代码:#includeint main(void)int a,b,c,m;scanf(%d%d%d,&a,&b,&c);if(ab)if(ac)if(bc)m=b;elsem=c;elsem=a;elseif(bc)if(ac)m=a;elsem=c;elsem=b;printf(middle=%dn,m);return 0;输出效果: (七)设计计算一元二次方程组的根的程序。算法思想:根据所掌握的一元二次方程求解的数学知识,将其转化为c语言进行表达,用求根公式进行计算.注意用if语句考虑多种情况。调用math.h 头文件 程序代码:#include#includeint main(void)float a,b,c,x,x1,x2;scanf(%f%f%f,&a,&b,&c);if(a=0&b=0)if(c=0)printf(x is everyfiguren);elseprintf(input is errorn);elseif(a=0&b!=0)x=-(c/b);printf(x=%fn,x);elseif(b*b-4*a*c)=0)if(b*b-4*a*c)=0)x=(-b)/(2*a);printf(x=%fn,x);elsex1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);printf(x1=%f,x2=%fn,x1,x2);elseprintf(x is no figuren );return 0;输出效果: (八)根据任意三角形的面积公式(海伦公式):s=根号下p(p-a)(p-b)(p-c),其中,p=(a+b+c)/2,abc为三角形的三条边,设计一个程序计算任意三角形的面积。算法思想:首先用if语句对用户输入的三条边长进行判断,判断其是否可组成三角形,再编写程序进行计算。程序代码:#include#includeint main(void)float a,b,c,p,s;scanf(%f%f%f,&a,&b,&c);if(a=b+c)|(b=a+c)|(c=a+b)printf(input is errorn);elsep=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(s=%f,s);return 0;输出效果: 2.3 实验小结通过本次实验,了解了c语言基本的输入与输出,掌握了最基本的c语言的语法知识,知道了一个问题可以用不同的算法来解决,有的方法简单,有的方法复杂,我们所寻求的是效率最高的那种算法。要注意的是写程序前最好先写好算法步骤,这样写起程序来会事半功倍。3 第二次实验3.1 实验目的1.学会使用do,if,while,do while一系列语句。2.用c语言来解决实际问题。3. 通过网上搜索相关资料来完善程序设计。3.2 实验内容(一)设计一个计算个人所得税的程序。算法思想:借助网络了解最新的税收方式,用简单的表达式编写计算所得税的算法。程序代码:#includeint main(void)float a,b,c,d; printf(input your salary and your Individual pay part of the social insurance and housing accumulation fundn);scanf(%f%f,&a,&b);c=a-b-3500;if(c0&c1500&c4500&c9000&c35000&c55000&c=80000)d=c*0.35-5505;elsed=c*0.45-13505;printf(%fn,d);return 0;输出效果: (二)计算两个数的最大公约数和最小公倍数。算法思想:最大公约数:从i=min(a,b)开始进行对要求解的两数进行循环计算,计算两数对i能否整除,若能,输出i,结束循环,否则,将i减1继续计算,直到i能同时被两数整除。 最小公倍数:最大公倍数与最小公约数的乘积等于两个数的积,只要计算出最大公约数就可以直接得出最大公倍数。程序代码:#includeint main(void)int a,b,c,d;/*c为最大公约数,d为最小公倍数*/printf(input two numbers,pleasen);scanf(%d%d,&a,&b);if(a=0&b=b)c=b;while(a%c)|(b%c)c-; elsec=a;while(a%c)|(b%c)c-; d = a*b/c; printf(max=%d,min=%dn,c,d);return 0;输出效果: (三)输入一个数n(=2),判定n是否为素数。算法思想:从i=2开始进行循环计算,计算n是否可以整除i若能,判断i是否小于n,若小于,则n不是素数,若i小于n时不能被n整除,则n是素数。 程序代码:#includeint main(void)int n,a;printf(input a figuren);scanf(%d,&n);if(n2)printf(input is error);else a=2; while(n%a)a+;if(an)printf(%d is not a prime number,n);elseprintf(%d is a prime number,n);return 0;输出效果: (四)输出2-100范围内的所有素数。要求:不使用子函数。算法思想:用嵌套循环,令外层对n进行循环,内层用上题算法进行判断,若n是素数,则输出。 程序代码:#includeint main(void)int a,b;for(a=2;a=100;a+)b=2;while(a%b)b+;if(ba) ;elseprintf(%dt,a);return 0; 输出效果: (五)输出九九乘法口诀表。算法思想:对i*n的形式定义两次循环,首先对n进行循环,从1开始到9结束,再对i=1进行循环直到i=n,并在每次对i循环时输出一个运算式,每次对n进行循环时换行。程序代码:#include int main() int mul,i,j; for(i=1;i10;i+) for(j=i;j10;j+) mul=i*j; printf(%d*%d=%dt,i,j,mul); printf(n); 输出效果: 3.3 实验小结通过本次实验,基本掌握了循环语句的使用方法,发现写含有循环语句的程序需要很大的耐心和冷静的细心,虽然有些不熟练,但只要坚持写,总会取得成功。同时我发现循环语句确实能够解决很多实际问题,这展现了了c语言的无穷魅力,激发了自己更大的兴趣。4 第三次实验4.1 实验目的1.了解道溢出的概念,尝试解决溢出问题。2.强化对循环语句的理解与应用。3.掌握嵌套语句。4.2 实验内容(一)求n个数的最大值,最小值和平均值。要求:不使用数组。算法思想:在进行计较时每次只取两个数,并对这两个数进行比较,取其中最大或最小值与下一个数进行比较,直到数据取完,数字的个数开始由用户自己输入。并在每次取数据时统计数据个数和计算总和,最终计算平均值。程序代码:#include int main (void) float aver, max,min,sum=0,x;int i,n;printf (please input nn); scanf(%d,&n); printf (please input the first numbern);scanf(%f,&x); sum=sum+x;max=x;min=x;for (i=2;imax)max=x;else if (xmin)min=x;printf(min=%.2f,min);printf(max=%.2f,max);aver=1.0*sum/n; printf(aver=%.2fn,aver);输出效果: (二)依据1/1-1/3+1/5-1/7+1/9-=pi/4,计算圆周率pi,要求最后一项10-6。 程序代码:#includeint main(void)float pi,n;int i;i=1;n=1;pi=0;while(1/n)=0.000001)if(i%4)=1)pi+=(1/n);elsepi-=(1/n);i+=2;n=i;pi=pi*4.0;printf(%f,pi);return 0;输出效果: (三)完全数是一种特殊的自然数。它所有的真因子(即除了自身以外的约数)的和恰好等于它本身。试求出11000范围内的所有完全数。程序代码:#includeint main(void)int i,n,m;for(n=1;n=1000;n+)i=1;m=0;while(in)if(n%i)=0)m+=i;i+;if(n=m)printf(%dn,n);return 0;输出效果: (四)水仙花数是指一个三位数,它的每个位上的数字的三次幂之和等于它本身。例如:13+53+33=153。试求出所有的水仙花数。算法思想:用for循环语句循环100到999的所有三位数。将n各个位数相分离并进行乘方和求和运算,结果与n比较,若相等,输出n。 程序代码:#includeint main(void)int n,a,b,c;for(n=100;n=999;n+)a=n/100;b=(n-a*100)/10;c=n-(a*100)-(b*10);if(a*a*a+b*b*b+c*c*c)=n)printf(%dn,n);return 0;输出效果: (五)一个数,其七进制和九进制均为3位数,且三位数的数字正好相反,试求出这个数。算法思想:定义循环n,使其取得100到999的所有三位数,并使其代表为欲求数的七进制表示,将其各位数字反置,令所得数表示欲求数的九进制,同时将七进制和九进制转化为十进制,若二者转化所得的十进制相等,则此十进制数即为所求。程序代码:#includeint main(void)int a,b,c,s,n,t1,t2;for(s=100;s=999;s+)a=s/100;b=(s-a*100)/10;c=s-a*100-b*10;n=c*100+b*10+a;t1=a*7*7+b*7+c;t2=c*9*9+b*9+a;if(t1=t2)printf(%dn,t1);return 0;输出效果: (六)求解1313的尾数三位是什么。算法思想:一个数的尾数与另一个数的尾数相乘所得的数的尾数与这两个数直接相乘所得的尾数相同,利用循环语句进行13次循环即可得到结果程序代码:#includeint main(void)int a,i;a=13;for(i=1;i13;i+)a=a*13;a=a%1000;printf(%dn,a);return 0;输出效果: (七)求解100!尾数有多少个0.算法思想:统计100!中能整除25或者5的个数,若能整除25,则必会产生两个零,若不能整除25但能整除5,则会产生一个零。用循环语句来统计1到100中这些数的个数。程序代码: #includeint main(void)int a=0,b=0,c,i;for(i=1;i=2,nN*),求Fn。算法思想:定义变量a、b使a表示偶数项,b表示奇数项。从f0和f1开始依次向后向后相加,直到fn。 程序代码:#includeint main(void)int a,b,i,n,fn;printf(please input the n:n);scanf(%d,&n);i=2;a=0;b=1;fn=a+b;while(in)if(i%2=0)a=a+b;fn=fn+b;elseb=a+b;fn=fn+a;i+;printf(%dn,fn);return 0;输出结果: (二)计算多项式的值anxn+ an-1xn-1+ an-2xn-2+a3x3+ a2x2+ a1x1+ a0算法思想:利用牛顿迭代法求多项式的值,使计算的步骤减少,增加了程序的有效性。其中ai ,x和n由用户自己输入。程序代码:#includeint main(void)int i,n,m;float a,b,x,sum;printf(输入n和x以及从a0到an的值:n);scanf(%d%f,&n,&x);scanf(%f,&a);sum=a;b=x;for(m=1;m=n;m+)scanf(%f,&a);i=1;x=b;while(im)x=x*b;i+;sum=sum+(a*x);printf(%.2fn,sum);return 0;输出效果: (三)设计一个计算两个x和y的最大值函数max(x,y),并利用该函数实现求n 个数的最大值。算法思想:将max定义为子函数,通过子函数传参将上次求得的最大值和新值进行运算。 程序代码:#include int max( int x , int y );int main() int n,x,y,z,i; printf(Input the number of your nunbers!n); scanf( %d,&n); if ( n 2 ) printf(Error!Please input more than 2 numbers!n); return 1; scanf(%d,&x); n = n - 1; for ( i = 1; i y ) return x; else return y ;输出效果: (四)设计一个判断x是否是素数的函数prime(x),并利用该函数实现输出 2100范围内的所有素数。程序代码:#includeint prime(int x)int i;i=2;while(x%i)i+;if(ix)return 0;elsereturn x;int main(void)int a;for(a=2;a=100;a+)if(prime(a)printf(%3dt,a);else; 输出效果: 5.3 实验小结通过本次实验,了解函数的声明与调用,掌握函数传参的步骤,知道了正确使用函数会使程序结构更加清晰,是程序修改变得更加简单,降低发生错误的概率。但是函数的使用不是无节制的,小程序不必使用函数来增加难度。6 第五次实验6.1 实验目的1. 学会运用递归的方式求解实际问题。2灵活运用子函数的返回值与参数。3学习c语言中子函数的应用,了解其定义形式和引用方法。6.2 实验内容(一)设计一个实现多个功能(如,N个数求最大数和一元二次方程求根等等)的 演示系统。算法思想:在项目中定义多个子函数文件,在main函数中设计引用方式,并引用子文件进行计算。程序代码:#include #include float equation();int max();int game();int main()char a;do printf(这是一个可以实现多功能的演示系统,可以完成如下功能:n);printf(1.如果希望解方程请输入en);printf(2.如果想求最大数请输入mn);printf(3.如果想退出该系统请输入Ctrl+cn);a=getchar();switch(a)case e:equation();break;case m:max();break;default:printf(error!n);break;a=getchar();while(a!=0);float equation()int a,b,c;float
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年五数上册月考试题及答案
- 2025医疗病患护理需求变化分析来与未来市场发展规划研究报告
- 2025医疗护理服务产业市场深度研究及未来趋势与医疗服务创新报告
- 2025医疗废物处置行业发展趋势与产业应用现状及投资规划前景分析研究报告
- 2025医疗器械理疗设备行业市场供需分析投资评估规划研究报告
- 2025医疗器械服务行业市场格局深度研究及投资策略与战略规划分析报告
- 2025年汽车碰鲨鱼测试题及答案
- 工程伦理分析案例考试题及答案
- 2025年安全教育消防题库及答案
- 高考数学真题压轴选择题及答案
- 2025杭州西湖云创产业服务有限公司公开招聘工作人员6人笔试考试参考题库及答案解析
- 2025年红十字应急救护知识竞赛考试题库(含答案)
- 农户代耕代种协议书
- 2025内蒙古蒙智资本运营研究有限公司及子公司招聘工作人员4人笔试历年典型考点题库附带答案详解2套试卷
- 迈瑞心电监护仪使用流程
- 华为ICT大赛考试题库(附答案)
- 天一大联考海南省2025-2026学年高三学业水平诊断(一)生物(含答案)
- 全国一等奖高一语文统编版必修下册《青蒿素:人类征服疾病的一小步》公开课精讲课件
- 2025年无线电广播接收设备行业分析报告及未来发展趋势预测
- 江苏省徐州市云龙区2024-2025学年六年级上学期语文期中试卷(含答案)
- 明儒王龙溪的一念工夫论
评论
0/150
提交评论