C语言--每日选择题--Day37

第一题

  1. 有以下说明语句:则下面引用形式错误的是()
cpp 复制代码
struct Student 
{
    int num;
    double score;
};
 
struct Student stu[3] = {{1001,80}, {1002,75}, {1003,91}}
struct Student *p = stu;

A:p->num

B:(p++).num

C:(p++)->num

D:(*p).num

答案及解析 B

本题考查的是对结构体变量如何引用,如果是结构体定义的对象,用 ' -> ';如果是结构体的指针,就用 ' . ' ;

A:p是一个结构体指针,指向的是一个结构体数组的首元素,所以p->num,拿到的是首元素的num = 1001;

B:p++还是一个结构体指针,不可以用 ' . ';

C:正确,p++是后置++,返回的是++之前的值,所以取到的是首元素的num

D:解引用之后才是结构体的对象,使用 ' . '来访问,取到的是首元素的num = 1001

第二题

  1. 以下程序运行的结果是()
cpp 复制代码
#include <stdio.h>
#define X   5
#define Y   X+1
#define Z   Y*X/2
int main() 
{
    int a = Y;
    printf("%d,%d", Z, --a);
    return 0;
}

A:7,6

B:12,6

C:12,5

D:7,5

答案及解析 A

本题考查的是宏定义是替换,所以

--a = --Y = --X + 1 = 4 + 1 = 5;

Z = Y * X / 2 = X + 1 * X / 2 = 5 + 1 * 5 / 2 = 7;

所以

--a = 5;

Z = 7;

第三题

  1. 不能把字符串"HELLO!"赋给数组b的语句是()
    A:char b[10] = {'H','E','L','L','O','!','\0'};

B:char b[10]; b = "HELLO!";

C:char b[10]; strcpy(b,"HELLO!");

D:char b[10] = "HELLO!";

答案及解析 B

A CD都是正确的赋值;但是我们要知道b是数组名,数组名是首元素的地址,是一个常指针,不可以被改变,所以错误;b的数据类型为char * const ,可以改变数组的内容,但是不能改变数组的地址

第四题

  1. 下面C程序的输出结果是()
cpp 复制代码
unsigned fun(unsigned num) 
{
    unsigned k = 1;
    do 
    {
        k *= num % 10;
        num /= 10;
    } while (num);
    return(k);
}

int main() 
{
    unsigned num = 26;
    printf("%d", fun(num));
    return 0;
}

A:12

B:无限循环

C:1

D:26

答案及解析 A

单独的unsigned指的是unsigned int类型;

无符号整数,永远是大于等于0;

第一次进入循环

k = 6 num = 2

第二次进入循环

k = 12 num = 0;

num = 0的时候结束循环,返回k = 12

第五题

  1. 以下代码的输出结果是()
cpp 复制代码
int main() 
{
    int n = 10;
    int const *p = &n;
    p++;
    printf("%d", *p);
    return 0;
}

A:10

B:11

C:随机值

D:编译错误

答案及解析 C

int const *p = &n; const是在*的左侧,修饰的是p指向的内容不能被修改,所以p++之后,p指向的是n下面的地址处,这里存储的值是未知的,所以是随机值。

相关推荐
健康平安的活着20 分钟前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
No0d1es22 分钟前
电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
c语言·c++·算法·青少年编程·电子学会·五级
DjangoJason2 小时前
C++ 仿RabbitMQ实现消息队列项目
开发语言·c++·rabbitmq
m0_480502642 小时前
Rust 入门 KV存储HashMap (十七)
java·开发语言·rust
大阳1232 小时前
线程(基本概念和相关命令)
开发语言·数据结构·经验分享·算法·线程·学习经验
YA3332 小时前
java基础(九)sql基础及索引
java·开发语言·sql
奇树谦3 小时前
QT|windwos桌面端应用程序开发,当连接多个显示器的时候,如何获取屏幕编号?
开发语言·qt
weixin_307779134 小时前
VS Code配置MinGW64编译GNU 科学库 (GSL)
开发语言·c++·vscode·算法
froginwe114 小时前
HTML 框架:构建网页布局的基石
开发语言
Yn3124 小时前
在 Python 中使用 json 模块的完整指南
开发语言·python·json