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

【代码的暴力美学】-- C语言基础编程题_1


🔥个人主页:K 旺仔小馒头

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

📖个人专栏:《C语言》《数据结构与算法》《C++知识分享》《C语言实战编程》

⭐️人生格言:‌“何时葡萄先熟透,你要静候再静候”



前言:

欢迎来到C语言实战编程的学习之旅!本文精心挑选了三个经典C语言编程题目,涵盖动态内存、日期处理、数学定理实现等场景,每个题目都配有完整代码与细致解析,助力初学者夯实语法基础、提升逻辑思维。


一. 打印从1到最大的n位数 【难度:入门】

描述

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

1. 用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5

解析:

这里首先要清楚n位数中最大的数字,实际上就是 10^n - 1 。

这个清楚后动态申请空间,将数值填入就可以了,需要注意的是数组下标从0开始,而数值从1开始。

知识点:

       pow函数:是一种用于执行幂运算的函数

      

#include <math.h>
int* printNumbers(int n, int* returnSize) {*returnSize = pow(10, n) - 1;//确定最大的数字int* arr = (int*)malloc(sizeof(int)*(*returnSize));//申请足够大小的空间for(int i = 0;i < *returnSize;i++){arr[i] = i+1;//下标从0开始,而数值从1开始}return arr;
}

二. 计算日期到天数转换【难度:简单】

描述

每一年中都有 12 个月份。其中,1,3,5,7,8,10,12 月每个月有 31 天;4,6,9,11 月每个月有 30 天;而对于 2 月,闰年时有 29 天,平年时有 28 天。
现在,对应输入的日期,计算这是这一年的第几天。

一个年份是闰年当且仅当它满足下列两种情况其中的一种:
  ∙ 这个年份是 4 的整数倍,但不是 100 的整数倍;
  ∙ 这个年份是 400 的整数倍。

输入描述:

在一行上输入三个整数 𝑎,𝑏,𝑐(1900≦𝑎≦2200),分别代表年、月、日。保证输入的日期是合法的。

输出描述:

输出一个整数,代表输入的日期是这一年的第几天。

解析:

1. 数组定义:arr  数组下标从 1 开始,arr[1] 对应1月的天数,arr[2] 对应2月的天数,这样更方便根据月份直接索引。
2. 闰年判断与处理:通过条件  (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)  判断是否为闰年,若是闰年,就将  arr[2](2月)的值改为  29 。
3. 天数累加:使用循环累加从1月到 month - 1 月的天数,然后再加上当月的 day 天,得到输入日期是当年的第几天。
4. 输出结果:最后使用 printf 输出计算得到的天数。

#include <stdio.h>int main() {int year,month,day;scanf("%d %d %d",&year,&month,&day);//数组下标从1开始对应月份,arr[0]无意义,arr[1]对应1月天数,以此类推int arr[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int dayOfYear = 0;//判断是否为闰年,若是则将2月天数改为29if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){arr[2] = 29;}//累加前month - 1个月的天数for(int i = 1;i < month;i++){dayOfYear += arr[i];}//加上当月的天数dayOfYear += day;printf("%d\n",dayOfYear);return 0;
}

三. 尼科彻斯定理【难度:简单】

描述

尼科彻斯定理,又称为斐波那契数列定理,指的是对于任意正整数 𝑛,存在一个由连续奇数组成的数列,使得该数列的和等于 𝑛 的立方。
例如:

∙ 对于 𝑛=1,数列 {1} 的和为  1^3 = 1;
∙ 对于 𝑛=2,数列 {3,5} 的和为 2^3 = 3+5;
∙ 对于 𝑛=3,数列 {7,9,11} 的和为 3^3 = 7+9+11;
∙ 对于 𝑛=4,数列 {13,15,17,19} 的和为 4^3 = 13+15+17+19。

现在,给定一个正整数 𝑛,请输出这个数列中的元素从小到大相加的形式。

如果有多个这样的序列,请输出长度为 𝑛 的那个。

输入描述:

输入一个整数 𝑛(1≦𝑛≦100) 。

输出描述:

在一行上输出一个字符串,用于描述这个数列中的元素从小到大相加的形式。元素与元素之间用加号连接。

解析:

核心逻辑分两步:

1. 复用规律,通过 start = n*(n-1)+1 确定起始奇数(连续奇数公差为2,第i个奇数为 odd = start + 2*i );

2. 简化输出,循环中仅在非首次(i>0)时先印“+”,再印当前奇数,避免格式错误,最后补换行。

知识点:

        

    

在等差数列的通项公式中, a_n  指的是等差数列的第  n  项(也称为第  n  项的数值)。

#include <stdio.h>int main() {int n = 0;scanf("%d",&n);int start = n * (n - 1) + 1;for(int i = 0; i < n; i++){int odd = start + 2 * i;if(i > 0){printf("+");}printf("%d",odd);}printf("\n");return 0;
}

附加知识点:

2. sprintf 函数

与printf用法类似,sprintf是格式化字符串但是不用于打印而是放到一个str中

3. strcat 函数

strcat 是 C 语言标准库 <string.h> 中的字符串拼接函数,用于将一个字符串追加到另一个字符串的末尾。


结语:

希望这三个C语言题目及解析能为你带来收获。从基础语法到实际应用,每一次代码实践都是成长的阶梯。若你在编程路上还有其他疑惑,不妨继续探索,编程的乐趣与进步正藏在每一次思考和调试中。

http://www.dtcms.com/a/418800.html

相关文章:

  • Java 架构师系列:JVM 与 AI 负载的优化策略
  • 数据分析-Excel-常用函数
  • Python 文件操作
  • Java 大视界 -- Java 大数据机器学习模型在电商产品销量预测与库存优化管理中的应用
  • 陕西开龄建设网站浙江省建设厅网站如何查安全员
  • 使用 Jenkins 的流水线项目实施 CI/CD
  • 网站建设平台安全问题有哪些方面做网站自动赚钱吗
  • (八)掌握继承的艺术:重构之路,化繁为简
  • 文成做网站国外网站如何做推广
  • 云栖2025 | 阿里云AI搜索年度发布:开启Agent时代,重构搜索新范式
  • 让每次语音唤醒都可靠,公牛沐光重构可观测体系
  • 黄峥的成功之道:重构电商版图的创新密码
  • 数字大健康崛起:艾灸机器人重构就业生态,传统与科技如何共生?
  • 得物笔试题
  • Xenium空间转录组实战 | Xenium Explorer 多样本拼片拆分 ROI 区域圈选
  • 对称加密和非对称加密算法的区别
  • 下载了模板如何做网站太原seo推广
  • 微算法科技(NASDAQ MLGO)探索全同态加密与安全多方计算融合,开启区块链隐私执行新时代
  • JSNES游戏模拟器在 Node.js 环境下的测试使用及高清显示优化
  • pytest生成测试用例,allure生成测试报告
  • 3ds Max to Unity_Ue桥接工具
  • LeetCode算法日记 - Day 56: 全排列II、话号码的字母组合
  • 天津住房城乡建设厅官方网站常州网站优化
  • 超易用前端使用Canvas海报图片生成器
  • 网站开发配置管理计划wordpress怎安装
  • --group-start/--group-end 能不能解决 OpenSSL 1.0 vs 1.1 的优先级问题?
  • 中国品牌网官方网站甘肃网络推广公司
  • 使用Trae配置MySQL MCP智能体进行数据库
  • RPA:开启数字化办公的新时代
  • 打工人日报#20250928