- 求fun(10)的输出结果是?
void fun (int x)
{
if (x/2 > 0) fun(x/2);
printf ("%d", x);
}
答案:1 2 5 10.
考点:递归
- 以下程序的输出结果是?
void fun ()
{
static int a = 0;
a+= 2;
printf ("%d \n", a);
}
main ()
{
int cc;
for (cc = 1; cc < 4; cc++)
fun ();
printf ("\n");
}
答案: 2 4 6.
考点:考察static的作用
staitc的作用如下:
a. 函数体内的static变量上午作用范围为该函数体, 该变量的内存只被分配一次,其值在下次调用时扔维持上次的值.
b. 在模块内的static变量可以被这一模块内的其它函数访问,但不能被模块外的其它函数访问.
c. 在模块内的staitic函数只可被这一模块的其它函数调用,这个函数的使用范围被限制在声明它的模块内.
d. 在类中的static变量属于整个类所有,对类的所有对象只有一份备份.
e. 在类中的static成员函数属于整个类所拥有,这个函数不接受this指针,因而只能访问类的static成员变量.
- 请在所有三位数的正整数中寻找符合下列条件的数:它既是完全平方数,又有两位数字相同, 如144、676等,编写一段C语言的程序找出所有满足上述条件的三位数,并存放在数值result[]中.
3 int perfectSquare (int result[])
4 {
5 int xBai, yShi, zGei;
6 int i = 10, j = 0;
7 int tmp;
8
9 while (i*i < 999)
10 {
11 tmp = i*i;
12 xBai = tmp / 100;
13 yShi = (tmp % 100) / 10;
14 zGei = (tmp % 100) % 10;
15 if (xBai == yShi || xBai == zGei || yShi == zGei)
16 {
17 result[j] = tmp;
18 printf ("tmp = %d\n", tmp);
19 }
20 i++;
21 j++;
22 }
23 return 0;
24 }
VirtualBox:160519$ ./perf
tmp = 100
tmp = 121
tmp = 144
tmp = 225
tmp = 400
tmp = 441
tmp = 484
tmp = 676
tmp = 900
二叉树的遍历方式.
现有以下定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句z = 2*(N+Y(5+1))+N后z的值为:51
宏替换的结果:2*(3+(3+1)*5+1)+3=51
若已经定义:int a[9]; *p=a. 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是:C
A. p+1; B. a+1; C. a++; D. ++p;如下:
unsigned char *pucCharArray[10][10];
typedef union unRec
{
unsigned long ulIndex;
unsigned short usLevel[6];
unsigned char ucPos;
}REC_S;
REC_S stMAX, *pstMax;
四字节对齐方式时:
sizeof(pucCharArray) = 400
sizeof(stMAX) = 12
sizeof(pstMax) = 4
sizeof(*pstMax) = 12