c语言程序设计第五版习题答案解析 下载本文

内容发布更新时间 : 2024/5/6 13:28:14星期一 下面是文章的全部内容请认真阅读。

完美WORD格式

if(d3

{t=d3;d3=d2;d2=t;} if(d3

{t=d3;d3=d1;d1=t;} if(d2

{t=d2;d2=d1;d1=t;} switch(n)

{ case 5: num=d5*10000+d4*1000+d3*100+d2*10+d1; break; case 4: num=d5*1000+d4*100+d3*10+d2; break; case 3: num=d5*100+d4*10+d3; break; case 2: num=d5*10+d4; break; case 1: num=d5;

}

printf(\重组后的数为:%ld\\n\

}

13.求证100以内哥德巴赫猜想是成立的。即:100以内任何一个大的偶数(大于等于6)都可以表示成两个素数之和。

【分析与提示】我们先不考虑怎样判断一个数是否为素数,而从整体上对这个问题进行考虑,可以这样做:读入一个偶数n,将它分成p和q,使n=p+q。怎样分呢?可以令p从2开始,每次加1,而令q=n-p,如果p、q均为素数,则正为所求,否则再试。

参考代码:

#include #include main( ) {

int j,n,p,q,flagp,flagq; printf(\ scanf(\ if (((n%2)!=0)||(n<=4)) printf(\ else { p = 1 ; do {

p = p + 1 ; q = n - p ; flagp = 1 ;

for(j=2;j<=(int)(sqrt(p));j++) /*判断p是否为素数*/ { if((p%j)==0) { flagp = 0 ;

break; /*不是素数,退出循环*/ } }

专业整理 知识分享

完美WORD格式

flagq=1 ;

for(j=2;j<=(int)(sqrt(q));j++) /*判断q是否为素数*/ { if ((q%j)==0) { flagq = 0 ;

break ; /*不是素数,退出循环*/ } }

} while(flagp*flagq==0); printf(\,p,q) ;

} }

第6章 数组与指针

一.简答题

1、什么是数组,为什么在C语言中引用数组?

【解答】数组是有序的、且具有相同性质类型的数据集合。引用数组来实现成批地处理数据。

2、在C语言中如何表示一个字符串? 【解答】运用字符型数组来表示字符串。 3、指针是指什么?

【解答】指针就是地址。

二.运行程序写结果

1.以下程序的执行结果是 。 main() {

int k,a[6]={1,2,3,4,5,6}; for(k=5;k>0;--k) if(a[k]%2==0)

printf(\

}

【提示】从后向前把能被2整除的数组元素输出。 【解答】6 4 2

2.以下程序的执行结果是 。 #include main() {

char str[]=\ int k;

for(k=2;(c=str[k])!='\\0';k++) {

switch(c)

专业整理 知识分享

完美WORD格式

{

case 'I':++k;break; case 'L':continue;

default:putchar(c);continue;

}

putchar('*'); } }

【提示】从字符串中第3个字符开始,把符合要求的字符运用输出字符函数putchar()输出;最后在其后输出一个\。

【解答】SW*

3.以下程序的执行结果是 。 main() {

char ss[10]=\ strcat(ss,\ gets(ss);

printf(\}

假设输入\

【分析与提示】运用字符串连接函数strcat(),把两个串\和\连接,对其重新赋值后,原有数值被刷新输出新值。

【解答】\

4.以下程序的执行结果是 。 # include main() {

char a[]=\ strcpy(a,b);

printf(\

printf(\}

【分析与提示】把b字符串的内容拷贝到a字符串中,分别显示a和b串内容;再显示数组元素a[4]和a[5]的内容。

【解答】day day

a y

5.以下程序的执行结果是 。 main() {

int x[8]={8,7,6,5,0,0},*s; s=x+3;

printf(\}

【分析与提示】运用指针显示数组元素值。需要注意的是把数组x第3个元素的地址,赋给了指针变量s,所以s[2]里面存储的是x[5],即0。

专业整理 知识分享

完美WORD格式

【解答】0

6.以下程序的执行结果是 。 main() {

int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=p;p=q;q=r;

printf(\}

【分析与提示】指针变量存储地址,而不是数值。 【解答】8,7,7,8

7.以下程序的执行结果是 。 main() {

char a[]=\char *p,*q; p=a;q=b;

while(*p&&*q) {

if((*p)==(*q)) printf(\ p++;q++; } }

【分析与提示】程序功能是,输出两个字符串中相同的字符。 【解答】gae

8.以下程序的执行结果是 。 # include # include main() {

char a[80]=\ int i=0; strcat(a,b);

while(a[i++]!='\\0') b[i]=a[i]; puts(b); }

【分析与提示】把b串内容连接到a串上,再通过循环对b串重新赋值。 【解答】LBLMNP 三.编程题

1.已有10个数,求它们当中的最大值。

【分析与提示】运用一维数组保存10个数,依次比较保存最大值。 参考代码: main()

专业整理 知识分享

完美WORD格式

{

int i,a;

int n[10]={8,2,4,6,7,1,0,85,32,54}; a=n[0]; for(i=1;i<10;i++) if(n[i]>a) a=n[i]; printf(\}

2.从键盘输入10个学生的成绩,建立一个一维数组,求学生的平均分。

【分析与提示】把10个学生的成绩保存在一维数组,运用一重循环计算所有成绩的总和,在此基础上计算平均值。

参考代码: main() {

int i;

float a[10],sum=0,ave;

printf(\输入10个学生的成绩:\ for(i=0;i<10;i++) {

scanf(\sum=sum+a[i]; }

ave=sum/10;

printf(\个学生的平均成绩是%5.2f。\ }

3.将两个一维整型数组中的对应元素相加后显示出来。 【分析与提示】把数组下标相同的元素值相加。 参考代码:

#include main() {

int i;

int x[5]={10,8,7,6,5}; int y[5]={-3,9,-10,-2,4}; int z[5];

for(i=0;i<5;i++) z[i]=x[i]+y[i];

printf(\相加后一维数组为:\ for(i=0;i<5;i++)

printf(\}

4.线性查找。

【分析与提示】从数组的第一个元素开始,依次将要查找的数和数组中元素比较,直到找到该数或找遍整个数组为止。

专业整理 知识分享