C语言上机考题分析2.docx
- 文档编号:9260404
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:16
- 大小:24.01KB
C语言上机考题分析2.docx
《C语言上机考题分析2.docx》由会员分享,可在线阅读,更多相关《C语言上机考题分析2.docx(16页珍藏版)》请在冰豆网上搜索。
C语言上机考题分析2
穷举法求解简单计算问题
根据问题的已知条件,对影响答案的各种因素可能的取值范围进行组合,在所有可能的组合情况中输出满足条件的答案。
一般,影响答案的各种因素作为循环变量,用多重循环对各种因素进行组合,在内层循环中验证每种组合并输出满足条件的答案。
2-1.编程,输出200以内(含200)所有完全平方数C(满足C2=A2+B2)及其个数。
结果:
254个C:
No.CAB
1534
2543
31068
41086
513512
613125
…………
25120056192
252200120160
253200160120
25420019256
分析:
影响答案的因素有A、B、C,它们的取值范围均为1~200。
所以用三重循环穷举A、B、C可能的值,输出满足条件C2=A2+B2的C、A、B及C的个数。
C的个数可以设变量n计数并输出即可。
n=0;
for(c=1;c<=200;c++)
for(a=1;a<=200;a++)
for(b=1;b<=200;b++)
if(c*c==a*a+b*b)
printf("No.%3ld:
%ld%ld%ld\n",++n,c,a,b);
2-2.口袋中有12个球,其中3红,3白和6黑,从中任取8个球,编程,输出所有不同的取法。
结果:
No.REDWHITEBLACK
------------------------
1:
026
2:
035
3:
116
。
。
。
。
。
。
。
12:
323
13:
332
分析:
设任取红球的个数为i,白球的个数为j,黑球的个数为k,据题意红球和白球个数的取值范围是0~3,黑球的取值范围是0~6。
所以用三重循环穷举红球、白球、黑球可能的值,输出满足条件(总数为8个球)的取法。
因为总数为8个球,所以黑球的个数为8-i-j(<=6),故可以省略k循环。
2-3.小明有五本不同的新书(分别命名为1,2,3,4,5),要借给A、B、C三位小朋友,每人每次必须借一本,编程,输出所有不同的借法。
结果:
No.ABC
1123
2124
……
59542
60543
分析:
设5本书分别命名为1、2、3、4、5,A、B、C可以任取一本书,所以可以用A、B、C三重循环,取值范围:
从1到5。
A、B、C所借书互不相同(a!
=b&&a!
=c&&b!
=c)。
2-4.100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。
编程,输出所有满足条件的方案(即大、中、小马的数目)。
结果:
1:
l=2m=30s=68
2:
l=5m=25s=70
3:
l=8m=20s=72
4:
l=11m=15s=74
5:
l=14m=10s=76
6:
l=17m=5s=78
7:
l=20m=0s=80
分析:
大马l一匹驮3担,至多l=100/3=33匹;中马m至多m=(100-3*l)/2匹;小马s=(100-l-m)匹.可以用l、m两重循环(l=0~33,m=0~(100-3*l)/2),输出满足3l+2m+s/2=100(s是2的倍数)的l、m、s。
2-5.编程,输出所有个位数为6且能被31整除的五位数及其个数。
结果:
No.110106
No.210416
No.310726
No.411036
……
No.28899076
No.28999386
No.29099696
分析:
对5位数n循环10000~99999,输出满足条件n%10==6&&n%31==0的所有n.
2-6.一辆卡车违犯交通规则,撞人逃跑。
现场三人目击事件,但都没记住车号,只记下车号的一些特征。
甲说:
牌照的前两位数字是相同的;乙说:
牌照的后两位数字是相同的;丙是位数学家,他说:
四位的车号刚好是一个整数的平方。
根据以上线索,编程,输出车号。
结果:
7744
分析:
用两重循环构造一个前两位数相同、后两位数相同整数i*1000+i*100+j*10+j,(其中i=1~9,j=0~9),然后再用循环(c=31~99,c的平方为4位数)判断该整数是否是c的平方。
2-7.中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?
编程,输出所有可能的购买方案。
结果:
No.abc
102575
241878
381181
412484
分析:
设鸡翁a只,鸡母b只,鸡雏c只,则a+b+c=100,且5a+3b+c/3=100,即15a+9b+c=300,鸡翁至多买100/5=20只,鸡母至多买100/3=33,鸡雏买100-a-b只。
用两重循环(a=0~20,b=0~33)输出满足条件a+b+c==100和15*a+9*b+c==300的所有购买方案。
2-8.用40元买苹果、西瓜和梨共100个,3种水果都要。
已知苹果0.4元一个,西瓜4元一个,梨0.2元一个。
问可以各买多少个?
编程,输出全部购买方案。
分析:
设西瓜买x个,苹果买y个,梨买z个,则问题满足方程:
4x+0.4y+0.2z=40
x+y+z=100
即:
40x+4y+2z=400
x+y+z=100
西瓜至多买(40-0.4-0.2)/4=9个,苹果至多买(40-4-0.2)/0.4=89个,梨买100-y-z个.
用两重循环(x=1~9,y=1~89)输出满足条件x+y+z=100和40x+4y+2z=400的所有购买方案。
.
输出结果:
xyz
------------------------
18118
26236
34354
42472
5590
2-9.我国明代数学家程大位写了一本《算法统宗》,里面有一题:
一百馒头一百僧,大僧三个,小僧三人分一个,大小僧各几丁?
编程,输出大僧和小僧的人数。
结果:
x=25y=75
分析:
设大僧有x个,小僧有y个,则满足方程组:
x+y=100
3x+y/3=100即9x+y=300
x<=100/3,y=100-x
用循环(x=0~33)输出满足条件x+y=100和9x+y=300的所有方案。
2-10.一个马戏团表演,120个座位全满,全部门票收入是120元,现在知道,男人每人5元,女人每人2元,小孩每人1角。
编程,输出男人、女人和小孩各有多少人。
结果:
xyz
--------------
171390
分析:
设男人有x人,女人有y人,小孩有z人,则问题满足方程:
5x+2y+0.1z=120即50x+20y+z=1200
x+y+z=120
男人至多有120/5=24人,女人至多有120/2=60人,小孩有(120-x-y)人,用二重循环(x=0~24,y=0~60)输出满足条件x+y=120和50x+20y+z=1200的所有方案。
2-11.设N是一个四位数,它的9倍恰好是其反序数(例如:
123的反序数是321),编程,输出所有满足条件的N。
结果:
1089
分析:
对4位数x循环(x=1000~9999)将x的千、百、十、个位数字依次分解为i、j、k、m后,输出满足下列条件的x:
x*9=(m*103+k*102+10*j+i)。
也可以令i、j、k、m分别表示x的千、百、十、个位数字,用4重循环(i=1~9,j、k、m=0~9),输出满足下列条件的x=(i*103+j*102+10k+m):
x*9=(m*103+k*102+10j+i)
n位数x的各位数字(从高位到低位)分解方法:
x/k%10;k=10n-1,10n-2,…,102,10,1
2-12.编程,求全部水仙花数。
所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。
如:
153=13+53+33
结果:
153、370、371、407
分析:
对三位数i循环(i=100~999),将i的各位数字分解为a,b,c后,输出满足i=a3+b3+c3的i。
2-13.用一元人民币兑换成1分、2分和5分硬币,编程,输出所有不同的兑换方法及兑换方法个数。
结果No.1>>5:
02:
01:
100
No.2>>5:
02:
11:
98
No.3>>5:
02:
21:
96
……
No。
540>>5:
192:
21:
1
No。
541>>5:
202:
01:
0
分析:
设f5,f2,f1分别表示5分、2分和1分的个数,f5<=20,f2<=(100-f5*5)/2;f1<=100-f5*5-f2*2。
可以用f5、f2两重循环(f5=0~20,f2=0~(100-f5*5)/2),输出所有不同的兑换方法.至于兑换方法个数可以设变量n计数并输出即可。
2-14.编程,从键盘输入1个人的工资(1000—9999之间的整数),计算给这个人发工资时,需面值100元,50元,20元,10元,5元,2元和1元的人民币各多少张?
输出尽可能使用大面值人民币的10种方案。
结果:
输入2310
输出:
no.100502010521
123001000
223000200
323000121
423000113
523000105
623000050
723000042
823000034
923000026
1023000018
分析:
设工资为n,
100元至多为f100=n/100张,
50元至多为f50=(n-f100*100)/50张
20元至多为f20=(n-f100*100-f50*50)/20张
10元至多为f10=(n-f100*100-f50*50-f20*20)/10张。
5元至多为f5=(n-f100*100-f50*50-f20*20-f10*10)/5张。
2元至多为f2=(n-f100*100-f50*50-f20*20-f10*10-f5*5)/2张。
1元至多为f1=(n-f100*100-f50*50-f20*20-f10*10-f5*5-f2*2)张。
因为要求尽可能使用大面值人民币,所以用f100,f50,…,f1共7重循环(各面值张数从大到小循环,如:
f100=n/100~0)。
输出前10个满足条件(工资=∑fi)的面值组合。
2-15.编程,输出555555的约数中最大的三位数。
结果:
777
分析:
对三位数j循环(j=999~100),输出首次能整除555555的j(最大约数)。
2-16.编程,输出1000到100000之间所有满足下列条件的所有整数及其个数:
整数的各位数字之和等于5。
结果:
11004
21013
31022
41031
。
。
。
。
。
。
10340100
10441000
10550000
分析:
对i循环(i=1000~100000),将i的各位数字分解为a,b,c,d,e,f后,输出满足各位数字之和等于5的i。
n位数i的各位数字(从高位到低位)分解方法:
i/k%10;k=10n-1,10n-2,…,102,10,1
2-17.马克思手稿中有一道趣味数学问题:
有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?
编程,输出全部可能的答案。
分析:
设男人有x人,女人有y人,小孩有z人,则问题满足方程:
3x+2y+z=50
x+y+z=30
男人至多有(50-2-1)/3=15人,女人至多有(50-3-1)/3=15人,小孩有(30-x-z)人,
用两重循环(x=1~15,y=1~15)输出满足条件x+y+z=30和3x+2y+z=50的所有方案。
结果:
xyz
--------------
31413
41214
51015
6816
7617
8418
9219
2-18.有一堆硬币,面值只有1分、2分和5分三种。
其中有57枚面值不是5分,有77枚面值不是2分;有72枚面值不是1分。
问1分、2分和5分的硬币各有多少?
编程,输出全部可能的答案。
结果:
xyz
-------------------
312646
分析:
设1分有x个,2分有y个,5分有z个,则满足方程组:
x+y=57
x+z=77
y+z=72
x<=57,y<=57,z<=72
用三重循环(x=1~57,y=1~57,z=1~72)输出满足条件x+y==57&&x+z==77&&y+z==72的所有方案。
2-19.编程,求解下列算式中各字母所代表的数字并输出。
PEAR
- ARA ───────
PEA
结果:
p=1,e=0,a=9,r=8
分析:
采用四重循环穷举每个字母所可能代表的数字(p,a=1~9,e,r=0~9),然后将字母代表的数字代入算式,输出算式成立的各字母。
2-20.设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:
abc+bcc=532。
编程,输出满足条件的所有a、b、c的值。
结果:
a=3,b=2,c=1
分析:
采用三重循环(c=0~9,a、b=1~9)输出满足条件(a*100+b*10+c)+(b*100+c*10+c)==532。
的a、b、c。
2-21.求解爱因斯坦数学题。
有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。
若每次跨7阶,最后才正好一阶不剩。
编程,输出这条阶梯共有多少阶?
结果:
Staris_number=119
分析:
据题意,阶梯数满足下面一组同余式:
x≡1(mod2)
x≡2(mod3)
x≡4(mod5)
x≡5(mod6)
x≡0(mod7)
对自然数i=1,2,。
。
。
循环,输出满足下列条件的i:
i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0
2-22.我国古代数学名著<<孙子算经>>中,提出了闻名于世的“孙子问题”,即:
今有物不知其数,三个三个地数,剩二个;五个五个地数,剩三个;七个七个地数,剩二个。
编程,输出该物的个数。
结果:
i=23
分析:
据题意,阶梯数满足下面一组同余式:
x≡2(mod3)
x≡3(mod5)
x≡2(mod7)
对自然数i=1,2,。
。
。
循环,输出满足下列条件的i:
i%3==2&&i%5==3&&i%7==2
2-23.编程,任意输入一个偶数n,请将它分解为两个素数之和。
输出形式为:
*=*+*
结果:
输入248,输出248=7+241。
输入561,无输出
分析:
对j=2,3,…n-1循环,则n为j和m=n-j之和,若j、m均是素数则输出。
2-24.有一正整数等差数列,其前四项之和是26,前四项之积是880,编程,输出此数列的前四项。
结果:
25811
分析:
对a=1,2,…循环,对每个a,依次令公差k=1,2,…,输出满足下列条件的a,b=a+k,c=a+2k,d=a+3k:
a+b+c+d==26&&a*b*b*d==880
2-25.一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。
又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。
编程,输出这个自然数。
结果:
1993
分析:
对自然数1,2,。
。
。
搜索满足下列条件的数K:
对n=k/8;b=n/8;a=b/8;满足k%8==1&&n%8==1&&b%8==7,对c=k/17;d=n/17;满足(k%17==4&&c%17==15&&2*a==d)
2-26.如果一个数恰好等于它的因子之和,则称该数为“完全数”。
如:
6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。
编程,输出1000以内的全部“完全数”。
结果:
1+2+3==6。
1+2+4+7+14==28
1+2+4+8+16+31+62+124+248==496
分析:
对i循环(i=1~1000),输出满足条件的i及其各因子(用a数组记录)。
2-27.一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,编程,输出这个三位数。
结果:
248(248=(503)7,248=(305)9)
分析:
3位7进制数的范围:
(100)7=49,(666)7=342,
3位9进制数的范围:
(100)9=81,(888)9=728
所以81~342的7、9进制数均为3位数。
对i循环(i=81~342),计算i的7、9进制数,输出它们数码顺序正好相反的i。
2-28.如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
求3000以内的全部亲密数。
结果:
220---284,1184---1210,2620---2924。
分析:
按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为m,再计算m的全部因子的累加和为n,若n等于a则可判定a和m是亲密数。
计算数a的各因子的算法:
用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为a的一个因子。
对a循环(a=1~3000),输出满足n==a的a和m,其中n为m的全部因子的累加和。
2-29.一个数如果恰好等于它的各因子(该数本身除外)之和(如:
6=3+2+1),则称其为“完数”;若因子之和大于该数,则称其为“盈数”。
求出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E:
e1e2e3......(ei为完数)
G:
g1g2g3......(gi为盈数)
结果:
E:
628
G:
121820243036404248545660
分析:
对i循环(i=2~60),输出满足下列条件的i:
i的全体因子之和等于i为完数(用a数组记录)。
因子和大于i为盈数(用b数组记录)。
2-30.面包bread、奶油butter和咖啡coffee在一起可以组成一个算式:
BREAD
BREAD
+BUTTER
COFFEE
设A、B、C、D、E、F、O、R、T和U均代表数字0~9之一。
编程,输出各字母所代表的数字。
结果:
abcdefortu
1:
0110002000
2:
0110003001
3:
0110006004
4:
0110007005
5:
0110008006
。
。
。
。
。
。
。
。
。
258:
0113977394
259:
0113978395
260:
0113979396
。
。
。
。
。
。
。
。
。
分析:
采用十重循环(a、d、e、f、o、r、t,u取0~9,b,c取1~9),验证并输出满足条件:
(b*10000+r*1000+e*100+a*10+d)*2+(b*100000+u*10000+t*1000+t*100+e*10+r)==c*100000+o*10000+f*1000+f*100+e*10+e。
的各字母代表的数.
2-31.全排有46名战士,会骑马的有30人,会摔跤的有19人,会拳击的有24人。
还知道不少人是多面手,会骑马和摔跤的有14人,会摔跤和拳击的有12人,会拳击和骑马的有8人。
编程,输出三项全能的有几人?
结果:
x1=15,x2=0,x3=11,x12=7,x13=1,x23=5,w=7
分析:
设三项全能的有w<=8人,只会骑马的有x1<=30人,只会摔跤的有x2<=19人,只会拳击的有x3<=24人,只会骑马摔跤的有x12<=14人,只会骑马拳击的有x13<=8人,只会摔跤拳击的有x23<=12人。
采用7重循环(w=0~8,x1=0~30,x2=0~19,x3=0~24,x12=0~14,x13=0~8,x23=0~12),输出同时满足如下条件的w:
x1+x12+x13+w==30&&x2+x12+x23+w==19&&x3+x13+x23+w==24&&x12+w==14&&x23+w==12&&x13+w==8&&x1+x2+x3+x12+x13+x23+w==46
2-32.三对情侣参加婚礼,三个新郎为A、B、C,三个新娘为X、Y、Z。
有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是:
A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。
这人听后知道他们在说假话。
编程,输出谁将和谁结婚。
结果:
a--zb--xc--y
分析:
用三重循环(ab,c均从’x’循环到’z’),输出满足下列条件的ab,c:
a!
=’x’&&c!
=’x’&&c!
=’z’&&a!
=b&&a!
=c&&b!
=c
***2-33.某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
1.A和B二人中至少去一人2.A和D不能一起去
3.A、E和F三人中要派二人去4.B和C都去或都不去
5.C和D两人中去一个6.若D不去,则E也不去
编程,输出选中的人选。
结果:
a=1,b=1,c=1,d=0,e=0,f=1
分析:
设1为去,0为不去,用6重循环(a,b,c,d,e,f从0循环到1),输出满足下列条件的一组队员的状态:
1.(a+b>=1)&&(a+d!
=2)&&(a+e+f>=2)&&(b+c!
=1||b+c==2)&&c+d==1
2.if(d==0)e==0;
2-34.有A、B、C、D、E,每人额头上贴了一张或黑或白的纸。
5人对坐,都可看到其他人的颜色,但都不知道自己的颜色。
5人相互观察:
A说:
有三人额头上贴白纸,一人额头上贴的是黑纸
B说:
我看见其他四人额头上贴的都是黑纸
C说:
有一人额头上贴白纸,其他三人贴的是黑纸
D说:
我看见四人额头上贴的都是白纸
E什么也没说
现在已知额头贴黑纸的人说的都是谎话,额头贴白纸的人说的都是实话。
编程,输出这五人中额头贴白纸的人选和额头贴黑纸的人选。
结果:
a=0,b=0,c=1,d=0,e=1
分析:
设1为白,0为黑,用5重循环(a,b,c,d,e均从0循环到1),输出满足下列条件的a,b,c,d,e:
1.(a==1&&b+c+d+e==3)&&(b==1&&a+c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 考题 分析