• C语言--每日五道选择题--Day14


    第一题

    1、已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; 

         正确的调用语句是( )

    A: fun(c,&d); 

    B: fun(c,d); 

    C: fun(&c,&d); 

    D: fun(&c,d);

    答案及解析 A

    在C语言中是无法对数组直接传参的,调用数组全部都是调用数组的首元素的地址,别看形参是数组的形式,本质上就是个指针,所以实参传的是数组名,因为数组名代表首元素地址。而int*是指针,实参应该传的也是指针,就是&d;

    所以选A

    第二题

    2、请问下列表达式哪些会被编译器禁止【多选】( )

    1. int a = 248, b = 4;
    2. int const *c = 21;
    3. const int *d = &a;
    4. int *const e = &b;
    5. int const * const f = &a;

    A: *c = 32; 

    B: *d = 43 

    C: e=&a 

    D: f=0x321f

    答案及解析  ABCD

    这里考察的是const对于*的位置,分别有不同的影响;

    const在* 左侧,限制的是指针指向的对象,也就是解引用不可以被修改,但是指针可以改

    const在*右侧,限制的是指针本身,指针不可以修改,指向的对象可以修改

    所以选ABCD

    第三题

    3、以下程序的输出结果为( )

    1. #include
    2. int i;
    3. void prt()
    4. {
    5. for (i = 5; i < 8; i++)
    6. printf("%c", '*');
    7. printf("\t");
    8. }
    9. int main()
    10. {
    11. for (i = 5; i <= 8; i++)
    12. prt();
    13. return 0;
    14. }

    A: *** 

    B: *** *** *** *** 

    C: *** *** 

    D: * * *

    答案及解析 A

    注意:i是全局变量,所以只要程序中++了,就会改变的!

    所以就进入了2次prt函数,第一次i=5,进入函数++到7,退出函数;

    第二次i=8,进入函数不符合循环,只打印了一个水平制表符(相当于几个空格,看自身编译器);

    所以答案选A

    第四题

    4、下面代码段的输出是( )

    1. int main()
    2. {
    3. int a=3;
    4. printf("%d\n",(a+=a-=a*a));
    5. return 0;
    6. }

    A: -6 B: 12 C: 0 D: -12

    答案及解析 D

    表达式相当于 a = a + ( a = a - a*a);

    第五题

    5、下列不能实现死循环的是( )

    A: while(1){} B: for(;1;){} C: do{}while(1); D: for(;0;){}

    答案及解析 D

    非0为真,0为假

    循环条件非0就可以死循环

  • 相关阅读:
    字符串表达式计算(a+b/(a-b))的思路与实践
    接口中方法详解
    windows下搭建EMQX本地服务器
    vue 深拷贝数据以后导致 页面卡顿
    13-网络篇-局域网与外网通信
    外包干了3天,技术退步明显.......
    qt-C++基于QWidget的程序模板
    【华为OD机试真题 python】英文输入法 【2022 Q4 | 100分】
    新一代CMDB构建方法,能给企业带来哪些收益?
    react antd message多条数据展示样式
  • 原文地址:https://blog.csdn.net/2302_76941579/article/details/134429741