C语言—每日选择题—Day48

第一题

  1. 已知宏定义: #define M y*y+3*y , 则表达式 s=3*M+4*M+y*M 预处理阶段后的结果是
    A:s=3*(y*y+3*y)+4*(y*y+3*y)+y*(y*y+3*y)

B:s=3*(y*y)+3*y+4*(y*y)+3*y+y*(y*y)+3*y

C:s=3*y*y+3*y+4*y*y+3*y+y*y*y+3*y

D:s=3*(y*y)+(3*y)+4*(y*y)+(3*y)+y*(y*y)+(3*y)

答案及解析 C

你要记住,一个.c文件在运行之前,是要经过预处理--编译--汇编--链接这几个阶段的;

通过历史 --> 了解翻译环境(预处理、编译、汇编、链接)-CSDN博客

预处理阶段对于宏就是直接替换,替换就是原封不动地换,只要无中生有就是错,所以只有C是对的,其他都多加了括号

第二题

  1. int (*p)5; 定义的是
    A:p是一个指针数组,该数组中的每一个元素都是一个整型指针

B:p是一个数组的指针,该指针指向一个长度为5的整型数组

C:p是一个函数指针,该指针指向一个参数为5的函数

D:p是一个指针函数,该函数的返回值为一个整型指针

答案及解析 B

因为这里是用括号将*p括起来了,所以p先和*结合,形成指针,指针指向的是int 5,数组类型。所以这个p是一个数组指针,指向的是一个长度为5的整型数组。

第三题(涉及操作系统)

  1. 使用C语言将一个1G字节的字符数组从头到尾全部设置为字'A',在一台典型的当代PC上,需要花费的CPU时间的数量级最接近()
    A:0.001秒

B:1秒

C:100秒

D:2小时

答案及解析 B

本题涉及里操作系统的知识,但是我写到C语言的原因就是,等大家学到操作系统之后,就会发现大多数的操作系统都是用C语言写的,里面的指令也是用C语言写的程序,这个时候你会感觉到C生万物!

执行1条语句约 1ns 即10的-9次方秒

1G = 1024M = 1024 * 1024kb = 1024 * 1024 * 1024 byte

每次赋值1byte都要执行一次语句

所以至少花1024 * 1024 * 1024 * 10 ^(-9)= 1.073741824s,最接近一秒。

第四题

  1. 下面各输入语句中错误的是()
cpp 复制代码
struct ss
{
    char name[10];
    int age;
    char sex;
} std[3], *p = std;

A:scanf("%d", &(*p).age);

B:scanf("%s", &std.name);

C:scanf("%c", &std0.sex);

D:scanf("%c", &(p->sex));

答案及解析 B

本题考查的是如何对拿出结构体的成员,如果大家对操作符优先级不熟悉,先看这个博客:

C语言操作符优先级表格(建议收藏,每次看一下)-CSDN博客
首先看*p = std;

这是定义的一个结构体指针,C语言允许在声明之后定义;相当于struct ss *p ;

结构体指针访问成员变量需要用 ->

A:正确:这里是先把p解引用了,*p也就是一个结构体变量,结构体变量访问成员就用 '.'

之后拿到age,是一个整型,输入的时候需要取地址;

D:正确:这里就是直接用结构体指针访问成员,取到的是sex字符类型的变量,输入的时候依旧是要取地址。
而在后面定义的std3,这是一个结构体的数组,数组元素都是一个一个的结构体;

B:错误:std是数组名,数组名是首元素地址,也就是第一个结构体的地址,是结构体指针,结构体指针访问成员是需要->,这里用 '.'错误;

C:正确:std0是一个结构体,访问的是sex这个成员,输入的时候取地址;

第五题

5.下面程序运行的结果是()

cpp 复制代码
#include<stdio.h>
void add(int *p)
{
    (*p)++;
    printf("%d", *p);
    if (*p > 5)
    {
        return;
    }
    add(p);
}
int main()
{
    int i = 0;
    add(&i);
    return 0;
}

A:12345

B:123456

C:111111

D:未知

答案及解析 B

本题考查的是递归,只要你能弄明白递归,这个题就没问题;还有一点就是p是地址,一直都是传地址,所以对*p修改一直影响i的大小;

相关推荐
zz345729811317 分钟前
C语言中字符串常量存储位置
c语言·开发语言·算法·青少年编程
noipp18 分钟前
推荐题目:洛谷 P16510 [GKS 2015 #C] gRanks
java·c语言·开发语言·c++·python·算法
程序喵大人18 分钟前
从内存/汇编角度看C与C++:指针、引用、对象的底层差异
c语言·汇编·c++·指针·引用·对象
川石课堂软件测试21 分钟前
零基础小白如何学习自动化测试
python·功能测试·学习·测试工具·jmeter·压力测试·harmonyos
2301_8090511433 分钟前
Linux 数据库开发 学习笔记
笔记·学习·数据库开发
爱喝水的鱼丶1 小时前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第三篇:SAP ALV 报表样式定制:字段布局与交互功能配置
服务器·开发语言·学习·交互·sap·abap
很楠爱上1 小时前
Node.js 模块化学习笔记
笔记·学习·node.js
毕竟是shy哥1 小时前
CLIP:从自然语言监督中学习可迁移的视觉模型
学习
Swift社区1 小时前
OpenHarmony鸿蒙PC平台移植 gifsicle:CC++ 三方库适配实践(Lycium tpc_c_cplusplus)
c语言·c++·harmonyos
川石课堂软件测试1 小时前
作为一名测试工程师如何学习Kubernetes(k8s)技能
学习·测试工具·容器·职场和发展·kubernetes·测试用例·harmonyos