北理c语言上机答案(全)(66页).doc

上传人:1595****071 文档编号:35923703 上传时间:2022-08-24 格式:DOC 页数:66 大小:373KB
返回 下载 相关 举报
北理c语言上机答案(全)(66页).doc_第1页
第1页 / 共66页
北理c语言上机答案(全)(66页).doc_第2页
第2页 / 共66页
点击查看更多>>
资源描述

《北理c语言上机答案(全)(66页).doc》由会员分享,可在线阅读,更多相关《北理c语言上机答案(全)(66页).doc(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-北理c语言上机答案(全)-第 66 页1 Hello world让我们用C语言向世界问好。最早的程序基本是这个样子的:程序一:#include void main() printf(Hello world.n);程序二:#include int main() printf(Hello world.n); return 0;上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。 输入:无输出:Hello world.程序实例1:#include void main() printf(Hello world.n); 结果:Hello world.

2、程序实例2:#include int main() printf(Hello world.n); return 0; 结果:Hello world.1. Welcome to Beijing.让我们来练习如何显示多行文字。输入:无输出:就是下面的那段文字。程序实例1:#includestdio.h int main() printf(Welcomen); printf(ton); printf(Beijing.n); return 0; 结果:WelcometoBeijing.程序实例2:#include void main() printf(WelcomentonBeijing.n); 结果

3、:WelcometoBeijing.1 练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。输入:整型变量x的值。输出:输出整型变量x对应的十进制、八进制和十六进制形式。认真看看-1的八进制和十六进制输出,请想想是为什么。程序实例1:#includestdio.h main() int x; scanf(%d,&x); printf(x=%d,x=%o,x=%xn,x,x,x); 结果:输入:-1输出: x=-1,x=37777777777,x=ffffffff程序实例2:#include stdio.h void main()

4、 long x; scanf(%d,&x); printf(x=%d,x=%o,x=%0xn,x,x,x); 结果:输入:292输出:x=292,x=444,x=1241 练习两个整数之间的运算背景:基本练习。输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444输出:分别输出进行+、-、*、/、*之后的运行结果。程序实例1:#include void main() int a,b,c,d,e,f,g; scanf(%d %d,&a,&b); printf(%d+%d=%dn,a,b,c=a+b); printf(%d-%d=%dn,a,b,d=a-b); printf(

5、%d*%d=%dn,a,b,e=a*b); printf(%d/%d=%dn,a,b,f=a/b); printf(%d%d=%dn,a,b,g=a%b); 结果:输入:103输出:10+3=1310-3=710*3=3010/3=310%3=1程序实例2:#include void main() int x1,x2,x3,x4,x5,a,b; scanf(%d %d,&a,&b); x1=a+b; x2=a-b; x3=a*b; x4=a/b; x5=a%b; printf(%d+%d=%dn%d-%d=%dn%d*%d=%dn%d/%d=%dn%d%d=%d,a,b,x1,a,b,x2,a

6、,b,x3,a,b,x4,a,b,x5); 结果:输入:123 444输出:123+444=567123-444=-321123*444=54612123/444=0123%444=1231 学习打印你的第一个图形背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。程序如下:#include void main() printf(*n); printf(*n); printf(*n); printf(*n);要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。输入:无。输出:指定图形。程序实例1:

7、#include int main( void ) printf( *n ); printf( *n ); printf( *n ); printf( *n ); return 0; 结果:输入:无输出:程序实例2:#includestdio.h main() printf( *n); printf( *n); printf( *n); printf(*n); 结果:输入:无输出:1 温度转换(06秋)背景: 经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,请你根据温度转换公式设计一个温度转换程

8、序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。温度转换的公式为:F(C95)32 ;C(F32)59 ;式中F-华氏温度,C-摄氏温度。输入:第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1);摄氏转华氏(2); 第二个数据是相应需要转换的温度值。 输出:相应的转换后的温度值(保留小数点后 2 位)。程序实例1:#include void main() int a; float x,y; scanf(%d%f,&a,&x); if ( a=1 ) y=(x-32)*5.0/9.0; printf(The Centigrade is %

9、.2fn,y); else if(a=2) y=(x*9.0/5.0)+32; printf(The Fahrenheit is %.2fn,y); 结果:输入:1100输出:输入:输出:程序实例2:#include void main() float C;int a; scanf(%d %f,&a,&C); switch (a) case 1: printf(The Centigrade is %.2fn,(C-32)*5/9);break; case 2: printf(The Fahrenheit is %.2fn,(C*9/5)+32);break; default: printf(e

10、rrorn); 结果:输入:10输出:输入:288输出:2 计算圆柱的侧面积及体积如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2rh ,体积 v= r 2 h 。其中 =3.1415926 输入:第一行输入圆柱的底面半径 r第二行输入圆柱的高 h 输出:s=,v= 要求 1. 所有变量都定义为双精度类型2. 结果精确到小数点后两位程序实例1:#include #include void main() double r,h,s,v,PAI=3.1415926; scanf(%lfn%lf,&r,&h); s=2*PAI*r*h; v=PAI*r*r*h; printf

11、(s=%.2f,v=%.2fn,s,v); 结果:输入:28输出:程序实例2:#includevoid main()double pi=3.1415926; int r,h; scanf(%d,&r); scanf(%d,&h); printf(s=%5.2f,v=%5.2fn,2*pi*r*h,pi*r*r*h); 输入:510输出:3 计算时钟的夹角背景: 钟面上的时针和分针之间的夹角总是在 之间 ( 包括 和 ) 。举例来说,在十二点的时候两针之间的夹角为 ,而在六点的时候夹角为 ,在三点的时候为 。本题要解决的是计算 12:00 到 11:59 之间任意一个时间的夹角。 输入:每组测试

12、数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 0, 59 上 ) 。 输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。程序实例1:#include void main() float x,y,z; scanf(%f %f,&x,&y); z=6*y-(30*x+y/2); if (z=-180) z+=360; else if(z=180) z=360-z; else z=z; if (y10) printf(At %.0f:0%.0f the angle is %.1f

13、 degrees.,x,y,z); else printf(At %.0f:%.0f the angle is %.1f degrees.,x,y,z); 输入:120输出:At12:00theangleis0.0degrees.程序实例2:#include #include main() int x,y; float z; scanf(%d%d,&x,&y); z=fabs(30*x-(float)y*11/2); z=z180?360-z:z; if(y0。输入:三角型的3条边的长度(int型)。输出:等边三角形:equilateral triangle 等腰三角形:isoceles tr

14、iangle 不构成三角形:non-triangle 一般三角形:triangle程序实例1:#include void main() int a,b,c; scanf(%d %d %d,&a,&b,&c); if(a+b=c|a+c=b|b+c=a) printf(non-triangle.); else if(a=b&b=c) printf(equilateral triangle.); else if(a=b&b!=c|a=c&c!=b|b=c&c!=a) printf(isoceles triangle.) ; else printf(triangle.); 结果:输入:222输出:e

15、quilateraltriangle.程序实例2:#includevoid main() int a,b,c; scanf(%d%d%d,&a,&b,&c); if(a=b&b=c&c=a) printf(equilateral triangle.n); elseif(a+bc&a+cb&b+ca) (a=b|b=c|c=a)?printf(isocelestriangle.n):printf(triangle.n); else printf(non-triangle.n); 结果:输入:131输出:non-triangle.5 求解一元二次方程初中的时候我们就会求解一元二次方程了,下面让我们

16、来教计算机如何求解。输入 a,b,c ,就一元二次方程 ax+bx+c=0 的根。 输入:假设 a,b,c均int。输出:要求输出的根为 double 型,保留 6 位小数。程序实例1:#include stdio.h #include math.h void main() int a,b,c,a2; double x1=0,x2=0,q; scanf(%d%d%d,&a,&b,&c); q=b*b-4*a*c; a2=2*a; if(a=0) if(b=0) printf(Input error!n); else printf(x=%.6fn,-c*1.0/b); else if(q0) p

17、rintf(x1=%.6fnx2=%.6fn,(-b+sqrt(q)/a2,(-b-sqrt(q)/a2); else if(q=0) printf(x1=x2=%.6fn,-b*1.0/a2); else if(q0) if(b=0) printf(x1=%.6finx2=%.6fin,sqrt(-q)/a2,-sqrt(-q)/a2); else printf(x1=%.6f+%.6finx2=%.6f-%.6fi,-b*1.0/a2,sqrt(-q)/a2,-1.0*b/a2,sqrt(-q)/a2); 结果:输入: 0 0 0输出:Inputerror!输入:2 2 2输出:程序实例2

18、:#include#include void main() double a,b,c,d; scanf(%lf%lf%lf,&a,&b,&c); d=b*b-4*a*c; if(a=0&b=0) printf(Input error!n); else if(a=0) printf(x=%lfn,c=0?0:-c/b); else if(d=0) printf(x1=x2=%.6lfn,b=0?0:-b/(2*a); else if(d0) printf(x1=%lfnx2=%lfn,(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a); else if(b=0) printf

19、(x1=%lfinx2=-%lfin,sqrt(-d)/(2*a),sqrt(-d)/(2*a); else printf(x1=%lf+%lfinx2=%lf-%lfin,-b/(2*a),sqrt(-d)/(2*a),-b/(2*a),sqrt(-d)/(2*a); 结果: 输入:10 0 0输出:你会输出一行星号吗?(本题不记分噢)我们才开始上机,现在需要我们用最简单得办法,在一行中输出N个星号。输入:N值输出:一行中N个星号。程序实例1:#includevoid main() int n,i;scanf(%d,&n); for(i=1;i=n;i+) printf(*);printf(

20、n); 结果:输入:4输出:*输入:8输出: *6 计算SUM的值已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + . + 1/n输入:n 输出:表达式 sum 的值。结果保留 6 位小数。 程序实例1:#include void main() int n,k; double sum; scanf(%d,&n); sum=1.0; for(k=2;k=n;k+) sum=sum+1.0/k; printf(sum=%.6lfn,sum); 结果:输入:1输出:程序实例2:#includevoid main() double sum,i; int n; scanf(%d,&n);

21、 for(i=1,sum=0;i=n;i+) sum=sum+1/i; printf(sum=%.6lf,sum); 结果:输入: 3输出:7 贪吃的猴子有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一般加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。输入:天数n输出:第一天的桃子个数程序实例1:#include void main() int n,i,y; scanf( %d,&n ); for( i=n-1, y

22、=1 ; i=1; i-) y = 2*(i+y); if( y=1 )printf( The monkey got %d peach in first day.,y ); if( y!=1 )printf(The monkey got %d peachs in first day.,y); 结果:输入:3输出:Themonkeygot14peachsinfirstday.8 求最后3位数值中学时我们就会求一个数的 n 次方了,但计算机不会,请你来编写一个程序吧。由于计算机比较“笨”,所以我们编写程序的功能不用太强,只要能算出 a 的 n 次方的最后 3 位数就可以了。 输入:和 n 的值。假

23、设 a=150 。 输出:求 a 的 n 次方的最后 3 位数。程序实例1:#includevoid main() int i,x,y,m=1; scanf(%d %d,&x,&y); for(i=1;i=y;i+) m=m*x%1000; if(m=0)printf(The last 3 numbers is 000.n);elseprintf(The last 3 numbers is %d.n,m); 结果: 输入:100输出:Thelast3numbersis1.程序实例2:#includevoid main() int a,n,i,s; scanf(%d%d,&a,&n); i=1;

24、 s=1; while(i=n) s=s*a%1000; i+; if(n!=0) printf(The last 3 numbers is %0.3d.n,s); else printf(The last 3 numbers is %d.n,s); 结果:输入:10010输出:Thelast3numbersis000.9 分数的四则运算在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。输入:分数1 操作符 分数2输出:计算结果要求:计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3程序实例1:#include int

25、main() int a,b,c,d,e,f,x,y,z; char g; scanf(%d/%d %c %d/%d,&a,&b,&g,&c,&d); if(g=+) e=a*d+b*c;f=b*d; if(g=-) e=a*d-b*c;f=b*d; if(g=*) e=a*c;f=b*d; if(g=/) e=a*d;f=b*c; x=e; y=f; z=x%y; if(z!=0) while(z!=0) x=y;y=z;z=x%y; e=e/y; f=f/y; if(f0) printf(%d/%d %c %d/%d = %d/%d,a,b,g,c,d,e,f); if(f0) print

26、f(%d/%d %c %d/%d = %d/%d,a,b,g,c,d,-e,-f); else printf(%d/%d %c %d/%d = %d,a,b,g,c,d,e/f); printf(n); return 0; 结果:输入:1/3+1/2输出:1/3+1/2=5/6程序实例2:#includemath.h #include void main() int a,b,c,d,m,n,x,y,v;char z; scanf(%d/%d %c %d/%d,&a,&b,&z,&c,&d); switch (z) case(+):m=a*d+b*c;n=b*d;break; case(-):m

27、=a*d-b*c;n=b*d;break; case(*):m=a*c;n=b*d;break; case(/):m=a*d;n=b*c;break; x=fabs(m);y=fabs(n);v=x%y; while(v!=0) x=y;y=v;v=x%y; if(m/y=0) printf(%d/%d %c %d/%d = 0n,a,b,z,c,d); else if(n/y=1) printf(%d/%d %c %d/%d = %dn,a,b,z,c,d,m/y); else printf(%d/%d %c %d/%d = %d/%dn,a,b,z,c,d,m/y,n/y); 结果: 输入

28、:1/2+2/6输出:1/2+2/6=5/610 黑色星期五在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。输入:年份输出:判断该年是否包含黑色星期五,如包含,给出具体日期程序实例1:#include stdio.h void main() int year,month,day,i,k=0,ruinian,n;int a12=6,2,2,5,0,3,5,1,4,6,2,4;int b12=6,2,3,6,1,4,6,2,5,0,3,5,c12=0; scanf (%d,&year); n=(year%400

29、)*365+(year%400+3)/4-(year%400)/100+5)%7; ruinian=(year%4=0 & year%100!=0 | year%400=0); for (i=0;i12;i+) if (ruinian=1)?bi:ai)+n)%7=5) ci=1; k+; printf (There %s %d Black %s in year %d.n%s:n,(k=1)?is:are,k,(k=1)?Friday:Fridays,year,(k=1)?It is:They are); for (i=0;i12;i+) if (ci=1) printf (%d/%d/13n

30、,year,i+1); 结果:输入:2006输出:Thereare2BlackFridaysinyear2006.Theyare:2006/1/132006/10/13程序实例2:#includestdio.h void main() int m,y,k=0,i,w,a6; scanf(%d,&y); for(m=1;m=2;m+) w=(13+2*(m+12)+3*(m+13)/5+y-1+(y-1)/4-(y-1)/100+(y-1)/400)%7; if(w=4) ak=m;k+; for(m=3;m13;m+) w=(13+2*m+3*(m+1)/5+y+y/4-y/100+y/400

31、)%7; if(w=4) ak=m;k+; if(k=1) printf(There is 1 Black Friday in year %d.nIt is:n%d/%d/13n,y,y,a0); else printf(There are %d Black Fridays in year %d.n,k,y); printf(They are:n); for(i=0;ik;i+) printf(%d/%d/13n,y,ai); 结果:输入:2007输出:There are 2 Black Fridays in year 2007They are:2007/4/132007/7/1311 百马百

32、担有100匹马,驮100担货,其中大马驮3担,中马驮2担,两匹小马驮1担输入:无输出:大、中、小马的个数,用逗号分隔。例如:2,30,68说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行 因为有多个结果,结果的排序按照大马的个数从少到多程序实例1:#include void main() int bigHorse,middleHorse,smallHorse; bigHorse=0; while(bigHorse=33) middleHorse=1; while(middleHorse50) smallHorse=100-bigHorse-middleHorse; if(3

33、*bigHorse+2*middleHorse+smallHorse/2=100&smallHorse%2=0) printf(%d,%d,%dn,bigHorse,middleHorse,smallHorse); middleHorse+; bigHorse+; 结果: 输入:无输出:2,30,685,25,708,20,7211,15,7414,10,7617,5,78程序实例2#includevoid main() int a,b,c; for(a=0;a=33;a+) for(b=1;b50;b+) c=100-a-b; if(3*a+2*b+c/2=100&c%2=0) printf

34、(%d,%d,%dn,a,b,c); 结果:输入:无输出:2,30,685,25,708,20,7211,15,7414,10,7617,5,7812 零钱换整钱小明去银行存钱,拿了一堆硬币。已知 1 角的硬币厚度为 1.8mm , 5 角的硬币厚 1.5mm , 1 元的硬币为 2.0mm 。小明将 1 角的硬币放成一摞,将 5 角的硬币硬币放成一摞,将 1 元的硬币放成一摞,发现 3 摞硬币一样高。银行正好把这些硬币换成若干张面值为 10 元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个? 输入:无 输出:1 角的数量,5 角的数量,1元的数量,总金额。(例如:20

35、,30,40,50)说明:在结果中只输出各个对应的数字即可程序实例1:#include int yue(int a,int b) int t; t=a%b; while(t) a=b,b=t,t=a%b; return b; int main(void) int x,y,z; x=18*15/yue(18,15); x=x*20/yue(x,20); z=y=x/18+x*5/15+x/2; while(z%100) z+=y; printf(%d,%d,%d,%dn,z/y*x/18,z/y*x/15,z/y*x/20,z/10); return 0; 结果: 输入:无输出:50,60,45,80程序实例2:#include int main() int i,j,k,a; for(i=10;i+=10) j=6*i/5;k=9*i/10;a=0.1*i+0.5*j+1.0*k; if(a%

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁