北理乐学C语答案,知识分享.docx
北理乐学c语答案,最新7.入门 计算圆柱的侧面积及体积#include<stdio.h>void main()(double a,b;scanf("%lfn%lfM,&a,&b);printf(',s=%.2lf,v=%,2lfn,',2*3.14*a*b,3.14*a*a*b);1. Hello world.输入:无输出:Hello world.納紡雌的愉出时间限制内存限制 勁卜逬程渕试用例以文本方式显示1.以文本方式显示1. Hello world.U1秒64M0程序:#include<stdio.h>int main()(printf("Hello world.nn);return 0;2. Welcome to Beijing.MS統曠的检出时间限制内存限制 解卜进程测试用例以义本方式显1.以文本方式显示1. Welcome-2. to3. Beijing.1秒256KB0程序:#include <stdio.h>int main()printf(" Welcomed"); printf(ntonn);printf("Beijing.nH);return 0;)3,求 A+B输入:整数1整数2输出:整数1+整数2=和渕试用例小舔期待的愉出时间限制 内存限制 勧卜进程以文本方式显示1. 102. 2e-i以文本方式显示1. 10+20=3。无限制64M0程序:#include<stdio.h>int main()int a,b;scanf(n%d'&a);scanf("d”,&b);printf("d+%d二dn”,a,b,a+b);return 0;4 .求x的3次方输入:个整数。输出:该整数的3次方值。程序:#include<stdio.h> int main()int x;scanf(M%dn,&x);printf("dn”,x*x*x);return 0;5 .学习打印你的第一个图形编写个小程序,要求输出的是4行由号组成的等腰三角形。雌的綸出时间限制 内存限制 粉卜进程以文本方式显示1.测试用例1以文本方式显示1.2*|3 * * *4 * j1 秒64M0程序:#include<stdio.h> int main()printff *n"); printf(n *n"); printf(n *nn); printf(M*nH);return 0;6 . 一年级的算术题输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123444输出:分别输出按照整型数据进行+、-、/、之后的运行结果。睚的融时间限制内存限制範卜進程测试用例1以文本方式显示1. ie 3以文本方式显示1. 16+3=132. 103=7-3. 10*3«30J4. 10/3=3-5. 16%3=11秒64M0程序:#include<stdio.h>int 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%d=%dn",a,b,a%b);return 0;)7 .求两个变量的最小值输入:两个整型数输出:两个整型值中的最小值椒舔雌的愉出时间限制回)内存限制 额外进程渕试用例以文本方式显示1. 10 20J以文本方式显示1. 无限制64M0程序:#include<stdio.h> int main()int a,b;scanf("%d%d",&a,&b);printf("min=%dn",a<b?a:b);return 0;8 .判断三角形的形状输入:三角型的3条边的长度(int型)输出:等边三角形:equilateral triangle 等腰三角形:isoceles triangle 不构成三角形:non-triangle 一般三角形:triangle真他便出内存眼力力以K*万土1. 2 2 21m = y =三 . equilateral trian1,田&4M2以方式二示X. 3 2 2.以方示 X. xsoceles ,triar< 1 :杪&4M3、* r二行X. & 3 2 X. non-tr±angle.«钞6<4M4以方式示 X. 以文土工示 X . triangle.1杪&4M程序:#include<stdio.h>int main()(int a,b,c;scanf(n%d%d%d'&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)(if (a=b&&b=c&&a=c)printf(nequilateral triangle.nM);else if(a=b|a=c|b=c)printf(nisoceles triangle.n");elseprintf(ntriangle.nn);)elseprintf(nnon-triangle.nn);return 0;9 .计算圆柱的侧面积及体积输入:第一行输入圆柱的底面半径r 第二行输入圆柱的高h输出:s=<圆柱的侧面积,v=<圆柱的体积要求1 .所有变量都定义为双精度类型2 .结果精确到小数点后两位就訥曠的渝出时间限制 萌限制 能卜蝇綱用例以义本方式显1. 22. 8以义本方式显 s-iee. 53-160.53.«11“ 一 ,1秒64M0测试用例2以文本方式显示1. 52. ie以文本方式显示 1. 5=314.16,v=785< !1>1秒64M0程序:#include<stdio.h>#define PI 3.1415926int main()(double r,h,s,v;scanf(n%lf&r);scanf(H%lf&h);s=2*PI*r*h;v=PI*r*r*h;printf(ns=%.2f,v=%.2fnn,s,v);return 0;)10 .计算时钟的夹角背景:钟面上的时针和分针之间的夹角总是在。180之间(包括0和180)。举 例来说,在十二点的时候两针之间的夹角为,而在六点的时候夹角为180 , 在三点的时候为90 本题要解决的是计算12:00到11:59之间任意个时间的 夹角。输入:每组测试数据包含两个数字:第一个数字代表小时(大于小于等于12),第二个数字代表分(在区间0, 59 ± ) 输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小 夹角,精确到小数点后一位。输出格式如下所示。渕府入期待的愉出时间限制内存限制都外进程测试用例以义本方式显1. 12 0以文本方式显e is 0.0 degrees.1秒64M0渕试用例2以文本方式显示1. 12 30以文本方式显示is 165.0 degrees.U< 1秒64M0程序:#include<stdio.h>#include<math.h>int main()(int h,m;float dl,d2,d;scanf(H%d%dn,&h,&m);dl=30*(h+m/60.0);d2=m*360/60.0;d=fabs(dl-d2);if(d>180)d=360-d;printf(MAt %d:%d the angle is %.If degrees.nn,h,m,d);return 0;11 .找出最大素数素数是指个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密 码学中也被广泛应用。输入:取值范围输出:该范围内的最大素数测试愉人(D期待的愉出时间限制内存限制 龍卜进程(?)测试用例4以文本方式显示1. 100以文本方式显示!prime number is 97.,1 卅,1秒64M0程序:#include<stdio.h> int main() int n,i,j;scanf("%d",&n); for(i=n;i>=l ;i) for(j=2;j<i;j+) if(i%j=O) break;if(j=i)(printf("The max prime number is %d.n",i); break;)12 .求最后3位数值输入:a和n的值。假设a<=150。输出:求a的n次方的最后3位数。則由給人期待的输出时间限制内存限制 额外进程)测试用例1以文本方式显示1. ie e以文本方式显示t 3 numbers is,11秒64M0剜试用例2以文方式墨示1. 2 8以文方式显示3 numbers is 256.“11"1 >1秒64M0剜试用例4以文方式显示1. iee ie-以文本方忒显示 3 numbers is 000.1!L I 1秒64M0程序:#include<stdio.h>int main()(long int s=l;int a,n,i=l,t=l;scanf(n%d%dn,&a,&n);if(n=0)printf(MThe last 3 numbers is l.nH);else(for(i=l;i<=n;i+)(s=(s*a)%1000;)t=s%1000;if(t>=O&&t< 10) printf(nThe last 3 numbers is 00%d.n",t);if(t>=10&&t<100) printff'The last 3 numbers is 0%d.n",t);if(t>= 100&&t< 1000) printf("The last 3 numbers is %d.n",t);return 0;13 .贪吃的猴子有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾, 就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就 又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5 天吃了前一天剩下的一般加5个)。到第n天早上再想吃的时候,就只剩下一 个桃子了。输入:天数n输出:第一天的桃子个数剜试输入期待的输出时间限制内存限制额外进程则试用例1以文方式显示1.以文方式显乏 , monkey got 14 pea(« 1 111 11秒64M0程序:#include<stdio.h> int main()int i,n,amount=l;scanf(n%dn,&n);for(i=n-l;i>=l;i-)amount=2*(amount+i);print"The monkey got %d peachs in first day.nn,amount);14 .黑色星期五在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超 级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期 五”。输入:年份输出:判断该年是否包含黑色星期五,如包含,给出具体日期剥试输入期待的输出时间限制内存限制额外进程剣试用例1以文本方式显示1. 2006以文方式显示 There are 2 Black 1 They are:«J 2006/1/13-1 2006/10/13« L.SLJ>1秒64M0程序:#include<stdio.h> int main()int i,n=0,year,month 12=0;int al3=0,l3,44,73,104,134,165,195,226,257,287,318,348);int b13=0,l3,44,72,103,133,164,194,225,256,286,317,347);scanf(" %d",&year);for(i=l;i<13;i+)(if (year%4=0 && year% 100! =0)|year%400=0)(if(year-l +(year-1 )/4)-(year-1)/100)+(year-l)/400)+ai)%7=5)(n+;monthn=i;)elseif(year-l +(year-1 )/4)-(year-1 )/100)+(year-l)/400)+bi)%7=5)(n+;monthn=i;)if(n=l)(printf("There is %d Black Friday in year %d.n",n,year);printf("It is:n");printf("%d/%d/l 3n",year,month 1 );else|printf("There are %d Black Fridays in year %d.n",n,year); printf("They are:n");for (i=l;i<=n;i+)(printf("%d/%d/13n",year,monthfi);)return 0;15 .你会输出一行星卫我们开始上机,现在需要我们用最简单得办法,在一行中输出N个星 号。输入:N值输出:一行中N个星号。剜由箱入期待的輸出时间限制内存限制 额外进程剥试用例!以文方式显示1. 4以文本方式显示1.1秒64M0则由用例2以文方式里示1. 8以文本方式显示* J1秒64M0_. . . . 程序:#include<stdio.h> int main()int i,n;scanf(n%dM,&n);fbr(i=l;i<=n;i+)printfC*");printf(nnn);16 .计算SUM的值已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + . + 1/n输入:n输出:表达式sum的值。结果保留6位小数财试瑜入HR待的愉出时同限制丙冇限制翎矽卜进程次H式照例!以文本方式叁示以文本方式H示1 . sum=l . &0&0&G1秒64 M源R式用例2以文本方式5¢示1. 2*J以文本:方式B示X . sum-X . 5000001秒64Mj»Ki 例 3以文本方式日示 1.以文本方式示X . sum-1.83333311秒64M程序:#include<stdio.h>int main()int i,n;double sum=0;scanf(n%dn,&n);for (i=l;iv=n;i+)sum+=1.0/i;printf(nsum=%.61fn'sum);return 0;)17 .寻找特殊整数请编写个程序寻找种特殊整数:个n位的正整数等于其各位数字的 n次方之和。例如:407=4X4X4+0X0X0+7X7X7。所以407就是个特殊 数。输入:正整数的位数n (n<=6) 输出.所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提 示:“N。output.” ;若存在,则从小到大进行输出。说明:假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出 中的1111、2222和9999并不是4位特殊数,只是格式样例):111122229999测试愉入嘀的谕出时间限制内存限制 龍卜进程以文本方式显示1. 3以文本方式显示1. 1532. 3763. 3714. 407无限制64M0程序:#include<stdio.h>#include <math.h>int main()int n,i,j,num,t,s=O,tl ,flag=O;scanf("%d",&n);t=pow(10,n-l);for (i=t;i<t* 10;i+)(tl=i;s=0;for (j=l ;tl !=0;j+) (num=tl%10; s+=pow(num,n);tl=tl/10; if(s=i)flag=l; printf("%dn",i);)if(flag=0)printf("No outputAn");return 0;18 .空心的倒三角型输入:输入三角形的高度(h>=0) 输出:打印相应的空心倒三角形。图样参见测试用例。以文本方式显示1. 3以文本方式显示 *2. , 3. H1秒64M0测试用例期待的谕出时间限制内存限制额外进程程序:#include<stdio.h>#include <math.h>int main()int i,j,h;scanf("%d",&h);for (i=l;i<=h;i+)for(j=l;j<i;j+)printf("");if(i=l |i=h)for(j=l;j<=2*(h-i)+l;j+) printf("*");printf("n");)elseprintfC'*");for(j= 1 ;j<=2*(h-i)-l ;j+) printf("");printf("*n");return 0;19 .空心字符菱形输入:菱型起始字母和菱形的高度。输出:参看测试用例,打印空心的由字符组成的菱形。綱部期待的谕出时间限制内存限制 瑯卜进程测试用例以文本方式显示1. C Q以文本方式显示1. c-2. D D3. E E-4. F|5. E E_6. D D7.1秒64M0程序:#include<stdio.h>#include <math.h>int main()int i,j,h;char ch;scanf("%c%d",&ch,&h);for (i=l;i<=h;i+)(for(j=l;j<=h-i;j+) printf("");printf("%c",ch+i-l);for(j=l;j<=2 *i-3;j+) printf("");if(i=l)printf("n"); continue;)printf("%cn",ch+i-l);)for (i=h+ l;i<=2*h-l;i+)(for(j=l;j<=i-h;j+) printf("");printf("%c",ch+(2*h-l)-i);for(j=l ;j<=(2*h-l-i)*2-l ;j+) printf("");if(i=2*h-l)(printf("n”); continue;printf(n%cnn,ch+(2*h-1 )-i);return 0;)20 .空心梯形输入行数n和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n 的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是 输入:行数n和首字符输出:空心梯形禍毀畴的检出时间限制内存限制 勖卜进程测试用例以文本方式显示1. 5 5以文本方式显示 7890109876 889 0 1 0 9«11"1 >无限制64M0程序:#include<stdio.h>#include <math.h>int main()(int i,j,n,f,t=O;scanf("%d%d",&n,&f);t=f;for(j=l;j<=3*n-2;j+)(if(j=3*n-2)printf("%d",t);elseprintf("%d ",t);if(j<(3*n-l)/2)if(t=9) t=0;elset+;else if(j=(3*n-1 )/2&&n%2=0) continue; else(if(t=O) t=9;elseprintf("n");t=f;for (i=2;i<=n;i+)(for (j=l;j<=2*(i-l)j+)printf("");if(i=n)for (j=l;j<=(n+l)/2;j+)(if(t=9)(t=0;printf("%d ",t);elseprintf("%d ",+t);for (j=l;j<=n/2;j+)(if(t=0&&n%2!=0)t=9;else if(j= 1 &&n%2=0)(if(j=n printf("%dn",t);elseprintf("%d ",t); continue;)elset-;if(j=n printf("%dn",t);elseprintf("%d ",t);elseif(t=9)printf("O");for(j=l ;j<=6*n-4*i-3;j+)printf("");printf("On"); t=0;) else (printf("%d",t);for(j=l ;j<=6*n-4*i-3;j+)printf(""); printf("%dn",t); )return 0;)Hl:计算通用产品代码(UPC)的校验位(选作)下面是种计算校验位的方法:首先把第一位、第三位、第五位、第七 位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和 第十位数字相加。接着把第一次加法结果乘以3后再加上第二次加法的结果。 随后,再把上述结果减去1。减法后的结果除以10取余数。最后,用9减去上 步骤中得到的余数。现在以Morton碘盐为例,第一组数字的加法是 0+4+0+0+04-3=7,而第二组数字的加法是2+6+0+1+0=9。把第一组加法值乘以 3后再加上第二组加法值得到的结果是30。再减去1,结果变为29。再把这个 值除以10取余数为9。9在减去余数结果9,最终值为。输入:每次输入三行数据,第一行是UPC的第一位数字,第二行是UPC 的第一组五位数字,第三行是UPC的第二组五位数字。输出:UPC的校验位渕试用例渕试谕入期待的渝出时间限制内存限制 鋤卜进程以文本方式显示1.2. 246003. 81093J以义本方式显1. e1秒64M0程序:#include<stdio.h>#include<math.h> int main()int i,j,sl=0,s2=0,t;int all;char b6,c6;scanf(n%dn,&aO);scanf(n%su,b);scanf("s”,c);for (i=O,j=l;i<5;i+,j+)a|j=bi-48;for (i=O,j=6;i<5;i+,j+)a|j=ci-48;for (i=0;i<l l;i+) (if(i%2=0)sl+=ai;elses2+=ai;)t=9-(sl*3+s2-l)%10;printf("%dn",t);return 0;H2:数制转换(选作)这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当 它们分别处于何种进制之中时,两个数字相等。譬如12和5,在十进制下它们 是不等的,但若12使用3进制而5使用六进制或十进制时,它们的值就是相等 的。因此只要选择合适的进制,12和5就可以是相等的。程序的输入是两个数字M和N(其十进制的值不超过!000000000),它们 的进制在236之间。对于十以下的数字,用9表示,而十以上的数字,则使 用大写的A-Z表示。求出分别在236哪种进制下M和N相等。若相等则输出相应的进制,若 不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进 制最小的组就行了。信息的格式见测试用例。渕试饰入期待的愉出时间限制内存限制 新卜曲g以文本方式显示以文本方式显示!1. 12 54(base 3) > 5 (base测试用例11秒64M0程序:#include<stdio.h>int 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,max 1 =0,max2=0,flag=0;scanf("%s%s",m,n);for(i=0;mi!='0'i+)(if(mi>="A'&&mi<='Z') ai=mi-55;if(mi>='0'&&mi<='9') ai=mi-48;max l=max l<(ai+ l)?(ai+l):max 1;max 1 =max 1 <2?2:max 1;)pm=i;for(j=0;nj!=0;j+)(if(nLj>="A'&&nj<='Z') bj=nj-55;if(nj>='0'&&n|j<='9')bj=njl-48;max2=max2<(bj+ l)?(bj+ l):max2;max2=max2<2?2:max2;pn=j;for(i=max 1 ,j=max2;i<=36&&j<=36;)(p=0;q=0;w=l;e=l;for(g=pm-l;g>=0;g-)p+=ag*w;w=w*i;for(k=pn-l ;k>=O;k)(q+=bk*e;e=e*j;)if(p<q) i+;else if (p>q) j+;elseflag=l;printf("%s (base %d) = %s (base %d)nn,m,i,n,j); break;)if(flag=O)printf(n%s is not equal to %s in any base 2.36n",m,n);return 0;)21.零钱换整钱小明手中有一堆硬币,小红手中有有干张10元的整钱。已知1角的硬币厚度 为1.8mm, 5角的硬币厚1.5mm, 1元的硬币为2.0mm。小明和小红起玩游 戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬 币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币样高,并且金额能 够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入:小红希望交换几张10元的纸币输出:1角的数量,5角的数量,1元的数量测试愉入期待的母出时间限制内存限制緑外进程测试用例1以文本方式显示1. 81以文本方式显示1. 50,60,451无限制64M0程序:三种硬币厚度公倍数:18mm (1角10个共1元,5角12个共6元,1 元9个共9元,要想3摞硬币样高总钱数必须是16元(1+6+9)的公倍数)#include <stdio.h>int main()(int n,t,x,y,z;scanf("%d",&n);t=n*10;if(t%16!=0)printf("No changeAn");else(t=t/16;x=t*10;y=t*12;z=t*9;printf("%d,%d,%dn",x,y,z);return 0;221买东西.某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价 格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元 钱买N个该商品,要求每个商品至少买个,编程求各种品牌各能买多少个。输入:先后输入M (钱数)及N (商品个数)的实际数值输出:所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用 逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌 商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。测试愉入期待的愉出时间限制内存限制额外进程测试用例1以文本方式显示1. 100 1001以文本方式显示1. 4,18,7812. 8,11,8113. 12,4,841无限制64M0程序:#include <stdio.h> int main()int i,j,k;float m,n;scanf("%f%f',&m,&n);for(i=l;i<n-l;i+)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名学生为个预赛小组,评委打出分数(。100分),各 小组第一名可以进入下轮;如果有多名学生得分相同都是第一名,则可同时 进入下轮。输入:按顺序给出一个小组10个人的最后得分(int)。输出:能够出线的学生序号(9)。int main()(int i,s10=0,max=0;fbr(i=O;i< 10;i+)scanf(n%dn,&si);if(max<si)max=si;for(i=0;i<10;i+4-)(if(si=max)printf("%dn",i);return 0;24 .寻找特殊偶数有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间 内的这类偶数。输入所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字 是最大范围。如果输入遇到,输入结束。输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。测试谕入期待的输出时间限制(3)内存限制额外进程测试用例1以文本方式显1. 3000 302012. 6040 609013. 0 01以义本月式显1. 3012 3014 32. counter=413. 6042 6048 6无限制64M04. counter«101 < in>程序:#include<stdio.h>#include<math.h> main()(int i,j,k,a,b,c,d,m=O,e; for(e=0;e>=0;e+) scanf("%d%d",&i,&j); if(i=O)|(j=O) break; else if(i>9999|i< 1000)|(j>9999Hj< 1000) printf("Eirorn");else for(k=i;k<=j ;k+)if (k%2=l) continue;a=V1000;b=(k% 1000)/100;c=(k% 100)/10;d=k% 10;if(a=b)|(b=c)|(c=d) |(d=a)|(a=c)|(d=b) continue;printf(M%d n,k);m+=l;printf(nncounter=%dnn,m); m=0;25 .输出字母围起的正方形输入N*N图形正方形的边长N,图形左上角的字母,输出由字母围成的 空心正方形。输出的字母是顺时针连续的,且是循环的,即输出字母,Z,后输 出字母