• 【Day04_0421】C语言选择题


    【Day04_0421】C语言选择题

    1.有以下程序,程序运行后的输出结果是(C)
    #include
    #include
    using namespace std;
    int main() 
    {
    	int m = 0123;
    	int n = 123;
    	printf("%o %o\n", m, n);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    A 0123 0173
    B 0123 173
    C 123 173
    D 173 173

    解析:
    0123表示八进制,%o表示以八进制打印输出,输出结果不显示0

    2.以下哪个选项一定可以将flag的第二个bit置0(A)

    A flag&=~2
    B flag|=2
    C flag^=2
    D flag>>=2

    3.请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变。(B)

    A const int const *x = &y;
    B int * const x = &y;
    C const int *x = &y;
    D int const *x = &y;
    E const int * const x = &y;

    4.以下C语言指令运行结果是什么?(C)

    A 2,1
    B 3,1
    C 3,9
    D 运行时崩溃

    int a[5] = { 1,3,5,7,9 };
    int* p = (int*)(&a + 1);
    printf(% d, % d”, *(a + 1)* (p - 1));
    
    • 1
    • 2
    • 3

    解析:
    数组名除了在&和sizeof()符号下表示整个数组,其余情况都表示数组首元素地址

    5.二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X[7][7]的存储地址为(A)。

    A Oxf8b821c4
    B Oxf8b821a6
    C Oxf8b82198
    D Oxf8b821c0

    解析:
    在这里插入图片描述

    6.根据下面递归函数:调用函数Fun(2),返回值是多少(D)
    int Fun(int n)
    {
    	if (n == 5)
    		return 2;
    	else
    		return 2 * Fun(n + 1);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    A 2
    B 4
    C 8
    D 16

    7.以下程序的输出结果是:(A)
    #include 
    using namespace std;
    void func(char** m) 
    {
    	++m;
    	cout << *m << endl;
    }
    int main() {
    	static char* a[] = { "morning", "afternoon", "evening" };
    	char** p;
    	p = a;
    	func(p);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    A afternoon
    B 字符o的起始地址
    C 字符o
    D 字符a的起始地址
    他的回答: (错误)
    正确答案: A

    解析:
    1.a是一个指针数组,a中保存的时字符指针,在栈上开辟空间,其指向的字符串保存在静态字符常量区
    2.对指针加1,相当于加上其所指向类型的大小,二级指针加一,则其指向下一个一级指针的位置
    在这里插入图片描述

    8.求函数返回值,输入x=9999(A)
    int func(int x){
    int count=0;
    while (x)
    {
    count++;
    x=x&(x-1);//与运算
    }
    return count;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    A 8
    B 9
    C 10
    D 12

    解析:
    x&x-1是统计一个数二进制中1的个数的方法,每次和比自己小1的数相与都会消去二进制中的一个1

    9.下列程序执行后,输出的结果为()
    #include
    int cnt = 0;
    int fib(int n)
    {
    	cnt++;
    	if (n == 0)
    		return 1;
    	else if (n == 1)
    		return 2;
    	else
    		return fib(n - 1) + fib(n - 2);
    }
    void main()
    {
    	fib(8);
    	printf("%d", cnt);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    A 41
    B 67
    C 109
    D 177

    解析:
    cnt即递归调用的次数
    在这里插入图片描述

    10.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:
    struct A
    {
    	int a;//4
    	short b;//2
    	int c;//4
    	char d;//1
    };
    struct B
    {
    	int a;
    	short b;
    	char c;
    	int d;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    A 16,16
    B 13,12
    C 16,12
    D 11,16

    解析:
    short类型占2个字节内存,long类型占4个字节,结构体内存对齐

  • 相关阅读:
    《STL容器篇》-string模拟实现
    基础知识笔记:协程基础元素
    找视频剪辑素材就上这6个网站 优漫教育
    Python ElementTree 导出 xml 缺少 开头声明&【Pymssql】使用cursor.fetchall()获取执行结果时中文乱码
    element-ui中el-table数据合并行和列,应该怎么解决
    HELM FLOW CONTROL practical operation
    男孩姓卜取什么名字好听
    C++ Qt开发:LineEdit单行输入组件
    mysql基础部分第一次复习(1-8章,到聚合函数)
    题目:2765.最长交替子序列
  • 原文地址:https://blog.csdn.net/qq_44631587/article/details/125896382