教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

C语言竞赛题目大全(17)

来源:网络收集 时间:2026-08-30
导读: 42 printf(\ %d %d %d\\\\n\} 34. 41.马克思手稿中的数学题 马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令
<=3;i++) /*循环控制变量i控制任取红球个数0 ̄3*/ for(j=0;j<=3;j++) /*循环控制变量j控制任取白球个数0 ̄3*/ if((8-i-j)<=6)

42

printf(\ %d %d %d\\\\n\} 34. 41.马克思手稿中的数学题 马克思手稿中有一道趣味数学问题:有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 void main() { int x,y,z,count=0; printf(\ Men Women Children\\\\n\ printf(\ 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(\ %d %d %d\\\\n\ } } 42.最大公约数和最小公倍数 求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM) *问题分析与算法设计 手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。 *程序与程序注释 #include void 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

43

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 43.分数比较 比较两个分数的大小。 *问题分析与算法设计 人工方式下比较分数大小最常用的方法是:进行分数的通分后比较分子的大小。可以编程模拟手式方式。 *程序与程序注释 #include int zxgb(int a,int b); void main() { int i,j,k,l,m,n; printf(\ scanf(\ /*输入两个分数*/ m=zxgb(j,l)/j*i; /*求出第一个分数通分后的分子*/ n=zxgb(j,l)/l*k; /*求出第二个分数通分后的分子*/ if(m>n) printf(\ /*比较分子的大小*/ else if(m==n) printf(\ /*输出比较的结果*/ else printf(\} int zxgb(int a,int b) { long int c; int d; if(a16/32 输入:16/32,4/8 输出: 16/32=4/8 35. 44.分数之和 求这样的四个自然数p,q,r,s(p<=q<=r<=s),使得以下等式成立: 1/p+1/q+1/r+1/s+1 *问题分析与算法设计 若规定p<=q<=r<=s,将原式通分、化简并整理后得到: 2<=p<5 p<=q<7 q

44

#include void main() { int p,q,r,s,count=0; printf(\ for(p=2;p<5;p++) /*穷举分母*/ for(q=p;q<7;q++) for(r=q;r<13;r++) if(p*q*r-q*r-p*r-p*q!=0) { s=(p*q*r)/(p*q*r-q*r-p*r-p*q); /*求出s的值*/ if(!((p*q*r)%(p*q*r-q*r-p*r-p*q))&&s>=r) printf(\ 1/%d+1/%d+1/%d+1/%d=1\\\\n\,s); /*输出结果*/ } } -------------------------------------------------------------------------------- -- 作者:huang01 -- 发布时间:2004-10-21 17:06:39 -- 36. 45.将真分数分解为埃及分数 分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。 如:8/11=1/2+1/5+1/55+1/110。 *问题分析与算法设计 若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a+1的埃及分数。用这种方法将剩余部分反复分解,最后可得到结果。 *程序与程序注释 #include void main() { long int a,b,c; printf(\ scanf(\ /*输入分子a和分母b*/ printf(\ while(1) { if(b%a) /*若分子不能整除分母*/ c=b/a+1; /*则分解出一个分母为b/a+1的埃及分数*/ else{ c=b/a; a=1;} /*否则,输出化简后的真分数(埃及分数)*/ if(a==1) { printf(\ break; /*a为1标志结束*/ } else printf(\ a=a*c-b; /*求出余数的分子*/ b=b*c; /*求出余数的分母*/ if(a==3) /*若余数为3,输出最后两个埃及分数*/ { printf(\ break;} } } *运行结果

45

…… 此处隐藏:145字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言竞赛题目大全(17).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/518712.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)