• C语言--每日五道练习题--Day17


    第一题

    1.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为( )语句。

    A:for

    B:while

    C:do

    D:if

    答案及解析 D

    如果每个case块后面都跟着break,这就说明了,执行到每一个case之后,都会退出switch语句,就相当于只要条件成立就结束,这跟if是类似的。

    第二题

    2. C 语言中的文件包含是不可以嵌套的

    A:true

    B:false

    答案及解析 B

    比如我们头文件的包含,在多文件写代码的时候,我们通常会用到头文件包含,比如我们会建立.h文件,命名为test.h,之后里面会用到stdio.h,stdilb.h,string.h等,这个时候在我们的.c文件中直接用#include "test.h"一个,就可以把stdio.h,stdilb.h,string.h都调用到了;

    第三题(难点)

    5.已知数组D的定义是int D[4][8];现在需要把这个数组作为实参传递给一个函数进行处理。下列可以作为对应的形参变量说明的是()【多选】

    A:int D[4][ ]

    B:int *s[8]

    C:int(*s)[8]

    D:int D[ ][8]

    答案及解析  CD

    A D:我们知道定义二维数组的时候,可以省略行,但是不可以省略列,所以传参也一样,故A错误,D正确;

    B C:这里面我们要知道指针数组和数组指针的区别

    先看B:B选项中int *s[8],因为我们的[]优先级是比*高的,所以会优先结合形成数组,然后每个数组元素类型是int*,所以这个数组有8个元素,元素类型都是int*的,是指针数组

    再看C:int (*s)[8]首先我们是一个指针,指向的是int[8]这个一维数组,所以我们传实参的时候是数组名D,二维数组的数组名代表的是第一行的地址,所以我们用这个int (*s)[8]是可以接收的,那我们如何使用呢?

    在一维数组的时候,int *a,*a等价于a[]

    所以二维数组也一样,int (*s)[8] 可以等价于 int s[][8]

    第四题

    4. 字符串“BeiJing”存储在计算机中,需要的字节数是(  )

    A:7

    B:14

    C:8

    D:16

    答案及解析 C

    一个英文字母占一个字节,题中一共八个,所以是8字节

    第五题

    5. 若已定义: int a[9] ,*p = a; 并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的是()

    A:++p

    B:a+1

    C:p+1

    D:a++

    答案及解析 D

    这里考察的是前置++和后置++的区别

    前置++,int a = 1; int b = ++a; 这个时候b = 2,a = 2;

    后置++:int a = 1; int b = a+=; 这个时候b = 1,a = 2;

    所以后置++返回的是++之前的值;

  • 相关阅读:
    1.Python 设计模式
    Laf 实现语音文本相互转换,直接让 GPT 开口说话
    Cocos Creator3.8 项目实战(九)2D UI DrawCall优化详解(下)
    算法练习1——合并两个有序数组
    在 C/C++ 中清除输入缓冲区
    IDEA中取消双击shift全局搜索
    什么样的蓝牙耳机打电话好用?接电话清晰的蓝牙耳机推荐
    数据结构复盘——第一章:绪论
    批量汇总nmon结果文件Excel数据
    JUC - 多线程之Callable;集合类线程不安全(二)
  • 原文地址:https://blog.csdn.net/2302_76941579/article/details/134470576