2024.7.24每日五题

https://blog.csdn.net/m0_51272104/article/details/140651811?spm=1001.2014.3001.5502

每日五题/2024/7/24-CSDN博客

1、以下选项中不属于C语言的类型的是()

A)signed short int
B)unsigned long int
C)unsigned int
D)long short

在C语言中,基本数据类型包括 int, float, double, char, 和 void。这些基本类型可以有修饰符,例如 long, short, signed, 和 unsigned。以下是对每个选项的分析:

A) signed short int - 这是合法的。shortint 都是整数类型,signed 可以用来显式指定一个类型是有符号的,尽管默认的 int 已经是有符号的。

B) unsigned long int - 这也是合法的。longint 都是整数类型,unsigned 用来指定一个类型是无符号的。

C) unsigned int - 这是合法的。int 是一个整数类型,unsigned 用来指定一个类型是无符号的。

D) long short - 这不是一个合法的类型。在C语言中,longshort 是两种不同的类型修饰符,它们不能同时用于修饰同一个类型。通常,short 用于减小类型的大小,而 long 用于增加类型的大小。

因此,不属于C语言的类型的选项是:

D) long short

2、若有定义:int *p[3];则以下叙述中正确的是()


A)定义了一个基类型为int的指针变量p,该变量具有3个指针。
B)定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针
C)定义了一个名为*p的整型数组,该数组含有3个int类型元素:
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素

在C语言中,int *p[3]; 表示定义了一个指针数组p,该数组包含3个元素,每个元素都是指向int类型的指针。

选项A描述的是定义了一个名为p的基类型为int的指针变量,并具有3个指针,这是不准确的。p实际上是一个数组,包含3个元素,且这些元素是指针,而不是p本身具有3个指针。

选项B正确地描述了int *p[3];的含义,即定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针。

选项C的描述是错误的。它错误地将p解释为整型数组而不是指针数组。

选项D也是不正确的。这个选项错误地解释了p可以指向一个一维数组,实际上p是一个包含3个元素的指针数组。

3.下面程序的输出是()

#include <stdio.h>
int main() {
    int x=023;
    printf("%d\n",--x);
}

这段代码是用C语言编写的,它首先定义了一个整数变量x并赋值为八进制数023(十进制表示为19)。然后,使用printf函数输出x减1后的值。18

解析:

  1. #include <stdio.h>:包含标准输入输出库,用于使用printf函数。
  2. int main():定义主函数,程序的入口点。
  3. int x=023;:定义一个整数变量x并赋值为八进制数023,转换为十进制是19。
  4. printf("%d\n",--x);:先对x进行自减操作(x减1),然后以十进制形式输出结果。


4.输出结果

#include "stdio.h"
int main() {
    int c = 0,k;
    for(k = 1;k < 3;k++) {
        switch (k) {
            default : c += k;
            case   2: c++;
                break;
            case   4: c += 2;
                break;
        }
    }
    printf("%d\n", c);
    return 0;
}

这段代码是用C语言编写的,主要功能是计算一个整数c的值。首先,我们来逐行解释这段代码:

  1. #include "stdio.h":这是预处理指令,用于包含标准输入输出库(stdio.h),以便我们可以使用printf函数进行输出。

  2. int main():这是主函数,程序的入口点。

  3. int c = 0,k;:声明并初始化两个整型变量c和k,其中c初始值为0,k未初始化。

  4. for(k = 1;k < 3;k++):这是一个for循环,k从1开始,每次循环递增1,直到k小于3时停止。在这个循环中,k的值将分别为1和2。

  5. switch (k):这是一个switch语句,根据k的值执行不同的case分支。

  6. default : c += k;:这是switch语句的默认分支,当k的值不是2或4时,将k的值加到c上。

  7. case 2: c++;:这是switch语句的一个case分支,当k的值为2时,将c的值加1。

  8. break;:跳出switch语句。

  9. case 4: c += 2;:这是switch语句的另一个case分支,当k的值为4时,将c的值加2。注意,由于k的值在循环中只能为1或2,这个case分支永远不会被执行。

  10. printf("%d\n", c);:输出c的值。

  11. return 0;:表示程序正常结束。

综上所述,这段代码的主要目的是计算c的值。在循环中,k的值分别为1和2,因此会执行以下操作:

  • 当k=1时,进入switch语句的default分支,c的值变为1。
  • 当k=2时,进入switch语句的case 2分支,c的值变为2。

最后,输出c的值,即2。

 以上部分为AI解析

但在实际执行中,先进入switch语句的default分支,在执行case2分支

5、以下代码编译有错误,哪个选项能解决编译错误?

class A {
    public:
        int GetValue() const {
            vv = 1;
            return vv;
         }
    private:
        int vv;
};

A) 改变成员变量"v"为"mutable int vvA
B) 改变成员函数"GetValue"的声明,以使其不是const的
C) 都不能修复编译错误
D) 都可以修复编译错误

选项A) 通过将成员变量"v"更改为"mutable int vv",可以解决编译错误。在C++中,const成员函数被设计为不能修改类的成员变量(除非它们是mutable的)。使用mutable关键字,我们可以允许const成员函数修改某些特定的成员变量。

选项B) 改变成员函数"GetValue"的声明,以使其不是const的,也可以解决编译错误。这意味着该函数可以被用来修改类的非mutable成员变量。

因此,选项A和选项B都可以修复这个编译错误。

答案:D,B,A,A,D

  • 28
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值