湖南省计算机二级C语言程序题库

2020-08-21 11:23

湖南省计算机二级C语言程序题库

1、编写程序,计算0~50范围内有多少个数,其每位数字之积小于每位数字和。 main()/*参考答案:17 */ { int k,a,b,n=0;

for(k=10;k<=50;k++) /*一位数显然不满足条件*/ { a=k/10,b=k; if(a*b

printf(\ }

2、一个正整数如果等于其所有因子之和,则称该数为完数。求10000以内完数的个数。 main()

{ int k, s,n=0; /*参考答案:4 */ for(k=6;k<10000;k++)

{ s=1; /*1是因子,直接作为和的初值*/

for(i=2;i<=k/2;k++) /*求k的所有因子之和*/

if(k%i==0)s+=k;

if(s==k)n++; /* k为完数时累计个数*/ }

printf(\ }

3、求四位数的奇数中,各位数字之积是60的正整数倍的数的和。

main()/*参考答案:3456254 */ { int k,t;long s=0;

for(k=2235;k<10000;k+=2)

{ t=(k/1000)*(k/100)*(k/10)*(k);

if(t&&t`==0)s+=k;

}

printf(\

}

4、有5羊4犬3鸡2兔值钱1496,有4羊2犬6鸡3兔值钱1175,有3羊1犬7鸡5兔值钱958,有2羊3犬5鸡1兔值钱861。求鸡值多少钱? main()/*参考答案:23 */ { int a,b,c,d;

for(a=1;a<300;a++) for(b=1;b<300;b++) for(c=1;c<140;c++) for(d=1;d<200;d++)

{ if(5*a+4*b+3*c+2*d!=1496)continue;

if(4*a+2*b+6*c+3*d!=1175)continue;

if(3*a+b+7*c+5*d!=958)continue;

if(2*a+3*b+5*c+d==861)goto RR; }

RR:printf(\}

解法二: main()

{ int a,b,c,d;

for(a=1;a<300;a++) for(b=1;b<300;b++) for(c=1;c<140;c++) { d=861-2*a-3*b-5*c;

if(d<=0)break;

if(5*a+4*b+3*c+2*d!=1496)continue;

if(4*a+2*b+6*c+3*d=1175) goto RR; }

RR:printf(\}

5、求满足下列条件的四位数ABCD的个数:是8的倍数;A+B=B+C。

main()/*参考答案:110 */ { int k,n=0;

for(k=1000;k<10000;k+=8)

if(k/1000==k/10)n++; /*A+B=B+C即A=C*/ printf(\}

6、求100~500间除5余4、除7余2的数的和。 main()/*参考答案:3678 */ { int k,s=0;

for(k=100;k<500;k++)

if(k%5==4&&k%7==2)s+=k; printf(\ }

解法二:由数学知识,满足除5余4、除7余2的最小正数为7*2+5*6-35=9。从而所有解为9+35*k,k为任意整数。 main() { int k,s=0;

for(k=114;k<500;k+=35) s+=k;

printf(\ }

说明:7*2+5*6-35=9的构造方法

----找一个数:被5除余4且为7的倍数。试7,除5余2,故7*2即可。 ----找一个数:被7除余2且为5的倍数。试5,除7余5,故5*6即可。 ----以上两个数相加,即是被5除余4、同时被7除余2的数。7*2+5*6=44 ----确定满足条件最小的正整数:减去5*7的倍数即可。得到9。 示例:找一个最小的正整数,其除3余1、除5余2、除7余3。

----找一个数:除3余1且为5和7的倍数。试35,除3余2,故35*2=70即可。 ----找一个数:被5除余2且为3和7的倍数。试21,除5余1,故21*2=42即可。 ----找一个数:除7余3且为3和5的倍数。试15,除7余1,故15*3=45即可。

----以上三个数相加,得157

----确定满足条件最小的正整数:减去3*5*7的倍数即可。得到52。

7、课程成绩分级标准是:分数在[85,100]内为A、在[75,85)内为B、在[60,75)内为C、在[0,60)内为D。编写一个函数fun(x),用于返回分数x对应的级别。 /*参考答案*/ char fun(single x) { char k;

k=(x<60)+(x<75)+(x<85)+65; return k; }

8、50元兑换成5元、2元或1元,共有几种兑换方法? main()/*参考答案:146 */ { int a,b,c,n;

for(a=0;a<=10;a++) for(b=0;b<=25;b++) for(c=0;c<=50;c++)

if(5*a+2*b+c==50)n++; printf(\}

解法二: main()

{ int a,b,c,n;

for(a=0;a<=10;a++) for(b=0;b<=25;b++) { c=50-5*a-2*b;

if(c<0)break;else n++; }

printf(\}

9、求方程X2+Y2+Z2=552满足X>Y>Z的整数解组数。 main()/*参考答案:62 */

{ int x,y,z,n=0;

for(x=-53;x<55;x++) for(y=-54;y

if(x*x+y*y+z*z==55*55)n++; printf(\ }

10、已知非等腰三角形最长边为60、周长为3的倍数、其他两边长为整数。编程计算这类三角形的个数。 main()/*参考答案:271 */ { int a,b,n=0;

for(a=31;a<60;a++) /*a为长边。因a+b>60故a>30*/ for(b=1;b

if(a+b>60&&(a+b)%3==0)n++; printf(\ }

解法二 main()

{ int a,b,n=0;

for(a=31;a<60;a++)

for(b=61-a;b60,b的最小值为61-a*/ if((a+b)%3==0)n++; printf(\ }

11、正整数A、B满足:A

main()/*参考答案:71 */

{ int s=2699,k,B=2698; /*设B=2698时和s有最小值2699*/ for(k=1349;k>51;k--) /*51为2698开方取整*/ if(2698%k==0)

if(2698/k+k


湖南省计算机二级C语言程序题库.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年浙江省嘉兴市中考科学预测试卷(含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: