输入两个数据的和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
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; }

