北理乐学C语言答案最新Word文档下载推荐.docx
《北理乐学C语言答案最新Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《北理乐学C语言答案最新Word文档下载推荐.docx(138页珍藏版)》请在冰豆网上搜索。
x);
%d\n"
x*x*x);
}
5.学习打印你的第一个图形
编写一个小程序,要求输出的是4行由*号组成的等腰三角形。
intmain()
{
*\n"
***\n"
*****\n"
*******\n"
6.一年级的算术题
接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:
123444
分别输出按照整型数据进行+、-、*、/、*之后的运行结果。
%d%d"
%d-%d=%d\n"
a,b,a-b);
%d*%d=%d\n"
a,b,a*b);
%d/%d=%d\n"
a,b,a/b);
%d%%%d=%d\n"
a,b,a%b);
7.求两个变量的最小值
两个整型数
两个整型值中的最小值
%d%d"
min=%d\n"
a<
b?
a:
8.判断三角形的形状
输入:
三角型的3条边的长度(int型)。
等边三角形:
equilateraltriangle
等腰三角形:
isocelestriangle
不构成三角形:
non-triangle
一般三角形:
triangle
inta,b,c;
%d%d%d"
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)
isocelestriangle.\n"
else
triangle.\n"
}
non-triangle.\n"
9.计算圆柱的侧面积及体积
输入:
第一行输入圆柱的底面半径r
第二行输入圆柱的高h
s=<
圆柱的侧面积>
v=<
圆柱的体积>
要求
1.所有变量都定义为双精度类型
2.结果精确到小数点后两位
#definePI3.1415926
doubler,h,s,v;
%lf"
r);
h);
s=2*PI*r*h;
v=PI*r*r*h;
s=%.2f,v=%.2f\n"
s,v);
10.计算时钟的夹角
背景:
钟面上的时针和分针之间的夹角总是在0~180之间(包括0和180)。
举例来说,在十二点的时候两针之间的夹角为0,而在六点的时候夹角为180,在三点的时候为90。
本题要解决的是计算12:
00到11:
59之间任意一个时间的夹角。
每组测试数据包含两个数字:
第一个数字代表小时(大于0小于等于12),第二个数字代表分(在区间[0,59]上)。
对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。
输出格式如下所示。
math.h>
inth,m;
floatd1,d2,d;
h,&
m);
d1=30*(h+m/60.0);
d2=m*360/60.0;
d=fabs(d1-d2);
if(d>
180)
d=360-d;
At%d:
%dtheangleis%.1fdegrees.\n"
h,m,d);
11.找出最大素数
素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。
取值范围
该范围内的最大素数
intn,i,j;
n);
for(i=n;
i>
=1;
i--)
{for(j=2;
j<
i;
j++)
if(i%j==0)
break;
if(j==i)
{
Themaxprimenumberis%d.\n"
i);
}
12.求最后3位数值
a和n的值。
假设a<
=150。
求a的n次方的最后3位数。
longints=1;
inta,n,i=1,t=1;
if(n==0)
Thelast3numbersis1.\n"
for(i=1;
i<
=n;
i++)
{
s=(s*a)%1000;
}
t=s%1000;
if(t>
=0&
t<
10)printf("
Thelast3numbersis00%d.\n"
t);
=10&
100)printf("
Thelast3numbersis0%d.\n"
=100&
1000)printf("
Thelast3numbersis%d.\n"
13.贪吃的猴子
有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。
第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。
以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一般加5个)。
到第n天早上再想吃的时候,就只剩下一个桃子了。
天数n
第一天的桃子个数
inti,n,amount=1;
for(i=n-1;
i--)
amount=2*(amount+i);
Themonkeygot%dpeachsinfirstday.\n"
amount);
14.黑色星期五
在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。
所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。
年份
判断该年是否包含黑色星期五,如包含,给出具体日期
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};
year);
for(i=1;
13;
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)
if(n==1)
Thereis%dBlackFridayinyear%d.\n"
n,year);
Itis:
\n"
%d/%d/13\n"
year,month[1]);
Thereare%dBlackFridaysinyear%d.\n"
Theyare:
for(i=1;
printf("
year,month[i]);
15.你会输出一行星号?
我们才开始上机,现在需要我们用最简单得办法,在一行中输出N个星号。
N值
一行中N个星号。
inti,n;
*"
16.计算SUM的值
已知公式:
SUM=1+1/2+1/3+1/4+...+1/n
n输出:
表达式sum的值。
结果保留6位小数。
doublesum=0;
for(i=1;
sum+=1.0/i;
sum=%.6lf\n"
sum);
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
intn,i,j,num,t,s=0,t1,flag=0;
t=pow(10,n-1);
for(i=t;
t*10;
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;
if(flag==0)
Nooutput.\n"
18.空心的倒三角型
输入三角形的高度(h>
=0)。
打印相应的空心倒三角形。
图样参见测试用例。
inti,j,h;
=h;
i++)
for(j=1;
"
if(i==1||i==h)
=2*(h-i)+1;
else
=2*(h-i)-1;
*\n"
19.空心字符菱形
菱型起始字母和菱形的高度。
参看测试用例,打印空心的由字符组成的菱形。
charch;
%c%d"
ch,&
for(j=1;
=h-i;
%c"
ch+i-1);
=2*i-3;
if(i==1)
continue;
%c\n"
for(i=h+1;
=2*h-1;
{
=i-h;
ch+(2*h-1)-i);
=(2*h-1-i)*2-1;
if(i==2*h-1)
20.空心梯形
输入行数n和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。
要求:
输出的数字是循环的,即输出数字9后再输出的数字是0。
行数n和首字符
空心梯形
inti,j,n,f,t=0;
n,&
f);
t=f;
=3*n-2;
if(j==3*n-2)
%d"
if(j<
(3*n-1)/2)
if(t==9)t=0;
else
t++;
elseif(j==(3*n-1)/2&
n%2==0)continue;
if(t==0)t=9;
else
t--;
}
for(i=2;
for(j=1;
=2*(i-1);
if(i==n)
for(j=1;
=(n+1)/2;
if(t==9)
{
t=0;
printf("
}
else
++t);
=n/2;
if(t==0&
n%2!
=0)
t=9;
elseif(j==1&
n%2==0)
{
if(j==n/2)
printf("
else
continue;
}
t--;
if(j==n/2)
if(t==9)
printf("
0"
for(j=1;
=6*n-4*i-3;
0\n"
t=0;
{
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的校验位
inti,j,s1=0,s2=0,t;
inta[11];
charb[6],c[6];
a[0]);
%s"
b);
c);
for(i=0,j=1;
5;
i++,j++)
a[j]=b[i]-48;
for(i=0,j=6;
a[j]=c[i]-48;
for(i=0;
11;
if(i%2==0)
s1+=a[i];
s2+=a[i];
t=9-(s1*3+s2-1)%10;
H2:
数制转换(选作)
这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。
譬如12和5,在十进制下它们是不等的,但若12使用3进制而5使用六进制或十进制时,它们的值就是相等的。
因此只要选择合适的进制,12和5就可以是相等的。
程序的输入是两个数字M和N(其十进制的值不超过1000000000),它们的进制在2~36之间。
对于十以下的数字,用0~9表示,而十以上的数字,则使用大写的A~Z表示。
求出分别在2~36哪种进制下M和N相等。
若相等则输出相应的进制,若不等则输出错误信息。
当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。
信息的格式见测试用例。
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;
%s%s"
m,n);
for(i=0;
m[i]!
='
\0'
;
if(m[i]>
A'
m[i]<
Z'
)
a[i]=m[i]-55;
0'
9'
a[i]=m[i]-48;
max1=max1<
(a[i]+1)?
(a[i]+1):
max1;
2?
2:
pm=i;
for(j=0;
n[j]!
if(n[j]>
n[j]<
b[j]=n[j]-55;
n[j