C语言程序设计教程第四章练习题解析(1) 联系客服

发布时间 : 星期五 文章C语言程序设计教程第四章练习题解析(1)更新完毕开始阅读f41a59b92e3f5727a4e96224

return n + add(n - 1); }

void main() { int n = 5; int sum = add(5);

printf(“结果为:%d\\n”,sum); }

答案:15

解析:add()函数进行递归调用,传入的参数5,会一直递减相加直到递减至1。

10、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void fun(int n) {

if (n>0) { printf(\ fun(--n); } }

void main() { int a = 5; fun(a); }

答案:5 4 3 2 1

解析:fun()函数递归调用,每打印一次就自减再调用一次自己。 11、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。 用递归方法求出n!。 int fac(int n) { int t; if( ) return 1; else { t = ; return t; } }

void main() {

int m, y; printf(\

}

scanf(\if (m<0) printf(\else { y = fac(m); printf(\}

答案:(n == 1) || (n == 0) n*fac(n - 1)

解析:实现n的阶乘,当n =0或者n=1时,阶乘没有意义,当n>1时,实现阶乘,则为

n*fun(n-1);

12、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int x = 5;

static void cude() { x = x*x*x; }

void main() { cude(); printf(\}

答案:125

解析:全局变量x,当调用cude()内部函数时,并没有传入参数,没有复制,所以x值的

变化直接改变了x本身的值

13、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 first.c文件

int func(int a, int b) {

return a + b; }

second.c文件

static int func(int a, int b) {

return a – b; }

void main() {

int x = 5, y = 2;

printf(“%d\\n”,func(5, 2));

}

答案:3

解析:当内部函数与外部函数重名时,会优先调用内部函数

14、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 first.c源文件

int func(int a, int b) {

return a + b; }

second.c源文件

extern int func(int a, int b); void main() {

int x = 5, y = 2;

printf(“%d\\n”,func(5, 2)); }

答案:7

解析:在second.c中声明了int func(int a, int b);函数原型,可以调用first.c中的函数。 15、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。

有一个外部函数,用户输入一个数字,可以实现奇偶数的判断。实现在主函数中调用这个外部函数。 first.c源文件 void func(int num) {

if(num %2 == 0)

printf(“这是一个偶数!\\n”); }

second.c源文件

; void main() {

int num;

scanf(“%d”,&num); func(num); }

答案:extern void func(int num);

解析:调用外部函数,可以包含函数所在的头文件,也可以在本文件中声明函数原型。 16、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void show() { int x = 0; }

void main() {

printf(\的值为:%d\\n\}

答案:不能运行

解析:变量x为函数show()的局部变量,只在show()函数范围内有效,在main()中无法调

用。

17、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int show() { int x = 0; return x; }

void main() {

int x = 10; show();

printf(\的值为:%d\\n\}

答案:x的值为:10

解析:main()函数中的x是局部变量,不受show()函数调用的影响。

18、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int x = 10; void main() {

int x = 100; printf(“%d”,x); }

答案:100

解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉。

19、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int x = 2;

void func(int x) { x = x * x * x; }

void main() { func(x); printf(\