1单选(1分)
写出下面程序的运行结果
#include <stdio.h>
void Bin(int x)
{ if (x/2 > 0) Bin(x/2);
printf("%d\n", x%2);
}
int main()
{
Bin(12);
return 0;
-
A.6
3
1
1
-
B.6
3
1
0
-
C.1
1
0
0
-
D.0
0
1
1
-
答案:C
2单选(1分)
子函数Incre()的功能是,利用静态变量,使子函数的输出值能够随调用次数的增加依次为:
第1次调用,输出:
的结果
第2次调用,输出:
的结果
第3次调用,输出:
的结果
.....
在下面的程序中,对子函数Incre()进行了两次调用,若使程序的输出结果是:
2
6
请补充完整空白处缺少的代码。
#include <stdio.h>
int x=3;
void Incre();
int main()
{
int i;
for (i=1;_______;i++)
Incre();
return 0;
}
void Incre()
{ ___________;
x*=x+1;
printf("%d\n",x);
}
-
A.第7行: i<x
第13行: static int x=1
-
B.第7行: i<=x
第13行: int x=0
-
C.第7行: i<=x
第13行: static int x=0
-
D.第7行: i<x
第13行: int x=1
-
答案:A
3单选(1分)
函数Sum(int n)是用递归方法计算下面的公式,请补充程序中缺少的内容。
int Sum(int n)
{ if (n <= 0)
printf("data error\n"); if (n == 1)________________;
else return ____________________; }
-
A.第4行: return 1
第5行: n+Sum(n-1)
-
B.第4行: return 1
第5行: Sum(n-1)
-
C.第4行: return 0
第5行: Sum(n)
-
D.第4行: return 0
第5行: Sum(n-1)
-
答案:A
4单选(1分)
程序运行后的输出结果是
#include <stdio.h>
int Fun(int n)
{ if (n==1) return 1;
else return Fun(n-1)+1;
}
int main()
{ int i,j=0;
for(i=1;i<3;i++) j+=Fun(i);
printf("%d\n",j);
return 0;
}
-
A.3
-
B.1
-
C.2
-
D.4
-
答案:A
5单选(1分)
以下程序运行后的输出结果是
#include <stdio.h>
float Fun(int x,int y)
{ return(x+y);
}
int main()
{ int a=2,b=5,c=8;
printf("%3.0f\n",Fun((int)Fun(a+c,b),a-c));
return 0;
}
-
A.9.0
-
B.9
-
C.21
-
D.编译出错
-
答案:B
6单选(1分)
下面程序是用辗转相除法计算两个正整数的最大公约数的递归求解方法。请将程序补充完整。
提示:辗转相除法的基本思路是,对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。设r=a mod b表示a除以b的余数,若r≠0,则将b作为新的a,r作为新的b,重复a mod b运算,直到r=0时为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:Gcd(50, 15)=Gcd(15, 5)=Gcd(5, 0)=5。
int Gcd(int a, int b)
{ if (a%b == 0) return b;
else return ____________________;
}
-
A.Gcd(a, b%a)
-
B.Gcd(b, a%b)
-
C.Gcd(a%b, b)
-
D.Gcd(b%a, a)
-
答案:B
7单选(1分)
子函数Fun(char x , char y)的功能是对任意两个字符x和y,如果x为真,则函数返回y的值,否则返回x的值。若使以下程序运行后的输出结果是7,请补充完整空白处缺少的代码。
#include <stdio.h>
char Fun(char x , char y)
{ if(__________) return y;
else return x;
}
int main( )
{ char a='9',b='8',c='7';
printf("____",Fun(_______________));
return 0;
}
-
A.第4行: x==0
第11行:%c
Fun(b,a),Fun(c,b)
-
B.第4行: x!=0
第11行:%d
Fun(c,b),Fun(b,a)
-
C.第4行: x=0
第11行:%d
Fun(b,c),Fun(a,b)
-
D.第4行: x
第11行:%c
Fun(a,b),Fun(b,c)
-
答案:D
8单选(1分)
下列说法正确的是
-
A.形参也是局部变量,形参变量和实参变量的作用域是不同的,因此形参变量和实参变量同名时,二者互不干扰。
-
B.用extern声明变量为外部变量的时候,编译器是对其分配内存的。
-
C.函数既可以嵌套定义,也可以嵌套调用。
-
D.静态局部变量和静态全局变量的生存期和作用域都是相同的。
-
答案:A
9单选(1分)
以下程序的输出结果是
#include <stdio.h>
int Func();
int i=10;
int main()
{ int j=1;
j=Func();
printf("%d,",j);
j=Func();
printf("%d",j);
return 0;
}
int Func()
{
int k=0;
k=k+i;
i=i+10;
return(k);
}
-
A.0,0
-
B.10,10
-
C.20,20
-
D.10,20
-
答案:D
10单选(1分)
请给出程序的运行结果
#include <stdio.h>
int Fun(int m)
{ static int n = 0;
m /= 2;
m = m * 2;
if (m)
{ n *= m;
return(Fun(m - 2));
}
else
return n;
}
int main()
{ int a, i;
for (i = 0; i < 2; i++)
{ a = Fun(4 + i);
printf("%d\n", a);
}
return 0;
}
-
A.8
8
-
B.0
0
-
C.64
64
-
D.4
4
-
答案:B