C语言上机考题分析2.docx

上传人:b****7 文档编号:9260404 上传时间:2023-02-03 格式:DOCX 页数:16 大小:24.01KB
下载 相关 举报
C语言上机考题分析2.docx_第1页
第1页 / 共16页
C语言上机考题分析2.docx_第2页
第2页 / 共16页
C语言上机考题分析2.docx_第3页
第3页 / 共16页
C语言上机考题分析2.docx_第4页
第4页 / 共16页
C语言上机考题分析2.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言上机考题分析2.docx

《C语言上机考题分析2.docx》由会员分享,可在线阅读,更多相关《C语言上机考题分析2.docx(16页珍藏版)》请在冰豆网上搜索。

C语言上机考题分析2.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1