• 知名外企嵌入式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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    写代码,必须要优雅...
    前端面经1
    Shopify 结账页面checkouts.liquid添加一个交叉推荐加购产品(适用于shopify plus)
    C/C++蓝桥杯之杨辉三角
    idea项目设置鼠标右键点击文件夹通过IDEA打开
    竞赛 大数据疫情分析及可视化系统
    Vue内置指令——v-bind
    JAVA面试全集
    《深入理解计算机系统》(2):虚拟内存
    下载并安装DevEco Studio 3.1,初尝鸿蒙编程
  • 原文地址:https://blog.csdn.net/Last_Impression/article/details/127051982