知名外企嵌入式C语言笔试试题

知名外企嵌入式C语言笔试试题

嵌入式C语言笔试试题

    • 知名外企嵌入式C语言笔试试题
      • 一. 选择题
      • 二. 填空题
      • 三.写出程序的运行结果

一. 选择题

01.C语言合法的常量是()
A…45
B.078
C.25
D.“xy”

解答:答案选择D。这个是字符串常量。

02.设x和y均为int型变量,则语句x+=y;y=x-y;x-=y的功能是()
A.把x和y按从大到小排列
B.把x和y按从小到大排列
C.无确定结果
D.交换x和y中的值

解答:答案选择D。

03.设a为int型变量,值为5的枚举常量是()
enum week{sun,mon=4,tue,wed,thu,fri,sat}w;
A.tue
B.sat
C.fri
D.thu

解答:答案选择A。

04.设有如下程序段,下面描述中正确的是()
int k=10;while(k=0){k=k-1;}
A.循环执行一次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次

解答:答案选择C。k=0是赋值语句。

05.以下关于运算符优先顺序的描述当中正确的是()
A.关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符
B.逻辑与运算符 < 关系运算符 < 算术运算符 < 赋值运算符
C.赋值运算符 < 逻辑与运算符 < 关系运算符 < 算术运算符
D.算术运算符 < 关系运算符 < 赋值运算符 < 逻辑与运算符

解答:答案选择C。

06.在C语言程序中,以下的说法正确的是()
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和调用都不可以嵌套
D.函数的定义和函数的调用都可以嵌套

解答:答案选择B。

07.具有相同类型的指针类型变量p与数组a[10],不能进行的操作是()
A.p=a;
B.*p=a[0];
C.p=&a[0];
D.p=&a;

解答:答案选择B。ABD三个都是一个意思。

08.已知职工记录描述如下,在Win32系统中,系统为变量w分配()字节的空间。
struct worker
{
u4:no;
u2:age;
u1:sex;
u2:grade;
}w;
A.7
B.8
C.12
D.10

解答:答案选择C。

09.定义由n个指向整型数据的指针组成的数组p,其正确的方式为()
A.int p;
B.int (*p)[10];
C.int *p[10];
D.int (*p)();

解答:答案选择C。

二. 填空题

01.写出x>=y>=z 并且z>10的C语言表达式()

解答:答案选择 if (!(x10))

02.int i = 20;switch(i/10){case 2:printf(“1”);case 1:printf(“2”)}的输出结果为()

解答:答案选择2。因为没有break语句。

03.定义一个int型的定数A,A的值为10()

解答:Const int A = 10;

04.文件内部函数定义时,要加前缀()

解答:答案是static关键字

05.对于u2 a[10],sizeof(a)的值是(),其中u2为int 2byte。

解答:sizeof的值是20;

06.写一个宏ADD,这个宏功能是把两个数累加(如A+B)

解答:答案是#define ADD(a+b) ((a)+(b)) 这里考察的就是括号。

07.有表达式int a=2,b=3;y=a&b;那么y的值为()

解答:答案y的值应该是2;与运算要切换到16进制进行计算。

08.int a=1,int *p=a的含义是定义int型指针变量p,p的值是()

解答:p是指针,是一个地址,它指向的地址的值为1

09.若有定义int *p(int a[10]);则p是()名

解答:不清楚这题的出题意图,如果在*p上加上括号(),那么p是函数指针名。

10.函数的临时变量存放于寄存器和()当中,因为它的空间有限,不能定义过多的变量

解答:栈内存。

三.写出程序的运行结果

  1. 以下函数输出结果是什么
    解答:函数的输出结果是average score is 4.100000
float FunA(float array[5])
{
    int i;
    float a,b=array[0];
    for (i = 0; i < 5; i++){
        b = b+array[i];
    }
    a=b/5;
    return (a);
}

int main(void)
{
    float score[5] = {1.5, 4, 2.5, 3, 8};
    float a;
    a = FunA(score);
    printf("average score is %f\n", a);
}
  1. 以下函数输出结果是什么
    解答:输出的答案应该是A,B,C,D。
#include 
int main(void)
{
    char a[5] = {'a','b','c','d','e'};
    char *p, **pa;
    for (p=a;p < a + 3; p++){
        printf("%c", *p);
    }
    pa = &p;
    //printf("%c", **pa);
    return 0;
}
  1. 以下函数输出结果是什么
    解答:输出的答案应该是-9。
#include 

int main(void)
{
    int i =29,j=6,k=2,s;
    s = i / j % k - 9;
    printf("s=%d\n", s);
    return 0;
}
  1. 以下函数输出结果是什么
    解答:输出的答案应该是4和6。
    第一轮之后a=1,s=2
    第二轮之后a=2,s=4
    第三轮之后a=3,s=6
    第四轮因为等于6而提前终止a=4, s=6
#include 

int main(void)
{
    int a, s=1;
    for (a=1;a <= 10; a++)
    {
        if (s >= 5) break;
        if (s %2 == 0 ){
            s+=2;continue;
        }
        s++;
    }
    printf("a=%d,s=%d",a ,s);
    return 0;
}

  1. 以下函数输出结果是什么
    解答:a=11,s=10;ifdef A走上面有效的分支。
#include 

#define A 2
int main(void)
{
    int a,s=1;
#ifdef A
    for (a = A; a <=10;a++)
#else
    for (a = 0; a <=10; a++)
#endif
    {
         s++;   
    }
    printf("a=%d,s=%d\n", a, s);
}

你可能感兴趣的:(C语言,单元测试)