云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 北理工C语言2

北理工C语言2

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 17:04:01

后得到一个商为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==4&& c==15&&2*a==d)

main()/*sj1-2-16 */ { int n,b,a,k=0; while(++k)

{ n=k/8;b=n/8;a=b/8;

if(k%8!=1||n%8!=1||b%8!=7) continue; n=k/17;b=n/17;

if(k!=4||n!=15) continue;

if(2*a==b) {printf(\ } }

2-17. 如果一个数恰好等于它的因子之和,则称该数为“完全数”。如: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数组记录)。

main()/*sj1-2-17 */

{ int i,j,m,s,k,a[100];

for(i=1;i<=1000;i++) /* 寻找1000以内的完全数 */ { m=i;s=0;k=0; for(j=1;j

if(i==s) /* I为各因子之和,输出 */ { for(j=0;j

printf(\ printf(\ } } }

2-18. 一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位

数,且这两个三位数的数码顺序正好相反,编程,输出这个三位数。

结果: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。

main() /*sj1-2-18 */ { int i,n,k,a[3],b[3]; for(i=81;i<=342;i++)

{ for(n=i,k=0;n>0;n/=7) /* 化为7进制并存放到a */ a[k++]=n%7;

for(n=i,k=0;n>0;n/=9) /* 化为9进制并存放到b */ b[k++]=n%9;

for(n=0;n

2-19.用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的所有购买方

案。.

输出结果:

x y z

------------------------ 1 81 18 2 62 36 3 43 54 4 24 72 5 5 90

main()/*sj1-2-19 */ {int x,y,z;

printf(“ x y z\\n ---------------\\n”); for(x=1;x<=9;x++)

for(y=1;y<=(40-4-0.2)/0.4;y++) {z=100-x-y;

if(40*x+4*y+2*z==400)

printf(“]]]\\n”,x,y,z);} }

2-20. 如果整数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的全部因子的累加和。 main( ) /* sj1-2-20 */ { int a, i, m, n;

printf(\ for(a=1;a<3000;a++) /* 穷举3000以内的全部整数 */ {for(m=0, i=1;i<=a/2;i++ ) /* 计算数a的各因子,各因子之和存于m */ if(!(a%i)) m+=i;

for(n=0,i=1;i<=m/2;i++) /* 计算m的各因子,各因子之和存于n */ if(!(m%i)) n+=i;

if(n==a && a

} }

******************************************************************************* 2-21.?马克思手稿中有一道趣味数学问题:有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的所有方案。 结果:

x y z -------------- 3 14 13 4 12 14 5 10 15 6 8 16 7 6 17 8 4 18 9 2 19

main()/*sj1-2-21 */ {int x,y,z;

printf(\ x y z\\n -------------\\n\ for(x=1;x<16;x++) for(y=1;y<16;y++) {z=30-x-y;

if(3*x+2*y+z==50)

printf(\}

2-22. 一个数如果恰好等于它的各因子(该数本身除外)之和(如:6=3+2+1),则称其为“完

数”;若因子之和大于该数,则称其为“盈数”。求出2到60之间所有“完数”和“盈数”,并以如下形式输出:

E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 结果:E: 6 28

G: 12 18 20 24 30 36 40 42 48 54 56 60 分析:对i循环(i=2~60),输出满足下列条件的i: i的全体因子之和等于i为完数(用a数组记录)。因子和大于i为盈数(用b数组记录)。

main()/*sj1-2-22 */

{ int i,j,m,s,k1=0,k2=0,a[60],b[60]; for(i=2;i<=60;i++) /* 寻找600以内的完数、盈数 */ { s=0; for(j=1;j

printf(\

for(j=0;j

for(j=0;j

2-23. 有一堆硬币,面值只有1分、2分和5分三种。其中有57枚面值不是5分,有77枚

面值不是2分;有72枚面值不是1分。问1分、2分和5分的硬币各有多少?编程,输出全部可能的答案。

结果: x y z

------------------- 31 26 46

分析:设1分有x个,2分有y个,5分有z个,则满足方程组: x+y=57

搜索更多关于: 北理工C语言2 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

后得到一个商为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==4&& c==15&&2*a==d) main()/*sj1-2-16 */ { int n,b,a,k=0; while(++k) { n=k/8;b=n/8;a=b/8; if(k%8!=1||n%8!=1||b%8!=7) continue; n=k/17;b=n/17; if(k!=4||n!=15) continu

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com