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

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

一致

答案:B,D

解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以

不用包含头文件

判断题

1、局部变量就是在函数内部声明的变量。 答案:true

解析:局部变量就是在函数内部声明的变量。

2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。 答案:true

解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量

就会失去作用。

3、局部变量就是在函数内部声明的变量,它只在本函数内有效。 答案:true

解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本

函数内使用它。

4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。 答案:false

解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量

就会失去作用。

简答题

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

void main() { func(3,2); printf(\}

答案:5

解析:fun()是一个实现两个数相加的函数,在主函数中调用并传入值,得到两个数的和 2、请阅读下面的程序,在空白处填写正确的代码,将函数的结果返回给调用者。 int func(int a, int b) {

int sum = 0; sum = a + b; ; }

void main() {

int sum = 0; = func(3,2); }

printf(\两个数相加的结果为%d\答案:return sum; sum ;

解析:return sum;return 将函数结果返回 sum ;主函数中sum接收函数返回的值

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

printf(“%d, %o, %x\\n”,num,num,num); }

答案:100 144 64

解析:printf()函数将十进制数100分别以十进制,八进制,十六进制形式输出。

4、请阅读下面的程序,当用户从键盘输入hello world时,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void main() {

char str[256]; scanf(“%s”,str); printf(“%s\\n”,str); }

答案:hello 解析:输入hello world时,中间的空格对scanf()函数来说是终止符,后面的内容无法读取。 5、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。 用户从键盘输入两个整型数据,将两个数据相加输出。 void main() {

int a,b;

;

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

答案:scanf(“%d%d”,&a,&b); a + b;

解析:键盘输入数据,用scanf()函数;

输入两个数据的和a + b;

6、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int func2(int a, int b) { int c; c = a * b % 3; return c; }

int func1(int a, int b) { int c; a += a; b += b; c = func2(a, b); return c * c; }

void main() { int x = 11, y = 19; printf(\}

答案:4

解析:x = 11,y = 19传入func1()函数,在func1()函数中经过运算变为22,38,然后传入给

func2()函数,返回运算结果2,func1()函数收到返回值2以后再经过运算返回给主调用函数结果为4。

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

a = a + 10; b = a + 10; }

void func(int a, int b) { a = func2(); b = func2(); }

void main() { int x = 1, y = 10; func1(x,y); printf(\n”,x, y); }

答案:x = 1, y = 10;

解析:将实参传递给形参,只是复制了一份给x,y的值,参数在被调用函数内部改变,不

影响其在调用函数中的值。

8、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。 用户从键盘输入四个数,比较得出四个数中的最大值并输出。 int max2(int a, int b) { if (a > b){ return a; } else { return b; } }

int max4(int a, int b, int c, int d) { int res; res = max2(a, b); res = ; res = max2(res, d); ; }

void main() {

int a, b, c, d, max; printf(\请输入四个整数:\ ; max = max4(a, b, c, d); printf(\}

答案:max2(res,c); return res;

scanf(“%d%d%d%d”,&a,&b,&c,&d);

解析:在max4()函数中,res = max2(a,b)返回的是a,b中的最大值,这个最大值再与c进行

比较,所以res = max2(res,c),返回的较大的值再与d作比较,再将比较得出的较大的值返回给主调用函数,这个较大的值就是四个数中的最大值。

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