《嵌入式C高级编程笔试》试卷A
一、选择题(35*2’注意程序运行在32位系统下
1. 语句printf(″s\\t″)的输出结果为(printf函数是如何实现的   B 
A  s\\t        B  s\t        C  s\        D  s
2.若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是 (B)
A(exp==0)  B(exp=0)    C(exp==1)        D(exp=1)
3. float a = 3.2(int)aprintf("a = %d, \n", a);打印什么,运行后a的类型是(D
A. 3.000000, int
B. 3, int
C. 3.0 float
D. 既不是3,也不是3.000000 float
4.有以下代码:
void func()
{
    int a;
    a++;
    printf("a = %d\n", a);
}
那么变量a储存在( A
A.
B.
C. 正文段
D. 未初始化数据段
5. C语言中 char型数据在内存中的存储形式是
A补码      B 反码      C 原码     DASCII
6. 假如指针p已经指向某个整型变量x,则(*p)++相当于(  B
Ap++      Bx++      C*(p++)    D&x++
7. 为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。
A. 缩排位置相同的if                    B. 在其之前未配对的if
C. 在其之前未配对的最近的if          D.同一行上的if
8. A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( B )。
A.P+i*2 B. P+i-1*2 C. P+i-1 D. P+i
9.有函数
void func()
{
    //staic int c=0;
    c++;
    printf("%d\n", c);
}
那么连续调用两次,打印的结果是?( B
A. 1, 1
B. 1, 2
C. 123495,123496(因为c没初始化,内部的值随机,第二次会比第一次加1
D. 123495, 123495(因为c没初始化,内部的值随机,并且,值不会增加)
10.如果有以下代码:
char string[] = "love me please";
char *p = string;
char *q = p + 4;
*q++ = '\0';
printf("\"%s\"", p);
printf("\"%s\"", q);分别打印:( B
A. "love me please"    ""
B. "love"    "me please"
C. "love me please"    "me please"
D. 因为常量字符串不能修改,会发生段错误
11.free(p);
哪个是错误的( D
A. p的值必须是malloc的返回值
B. 一个指针不能被连续free两次
C. freep以后p是野指针,应该置为NULL
D. free了以后p的值会自动置为NULL,所以*p = 9会段错误
12.下列描述中不正确的是( C )。
A. 字符型数组中可能存放字符串。
B. 可以对字符型数组进行整体输入、输出。
C. 可以对整型数组进行整体输入、输出。
D. 不能在赋值语句中通过赋值运算符=”对字符型数组进行整体赋值。
13.不能把字符串:Hello!赋给数组b的语句是(  B )。
A. char b[10]={‘H’‘e’‘l’‘l’‘o’’}
B. char b[ 10] b=Hello
C. char b[10] strcpybHello);
D. char b[10]=Hello
14. 对于循环队列,下列叙述中正确的    D
      A)队头指针是固定不变的
      B)队头指针一定不大于队尾指针
      C)队头指针一定小于队尾指针
      D)队头指针可以大于队尾指针,也可以小于队尾指针
15. 有以下程序
#include <stdio.h>
main()
{
int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(%d,%d,%d\n,m,n,*p,*q);
}
程序运行后的输出结果为  B
A1212    B1221    C2121  D2112
16. 若有定义语句:int a[4][10],*p,*q[4];0<=i<4,则错误的赋值是: A
Ap=a    Bq[i]=a[i]  Cp=a[i]  Dp=&a[2][1]
17. 下面函数的功能是  A
fun(char *a,char*b)
{
while((*b=*a)!=’\0’) 
{
a++;b++;
}
}
Aa所指字符串赋给b所指空间
B使指针b指向a所指字符串
Ca所指字符串和b所指字符串进行比较
D检查ab所指字符串中是否有’\0’
18. 设有以下函数:
void fun(int n,char *s){……}
则下面对函数指针的定义和赋值均正确的是  A
A void (*pf)( )pf=fun
B void *pf()pf=fun
C void *pf()*pf=fun
D void (*pf)intchar);pf=&fun
19. #include  <stdio.h>
main ( )
  int  n=2,k=0;
while(k++&&n++>2);
printf(%d  %d\n,k,n);
}
程序运行后的输出结果是(    )D
A0  2          B1  3        C 5  7        D1  2
20. 有如下代码:
struct test
{
    char *name;
    int age;
};       
int main()
{
    char myname[] = "hello, world";
    struct test a1, a2;
    a1.name = myname;
    a1.age = 13;
    a2 = a1;
    a1.name[0] = 'm';
    printf("%s\n", a2.name);
}
输出的结果为:( A
A. mello, world
B. hello, world
C. 编译无法通过
D. 会段错误
21正确的标识符是                                        
A  ?a          B  a=2        C  a.3            D  a_3   
22. 以下c语言函数声明中,不正确的是                       C 
  A  void fun (int x, int y);          B  fun (int x, int y);
  C  int fun (int x,y);        D  char *fun (char *s);
23. 设有说明double*p1[N];其中标识符p1是( C )。
  A. N个指向double型变量的指针。
  B. 指向Ndouble型变量的函数指针。
  C. 一个指向由Ndouble型元素组成的一维数组的指针。
  D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。
24. 以下程序的输出结果是( C )。
  #define fx x*x
  main()
  {int a=6b=2c
  c=fa/fb);
  printf“%d\n”c);
  }
  A. 9 B. 6 C. 36 D. 18
25. 设有如下定义: int x=10y=3z
  则语句printf“%d\n”z=x%yx/y)); 的输出结果是( D )。
  A. 1 B. 0 C. 4 D. 3
26. 定义如下变量和数组:int iint x[3][3]={123456789}
 则语句fori=0i<3i++ printf“%d ”x[i][2-i]); 的输出结果是( C )。
  A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9
27. 以下对二维数组a进行正确初始化的是( B
A. int a[2][3]={{12}{34}{56}}
B. int a[ ][3]={123456}
C. int a[2][ ]={123456}
D. int a[2][ ]={{12}{34}}
28. 下列程序的输出结果是( C )。
  int a[5]={246810}*P* *k
  p=a k=&p
  printf“%d”*p++));
  printf“%d\n”* *k);
  A. 4 4 B. 2 2 C. 2 4 D. 4 6
29. 如果char *string = "1234";如何将string中的字符串转化为整形赋值给int a,那么应该选择(C
A a = (int)string
B a = *string
C a = atoi(string);
D a =string;
30.int a[10] = {3 , 2, 1};
int *p = a + 4;
那么printf"%d, %d\n", a[2], *p;会打印?(
A. 2, 0   
B 段错误
C 1, 0 
D 1, 1
31. 如果:unsigned int a = 77;a>>1;unsigned int b = a&((0x1<<4) - 1);那么ab的值分别为?( C