ImageVerifierCode 换一换
格式:DOCX , 页数:63 ,大小:78.47KB ,
资源ID:7135938      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7135938.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言上机实验题.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言上机实验题.docx

1、c语言上机实验题1下列程序中,要求main函数实现如下功能:从键盘上输入三个正整数,求出它们中的最大值。请完善程序,并在程序最后用注释的方式给出你的测试数据及在这组测试数据下的运行结果。#include void main() int a,b,c,max; printf(Enter three integers:); scanf(%d%d%d,&a,&b,&c); if(ab) max=a; else max=b if(cmax) max=c; printf(max of the three numbers is %d,max); /*1,2,5 max of the three number

2、s is 5*/2.请编程序,对从键盘上输入的x值,根据以下函数关系计算出相应的y值(设x,y均为整型量)。xyx000=x10x10=x201020=x40-5x+20#includemain() int x,y; scanf(%d,&x); if(x=0&x=10&x=20) y=10; else y=-5*x+20; printf(%d,y);3. 写程序计算下列各表达式的值:1)2)3)#include#includemain() float a,b,c; a=2.0/(4.0/5+3)+1; b=sqrt(13-pow(2.24-pow(0.24,2),2)/3.68); c=2*3

3、.14159*sqrt(13+exp(2); printf(%fn%fn%f,a,b,c);4.写程序计算5x2+2x+6的两个实根。考虑用合适的方式输出。(提示:可先计算出判别式b2-4ac的值)#include#includemain() float a,b,c,x1,x2,p,q,disc; printf(input a,b,c:); scanf(%f%f%f,&a,&b,&c); disc=b*b-4*a*c; if(disc=0) p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf(%fn%fn,x1,x2); elsepri

4、ntf(No Answer);5.从键盘上任意输出一个年份year,判别该年是否为闰年,如是输出“yes”,否则输出“no”。提示:如果变量year的值是闰年年份,那么这个值应该是4的部数但又不是100的倍数,或者它是400的倍数。#includevoid main()int year;scanf(%d,&year);if(year%4=0&year%100!=0|year%400=0)printf(yes);elseprintf(no);6.从键盘上输入float型数,判断这三个数能否构成三角形,若能则求该三角形面积,否则输出不能构成三角形的信息。#include#include void

5、main() float a,b,c,p,area; printf(input three integers:); scanf(%f %f %f,&a,&b,&c);if(a+bc&a+cb&b+ca) p=(a+b+c)/2.0; area=sqrt(p*(p-a)*(p-b)*(p-c); printf(%fn,area); else printf(inputs are wrong!);7.下列程序想求出满足如下条件的三位数n:(1)n除以11(整数相除)所得到的商等于n的各位数字的平方和;(2)n中至少有二位数字相同。如:131除以11的商为11,131各位数字的平方和为11,131中有

6、二位数字相同,故131是所要求出的三位数中的一个;又如550,也是满足条件的三位数。源程序中有些错误,请你改正并最终使程序得到如下的运行结果:131 550 900【含有错误的源程序】#include void main() int n , a , b , c; for(n=1; n=2) printf(%5d,n); #includestdio.hvoid main() int a,b,c,n; for(n=100;n=1 */ printf(%5d,n); 8. 请编程序,实现从键盘上输入任意一个整数n,求出n的各位数字之和。例如,当n为263时,各位数字之和为11。下面是一个可以实现逐位

7、数字累加功能的程序段,试理解后应用到自己的程序中。#includestdio.hvoid main() int n,k;scanf(%d,&n);k=0 ;dok+=n%10;n/=10;while (n);printf(%d,k);getch();9.试找出符合下列条件的正整数:(1)该数是一个三位数;(2)该数是37的倍数;(3)该数循环左移后得到的另两个数也是37的倍数。例如148是37的倍数,481和814也是37的倍数。#includestdio.hvoid main() int n,a,b; for(n=100;n1000;n+) if(n%37=0) a=n/10+n%10*10

8、0; b=n/100+n%100*10; if(a%37=0&b%37=0) printf(%5d,n); getch();10.请编辑调试下列程序,观察其运行结果,理解函数定义、函数调用的基本方法,并理解函数调用时形参和实参之间数据的传递方式。(1)请将下列源程序进行调试,观察运行结果,尽量想明白为什么得到如此运行结果后再看题后的评注:【源程序】#include void main() int i=2,x=5,j=7; fun(j,6); printf(“i=%d,j=%d,x=%dn”, i , j , x); int fun(int i ,int j) int x=7; printf(“

9、i=%d,j=%d,x=%dn”, i , j ,x);(2)评注:该题想要使大家明白,函数调用时是实参单向值传递给形参的,函数的形参是随着该函数被调用而分配空间,调用结束系统要回收空间;当执行main函数中的语句fun(j,6)时,其中的j是main函数中的量j,这次调用等价于fun(7,6),即将7和6分别传输给形参变量i和j;当执行fun函数时,fun有其自身的内部变量x,fun函数中的输出语句中,i,j,x的值分别为7,6,7;执行流程遇fun函数中的函数体闭封符“”返回主函数,在主函数中输出时,i,j,x的值分别2,7,5。2(实验报告上的题2)请按如下步步骤设计程序:(1)编辑并运

10、行下列程序:#include void main() char i; float x; printf(enter x:); scanf(%f,&x); printf(1. To calculate e to the power xn); printf(2. To calculate logx to the base 10n); printf(3. To calculate lnx n); printf(4. To calculate square root of xn); printf(n); printf(enter your choice:1/2/3/4); scanf(%1s,&i);

11、/* 表示截取输入字符串中的1个字符,因为输入串中回车也算1个字符的*/ switch(i) /* i必须视作字符量,这由它的类型及输入的数据所决定*/ case 1: fexp(); break; case 2: flog10();break; case 3: flog();break; case 4: fsqrt();break; default: printf(Sorry, can t do for you!n); break; getch(); fexp()flog10() flog()fsqrt()评注:这个程序既然能运行了,输入测试数据,试着走走所有的分支路径,看看能不能都走得通(

12、当然有些是不可能有结果的,因为辅助功能函数都是空的),一定要走哟,并且弄清楚所走路径中分别执行什么语句,得到什么结果。(2)试着将下面的功能函数的首部作修改(加上形参和返回值类型,一定要注意到哟):#include void main() char i; float x; printf(enter x:); scanf(%f,&x); printf(1. To calculate e to the power xn); printf(2. To calculate logx to the base 10n); printf(3. To calculate lnx n); printf(4. T

13、o calculate square root of xn); printf(n); printf(enter your choice:1/2/3/4); scanf(%1s,&i); switch(i) case 1: fexp(x); break; case 2: flog10(x);break; case 3: flog(x);break; case 4: fsqrt(x);break; default: printf(Sorry, can t do for you!n); break; getch();float fexp(float x)float flog10(float x) f

14、loat flog(float x)float fsqrt(float x)评注:注意到了吗?这个程序不能通过编译,错误的原因是“与fexp声明中的类型不匹配”等类的错误,还记得我课堂上讲了3个重要的概念,它们分别是函数的定义(目的是为了描述具体的功能,但不实现)、函数的调用(目的是实现函数所定义的功能)和函数的声明(目的是为了使一个存在的函数允许被调用,原则上是不能违背先定义后使用的原则,但当被定义的函数返回值为int类型时,被调用函数可以放在调用函数的后面而在调用之前缺省声明,这也就是第一步中程序能运行的原因)。这个程序中,辅助函数的返回值类型均改为了float型,函数声明就不可以再缺省,

15、有两种方法可以处理好这一问题,一是将后面的几个函数搬到main函数的前面,编译预处理命令的后面(自己试试吧);另一种办法是在编译预处理后面加函数的声明语句,如下列程序所示:#include float fexp(float); /*函数声明*/float flog10(float); /*函数声明*/float flog(float); /*函数声明*/float fsqrt(float); /*函数声明*/void main() char i; float x; printf(enter x:); scanf(%f,&x); printf(1. To calculate e to the p

16、ower xn); printf(2. To calculate logx to the base 10n); printf(3. To calculate lnx n); printf(4. To calculate square root of xn); printf(n); printf(enter your choice:1/2/3/4); scanf(%1s,&i); switch(i) case 1: fexp(x); break; case 2: flog10(x);break; case 3: flog(x);break; case 4: fsqrt(x);break; def

17、ault: printf(Sorry, can t do for you!n); break; getch();float fexp(float x)float flog10(float x) float flog(float x)float fsqrt(float x)评注:很神奇(这是编译系统的功劳,你要记住哟),程序又能执行了,跟(1)一样,可以走遍所有的路径了。(3)下面我们试着将一些功能添加到函数中(当然,如果你有能力,可以添加足够复杂的功能,这也是我之希望:例如,求素数、黑洞数、反素数可逐一添加到你的程序中,你想要某一模块干啥就去干啥):#include float fexp(fl

18、oat); /*函数声明*/float flog10(float); /*函数声明*/float flog(float); /*函数声明*/float fsqrt(float); /*函数声明*/void main() char i; float x; printf(enter x:); scanf(%f,&x); printf(1. To calculate e to the power xn); printf(2. To calculate logx to the base 10n); printf(3. To calculate lnx n); printf(4. To calculat

19、e square root of xn); printf(n); printf(enter your choice:1/2/3/4); scanf(%1s,&i); switch(i) case 1: fexp(x); break; case 2: flog10(x);break; case 3: flog(x);break; case 4: fsqrt(x);break; default: printf(Sorry, can t do for you!n); break; getch();float fexp(float x) printf(exp(%f)=%en,x,exp(x); /*e

20、xp(x)表示求ex */float flog10(float x) printf(log10(%f)=%en,x,log10(x); /*log10(x)表示求log10x */ float flog(float x) printf(log(%f)=%en,x,log(x); /* log10(x)表示求logex */float fsqrt(float x) printf(sqrt(%f)=%en,x,sqrt(x); 评注:注意上列源程序中的注释哟,帮助你了解更多的数学库函数。调试上述程序输入测试数据(x为0,选择做操作1),这是什么结果?这2个测试数据输入,应该求的是e啊,e的值谁都知

21、道啊,怎么就不是这个值呢?这一点,我想请你自己想办法了11水仙花数是指一个3位数,其各位数字的立方和等于该数本身。完善函数int daffodil(int n),其功能是判断整数n是否为水仙花数,如是,则该函数返回值,否则返回值。#includeint daffodil(int n)int i,k,j;i=n/100;k=n/10%10;j=n%10;if(n=i*i*i+k*k*k+j*j*j) return 1;else return 0;main() int m,i=0; for(m=100;m1000;m+) if(daffodil(m)=1) printf(%5d,m); i+; i

22、f(i%5=0)printf(n); getch(); 12.设n0是一个给定的正整数。对于i=0,1,2,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数。请编写一个函数void hailstones(int n),其功能是显示由n产生的所要求的序列,按每行6个数输出该数列中的所有数。编写main函数,在main函数中定义一个整型变量n,从键盘上输入值77赋给n,用n作为实参调用函数hailstones。测试数据:77输出结果:Hailstones generated by 77:77 232 116 58

23、29 8844 22 11 34 17 5226 13 40 20 10 516 8 4 2 1Number of hailstones generated:23#include int i=0;void hailstones(int n) while(n!=1) if(i%6=0) printf(n); printf(%5d,n); if(n%2=0) n=n/2; else n=3*n+1; i+; printf(%5d,n); i+;main() int n; scanf(%d,&n); printf(Hailstones generated by %dn,n); hailstones(

24、n); printf(nNumber of hailstones generated:%d,i);13.从键盘上输入一个正整数x,判断x是否为质数,如果是则输出“TURE”,否则输出“FALSE”。#include#includemain() int x,k,i; scanf(%d,&x); for(i=2;ik) printf(TRUE); else printf(FALSE);14.请按要求编写程序。编程要求:(1)编写函数int twinborn(int m,int n),其功能是判断整数m和n是否为孪生质数对(相差为2的两个质数称为孪生质数),如是,则函数返回值,否则返回值。(2)编写

25、main函数,求出10,99内的所有孪生质数对,使得程序的运行结果为: 11, 13 17, 19 29, 31 41, 43 59, 61 71, 73#include#includeint prime(int m) int n; for(n=2;n=sqrt(m);n+) if(m%n=0) return 0; return 1;int twinborn(int m,int n) if(prime(m)+prime(n)=2) return 1; else return 0;main() int m,n; for(n=10;n=97;n+) m=n+2; if(twinborn(m,n)=

26、1) printf(%5d,%5dn,n,m); 53. 请编写函数int twinborn(int a2,int m,int n),其功能是找出m,n中的所有孪生质数对(相差为2的两个质数称为孪生质数),并依次将每对孪生质数写到a指向的二维数组的每一行中。编写main函数,声明一个1002的二维数组a,并从键盘上输入m和n的值,用a、m、n作为实在参数调用函数twinborn,将结果数组以行为单位输出至屏幕。例如,测试数据和运行结果如下:input two numbers:10 100 11, 13 17, 19 29, 31 41, 43 59, 61 71, 73#include#includeint prime(int i)int k;for(k=2;ksqrt(i);k+)if(i%k=0)return 0;return 1;int twinborn(int a2,int m,int n) int k=0,i;for(i=m;i=n-2;i+=1)if(prime(i)&prime(i+2)ak0=i,ak1=i+2,k+;return k; main() int a1002,m,n,i; printf(input two n

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1