C语言程序设计江宝钏著清华大学出版社第6章参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计江宝钏著清华大学出版社第6章
参考答案
习题6 一、程序阅读题
1、以下程序运行后的输出结果是c 。

#include stdio.h void fun(int x, int y, int z) { z=x*x+y*y;
} void main() { int a=31;
fun(5,2,a); printf( “%d", ,a);
}
A 0 B、29 C、31 D、无定值
2、以下程序运行后的输出结果是d 。

#include stdio.h void f(int x,int y)
{ int t;
if(xy){ t=x; x=y; y=t; }
} void main( ) { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
A、3,4,5 B 、5,3,4 C 、5,4,3 D 、4,3,5
3、以下程序运行后的输出结果是a 。

#include "stdio.h" #define FUDGE(y) 2.84+y #define PR(a)
printf("%d",(int)(a)) #define PRINT1(a) PR(a);putchar('\n') void main() { int x=2;
PRINT1(FUDGE(5)*x);
}
A、12
B、14
C、16
D、18
4、以下程序的输出结果是d 。

#include stdio.h int k = 1;
void main()
{ void Fun(); int j;
for(j = 0; j j++)
Fun(); printf("k=%d", k);
} void Fun() { int k = 1; printf("k=%d,", k);
k++;
}
A、k=1,k=2,k=3 B 、k=1,k=2,k=1 C 、k=1,k=1,k=2 D 、
k=1,k=1,k=1
5、以下程序的输出结果是d 。

#include "stdio.h" int f() { static int i=0 ;int s=1; s+=i; i++; return s;
} void main() { int i,a=0;
for(i=0;ii++) a+=f(); printf("%d\n",a);
}
A、20
B、24
C、25
D、15
6、以下程序的输出结果是b 。

#include stdio.h int f(int n) { if(n==1) return 1; else return f(n-1)+1;
} void main() { int i,j=0;
for(i=1;ii++) j+=f(i); printf( “%d\n”,j);
}
A、4
B、3
C、2
D、1 二、程序填空题
1、计算函数F( x,y,z )=(x+y)/(x-y)+(z+y)/(z-y)
的值。

#includestdio.h
#includemath.h
float f(float,float);
void main ()
{
float x,y,z,sum;
scanf( “%f%f%f “,x,y, sum=f( b )+f( c );
printf( “sum=%f\n ”,sum); }
float f(float a,float b) {
float value;
value =a/b;
return(value);
}
A 、A 、
2、
(4/9 ) + …
#includestdio.h #includemath.h double pi(double p) { double s,t;
int n;
for( b ;tn++)
{
s+=t;
t=n*t/(2*n+1);
}
return( c );
}
void main()
{
double m;
printf("\nPlease enter a precision:"); scanf("%f"
prin tf("\ne p=%f, n =%f",m, pi( m));
}
A 、A 、3、x-y, x+y
B 、x+y, x-y
C 、z+y, z-y
D 、z-y, z+y
x-y, x+y B 、x+y, x-y C 、z+y, z-y D 、z-y, z+y 输入1个实数m,根据以下公式,计算机满足精度m 要求的n 值,
n /2=1+1/3+( 1/3)*( 2/5)+( 1/3)*(2/5)*(3/7)+( 1/3)* (2/5)*(3/7) n=1
B 、n=1,s=0,t=1
C 、n=1,s=0
D 、n=1,s=0,t=0 t B 、s C 、2*s D 、
2*t 输入1个正整数n,计算并输出s 的前n 项的和。

1.0*k/(k+1)* flag B 、flag*n/(n+1) C 、- k/(k+1) D 、1.0*k/(k+1) flag= -1 B 、s= -s C 、flag= -flag D 、k= -k 输入一个整数,将它逆序输出。

例如reverse(123) 的返回值是321。

#include stdio.h void main( ) { long n;
long reverse(long number); printf("Enter an integer:"); scanf("%ld",
printf("After reversed:%ld\n", c );
} long reverse(long number) { int flag; c ; flag = number 0 ? -1 : 1;
if( b ) number = - number; while(number != 0){ res = b ;
number /= 10; } return flag*res;
}
A 、A 、A 、A 、5、
函数在s = 1/2 -2/3 + 3/4 - 4/5 + #include stdio.h void main( ) { int n; float fun(int n); scanf("%d", printf("sum=%f\n", fun(n)); } float fun(int n) { int k, flag=1; float s=0; for (k=1 ; k k++){ s=s+ a ; c ; }
A 、A 、4、 .. (-1) n-1 n/(n+1)
reverse( ) B 、n C 、reverse(n) D 、reverse
res = 0 B 、long res C 、long res = 0 D 、res
number 0 B 、n umber 0 C 、number != 0 D 、n umber == 0
number%10 B 、res* 1 0 + number%10 C 、number/1 0 D 、res*10 + number/10 设有以下程序,为使之正确运行,请填入应包含的命令行。

其中,tryme( )
return O; B 、return 1; f(a,b,c)==O B 、f(a,b,c)==1 验证哥德巴赫猜想:任何一个大于6 的偶数均可表示为两个素数之和。

例如6=3+3,8=3+5,…,18=7+11。

将6?100之间的每个偶数都表示成两个素数之和。

#include "stdio.h" #include "math.h" void main( ) { int i, k; int prime(int m); for (i = 6; i = 100; i = i+2 ) for(k = 3; k = 50; k++)
if( c ){ printf("%d=%d+%d\n", i, k, i-k); break; } } int prime(int m) { int k,n; d:\myfile1.c 中有定义。

#include stdio.h ____________ a main( )
{ printf("\n"); tryme( ); }
A 、#include"d:\myfile1.c"
B 、6 求1元2次方程ax2 +bx+c=O #include stdio.h #include
math.h float x1,x2;
int f(float a,float b,float c)
{ if(b*b-4*a*cO) return 1;
x1=(-b+sqrt(b*b-4*a*c))/2/a;
x2=(-b-sqrt(b*b-4*a*c))/2/a;
____ a _______
}
void main()
{ float a,b,c;
scanf("%f, %f, %f",a,b,
if( ____ b _________ ) printf("
else
printf("%.2f %.2f\n",x1,x2);
}
A 、
A 、
7、
#include"myfile1.c " 的实根。

实数范围内无解\n");
prime(i) B 、prime(i) prime(k) C 、prime(k) prime(i-k) D 、prime(k) if(m%k != 0) return 0 B if(m%k == 0) return 1 D return 0; B 、
return 1; C 、编程题1、编写程序输出一张摄氏一华氏温度转换表,摄氏温度的取值区间是[-100 C,
100
r ],温度间隔10C 。

要求定义和调用函数ctof(c),将摄氏温度C 转换为华氏温度F ,计
算公式:F = 32 + C * 9 / 5 。

2、编写程序计算排列数( )! m n Pn m m - =。

要求定义并调用函数fact(n)计算n 的阶乘。

3、编写程序计算并输出的值。

要求定义并调用函数total(n) 计算
1+1/2+1/3+ ……+1/n 。

4、编写程序计算a +aa + aaa + aa a(n 个a )之和。

要求定义并调用函数fn(a,n), 它的功能是返回aa a(n 个a)。

例如,fn(3,2)的返回值是33。

5、编写程序求两个整数相除的余数。

要求用带参的宏来实现。

6、编写程序从3 个输入的整数中找出最大数。

7、编写程序找出并输出11至999之间的数m 数。

所谓回文数是指各位数字左右对称,例如121、JSValue(m)实
现此功能,如果是回文数,则函数返回1,反之则返回0。

8、编写程序输出m 和n 之间所有的Fibonacci 数。

要求定义并调用函数fib(n),它的功能是返回第n 项Fibonacci 数。

例如,fib ⑺的返回值是13。

9、编写程序找出100?1000之间的所有可逆素数。

要求判断素数、颠倒顺序的功能分别用自定义函数来实现。

(可逆素数是指一个素数的
各位数值顺序颠倒后得到的数仍为素
数。

例如,113、311)。

三、编程题
1#includestdio.h
int ctof(int a)
{
return 32+a*9/5;
}
void main()
{
int i,n=1; 1
1 1 1 1 (1)
2 3
n k s
= k n
=2 = + + + + if(m == 1) return 0; n = (int)sqrt(m); for(k = 2; k k++) b ; b ;
}
A 、A 、
C 、A 、、if(m%k == 0) return 0 、if(m%k != 0) return 1 、else return 0;
D 、else return
1;
要求用带参的宏来实现。

它满足m m*m m*m*m 均为回文676 等。

要求定义并调用函数
for(i=-100;i=100;i=i+10)
{printf("%5d",ctof(i));
if (n==5) {n=0;printf("\n");
}
n++;}}
2 #includestdio.h
int fact(int a)
{int i,s=1;
for(i=1;ii++)
s=s*i;
return s;
}
void main()
{
int m,n,p;
scanf("%d,%d",m,
p=fact(m)/fact(m-n);
printf("p=%d\n",p);
}
3 #includestdio.h
float total(int a)
{int i;
float s=0;
for(i=1;ii++)
s=s+1.0/i;
return s;
}
void main()
{
int n;
float s; scanf("%d", s=total(n); printf("s=%f\n",s);
} 4#includestdio.h int fn(int a,int n) {int i,s=0; for(i=1;ii++)
{s=s+a;a=a*10;} return s;
}
void main()
{
int i,a,n,s=0; scanf("%d%d",a, for(i=1;ii++) s=s+fn(a,i); printf("s=%d\n",s);
}
5
#include "stdio.h"
#define INPUT(x,y) scanf("%d,%d",x,y)
#define FU(x,y) x%y
#define PR(a) printf("%d",a)
#define PRINT(a) PR(a);putchar('\n') void main() {
int x,y;
INPUT(x,y); PRINT(FU(x,y));
}
6
#include "stdio.h"
#define INPUT(x,y,z) scanf("%d,%d,%d",x,y,z)
#define MA(x,y) xy?x:y
#define MAX(x,y,z) MA(x,y)z?MA(x,y):z
#define PR(a) printf("%d",a)
#define PRINT(a) PR(a);putchar('\n') void main() {
int x,y,z; INPUT(x,y,z); PRINT(MAX(x,y,z));
}
7
#includestdio.h
int JSValue(int m)
{int n,s=0;
n=m;
while(m!= 0){
s = s*10+m%10; m/=10; }
if (s==n) return 1;
else return 0;
}
void main()
{
int n=1,i,p;
for(i=11;i=999;i++)
if (JSValue(i)==1)
{
printf("%6d",i);
if (n==10)
{printf("\n");n=0;}
n++;
}
}
8
#includestdio.h
int fib(int n)
{int x=0,y=1,i;
if(n2) return n;
else {
for (i=2 ;ii++)
if(i%2==0) x=x+y;
else y=y+x;
if (n%2==0) return x;
else return y;
}
}
void main()
{
int n,m,i,k=1; printf("m=,n="); scanf("%d,%d",m, for(i=m;ii++) if(k==10){ printf("\n");k=1;} else {printf("%6d",fib(i));k++;} } 9
#includestdio.h #includemath.h int rev(int m)
{int n,s=0;
n=m;
while(m!= 0){
s = s*10+m%10;
m/=10;
}
return s;
}
int prime(int m)
{ int k,n;
if(m == 1) return 0;
n = (int)sqrt(m);
for(k = 2; k k++) if(m%k == 0) return 0; return 1;} void main() { int n,m,i,k=1;
for(i=100;i=1000;i++) if(prime(i)prime(rev(i)))
if(k=10){printf("%6d",i);k++;} else {k=1;printf("\n");}。

相关文档
最新文档