北理乐学c语言答案.docx
- 文档编号:27169631
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:147
- 大小:714.04KB
北理乐学c语言答案.docx
《北理乐学c语言答案.docx》由会员分享,可在线阅读,更多相关《北理乐学c语言答案.docx(147页珍藏版)》请在冰豆网上搜索。
北理乐学c语言答案
7.入门计算圆柱的侧面积及体积
#include<>
voidmain()
{
doublea,b;
scanf("%lf\n%lf",&a,&b);
printf("s=%.2lf,v=%.2lf\n",2**a*b,*a*a*b);
}
1.Helloworld.
输入:
无
输出:
Helloworld.
程序:
#include<>
intmain()
{
printf("Helloworld.\n");
return0;
}
2.WelcometoBeijing.
程序:
#include<>
intmain()
{
printf("Welcome\n");
printf("to\n");
printf("Beijing.\n");
return0;
}
3.求A+B
输入:
整数1整数2
输出:
整数1+整数2=和
程序:
#include<>
intmain()
{
inta,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d+%d=%d\n",a,b,a+b);
return0;
}
4.求x的3次方
输入:
一个整数。
输出:
该整数的3次方值。
程序:
#include<>
intmain()
{
intx;
scanf("%d",&x);
printf("%d\n",x*x*x);
return0;
}
5.学习打印你的第一个图形
编写一个小程序,要求输出的是4行由*号组成的等腰三角形。
程序:
#include<>
intmain()
{
printf("*\n");
printf("***\n");
printf("*****\n");
printf("*******\n");
return0;
}
6.一年级的算术题
输入:
接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:
123444
输出:
分别输出按照整型数据进行+、-、*、/、*之后的运行结果。
程序:
#include<>
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d/%d=%d\n",a,b,a/b);
printf("%d%%%d=%d\n",a,b,a%b);
return0;
}
7.求两个变量的最小值
输入:
两个整型数
输出:
两个整型值中的最小值
程序:
#include<>
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
printf("min=%d\n",a b); return0; } 8.判断三角形的形状 输入: 三角型的3条边的长度(int型)。 输出: 等边三角形: equilateraltriangle 等腰三角形: isocelestriangle 不构成三角形: non-triangle 一般三角形: triangle 程序: #include<> intmain() { inta,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { if(a==b&&b==c&&a==c) printf("equilateraltriangle.\n"); elseif(a==b||a==c||b==c) printf("isocelestriangle.\n"); else printf("triangle.\n"); } else printf("non-triangle.\n"); return0; } 9.计算圆柱的侧面积及体积 输入: 第一行输入圆柱的底面半径r 第二行输入圆柱的高h 输出: s=<圆柱的侧面积>,v=<圆柱的体积> 要求 1.所有变量都定义为双精度类型 2.结果精确到小数点后两位 程序: #include<> #definePI intmain() { doubler,h,s,v; scanf("%lf",&r); scanf("%lf",&h); s=2*PI*r*h; v=PI*r*r*h; printf("s=%.2f,v=%.2f\n",s,v); return0; } 10.计算时钟的夹角 背景: 钟面上的时针和分针之间的夹角总是在0~180之间(包括0和180)。 举例来说,在十二点的时候两针之间的夹角为0,而在六点的时候夹角为180,在三点的时候为90。 本题要解决的是计算12: 00到11: 59之间任意一个时间的夹角。 输入: 每组测试数据包含两个数字: 第一个数字代表小时(大于0小于等于12),第二个数字代表分(在区间[0,59]上)。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。 输出格式如下所示。 程序: #include<> #include<> intmain() { inth,m; floatd1,d2,d; scanf("%d%d",&h,&m); d1=30*(h+m/; d2=m*360/; d=fabs(d1-d2); if(d>180) d=360-d; printf("At%d: %dtheangleis%.1fdegrees.\n",h,m,d); return0; } 11.找出最大素数 素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。 输入: 取值范围 输出: 该范围内的最大素数 程序: #include<> intmain() { intn,i,j; scanf("%d",&n); for(i=n;i>=1;i--) {for(j=2;j if(i%j==0) break; if(j==i) { printf("Themaxprimenumberis%d.\n",i); break; } } } 12.求最后3位数值 输入: a和n的值。 假设a<=150。 输出: 求a的n次方的最后3位数。 程序: #include<> intmain() { longints=1; inta,n,i=1,t=1; scanf("%d%d",&a,&n); if(n==0) printf("Thelast3numbersis1.\n"); else { for(i=1;i<=n;i++) { s=(s*a)%1000; } t=s%1000; if(t>=0&&t<10)printf("Thelast3numbersis00%d.\n",t); if(t>=10&&t<100)printf("Thelast3numbersis0%d.\n",t); if(t>=100&&t<1000)printf("Thelast3numbersis%d.\n",t); } return0; } 13.贪吃的猴子 有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。 第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。 以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一般加5个)。 到第n天早上再想吃的时候,就只剩下一个桃子了。 输入: 天数n 输出: 第一天的桃子个数 程序: #include<> intmain() { inti,n,amount=1; scanf("%d",&n); for(i=n-1;i>=1;i--) amount=2*(amount+i); printf("Themonkeygot%dpeachsinfirstday.\n",amount); } 14.黑色星期五 在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。 所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。 输入: 年份 输出: 判断该年是否包含黑色星期五,如包含,给出具体日期 程序: #include<> intmain() { inti,n=0,year,month[12]={0}; inta[13]={0,13,44,73,104,134,165,195,226,257,287,318,348}; intb[13]={0,13,44,72,103,133,164,194,225,256,286,317,347}; scanf("%d",&year); for(i=1;i<13;i++) { if((year%4==0&&year%100! =0)||year%400==0) { if((year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+a[i])%7==5) { n++; month[n]=i; } } else if((year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+b[i])%7==5) { n++; month[n]=i; } } if(n==1) { printf("Thereis%dBlackFridayinyear%d.\n",n,year); printf("Itis: \n"); printf("%d/%d/13\n",year,month[1]); } else { printf("Thereare%dBlackFridaysinyear%d.\n",n,year); printf("Theyare: \n"); for(i=1;i<=n;i++) { printf("%d/%d/13\n",year,month[i]); } } return0; } 15.你会输出一行星号 我们才开始上机,现在需要我们用最简单得办法,在一行中输出N个星号。 输入: N值 输出: 一行中N个星号。 程序: #include<> intmain() { inti,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位小数。 程序: #include<> intmain() { inti,n; doublesum=0; scanf("%d",&n); for(i=1;i<=n;i++) sum+=i; printf("sum=%.6lf\n",sum); return0; } 17.寻找特殊整数 请编写一个程序寻找一种特殊整数: 一个n位的正整数等于其各位数字的n次方之和。 例如: 407=4×4×4+0×0×0+7×7×7。 所以407就是一个特殊数。 输入: 正整数的位数n(n<=6)。 输出: 所有此n位特殊数。 每个数占一行。 若不存在符合条件的特殊数,则输出提示: “Nooutput.”;若存在,则从小到大进行输出。 说明: 假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出中的1111、2222和9999并不是4位特殊数,只是格式样例): 1111 2222 9999 程序: #include<> #include<> intmain() { intn,i,j,num,t,s=0,t1,flag=0; scanf("%d",&n); t=pow(10,n-1); for(i=t;i { t1=i; s=0; for(j=1;t1! =0;j++) { num=t1%10; s+=pow(num,n); t1=t1/10; } if(s==i) { flag=1; printf("%d\n",i); } } if(flag==0) printf("Nooutput.\n"); return0; } 18.空心的倒三角型 输入: 输入三角形的高度(h>=0)。 输出: 打印相应的空心倒三角形。 图样参见测试用例。 程序: #include<> #include<> intmain() { inti,j,h; scanf("%d",&h); for(i=1;i<=h;i++) { for(j=1;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("*\n"); } } return0; } 19.空心字符菱形 输入: 菱型起始字母和菱形的高度。 输出: 参看测试用例,打印空心的由字符组成的菱形。 程序: #include<> #include<> intmain() { inti,j,h; charch; 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("%c\n",ch+i-1); } for(i=h+1;i<=2*h-1;i++) { for(j=1;j<=i-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("%c\n",ch+(2*h-1)-i); } return0; } 20.空心梯形 输入行数n和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。 要求: 输出的数字是循环的,即输出数字9后再输出的数字是0。 输入: 行数n和首字符 输出: 空心梯形 程序: #include<> #include<> intmain() { inti,j,n,f,t=0; scanf("%d%d",&n,&f); t=f; for(j=1;j<=3*n-2;j++) { if(j==3*n-2) printf("%d",t); else printf("%d",t); if(j<(3*n-1)/2) { if(t==9)t=0; else t++; } elseif(j==(3*n-1)/2&&n%2==0)continue; else { if(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); } else printf("%d",++t); } for(j=1;j<=n/2;j++) { if(t==0&&n%2! =0) t=9; elseif(j==1&&n%2==0) { if(j==n/2) printf("%d\n",t); else printf("%d",t); continue; } else t--; if(j==n/2) printf("%d\n",t); else printf("%d",t); } } else { if(t==9) { printf("0"); for(j=1;j<=6*n-4*i-3;j++) printf(""); printf("0\n"); t=0; } else { t++; printf("%d",t); for(j=1;j<=6*n-4*i-3;j++) printf(""); printf("%d\n",t); } } } return0; } H1: 计算通用产品代码(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。 输入: 每次输入三行数据,第一行是UPC的第一位数字,第二行是UPC的第一组五位数字,第三行是UPC的第二组五位数字。 输出: UPC的校验位 程序: #include<> #include<> intmain() { inti,j,s1=0,s2=0,t; inta[11]; charb[6],c[6]; scanf("%d",&a[0]); scanf("%s",b); scanf("%s",c); for(i=0,j=1;i<5;i++,j++) a[j]=b[i]-48; for(i=0,j=6;i<5;i++,j++) a[j]=c[i]-48; for(i=0;i<11;i++) { if(i%2==0) s1+=a[i]; else s2+=a[i]; } t=9-(s1*3+s2-1)%10; printf("%d\n",t); return0; } H2: 数制转换(选作) 这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。 譬如12和5,在十进制下它们是不等的,但若12使用3进制而5使用六进制或十进制时,它们的值就是相等的。 因此只要选择合适的进制,12和5就可以是相等的。 程序的输入是两个数字M和N(其十进制的值不超过00),它们的进制在2~36之间。 对于十以下的数字,用0~9表示,而十以上的数字,则使用大写的A~Z表示。 求出分别在2~36哪种进制下M和N相等。 若相等则输出相应的进制,若不等则输出错误信息。 当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。 信息的格式见测试用例。 程序: #include<> intmain() { longintpm=0,pn=0,s=0,t=0,w=1,e=1,p=0,q=0; inta[30],b[30]; charm[30],n[30]; inti,j,g,k,max1=0,max2=0,flag=0; scanf("%s%s",m,n); for(i=0;m[i]! ='\0';i++) { if(m[i]>='A'&&m[i]<='Z') a[i]=m[i]-55; if(m[i]>='0'&&m[i]<='9') a[i]=m[i]-48; max1=max1<(a[i]+1)(a[i]+1): max1; max1=max1<22: max1; } pm=i; for(j=0;n[j]! =0;j++) { if(n[j]>='A'&&n[j]<='Z') b[j]=n[j]-55; if(n[j]>='0'&&n[j]<='9') b[j]=n[j]-48; max2=max2<(b[j]+1)(b[j]+1): max2; max2=max2<22: max2; } pn=j; for(i=max1,j=max2;i<=36&&j<=36;) { p=0; q=0; w=1; e=1; for(g=pm-1;g>=0;g--) { p+=a[g]*w; w=w*i; } for(k=pn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北理乐学 语言 答案