77范文网 - 专业文章范例文档资料分享平台

c语言趣味题(6)

来源:网络收集 时间:2019-04-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

*问题分析与算法设计

设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在0~20之间;同理,y的取值范围在0~33之间,可得到下面的不定方程: 5x+3y+z/3=100 x+y+z=100

所以此问题可归结为求这个不定方程的整数解。

由程序设计实现不定方程的求解与手工计算不同。在分析确定方程中未知数变化范围的前提下,可通过对未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。 *程序说明与注释 #include int main() {

int x,y,z,j=0;

printf(\for(x=0;x<=20;x++) /*外层循环控制鸡翁数*/

for(y=0;y<=33;y++) /*内层循环控制鸡母数y在0~33变化*/ {

z=100-x-y; /*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/ if(z%3==0&&5*x+3*y+z/3==100) /*验证取z值的合理性及得到一组解的合理性*/

printf(\} }

*运行结果

Follwing are possible plans to buy 100 fowls with 100 Yuan. 1:cock=0 hen=25 chicken=75 2:cock=4 hen=18 chicken=78 3:cock=8 hen=11 chicken=81 4:cock=12 hen=4 chicken=84 *问题的进一步讨论

这类求解不定方程总理的实现,各层循环的控制变量直接与方程未知数有关,且采用对未知数的取值范上穷举和组合的方法来复盖可能得到的全部各组解。能否根据题意更合理的设置循环控制条件来减少这种穷举和组合的次数,提高程序的执行效率,请读者考虑 31.爱因斯坦的数学题

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯共有多少阶? *问题分析与算法设计

根据题意,阶梯数满足下面一组同余式: x≡1 (mod2) x≡2 (mod3)

x≡4 (mod5) x≡5 (mod6) x≡0 (mod7) *程序说明与注释 #include int main() {

int i=1; /*i为所设的阶梯数*/

while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))) ++i; /*满足一组同余式的判别*/ printf(\}

*运行结果

Staris_number=119 *问题的进一步讨论

此题算法还可考虑求1、2、4、5的最小公倍数n,然后判t(t为n-1)≡0(mod7)是否成立,若不成立则t=t+n,再进行判别,直至选出满足条件的t值。请自行编写程序实现 32.换分币

用一元人民币兑换成1分、2分和5分硬币,共有多少种不同的兑换方法。 *问题分析与算法设计

根据题意设i,j,k分别为兑换的1分、2分、5分硬币所具有的钱数(分),则i,j,k的值应满足: i+j+k=100 *程序说明与注释 #include int main() {

int i,j,k,count=1;

printf(\for(i=0;i<=100;i++) /*i为1分硬币钱数,可取值0,1,2…,100*/

for(j=0;j<=100-i;j+=2) /*j为2分硬币钱数,可取0值,2,4,…,100*/ for(k=0;k<=100-i-2*j;k+=5) /*k为5分硬币钱数*/ if(i+j+k==100)

printf(count%4?\%d+2*%d+5*%d\\t\%d+2*%d+5*%d\\n\++,i,j/2,k/5); }

33.年龄几何

张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。

*问题分析与算法设计

设数列的首项为a,则前4项之和为\前4 项之积为

\a)*(n+a+a)*(n+a+a+a)\。同时\。可采用穷举法求出此数列。 *程序说明与注释 #include int main() { int n,a,i;

printf(\for(n=1;n<=6;n++) /*公差n取值为1~6*/ for(a=1;a<=4;a++) /*首项a取值为1~4*/

if(4*n+6*a==26&&n*(n+a)*(n+a+a)*(n+a+a+a)==880) /*判断结果*/ for(i=0;i<20;i++)

printf(\输出前20项*/ }

*运行结果

The series with equal difference are:

2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 34.三色球问题

若一个口袋中放有12个球,其中有3个红的。3个白的和6个黒的,问从中任取8个共有多少种不同的颜色搭配? *问题分析与算法设计

设任取的红球个数为i,白球个数为j,则黒球个数为8-i-j,根据题意红球和白球个数的取值范围是0~3,在红球和白球个数确定的条件下,黒球个数取值应为8-i-j<=6。 *程序说明与注释 #include int main() {

int i,j,count=0;

printf(\printf(\\\n\

for(i=0;i<=3;i++) /*循环控制变量i控制任取红球个数0 ̄3*/ for(j=0;j<=3;j++) /*循环控制变量j控制任取白球个数0 ̄3*/ if((8-i-j)<=6)

printf(\count,i,j,8-i-j); }

35.马克思手稿中的数学题

马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?

*问题分析与算法设计

设x,y,z分别代表男人、女人和小孩。按题目的要求,可得到下面的方程: x+y+z=30 (1) 3x+2y+z=50 (2)

用方程程序求此不定方程的非负整数解,可先通过(2)-(1)式得: 2x+y=20 (3)

由(3)式可知,x变化范围是0~10 *程序说明与注释 #include int main() {

int x,y,z,count=0;

printf(\

printf(\\\n\for(x=0;x<=10;x++) {

y=20-2*x; /*x定值据(3)式求y*/ z=30-x-y; /*由(1)式求z*/

if(3*x+2*y+z==50) /*当前得到的一组解是否满足式(2)*/ printf(\} }

36.最大公约数和最小公倍数

求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM) *问题分析与算法设计

手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。 *程序说明与注释 #include int main() {

int a,b,num1,num2,temp; printf(\scanf(\

if(num1>num2) /*找出两个数中的较大值*/ {

temp=num1; num1=num2; num2=temp; /*交换两个整数*/ }

a=num1; b=num2;

while(b!=0) /*采用辗转相除法求最大公约数*/ {

temp=a%b; a=b; b=temp; }

printf(\输出最大公约数*/ printf(\输出最小公倍数*/ }

*运行结果

1.Input a & b: 20 55 The GCD of 20 and 55 is: 5 The LCM of them is: 220 2.Input a & b: 17 71 The GCD of 17 and 71 is: 1 The LCM of them is: 1207 3.Input a & b: 24 88 The GCD of 24 and 88 is: 8 The LCM of them is: 264 4.Input a & b: 35 85 The GCD of 35 and 85 is: 5 The LCM of them is: 595 *思考题

求一个最小的正整数,这个正整数被任意n(2<=n<=10)除都是除不尽的,而且余数总是(n-1)。例如:被9除时的余数为8。要求设计一个算法,不允许枚举与除2、除3、?.、除9、除10有关的命令,求出这个正整数。 37.新娘和新郞

三对情侣参加婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。这人听后知道他们在开玩笑,全是假话。请编程找出谁将和谁结婚。 *问题分析与算法设计

将A、B、C三人用1,2,3表示,将X和A结婚表示为“X=1”,将Y不与A结婚表示为“Y!=1”。按照题目中的叙述可以写出表达式: x!=1 A不与X结婚 x!=3 X的未婚夫不是C z!=3 C不与Z结婚

题意还隐含着X、Y、Z三个新娘不能结为配偶,则有: x!=y且x!=z且y!=z

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库c语言趣味题(6)在线全文阅读。

c语言趣味题(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/573304.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: