当前位置: 首页 > ai >正文

【C++】笔试强训 第二天

如果你已经对C/C++略知一二,现在正在复习C/C++的一些重点知识

这些看似简单的题目能拿满分吗?

-------------------------------------------------------------------------------------------------------------------------

点赞+收藏🌈,每天更新总结文章(多以图文形式,方便记忆,均为网上搜集资料以及AI)⭐

-------------------------------------------------------------------------------------------------------------------------

时间:2025/5/23/ 20: 41分

-----------------------------------

种一棵树最好的机会是十年前,其次是现在

快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社


一、选择题

1.使用printf函数打印一个double类型的数据,要求:输出为10进制,输出左对齐30个字符,4位精度。以下哪个选项是正确的?

A  %-30.4e
B  %4.30e
C  %-30.4f
D  %-4.30

答案:C

解析:-30 左对齐,.4 小数点后位数 选项 A 的%e是科学计数法格式

2.请找出下面程序中有哪些错误()
int main()
{
int i = 10;
int j = 1;
const int *p1;//(1)int *const p3 = &i;//(4) int const *p2 = &i; //(2) p2 = &j;//(3)*p3 = 20;//(5)*p2 = 30;//(6)p3 = &j;//(7)return 0;
}

A 1,2,3,4,5,6,7

B 1,3,5,6

C 6,7

D 3,5

答案:C

解析:1.const int *p1 和 int const *p1是一致的

           2.const在*号前面代表 指针指向的值不能修改,指针变量本身可以修改

           3.const在*号后面代表 常量指针,指针变量本身不能修改,但指向的值可以修改

3.下面关于此代码叙述错误的是?
char acX[]="abc";
char acY[]={'a','b','c'};
char *szX="abc"; 
char *szY="abc";

A acX与acY的内容可以修改

B szX与szY指向同一个地址

C acX占用的内存空间比acY占用的大

D szX的内容修改后,szY的内容也会被更改

答案:D

解析:1.acX和acY是字符数组,都存储在栈上,可以修改其内容

           2.szX和szY是指向字符串常量的指针,字符串常量存储在只读数据段,多个相同的字 符串可能共享同一块内存地址,这里的修改本身就是错误,只读的

4.在头文件及上下文均正常的情况下,下列代码的运行结果是()
int a[] = {1, 2, 3, 4}; 
int *b = a; 
*b += 2; 
*(b + 2) = 2;
b++; 
printf("%d,%d\n", *b, *(b + 2));

A 1,3

B 1,2

C 2,4

D 3,2

答案:C

解析:这个就不用了把...

5.下列关于C/C++的宏定义,不正确的是()

A 宏定义不检查参数正确性,会有安全隐患

B 宏定义的常量更容易理解,如果可以使用宏定义常量的话,要避免使用const常量

C 宏的嵌套定义过多会影响程序的可读性,而且很容易出错

D 相对于函数调用,宏定义可以提高程序的运行效率.

答案:B

解析:1.宏定义不进行类型检查,可能导致意外错误

           2.宏定义常量没有类型信息,且在预处理阶段直接替换,调试和维护困难

              现代C++推荐使用const定义常量

6.有以下定义:
int a[10]; char b[80];
函数声明为: void sss(char[],int[]);
则正确的函数调用形式是()

Asss(a,b); 

B sss(char b[],int a[]);

C sss(b[],a[]);

D sss(b,a);

答案:D

解析:基础知识,注意形参实参顺序

7.用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数()

A int *a[10];

B int (*a)[10];

C int (*a)(int);

D int (*a[10])(int);

答案:D

解析:1.优先级:[] 高于 *,因此a[10]表示数组,*a[10]表示指针数组。

    2.(*a[10]) 表示这是一个指针数组,每个元素是指针。

    3.(*a[10])(int) 表示这些指针指向函数,函数参数为int

    4.int (*a[10])(int) 表示函数返回值为int

8.以下 C++ 函数的功能是统计给定输入中每个大写字母的出现次数(不需要检查输入合法性,所有字母都为大写),则应在横线处填入的代码为()
void AlphabetCounting(char a[], int n) {
int count[26] = {}, i, kind = 10;
for (i = 0; i < n; ++i) ________________;
for (i = 0; i < 26; ++i) { printf("%c=%d", _____, _____);
}
}

A ++count[a[i]-'Z']   'Z'-i   count['Z'-i]

B ++count['A'-a[i]]   'A'+i   count[i]

C ++count[i]   i   count[i]

D ++count['Z'-a[i]]   'Z'-i   count[i]

答案:D

解析:1.count数组中,count[0]存储‘A’的次数 依次类推

           2.‘Z’-i对应每一个字母

9.在32位cpu上选择缺省对齐的情况下,有如下结构体定义:    
struct A{unsigned a : 19;unsigned b : 11;unsigned c : 4;unsigned d : 29;char index;};

则sizeof(struct A)的值为()

A 9

B 12

C 16

D 20

答案:C
解析:

10.下面代码会输出()
 int main(){int a[4]={1,2,3,4};int *ptr=(int*)(&a+1);printf("%d",*(ptr-1));}

A 4

B 1

C 2

D 3

答案:A

解析:&a+1代表直接跳过整个数组的下一个位置,ptr-1往前走一步4字节 回到数组末尾

二、编程题

1.题目链接:排序子序列_牛客笔试题_牛客网

思路讲解:

  1. 题目我们先来看下,非递增和非递归的意思就是递增 递减 加上相等的条件
  2. 122就是非递减  221就是非递增 只是增加了一个如果相等的条件
  3. 这个题 我们直接循环就行了,不断判断,如果不满足则记录一个count变量++;count就是最后的个数
#include <iostream>
#include <vector>
using namespace std;
int main()
{int n;while(cin >> n){if (n == 1) // 单个直接处理{cout << 1 << endl;continue;}vector<int> nums(n, 0);for (int i = 0; i < n; i++) cin >> nums[i];int i = 0, res = 0;while(i + 1 < n) {if (nums[i] < nums[i + 1])// 非递减子序列{while(i + 1 < n && nums[i] <= nums[i + 1]) i++;res++, i++;// i++过掉当前子序列的最后一个。if (i == n - 1) res++, i++;// 恰好只剩一个数字}else if (nums[i] == nums[i + 1]) i++;else // 非递增子序列{while(i + 1 < n && nums[i] >= nums[i + 1]) i++;res++, i++;if (i == n - 1) res++, i++;// 恰好只剩一个数字}}cout<< res << endl;}return 0;
}
// 64 位输出请用 printf("%lld")

2.题目链接 倒置字符串_牛客题霸_牛客网

思路讲解:

  1. 题目比较简单,直接说明
  2. 先对整个字符串逆置,然后再对符合条件的子字符串逆置,空格不用动
    #include <iostream>
    #include <string>
    #include <algorithm> 
    using namespace std;int main()
    {string s;getline(cin,s);//1、进行整体的逆置 -》gnijieb ekil Ireverse(s.begin(),s.end());auto start = s.begin();while(start != s.end()) {auto end = start;while(end != s.end() && *end != ' ') {end++;}reverse(start,end);if(end != s.end()) {start = end+1;}else{start = end;}}cout<<s<<endl;
    }

⭐加油,为了更好的明天!

种一棵树最好的机会是十年前,其次是现在

 

http://www.xdnf.cn/news/8394.html

相关文章:

  • Github 2025-05-23 Java开源项目日报 Top10
  • mysql语句执行流程
  • LeetCode Hot100(字串)
  • 电子电路:深入理解电磁耦合的定义与应用
  • 5.2.2 使用注解方式整合MyBatis
  • 树莓派内核源码的下载,配置,编译和替换
  • 【mysql】mysql的高级函数、高级用法
  • AI编辑器规则
  • LeRobot 框架的开发指南 (上)
  • 【【嵌入式开发 Linux 常用命令系列 19 -- linux top 命令的交互使用介绍】
  • Vue常用自定义指令-积累的魅力【VUE】
  • DETR3D- 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 展锐 Android 15 锁定某个App版本的实现
  • OpenGL ES 基本基本使用、绘制基本2D图形
  • DDS compiler(6.0) IP核配置与使用教程
  • 基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(五)
  • 【数据架构05】数据要素架构篇
  • 二、OpenCV图像处理-几何变换
  • 服务接口鉴权与内部认证:自定义注解与AOP实现的企业级实践
  • Android 14 Binderized HAL开发实战指南(AIDL版)
  • StringBuilder 和 StringBuffer 的线程安全分析
  • maven添加自己下载的jar包到本地仓库
  • Python字典的工作原理:深入理解哈希表实现
  • Redis主从+哨兵+集群分片
  • 回溯算法:解锁多种问题的解决之门
  • 利用Qt绘图随机生成带多种干扰信息的数字图片
  • Lavavel学习笔记(Eloquent ORM/Swoole 定时任务)
  • Logback 在 Spring Boot 中的详细配置
  • 【深尚想!爱普特APT32F1023H8S6单片机重构智能电机控制新标杆】
  • PostgreSQL 软件升级