北京理工大学乐学C语言编程汇编Word格式.docx
《北京理工大学乐学C语言编程汇编Word格式.docx》由会员分享,可在线阅读,更多相关《北京理工大学乐学C语言编程汇编Word格式.docx(167页珍藏版)》请在冰点文库上搜索。
其它:
1.期中测试1
2.期中测试2
3.期中测试3
4.期中测试(周青班)1
5.期中测试(周青班)2
6.期中测试(周青班)3
7.计算字符串中某字符串出现次数
8.编写程序:
从键盘输入两个字符串,找出其中没有同时出现在两个字符串中的字符。
9.合并删除并排序
10.拱猪积分
11.合并果子
12.大数分解(分解质因数)
13.在指定字符后添加字符串
14.合伙捕鱼
15.统计字符串中各字符的数量
16.从指定位置开始删除字符
17.按要求生成矩阵
18.谁能出线
19.数列Sum
20.仲君小组:
排列字符串
21.字符M
22.数字三角形
23.另一种空心数字梯形
24.字符X
25.字符X升级版
26.矩阵转置45°
27.hybest:
A+B
28.寻找矩阵鞍点
29.洗牌
30.整数拆分
正文部分:
19.判断三角形形状:
要求:
输入三角型的三条边,判断三角形的形状。
假设输入的三边边长均>
0。
(提示:
本题中应该要用到if语句嵌套)
输入:
三角型的3条边的长度(int型)。
输出:
等边三角形:
equilateraltriangle.
等腰三角形:
isocelestriangle.
不构成三角形:
non-triangle.
一般三角形:
triangle.
测试输入
期待的输出
以文本方式显示
1.2
2
2↵
1.equilateral
triangle.↵
1.3
1.isoceles
1.1
3
1↵
1.non-triangle.↵
4
5↵
1.triangle.↵
#include<
stdio.h>
main()
{
inta,b,c;
scanf("
%d%d%d"
&
a,&
b,&
c);
if(a+b<
=c||a+c<
=b||b+c<
=a)
printf("
non-triangle.\n"
);
else
if(a==b||b==c||a==c)
if(a==b&
&
b==c&
c==a)
printf("
equilateraltriangle.\n"
isocelestriangle.\n"
else
triangle.\n"
}
20.计算时钟夹角:
每组测试数据包含两个数字:
第一个数字代表小时(大于0小于等于12),第二个数字代表分(在区间[0,59]上)。
对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。
输出格式如下所示。
再看一看,想一想:
是否可以不用if语句,只使用printf函数来简化你的程序?
stdlib.h>
{
inta,b;
floatc,e;
%d%d"
b);
if(b==0)
{
e=180-30*abs(a-6);
At%d:
00theangleis%.1fdegrees.\n"
a,e);
}
c=30*a-5.5*b;
if(c<
-180)
e=-c-180;
%02dtheangleis%.1fdegrees.\n"
a,b,e);
if(c>
=-180&
c<
0)
e=-c;
=0&
=180)
a,b,c);
180)
e=360-c;
}
22.找出最大素数:
取值围
该围的最大素数
scanf("
%d"
a);
b=a-1;
while(b>
=2)
{
c=a%b;
if(c==0)
a--;
b--;
printf("
Themaxprimenumberis%d.\n"
a);
24.再算日期:
再次给出任意一个年月日(年>
1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。
年月日
0~6。
星期日用0表示,星期一用1表示,星期二用2表示......星期六用6表示。
假设年份大于1900。
先想一想:
我们现在只会使用if语句,该如何建立数学模型?
inta,b,c,e,f,g;
longs=1;
if(b>
12||b<
1)
monthiserror.\n"
while(a!
=1900||b!
=1||c!
=1)
{e=(a-1900)%4;
f=(a-1900)%100;
g=(a-1600)%400;
//这三个每次都要算!
if(s==1)
{
if(b==1||b==3||b==5||b==7||b==8||b==10||b==12)
if(c>
31||c<
s=0;
if(b==4||b==6||b==9||b==11)
30||c<
if(b==2)
if(g==0||f!
e==0)
if(c>
29||c<
else
28||c<
if(s==0)
{printf("
dayiserror.\n"
break;
}
}
s++;
c--;
if(c==0)
if(b==5||b==7||b==10||b==12)
c=30;
if(b==1||b==2||b==4||b==6||b==8||b==9||b==11)
c=31;
if(b==3)
if(g==0||f!
c=29;
else
c=28;
b--;
}
if(b==0)
{
b=12;
a--;
}
if(s!
=0)
%ld\n"
s%7);
}
25.确定母亲节:
母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。
年份
日期(5月的哪一天)
inta,ri,c;
intd,f,g,e;
d=(a-1900)%4;
f=(a-1900)%100;
g=(a-1600)%400;
if(g==0||f!
d==0)
{
ri=365*(a-1900)+(a-1900)/4-(a-1900)/100+(a-1600)/400+121;
e=ri%7;
if(e!
c=15-e;
c=8;
%d\n"
c);
27.寻找特殊偶数:
背景
有一种特殊偶数,它每一位上的数字都两两不相同。
我们现在需要找出四位数中某一区间的这类偶数。
输入
所要寻找的四位偶数的围。
每组输入有两个数字:
第一个数字是最小围;
第二个数字是最大围。
如果输入遇到0,输入结束。
输出
列出此围的所有特殊偶数,并且列出此围特殊偶数的个数。
main()
inta,b,i,j=0;
intd,e,f,g;
while(a!
b!
if(a<
1000||b>
9999||a>
b)
printf("
Error\n"
else
i=a;
while(i<
=b)
g=i%10;
f=i/10%10;
e=i/100%10;
d=i/1000;
if(g==f||g==e||g==d||f==e||f==d||e==d)
i=i+2;
else
{
j++;
printf("
%d"
i);
}
}
\n"
counter=%d\n"
j);
j=0;
scanf("
}
28.寻找阿姆斯特朗数:
请编写一个程序寻找一种特殊整数:
一个n位的正整数等于其各位数字的n次方之和。
例如:
407=4×
4×
4+0×
0×
0+7×
7×
7。
所以407就是一个特殊数。
正整数的位数n(n<
=6)。
所有此n位特殊数。
每个数占一行。
若不存在符合条件的特殊数,则输出提示:
"
Nooutput.”;
若存在,则从小到大进行输出。
inta,b,c,d,e,f,g;
into=1,p=1,q=1,r=1,s=1,t=1;
intn;
intshang,xia;
inti=1,j,h=0,k=1,l=1;
n);
while(i<
=n)
{
k=10*k;
i++;
shang=k-1;
xia=k/10;
j=xia;
while(j<
=shang)
a=j%10;
b=j/10%10;
c=j/100%10;
d=j/1000%10;
e=j/10000%10;
f=j/100000%10;
while(l<
o=a*o;
p=p*b;
q=q*c;
r=r*d;
s=s*e;
t=t*f;
l++;
}
g=o+p+q+r+s+t;
if(j==g)
h++;
j++;
l=1;
o=1,p=1,q=1,r=1,s=1,t=1;
if(h==0)
Nooutput.\n"
31.打印数字菱形:
这是非信息类2013年出的题目,大家来看看,你会做吗?
输入n的值,输出如下例(n=4)所示的数字菱形。
4
434
43234
4321234
n
数字菱形
友情提示:
同学们总结一下打印星号组成的实心图形程序的编程思路:
第一步,打印星号组成的正方形;
第二步,改变每行星号的个数,打印每行星号数量不一样的图形;
如果是空心图形,每行第一个和最后一个位置输出星号,其他位置输出空格。
现在我们练习输出变化的字符,在打印星号图形的基础上,原来输出*号的位置,将printf("
*"
改为printf("
%2d"
x);
当然,原来输出一个*号的地方只占一个字符的位置,现在都要改为2个字符的位置,如果输出的是数字且多于2个,则要是%3d或%4d了。
x是多少呢?
则要寻找其规律,就是该输出位置与所在行列的关系。
注意给出的测试用例,输出的数字是左对齐啊。
不用数组就可以完成。
{inti=1,j=1,n,m;
m=n;
while(i<
=2*n-1)
for(;
i<
=n;
i++)
for(;
j<
=n-i;
j++)
"
for(m=n;
j>
n-i&
{printf("
%-2d"
m);
m--;
for(m=n+1-i;
n&
=n+i-1;
j++)
{m++;
printf("
j=1;
i>
=2*n-1;
=i-n;
for(m=n;
i-n&
for(m++;
=3*n-1-i;
j++){
m++;
32.打印空心倒三角形:
测试用例1
1.3↵
1.*****↵
2.
*
*↵
3.
测试用例2
1.5↵
1.*********↵
2.*
*
4.
*↵
5.
inti=2,j=1,h;
h);
for(;
=2*h-1;
if(h>
while(i<
=h)
for(j=1;
i;
j++)printf("
j==i;
i&
2*h-i;
j++)printf("
j==2*h-i;
i++;
34.计算后续日期:
我们经常要计算,从今天往后N天之后是哪一天(哪年哪月哪日)。
现在我们就可以编写一个程序,推算指定日期之后的第N天是什么日期。
N
(年月日+N天后的)年.月.日
{inta,b,c;
intnian,yue,ri;
intm;
%d%d%d%d"
c,&
m);
nian=a;
yue=b;
ri=c;
while(m>
switch(yue)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
{if(ri<
=31){ri++;
if(ri>
31){ri=1;
yue++;
}break;
case4:
case6:
case9:
case11:
=30){ri++;
30){ri=1;
case2:
{if(nian%400==0||nian%100!
nian%4==0)
=29){ri++;
if(ri>
29){ri=1;
=28){ri++;
28){ri=1;
}m--;
if(yue==13){nian++;
yue=1;
ri=1;
%d.%d.%d\n"
nian,yue,ri);
35.零钱换整钱:
小明手中有硬币,小红手中有若干10元的纸币。
已知1角硬币厚1.8mm,5角硬币厚1.5mm,1元硬币厚2.0mm。
小红拿出若干10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,且三摞硬币的金额之和正好等于小红要求的面值,则双方交换,否则没有办法交换。
小红希望交换几10元的纸币
1角的数量,5角的数量,1元的数量
inta,d,e,f;
floatx,y,z;
x=25.0/4*a;
y=15.0/2*a;
z=45.0/8*a;
d=x;
e=y;
f=z;
if(x!
=d||y!
=e||z!
=f)
Nochange.\n"
%d,%d,%d\n"
d,e,f);
36.空心数字梯形
输入行数n和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。
要求:
输出的数字是循环的,即输出数字9后再输出的数字是0。
行数n和首字符
空心梯形
1.5
6
7
8
9
0
1
6↵
7↵
8↵
9↵
0↵
1.0↵
1.9
0
3↵
1.6
6.
5
2
2