当前位置: 首页 > 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.dtcms.com/a/338141.html

相关文章:

  • 氯化铈:绿色科技的推动力
  • Tomcat Context的核心机制
  • LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测)
  • 【Goland】:Map
  • Golang資源分享
  • 第一阶段C#基础-13:索引器,接口,泛型
  • 线性调频信号(LFM)在雷达中的时域及频域MATLAB编程
  • 基于SFM的三维重建MATLAB程序
  • 分析慢查询
  • PPIO Agent沙箱:兼容E2B接口,更高性价比
  • 【DL学习笔记】损失函数各个类别梳理
  • STM32使用WS2812灯环
  • 中科米堆CASAIM自动蓝光三维测量系统检测金属结构零件尺寸
  • 机器学习项目分享之实现智能的矿物识别系统(一)
  • 浅析容器运行时
  • 【网络安全实验报告】实验八:社会工程学实验
  • 3.2 结构化输出简介
  • 常见的排序算法
  • 【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
  • 免费又强大的 PDF 编辑器 ——PDF XChange Editor
  • c++之static和const
  • Python实战--基于Django的企业资源管理系统
  • 基于KubeSphere的Kubernetes生产实践之路-起步篇
  • K8s部署java程序
  • 数据清洗(Data Cleansing)新手教学简单易懂(缺失值、异常值、重复数据、不一致数据、格式问题),附实战案例
  • php8.+ 新函数总结
  • 了解Arthas-7788
  • GO学习记录六——集成Swagger接口测试页面
  • Three.js 坐标系系统与单位理解教程
  • 安装pnpm i -D @types/wechat-miniprogram报错,版本不匹配