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

【C语言16天强化训练】从基础入门到进阶:Day 2


🔥个人主页:艾莉丝努力练剑

❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题、洛谷刷题、C/C++基础知识知识强化补充、C/C++干货分享&学习过程记录

🍉学习方向:C/C++方向

⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平

前言:距离学完C语言已经过去一段时间了,在学习了初阶的数据结构之后,博主要更新的内容是C语言16天强化训练,之前博主更新过一个【C语言刷题12天IO强训】的专栏,那个是从入门到进阶的IO模式真题的训练。今天依然是训练五道选择题和两道编程算法题,希望大家能够有所收获!



目录

正文

一、五道选择题

1.1  题目1

1.2  题目2

1.3  题目3

1.4  题目4

1.5  题目5

二、两道算法题

2.1  尼科彻斯定理

题目理解:

2.2  等差数列

题目理解:

结尾


正文

一、五道选择题

1.1  题目1

题干:以下程序段的输出结果是( )

#include<stdio.h>
int main()
{char s[] = "\\123456\123456\t";printf("%d\n", strlen(s));return 0;
}

A. 12     B. 13     C. 16     D. 以上都不对

解析:主要注意以下这几个点——

(1)\\ 是一个转义字符,表示一个反斜\字符;

(2)\123(\ddd)是一个八进制转义字符,\123表示ASCII码值为83的字符('S');

(3)\t 是一个转义字符,“tab对齐”,表示制表符。

这样一来实际上就只有\ddd,1,2,3,4,5,6,S,4,5,6,\t 这12个字符啦。

1.2  题目2

题干:若有以下程序,则运行后的输出结果是( )

#include <stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{printf("%d\n", NUM);return 0;
}

A. 4      B. 8      C. 9      D. 6

解析:这道题非常简单,我们之间展开宏,宏展开后为((N+1)+1)*(N+1)/2,我们再代入N=2,我们得到((2+1)+1)*(2+1)/2,即D

1.3  题目3

题干:如下函数的 f(1) 的值为( )

int f(int n)
{static int i = 1;if(n >= 5)return n;n = n + i;i++;return f(n);
}

A. 5     B. 6     C. 7     D. 8

解析:这道题中的递归过程是f(1)->f(2)->f(4)->f(7),当n=7的时候,满足n>=5,返回7。

因为每次n=n+i,i++,在函数递归调用f(n),最终结果就是返回7。static int i 在递归过程中会持续累加(每次调用i++),递归终止条件是n >= 5,最后一次返回的是n = 7选择C

1.4  题目4

题干:下面3段程序代码的效果一样吗( )

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

A. (2)=(3)     B. (1)=(2)     C. 都不一样     D. 都一样

解析:(1)const int *a = &b;(2)int const *a = &b;等价,即指针指向的int是常量;而(3)int *const a = &b;是指针本身变成了常量,两者效果不一样。即一个选择B. (1)=(2)。 

1.5  题目5

题干:对于下面的说法,正确的是( )

A. 对于 struct X{short s;int i;char c;},sizeof(X)等于sizeof(s) + sizeof(i) + sizeof(c)

B. 对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零

C. 初始化方式 char a[14] = "Hello, world!"; 和char a[14]; a = "Hello, world!";的效果相同

D. 以上说法都不对

解析:A选项错误——结构体有内存对齐,B选项错误——浮点数直接比较不精确,C选项错误——数组不能直接赋值字符串,排除法,我们选择D. 以上说法都不对

选择题答案如下:

1.1  A

1.2  D

1.3  C

1.4  B

1.5  D

大家都做对了吗?

二、两道算法题

2.1  尼科彻斯定理

题目链接:HJ76 尼科彻斯定理

题目描述:

题目理解:

对任意正整数 n,输出由 n 个连续奇数组成的数列,其和等于 n 的立方。数列元素用加号连接。

这道题也是IO型的,下面是C语言的模版(IO型就不用管它们了)——

代码演示:

#include <stdio.h>int main() 
{int n;scanf("%d", &n);int start = n * n - n + 1; // 计算起始奇数for (int i = 0; i < n; i++) {printf("%d", start + 2 * i); // 输出当前奇数if (i < n - 1) {printf("+"); // 非最后一个元素时输出加号}}printf("\n");return 0;
}

这道题是C语言中一道比较经典的题目。

时间复杂度O(n)

空间复杂度O(1)

我们如果学习了C++也可以尝试用C++实现一下——

#include <iostream>
using namespace std;int main() 
{int n;while (cin >> n) { // 处理多组输入int start = n * n - n + 1; // 计算起始奇数for (int i = 0; i < n; i++) {cout << start + 2 * i;  // 输出当前奇数if (i < n - 1) {cout << "+";        // 非最后一个元素时输出加号}}cout << endl;               // 这里要记得换行}return 0;
}

时间复杂度:O(n),空间复杂度:O(1)

这个目前要写出来非常考验C++的学习情况,大家可以尝试去写一写,优先掌握C语言的写法,博主还没有介绍C++的算法题,之后会涉及的,敬请期待!

2.2  等差数列

题目链接:HJ100 等差数列

题目描述:

题目理解:

本题就是要求计算首项为2,公差为3的等差数列前n项的和。

这道题也是IO型的,下面是C语言的模版(IO型就不用管它们了)——

代码演示:

#include <stdio.h>int main() 
{int n;scanf("%d", &n);int sum = n * (2 * 2 + (n - 1) * 3) / 2; // 等差数列求和公式printf("%d\n", sum);return 0;
}

这道题是C语言中一道比较经典的题目。

当然博主还有一个更加简单的解法,这个解法大家理解起来就简单了——

#include <stdio.h>int main()
{int n = 0;scanf("%d", &n);int Sn = n * (2 + 3 * n - 1) / 2;printf("%d", Sn);return 0;
}

我们如果学习了C++也可以尝试用C++实现一下——

#include <iostream>
using namespace std;int main() 
{int n;while (cin >> n) { // 处理多组输入int sum = n * (2 * 2 + (n - 1) * 3) / 2; // 等差数列求和公式cout << sum << endl;}return 0;
}

时间复杂度:O(1);

空间复杂度:O(1)。

目前要写出来C++的写法是比较考验前面C++的学习情况的,当然大家可以尝试去写一写,优先掌握C语言的写法,博主还没有介绍C++的算法题,之后会涉及的,敬请期待!


结尾

往期回顾:

【C语言16天强化训练】从基础入门到进阶:Day 1

结语:感谢大家的阅读,记得给博主“一键四连”,感谢友友们的支持和鼓励!

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

相关文章:

  • 基于ssm jsp中学校园网站源码和答辩PPT论文
  • 深入解析StatefulSet与K8s服务管理
  • 解锁 JavaScript 高级技能:从基础到实战的进阶指南
  • 【案例】ECharts 环形图中心下移后,如何保持中间图片和文案居中
  • 20250818在荣品的PRO-RK3566开发板跑Buildroot的时候使用在线秒表https://tool.hiofd.com/stopwatch/
  • 决策树:机器学习中的强大工具
  • 机器学习(决策树)
  • VLN视觉语言导航(3)——神经网络的构建和优化 2.3
  • 理解AQS的原理并学习源码
  • 大厂 | 华为半导体业务部2026届秋招启动
  • Spark 运行流程核心组件(三)任务执行
  • 【lucene】tip文件详解
  • 08.常见文本处理工具
  • 基于Spring Boot+Vue的社区便民服务平台 智慧社区平台 志愿者服务管理
  • 咨询进阶——解读咨询顾问技能模型
  • QT 字节大小端转序方法
  • axure chrome 浏览器插件的使用
  • kafka的pull的依据
  • 关系型数据库与非关系型数据库
  • 冒泡排序——简单理解和使用
  • 嵌入式第三十一天(线程间的机制,IPC机制)
  • JAVA经典面试题:数据库调优
  • rust 从入门到精通之变量和常量
  • 从 ORA-12703 到顺利入库:Go + Oracle 11g GBK 字符集踩坑记20250818
  • [免费]基于Python的全国气象数据采集及可视化大屏系统(Flask+request库)【论文+源码+SQL脚本】
  • elasticsearch-集成prometheus监控(k8s)
  • 【LeetCode题解】LeetCode 74. 搜索二维矩阵
  • 【深度长文】Anthropic发布Prompt Engineering全新指南
  • IDE开发系列(2)扩展的IDE框架设计
  • 【音视频】瑞芯微、全志芯片在运动相机和行车记录仪产品分析