<<嵌入式C高级编程笔试>>试卷B
一、选择题(35*2’)
1. 语句printf(″s\\t″)的输出结果为( B )
A s\\t B s\t C s\ D s
*2. 程序中定义以下宏 #define S(a,b) a*b
若定义 int area; 且令area=S(3+1,3+4),则变量area的值为( A )
A. 10 B. 12 C. 21 D. 28
正确标识符 D
A ?a B a=2 C a.3 D a-3
3. float a = 3.2;(int)a;printf("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型数据在内存中的存储形式是( D )
A、补码 B、 反码 C、 原码 D、ASCII码
A、补码 B、 反码 C、 原码 D、ASCII码
*6. 执行下列语句中,sum变量的值是 ( B )
int sum=0
for(int i=0;i<10;i++,sum+=i);
A 45 B 55 C 0 D 编译错误
假如p指向整型变量x, 则(*p)++等价B
A p++ B x++ C*(p++) D&x++
7. 为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。
A. 缩排位置相同的if B. 在其之前未配对的if
printf怎么加endlC. 在其之前未配对的最近的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()
{
static int c;
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. free了p以后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]; strcpy(b,“Hello!”);
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
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2
16. 若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是: A
A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]
17. 下面函数的功能是 A
fun(char *a,char*b)
{
while((*b=*a)!=’\0’)
{
a++;b++;
}
}
A将a所指字符串赋给b所指空间
B使指针b指向a所指字符串
C将a所指字符串和b所指字符串进行比较
D检查a和b所指字符串中是否有’\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)(int,char);pf=&fun;
19. #include <stdio.h>
main ( )
{
int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d\n”,k,n);
}
程序运行后的输出结果是( )D
A、0 2 B、1 3 C、 5 7 D、1 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. 以下函数findmax拟实现在数组中查最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
#define MIN -2147483647
int findmax {int x[],int n}
{ int i,max;;
for {i=0;i<n;i++}
{ max =MIN;
if(max<x[i]) max=x[i];}
return max;
}
造成错误的原因是 D
A)定义语句int i,max:中max 未赋初值
B)赋值语句max=MIN;中,不应给max 赋MIN值
C)语句if(max<x[i]) max=x[i];中判断条件设置错误
D)赋值语句max=MIN;放错了位置
22. 有以下程序
#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);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论