2月26日做题总结(C/C++真题)

今天是2024年2月16日,新学期开学第一天。在大三这个重要阶段,我决定参加24年秋招。在准备项目的同时,也先做一些入门的笔试题吧,慢慢积累。如果你也是处于这个阶段,欢迎来找我交流讨论!

今天是做题第一天,就先从C/C++真题入手吧!(不做不知道,一做吓一跳,一做题发现自己的漏洞还是很多的。)慢慢来吧,只要坚持+努力,终会长风破浪会有时,直挂云帆济沧海!

第一题

下列定义不正确的是()

A---#define PI 3.1415926

B---#define S345

C---int max(x,y);int x,y;{}

D---static char c;

正确答案:C

解析:先讲一下C为什么错,int max(x,y);声明函数,但是形参未标示类型,所以C选项的定义是不正确的。这题的易错点是选B,其实#define S345是一个空宏定义,其作用是对函数进行标识、说明。

第二题

以下哪一句会出错?

复制代码
char    *s="AAA";    //1
printf("%s",s);      //2
s[0]='B';            //3
pritf("%s",s);       //4

A---第一句

B---第二句

C---第三句

D---第四句

正确答案:C

解析:初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为。s0只可读,不可写,也可以理解为指针只具有指向/寻址权限,没有修改数值权限。

第三题

设有如下定义:

复制代码
struct Jan
{
    int   a;
    float b;
}c2,*p;

若有p=&c2;则对c2中的成员a的正确引用:()

A---(*p).c2.a

B---(*p).a

C---p->c2.a

D---p.c2.a

正确选项:B

解析:p是指向结构体对象c2的指针,指针引用对象用->符号。常见的有3种表达方式,如下:

第一种c2.a

第二种(*p).a

第三种p->a

第四题

下列描述,正确的一共有几个?

(1)const char *p,这是一个常量指针,p的值不可修改

(2)在64位机上,char *p="abcdefghijk";sizeof(p)大小为12

(3)inline会检查函数参数,所以调用开销显著大于宏

(4)重载是编译时确定的,虚函数是运行时绑定的

A---1个

B---2个

C---3个

D---4个

正确答案:A

(1)错误,const char *p中,应该是p这个字符指针所指向的值才不会发生改变。

看到const记住一句话,左定值、右定向。举个例子,const int *p是常量指针,比如说是指向一个字符常量"abc"的指针,const在*左边,左定值,也就是说这个"abc"的内容不能被换掉,但是这个指针可以指向别的地址上。int *const p是指针常量,比如说这个p的地址是0X80000,const在*右边,右定向,也就是说这个指针是死死的指着0X80000不会改变,但这个地址上对应的内容是可以换成别的。

(2)错误,sizeof(p)的返回值是8 。这个8指的是char *这个指针类型在64位机器上的大小,而不是12 。

(3)错误,对于inline和宏的比较:内联函数比宏更安全,前者会有类型检查,后者只是代码的简单替换;inline在编译时,是把函数代码直接插入到目标代码中,通过空间换取时间来提高执行效率,不存在普遍函数的调用开销。

(4)正确,重载是编译时确定的,虚函数是运行时绑定的

第五题

若有如下说明:

复制代码
int *p,m=5,n;

则下面程序段正确的是()

A---p=&n;scanf("%d",&p);

B---p=&n;scanf("%d",*p);

C---scanf("%d",&n);*p=n;

D---p=&n;*p=m;

正确答案:D

解析:因为p是指针变量,在scanf中不能再使用&p或者*p来接收键盘的输入值,应直接用p即可,所以A和B错误。而C中,*p=n是"野指针"赋值,因为p未指向某一内存单元,所以C错误。而D中,先将变量n的地址给指针变量p,然后再把m的值赋值给p所指向的内存单元,也就是赋值给n,所以D正确。

第六题

以下程序统计给定输入中每个大写字母的出现次数

复制代码
void AlphabetCounting(char a[],int n)
{
  int count[26] = {}, i, kind = 10;
  for(i = 0;i < n;++i) 
        (1);
  for(i = 0;i < 26;++i)
   {
        if(++kind > 1) 
        putchar(';');
        printf("%c=%d", (2));
   }
}

A---++counta\[i-'Z'];'Z-i',count'Z'-i

B---++countA-a\[i];'A+i',counti

C---++counti;i,counti

D---++count'Z'-a\[i];'Z-i',counti

正确答案:D

解析:在ASCII表中,大写字母对应的是65-90,小写字母对应的是97-122;本题输入设定全部都是大写,所以有两种情况。

第一种,count0;25存储A-Z的个数,即count0存储A的个数,于是(1)++counta\[i-'A'];(2)'A'+i,counti;

第二种,count0;25存储A-Z的个数,即count0存储Z的个数,于是(1)++count'Z'-a\[i];

(2)'Z'-i,counti;

所以本题答案为D。

第七题

若有以下的定义:

复制代码
int t[3][2];

t2能正确表示t数组某元素的地址。表述是否正确?

A---正确

B---错误

正确答案:A

解析:这道题谈一下我的理解,t2与&t20的值相等,但是意义却不一样。前者表示一整个一维数组的地址,而编译器一般将数组的首元素的地址默认为整个一维数组的地址,所以t2与&t20的值才会相等。

第八题

执行以下语句,输出结果为()

复制代码
#include<stdio.h>
int main( ) 
{
    char *p1 = "hello";
    char *p2 = "world";
    char *p3 = "a piece of cake";
    char *str[] = {p1, p2, p3};
    printf("%c", *(str[0] + 1));
}

A---world

B---hello

C---编译时错误

D---其他选项都不正确

正确答案:D

解析:这题很有误导性,一不小心就会掉到出题人的坑里,让我们一起来看看吧!char *str\[\]={},str是一个数组名,数组每个元素都是char *,str0取得数组首元素,也就是p1指针,p1指向的是"hello",p1指针+1前进一位指向字符e,最后输出e。注意,%c是只输出一个字符。而这题如果改为*(str+1),那输出结果就变成world了,大家要注意区分。

第九题

复制代码
enum string
{    
    x1,    
    x2,    
    x3 = 10,    
    x4,    
    x5,    
} x;

函数外部访问x等于什么?

A---5

B---12

C---0

D---随机值

正确答案:C

解析:如果是在函数外定义,则为0(全局变量,初始化为0)。如果是函数内定义,则是随机值(局部变量,需要人初始化,否则编译时会显示变量未初始化)。

第十题

若所用变量都已正确定义,以下选项中,非法的表达式是()

A---a!=4||b==1

B---'a'%3

C---'a'=1/3

D---'A'+32

正确答案:C

解析:A选项正确,考察运算符的优先级:关系运算符>逻辑运算符;BD选项,当字符型与整型运算时会自动转换成整型,所以BD正确;C选项,'a'是char类型,1/3是int类型。将int赋值给char属于从高向低赋值,所以错误。

全力以赴,奔向远方!向前看吧,别烂在过去和梦里,总有一天你也会是别人翘首以盼的惊喜!

---送给每一位拼搏努力的追梦人

相关推荐
公考指南针15 分钟前
2026常识判断完整备考指南:时政、法律、科技怎么备?粉笔、中公、华图、导氮怎么选?
经验分享·学习
DJ斯特拉24 分钟前
Tlias智能学习辅助系统(前端部分)
前端·javascript·学习
星恒随风25 分钟前
C++ string 类详解:常用接口、OJ 场景与模拟实现中的深浅拷贝
开发语言·c++·笔记·学习·状态模式
searchforAI35 分钟前
2026国产AI笔记工具横评:Get笔记、Ai好记、通义听悟、BiBiGPT各有什么特色?
人工智能·笔记·学习·ai·音视频·知识图谱·知识库
程序喵大人38 分钟前
【C++并发系列】第二章:锁解决了什么问题?
开发语言·c++·并发编程·
天天代码码天天38 分钟前
用 TensorRT 加速 PP-OCR:一套 C++ DLL + C# 调用的高性能 OCR 推理方案
c++·c#·ocr
知识分享小能手1 小时前
Hadoop学习教程,从入门到精通,Flume日志采集系统 — 完整知识点与案例代码(9)
hadoop·学习·flume
我不是懒洋洋1 小时前
从零实现一个分布式链路追踪:TraceId与Span
c++
小雨下雨的雨1 小时前
HarmonyOS ArkUI训练营入门-组件掌握系列-Grid 网格布局深度解析-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
森G1 小时前
78、框架分析------服务器源码解析----云视频服务项目
服务器·c++·qt