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

完美WORD格式

while(j>=i) {

if(a[i]%2!=0) {i++;n++;} else

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

sort(a,n);

sort(&a[n],15-n); for(i=0;i<15;i++)

printf(\

printf(\ }

void sort(a,n) int a[]; int n; {

int i,j,t;

for(j=1;j<=n;j++) for(i=0;ia[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;} }

10.编写一个程序完成“菜单”功能。提供三种选择途径: (1)求水仙花数(narcissus number),找出100至999之间的所有水仙花数。 (2)求出素数(prime number),找出2至n之间的所有素数。 (3)求Faibonacci数列前n项的值。 #include “math.h” main()

{ int m, xz;

void narcissus( ); void prime( );

void faibonacci( ); clrscr( ); m=0;

while(m==0)

{ printf(“\\n\\n”);

printf(“ 1 find narcissus number\\n”); printf(“ 2 find prime number\\n”);

printf(“ 3 find Faibonacci number\\n”); printf(“ other number exit!\\n”); printf(“ input number please!\\n”); scanf(“%d”,&xz); switch(xz)

专业整理 知识分享

完美WORD格式

{ case 1: narcissus( ); break; case 2: prime( ); break; case 3: faibonacci( ); break; default: m=1; }m=1; } }

void narcissus( ) { int k,a,b,c,d;

for (k=100; k<1000; k++) { a=k/100; b=k0/10; c=k;

d=a*a*a+b*b*b+c*c*c;

if (d==k) printf(“]\\n”, k); } }

void prime ( )

{ int i, j, k, n, m=0;

printf(“input n please !\\n”); scanf(“%d”, &n); for(i=2; i

for(k=2; k<=j; k++) if (i%k==0) break; if (k>j) { m++;

printf(“m”, i);

if (m==0) printf(“\\n”); } } }

void faibonacci( ) { long f1, f2; int k, n;

printf(“int n please!\\n”); scanf(“%d”, &n); f1=1; f2=1;

for (k=1; k<=n/2; k++)

{ printf(“??”, f1, f2); if (k ) printf(“\\n”); f1=f1+f2; f2=f1+f2; } }

专业整理 知识分享

完美WORD格式

【提示】程序共有4个函数,其中主函数提供了主菜单,允许选择三种情况之一,否则就退出。通过开关语句switch进行选择。为了不断的提供菜单,用while来永远循环。一开始给变量m赋值为0,m=0就继续循环,一旦选择了不存在的情况,则将m置1,循环就结束。

7.2 补充习题

一.单选题

1.以下程序的输出结果是( ) fun(int x,int y,int z) { z=x*x+y*y;} main( )

{ int a=31; fun(5,2,a); printf(\,a); }

A、 0 B、 29 C、 31 D、 无定值

【分析与提示】变量作参数时,形参值的改变不会影响实参的值。 【解答】答案:C

2.当调用函数时,实参是一个数组名,则向函数传送的是( ) A、数组的长度 B、数组的首地址

C、数组每一个元素的地址 D、数组每个元素中的值 【解答】答案:B

3.以下程序的输出结果是( ) int f( )

{static int i=0; int s=1; s+=i;i++; return s; }

main( )

{int i,a=0;

for(i=0;i<5;i++) a+=f(); printf(\,a); }

A、20 B、24 C、25 D、15

【分析与提示】自动变量在函数每次调用时,都进行初始化,而静态变量只在编译阶段初始化一次。

【解答】答案:D

4.以下程序运行后的输出结果是( ) f(int b[ ],int m,int n) {int i,s=0;

for(i=m;i

专业整理 知识分享

完美WORD格式

main( )

{int x,a[ ]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7);

printf(\,x); }

A、10 B、18 C、8 D、15

【分析与提示】数组名作参数时传送的是数组的首地址。 【解答】答案:A

5.当执行下面的程序时,如果输入ABC,则输出结果是( ) #include \#include \main( )

{ char ss[10]=\,2,3,4,5\;

gets(ss);strcat(ss,\;printf(\,ss); }

A、ABC6789 B、ABC67 C、12345ABC6 D、ABC456789 【分析与提示】注意库函数gets()、strcat()的用法。 【解答】答案:A

6.以下程序运行后的输出结果是( ) void fun(char *c,int d) {*c=*c+1;d=d+1;

printf(\}

main()

{char a='A',b='a'; fun(&b,a);

printf(\}

A、 B,a,B,a B、 a ,B,a,B C、 A,b,A,b D、b,B,A,b 【分析与提示】注意指针作参数与普通变量作参数的“值传递”。 【解答】答案:D

7.以下程序运行后的输出结果是( ) void sort(int a[],int n) { int i,j,t;

for(i=0;i

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

main()

{int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++) printf(\

专业整理 知识分享

完美WORD格式

printf(\ }

A、 1,2,3,4,5,6,7,8,9,10, B、10,9,8,7,6,5,4,3,2,1, C、 1,2,3,8,7,6,5,4,9,10, D、1,2,10,9,8,7,6,5,4,3, 【分析与提示】注意实参的“值”。 【解答】答案:C

8.以下程序运行后的输出结果是( ) int f(int n)

{if(n==1) return 1; else return f(n-1)+1; }

main()

{int i,j=0;

for(i=1;i<3;i++) j+=f(i);

printf(\}

A、 4 B、 3 C、 2 D、 1 【分析与提示】本题为递归调用。 【解答】答案:B 二.运行程序写结果

1.下列程序运行的运行结果为 。 #include \main() {

int i,num;

for(i=0;i<3;i++) {num=2;

printf(\:%d \\n\num++; {

static int num=1;

printf(\: %d\\n\num++; } } }

【分析与提示】注意static的用法。 【解答】The num equal:2

The internal block num equal:1 The num equal:2

The internal block num equal:2

专业整理 知识分享

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4