《北理乐学C语言答案,最新.docx》由会员分享,可在线阅读,更多相关《北理乐学C语言答案,最新.docx(112页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、7.入门 计算圆柱侧面积及体积#includevoid main()double a,b;scanf(%lfn%lf,&a,&b);printf(s=%.2lf,v=%.2lfn,2*3.14*a*b,3.14*a*a*b);1. Hello world.输入:无输出:Hello world.程序:#includeint main()printf(Hello world.n);return 0;2. Welcome to Beijing.程序:#include int main()printf(Welcomen);printf(ton);printf(Beijing.n);return 0;3
2、. 求A+B输入:整数1 整数2输出:整数1+整数2=和程序: #includeint main()int a,b;scanf(%d,&a);scanf(%d,&b);printf(%d+%d=%dn,a,b,a+b);return 0;4. 求 x 3次方输入:一个整数。 输出:该整数 3 次方值。程序: #includeint main() int x; scanf(%d,&x); printf(%dn,x*x*x); return 0; 5. 学习打印你第一个图形编写一个小程序,要求输出是 4 行由*号组成等腰三角形。程序: #include int main() printf( *n)
3、; printf( *n); printf( *n); printf(*n); return 0; 6. 一年级算术题输入: 接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444输出:分别输出按照整型数据进行 +、-、*、/、* 之后运行结果。程序: #includeint main() int a,b; scanf(%d %d,&a,&b); printf(%d+%d=%dn,a,b,a+b); printf(%d-%d=%dn,a,b,a-b); printf(%d*%d=%dn,a,b,a*b); printf(%d/%d=%dn,a,b,a/b); printf(%d
4、%d=%dn,a,b,a%b); return 0;7. 求两个变量最小值输入:两个整型数输出:两个整型值中最小值程序: #includeint main() int a,b; scanf(%d%d,&a,&b); printf(min=%dn,ab?a:b); return 0;8. 判断三角形形状 输入:三角型3条边长度(int型)。输出:等边三角形:equilateral triangle等腰三角形:isoceles triangle不构成三角形:non-triangle一般三角形:triangle程序: #includeint main() int a,b,c; scanf(%d%d%
5、d,&a,&b,&c); if(a+bc&a+cb&b+ca) if (a=b&b=c&a=c) printf(equilateral triangle.n); else if(a=b|a=c|b=c) printf(isoceles triangle.n); else printf(triangle.n); else printf(non-triangle.n); return 0;9. 计算圆柱侧面积及体积输入 :第一行输入圆柱底面半径 r第二行输入圆柱高 h 输出:s=,v= 要求 1. 所有变量都定义为双精度类型2. 结果精确到小数点后两位程序: #include#define PI
6、3.1415926int main() double r,h,s,v; scanf(%lf,&r); scanf(%lf,&h); s=2*PI*r*h; v=PI*r*r*h; printf(s=%.2f,v=%.2fn,s,v); return 0;10. 计算时钟夹角背景: 钟面上时针和分针之间夹角总是在 0 180之间 ( 包括 0 和180 ) 。举例来说,在十二点时候两针之间夹角为 0 ,而在六点时候夹角为180 ,在三点时候为90 。本题要解决是计算 12:00 到 11:59 之间任意一个时间夹角。输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 1
7、2) ,第二个数字代表分 ( 在区间 0, 59 上 ) 。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间最小夹角,精确到小数点后一位。输出格式如下所示。程序: #include#includeint main() int h,m; float d1,d2,d; scanf(%d%d,&h,&m); d1=30*(h+m/60.0); d2=m*360/60.0; d=fabs(d1-d2); if(d180) d=360-d; printf(At %d:%d the angle is %.1f degrees.n,h,m,d); return 0;11. 找出最大素数
8、素数是指一个只能被1和它本身整除数,在数论中占有重要研究地位,在当代密码学中也被广泛应用。输入:取值范围输出:该范围内最大素数程序: #include int main() int n,i,j; scanf(%d,&n); for(i=n;i=1;i-) for(j=2;ji;j+) if(i%j=0) break; if(j=i) printf(The max prime number is %d.n,i); break; 12. 求最后3位数值输入:a 和 n 值。假设 a=150 。 输出:求 a n 次方最后 3 位数。程序:#includeint main()long int s=1
9、;int a,n,i=1,t=1;scanf(%d%d,&a,&n);if(n=0)printf(The last 3 numbers is 1.n);elsefor(i=1;i=0&t=10&t=100&t1000)printf(The last 3 numbers is %d.n,t);return 0;13. 贪吃猴子有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第2天早上又将剩下桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下一半加天数个(例如,第5天吃了前一天剩下一般加5个)。到第n天早上再想吃时候,就只剩下一个桃子了。
10、 输入:天数n输出:第一天桃子个数程序: #includeint main()int i,n,amount=1;scanf(%d,&n);for(i=n-1;i=1;i-)amount=2*(amount+i);printf(The monkey got %d peachs in first day.n,amount);14. 黑色星期五在西方,星期五和数字13都代表着坏运气,两个不幸个体最后结合成超级不幸一天。所以,不管哪个月十三日又恰逢星期五就叫“黑色星期五”。输入:年份输出:判断该年是否包含黑色星期五,如包含,给出具体日期程序: #includeint main()int i,n=0,y
11、ear,month12=0;int a13=0,13,44,73,104,134,165,195,226,257,287,318,348;int b13=0,13,44,72,103,133,164,194,225,256,286,317,347;scanf(%d,&year);for(i=1;i13;i+)if (year%4=0 & year%100!=0)|year%400=0)if(year-1+(year-1)/4)-(year-1)/100)+(year-1)/400)+ai)%7=5)n+;monthn=i;elseif(year-1+(year-1)/4)-(year-1)/1
12、00)+(year-1)/400)+bi)%7=5)n+;monthn=i;if(n=1)printf(There is %d Black Friday in year %d.n,n,year);printf(It is:n);printf(%d/%d/13n,year,month1);elseprintf(There are %d Black Fridays in year %d.n,n,year);printf(They are:n);for (i=1;i=n;i+)printf(%d/%d/13n,year,monthi);return 0;15.你会输出一行星号?我们才开始上机,现在需
13、要我们用最简单得办法,在一行中输出N个星号。输入:N值输出:一行中N个星号。程序: #includeint main()int i,n;scanf(%d,&n); for(i=1;i=n;i+) printf(*); printf(n);16. 计算SUM值已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + . + 1/n 输入: n 输出: 表达式 sum 值。结果保留 6 位小数。程序: #includeint main()int i,n;double sum=0;scanf(%d,&n);for (i=1;i=n;i+)sum+=1.0/i;printf(sum=%.6lf
14、n,sum);return 0;17. 寻找特殊整数请编写一个程序寻找一种特殊整数:一个 n 位正整数等于其各位数字n次方之和。例如:407=444+000+777。所以407就是一个特殊数。输入:正整数位数n(n=6)。输出: 所有此n位特殊数。每个数占一行。若不存在符合条件特殊数,则输出提示:“No output.”;若存在,则从小到大进行输出。说明:假设输入为4,在4位整数中,有3个4位特殊数,则输出格式为(输出中1111、2222和9999并不是4位特殊数,只是格式样例):111122229999程序: #include#include int main() int n,i,j,num
15、,t,s=0,t1,flag=0; scanf(%d,&n); t=pow(10,n-1); for (i=t;i= 0)。输出:打印相应空心倒三角形。图样参见测试用例。程序:#include #include int main() int i,j,h; scanf(%d,&h); for (i=1;i=h;i+) for(j=1;ji;j+) printf( ); if(i=1|i=h) for(j=1;j=2*(h-i)+1;j+) printf(*); printf(n); else printf(*); for(j=1;j=2*(h-i)-1;j+) printf( ); printf
16、(*n); return 0; 19. 空心字符菱形输入:菱型起始字母和菱形高度。输出:参看测试用例,打印空心由字符组成菱形。程序:#include#include int main()int i,j,h;char ch;scanf(%c%d,&ch,&h);for (i=1;i=h;i+)for(j=1;j=h-i;j+)printf( );printf(%c,ch+i-1);for(j=1;j=2*i-3;j+)printf( );if(i=1) printf(n);continue;printf(%cn,ch+i-1);for (i=h+1;i=2*h-1;i+)for(j=1;j=i-
17、h;j+)printf( );printf(%c,ch+(2*h-1)-i);for(j=1;j=(2*h-1-i)*2-1;j+)printf( );if(i=2*h-1)printf(n);continue;printf(%cn,ch+(2*h-1)-i);return 0;20. 空心梯形输入行数 n 和首数字字符,在屏幕上输出由数字围起高和下底宽度均 n 空心梯形。 要求:输出数字是循环,即输出数字 9 后再输出数字是 0。输入:行数n 和首字符输出:空心梯形程序: #include#include int main()int i,j,n,f,t=0;scanf(%d%d,&n,&f)
18、;t=f;for(j=1;j=3*n-2;j+)if(j=3*n-2)printf(%d,t);elseprintf(%d ,t);if(j(3*n-1)/2)if(t=9) t=0;elset+;else if(j=(3*n-1)/2&n%2=0) continue;elseif(t=0) t=9;else t-;printf(n);t=f;for (i=2;i=n;i+)for (j=1;j=2*(i-1);j+)printf( );if(i=n)for (j=1;j=(n+1)/2;j+)if(t=9) t=0;printf(%d ,t); elseprintf(%d ,+t);for
19、(j=1;j=n/2;j+)if(t=0&n%2!=0) t=9;else if(j=1&n%2=0)if(j=n/2) printf(%dn,t);elseprintf(%d ,t); continue; else t-;if(j=n/2)printf(%dn,t);elseprintf(%d ,t);elseif(t=9) printf(0);for(j=1;j=6*n-4*i-3;j+)printf( );printf(0n);t=0;elset+;printf(%d,t);for(j=1;j=6*n-4*i-3;j+)printf( );printf(%dn,t);return 0;H
20、1:计算通用产品代码(UPC)校验位(选作)下面是一种计算校验位方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和第十位数字相加。接着把第一次加法结果乘以3后再加上第二次加法结果。随后,再把上述结果减去1。减法后结果除以10取余数。最后,用9减去上一步骤中得到余数。现在以Morton碘盐为例,第一组数字加法是0+4+0+0+0+3=7,而第二组数字加法是2+6+0+1+0=9。把第一组加法值乘以3后再加上第二组加法值得到结果是30。再减去1,结果变为29。再把这个值除以10取余数为9。9在减去余数结果9,最终值为0。输入:每次输入三行数
21、据,第一行是UPC第一位数字,第二行是UPC第一组五位数字,第三行是UPC第二组五位数字。输出:UPC校验位程序: #include#includeint main() int i,j,s1=0,s2=0,t;int a11;char b6,c6;scanf(%d,&a0);scanf(%s,b);scanf(%s,c);for (i=0,j=1;i5;i+,j+)aj=bi-48;for (i=0,j=6;i5;i+,j+)aj=ci-48;for (i=0;i11;i+)if(i%2=0)s1+=ai;elses2+=ai;t=9-(s1*3+s2-1)%10;printf(%dn,t);
22、return 0;H2:数制转换(选作)这个题目会给你两个不同数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们值就是相等。因此只要选择合适进制, 12 和 5 就可以是相等。 程序输入是两个数字 M 和 N( 其十进制值不超过 1000000000) ,它们进制在 236 之间。对于十以下数字,用 09 表示,而十以上数字,则使用大写 AZ 表示。 求出分别在 236 哪种进制下 M 和 N 相等。若相等则输出相应进制,若不等则输出错误信息。当然了,对于多种
23、可能成立情况,找出符合要求进制最小一组就行了。信息格式见测试用例。程序: #includeint main() long int pm=0,pn=0,s=0,t=0,w=1,e=1,p=0,q=0;int a30,b30;char m30,n30;int i,j,g,k,max1=0,max2=0,flag=0;scanf(%s%s,m,n);for(i=0;mi!=0;i+)if(mi=A&mi=0&mi=9)ai=mi-48;max1=max1(ai+1)?(ai+1):max1;max1=max1=A&nj=0&nj=9)bj=nj-48;max2=max2(bj+1)?(bj+1):m
24、ax2;max2=max22?2:max2;pn=j;for(i=max1,j=max2;i=36&j=0;g-) p+=ag*w;w=w*i;for(k=pn-1;k=0;k-) q+=bk*e;e=e*j;if(pq) j+; else flag=1; printf(%s (base %d) = %s (base %d)n,m,i,n,j); break; if(flag=0) printf(%s is not equal to %s in any base 2.36n,m,n);return 0;21. 零钱换整钱 小明手中有一堆硬币,小红手中有若干张10元整钱。已知 1 角硬币厚度为
25、1.8mm,5 角硬币厚 1.5mm, 1 元硬币为 2.0mm 。小明和小红一起玩游戏,小红拿出若干张10元纸币,小明要将 1 角硬币放成一摞,将 5 角硬币硬币放成一摞,将 1 元硬币放成一摞,如果 3 摞硬币一样高,并且金额能够正好小红要求面值,则双方可以进行交换,否则没有办法交换。输入:小红希望交换几张10元纸币输出:1 角数量,5 角数量,1元数量程序:三种硬币厚度公倍数:18mm(1角10个共1元,5角12个共6元,1元9个共9元,要想3摞硬币一样高总钱数必须是16元(1+6+9)公倍数)#include int main() int n,t,x,y,z;scanf(%d,&n);
26、t=n*10;if(t%16!=0)printf(No change.n);else t=t/16; x=t*10; y=t*12; z=t*9; printf(%d,%d,%dn,x,y,z);return 0; 22. 买东西.某商品有A、B、C三种品牌,各品牌价格各不相同,其中A品牌价格为每个5元, B品牌为每个3元,而C品牌为每3个1元。如果要用 M 元钱买 N 个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入:先后输入M(钱数)及N(商品个数)实际数值输出:所有可能情况下可以购买3种商品个数,按A、B、C品牌顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品
27、2个、B品牌商品30个、C品牌商品68个。 要求:因为有多个结果,结果排序按照A品牌个数从少到多顺序输出。程序:#include int main() int i,j,k;float m,n;scanf(%f%f,&m,&n);for(i=1;in-1;i+)for(j=1;j=n-1-i;j+)for(k=1;k=n-i-j;k+)if(i*5+j*3+k*1.0/3)=m&i+j+k=n)printf(%d,%d,%dn,i,j,k);return 0; 23. 谁能出线电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数
28、(0100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。输入:按顺序给出一个小组10个人最后得分(int)。输出:能够出线学生序号(09)。程序: #include int main() int i,s10=0,max=0; for(i=0;i10;i+) scanf(%d,&si); if(maxsi) max=si;for(i=0;i10;i+)if(si=max)printf(%dn,i);return 0; 24. 寻找特殊偶数有一种特殊偶数,它每一位上数字都两两不相同。我们现在需要找出四位数中某一区间内这类偶数。输入所要寻找四位偶数范围。每组
29、输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。输出列出此范围内所有特殊偶数,并且列出此范围内特殊偶数个数。程序:#include#includemain()int i,j,k,a,b,c,d,m=0,e;for(e=0;e=0;e+)scanf(%d%d,&i,&j);if(i=0)|(j=0) break;else if(i9999|i9999|j1000) printf(Errorn);else for(k=i;k=j;k+)if (k%2=1) continue;a=k/1000;b=(k%1000)/100;c=(k%100)/10;d=k%10
30、;if(a=b)|(b=c)|(c=d) |(d=a)|(a=c)|(d=b) continue;printf(%d ,k);m+=1;printf(ncounter=%dn,m); m=0;25.输出字母围起正方形输入N*N图形正方形边长N,图形左上角字母,输出由字母围成空心正方形。输出字母是顺时针连续,且是循环,即输出字母Z后输出字母A。注意在两个字母之间有一个空格。程序: #include int main() int n,i,j,t; char m; scanf(%d %c,&n,&m); for(i=0;in;i+) if(i=0) for(j=0;jn;j+) t=m+j;if(m
31、90)|(m96&t122)t=t-26; if(j=n-1) printf(%cn,t); else printf(%c ,t); else if(i=n-1) for(j=0;jn;j+) t=m+3*n-3-j; if(m90)|(m96&t122) t=t-26; if(j=n-1) printf(%cn,t); else printf(%c ,t); else for(j=0;j2*n-1;j+) if(j=0) t=m+4*n-4-i; if(m90)|(m96&t122) t=t-26; printf(%c,t); else if(j=2*n-2) t=m+n-1+i; if(m
32、90)|(m96&t122) t=t-26; printf(%cn,t); else printf( ); return 0; H3:猜数字(选作)有如下一组数字,其中每个数字都在 1 63 之间, 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 632 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 634 5 6 7 12 13 14 15
33、 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 638 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 6316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6332 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。输入:程序输入是一串以空白符分开数字,当输入 0 时表示输入结束。输出:输出猜到数字。程序:#include stdio.h