C语言程序设计教程书后作业参考答案2013(3)

2020-03-27 19:44

水仙花数,因为153=1+5+3。

方法一:三重循环 #include int main() {int i,j,k,n;

printf(\for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) { n=i*100+j*10+k; if(n==i*i*i+j*j*j+k*k*k) printf(\}

printf(\return 0; }

方法二:单重循环 #include int main() {int i,j,k,n;

printf(\for(n=100;n<1000;n++) {

i=n/100; j=n/10-i*10; k=n; if(n==i*i*i+j*j*j+k*k*k) printf(\}

printf(\return 0; }

7.编写程序找出1000之内的所有“完美数(完全数、完备数)”。“完美数”也称为“完数”,它是指一个数恰好等于它的因子之和。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。

#include void main() {

int m,s,i;

for(m=2;m<1000;m++) {

s=0;

for(i=1;i

333

}

if((m%i)==0)s=s+i; if(s==m) {

printf(\ for(i=2;i

if(m%i==0) printf(\ printf(\}

}

14.编写程序验证哥德巴赫猜想(任何一个大于等于6的偶数都可以分解为两个素数之和),验证范围限定为6到2000。

#include int main() {

int i,x,k;

int prime(int n);

printf(\请输入一个6到2000的偶数:\ scanf(\

for (i=2;i<=(int)(x/2);i++) {

k=x-i;

if (prime(i)&&prime(k)) {

printf(\ break; //验证成立就退出 } }

return 0; }

int prime(int n) {

int i;

for(i=2;i<=n/2;i++) {

if (n%i==0) return 0; }

return 1; }

练习题6 参考答案

一、选择题

序号 1 2 3 4 5 6 7 8 9 10 参考答案 序号 参考答案 D 11 C D 12 D D 13 A A 14 A A D A C B C 二、填空题

1.下面程序的运行结果是 1 1 2 3 5 8 13 21 34 55

2.以下程序的输出结果是 abc 。

3.若有定义:int a[3][4]={{1, 2}, {0}, {4, 6, 8, 10}}; ,则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的i初值是 6 。

4.以下程序可求出所有水仙花数(水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数。如:407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数)。请填空。

#include void main()

{ int x,y,z,a[8],m,i=0;

printf(\The special numbers are:\\n\); for(m=100;m<1000; m++) { x=m/100;

y= (m/10) ; z=m;

if(x*100+y*10+z==x*x*x+y*y*y+z*z*z) { a[i]=m ; i++;} }

for(x=0; x

printf(\m\,a[x]); }

5.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。

#include #include void main()

{ char a[]=\c language\, t; int i,j,k; k=strlen(a);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j

if( a[i]>a[j] )

{ t=a[i]; a[i]=a[j]; a[j]=t; }

puts(a);

printf(\\\n\); }

8.以下程序是求矩阵a,b的和,结果存入矩阵C中,并按矩阵形式输出。请填空。

#include

void main()

{ int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};

int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}}; int i,j,c[3][4]; for(i=0;i<3;i++)

for(j=0;j<4;j++)

c[i][j]= a[i][j]+b[i][j] ;

for(i=0;i<3;i++) { for(j=0;j<4;j++)

printf(\=\,c[i][j]); printf(\

} }

三、程序设计题

1.从键盘输入某个班级的30名学生信息(设只含有学号),编写程序用折半查找法通过输入一个学生的学号查找某一学生(注意:查找前要先进行排序)。

#include #define N 30 void main() { int a[N]; int i,j,t,x,mid,low=0,high=N-1; printf(\请输入%d名学生的学号:\\n\ for(i=0;ia[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf(\请输入需要查找的学生的学号:\\n\ scanf(\ do { mid=(low+high)/2; if(a[mid]==x)break; else if(a[mid]>x) high=mid-1; else low=mid+1; }while(low<=high); if(low<=high) printf(\这个学生学号为%d\\n\ else

printf(\查找不到\\n\}

2.设有某班级35名学生的一门课程考试成绩,编写程序求超过平均的学生(包括学号和成绩),并将所有学生按成绩降序排列输出。

#include #define NUM 35 void main( ) { int a[NUM][2]; float sum=0,ave; int i,j,t;

printf(\请输入%d位同学的学号和成绩:\\n\ for(i=0;i

scanf(\ for(i=0;i

for(i=0;iave)

printf(\超过平均分的学生学号为:%d,成绩为:%d\\n\ for(j=0;j printf(\学号为:%d,成绩为:%d\\n\}

4.输入一行字符串,编写程序分别统计各个英文字母出现的次数(不区分字母大小写)。 #include int main() {

int let[26] = {0}; int i; char ch;

while((ch=getchar())!='\\n') {

if (ch>='A' && ch<='Z')

let[ch-'A']++;

else if (ch >='a' && ch <='z')


C语言程序设计教程书后作业参考答案2013(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《成本会计核算实务》.练习参考答案

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

马上注册会员

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