2011年计算机二级C语言编写程序题及答案解析精选(9)

2019-08-03 12:37

【4.57】参考答案: main()

{ int i,n,k,a[3],b[3]; for(i=248;i<=343;i++) { for(n=i,k=0;n>0;n/=7) a[k++]=n%7;

for(n=i,k=0;n>0;n/=9) b[k++]=n%9; if(k==3)

for(n=0;nif(a[n]!=b[k-n-1]) break; if(n==k)

printf(\; } }

【4.58】参考答案: main()

{ int i,j,k,m,error; for(i=6;i<=2000;i+=2) { error=1; for(j=2;j

{ for(k=2;kif(j%k==0) /* j能够被小于它的一个数整除就不是素数 */ break; if(k>=j) /* j是素数 */ { m=i-j; for(k=2;kif(m%k==0) break; if(k>=m) /* m也是素数,输出结果 */ { printf(\; error=0; break; } } } if(error) printf(\; } } 【4.59】分析:可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。 参考答案: #include main() { int i,t,k,a[4]={0}; printf (\; for(i=2;i<1000;i++) /* 穷举要判定的数i的取值范围1~1000 */ { for(t=0,k=1000;k>=10;t++) /* 截取整数i的各位(从高位向低位) */ { a[t]=(i%k)/(k/10); /* 分别赋给a[0]~a[3] */ k /= 10; } if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]+a[3]*a[3]*a[3]==i) printf(\; /* 判断i是否为阿姆斯特朗数,*/ /* 若满足条件,则输出 */ } } 【4.60】参考答案: main( ) { int j,k,n,m; printf(\; scanf(\; for(j=2;j{ for(k=2;kif(j%k==0) break; /* j能够被小于它的一个数整除就不是素数 */ if(k>=j) /* j是素数 */ { m=n-j; for(k=2;kif(m%k==0) break; if(k>=m) /* m也是素数,输出结果 */ { printf(\; break; } } } } 【4.61】分析:按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法:用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为 a的一个因子;否则结束对a的因子的计算。 参考答案:

#include #include main( )

{ 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; /* 计算m的各因子,各因子之和存于n */ for(n=0,i=1;i<=m/2;i++) if(!(m%i)) n+=i;

if(n==a && aprintf(\~M\; }

【4.62】参考答案:

#include #include main( ) /* 猜数程序 */ { int magic; /* 计算机\想\的数 */ int guess; /* 人猜的数 */ int counter;

magic=rand( ); /* 通过调用随机函数任意\想\一个数 */ guess=magic-1; /* 初始化变量guess的值 */ counter=0; /* 计数器清零 */ while(magic != guess)

{ printf(\;

scanf(\; /* 人输入所猜的数 */ counter++; if(guess>magic)

printf(\;

else if(guessprintf(\; }

printf(\;

printf(\; }

【4.63】分析:直接计算阶乘的结果显然超出整型数的范围。此题的关键是如何减少计算中数的规模,注意在计算过程中出现0后,我们可以先行统计0的个数,然后将0从结果中移去,另外,结果仅保存个位数即可,其它位的数不会对0的个数产生影响。 参考答案: main() { int i,n=0; long s=1;

for(i=1;i<=1000;i++)

{ s=s*i; while(s==0) { s=s/10; n++; } s=s; }

printf(\; }

【4.64】参考答案: main()

{ int i,j,b[3][2];

int a[2][3]={{1,2,3},{4,5,6}}; for(i=0;i<=1;i++) for(j=0;j<=2;j++) b[j][i]=a[i][j]; for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf(\; printf(\; } }

【4.65】参考答案: main()

{ int i,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20}; while(1)

{ for(i=1;i<=10;i++) a[i-1]=a[i-1]/2+a[i]/2; a[10]=a[10]/2+a[0]; for(i=1;i<=10;i++) if(a[i]%2==1) a[i]++; for(i=1;i<10;i++) if(a[i]!=a[i+1]) break; if(i==10) break; else { a[0]=0; count++; }

}

printf(\; }

【4.66】参考答案: main()

{ int i,j,s1=0,s2=1,a[5][5]; for(i=0;i<5;i++) for(j=0;j<5;j++) { printf(\; scanf(\; }

for(i=0;i<5;i++) { for(j=0;j<5;j++) printf(\; printf(\; } j=0;

for(i=0;i<5;i++) { s1=s1+a[i][i];

if(i%2==0) s2=s2*a[i][i]; if(a[i][i]>a[j][j]) j=i; }

printf(\; }

【4.67】参考答案: #include \main()

{ int i,n=0,a[4]={0};

printf(\;

for(i=0;i<4 && (a[i]=getchar())!='\\n';i++) ; for(i=0;i<4;i++)

if(a[i]>=48&&a[i]<=57) a[i]=a[i]-48; else if(a[i]>=65&&a[i]<=69) a[i]=a[i]-55; else if(a[i]>=97&&a[i]<=102) a[i]=a[i]-87; else printf(\; for(i=0;i<4;i++) n=n*16+a[i]; printf(\;


2011年计算机二级C语言编写程序题及答案解析精选(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:棱柱、棱锥、棱台

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

马上注册会员

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