吉林大学2021年C语言题库:日期计算与数组排序算法
64 浏览量
更新于2024-08-04
3
收藏 156KB DOCX 举报
本资源是一份2021年吉林大学C语言题库文档,包含了两个部分:程序填空和程序改错。以下是对这两个部分知识点的详细解析:
**程序填空**
这部分代码旨在实现一个计算给定日期是当年第几天的功能。首先,定义了一个名为`date`的结构体,包含年(y)、月(m)和日(d)三个成员。然后,通过`scanf`函数获取用户输入的年、月、日。
- `f` 变量用于判断是否为闰年,根据闰年的规则(每4年一闰,但百年不闰,四百年再闰),这里使用条件运算符 (`?`) 进行逻辑判断。闰年条件为:`da.y % 4 == 0 && (da.y % 100 != 0 || da.y % 400 == 0)`。
- 接下来,检查月份是否合法,`if` 语句中使用了另一个逻辑运算符 (`?`),当`da.m < 1` 或者`da.d > 12` 时,程序会退出。闰年情况下,二月的天数可能会增加1天,所以`a[11]` 会被加上闰年修正值`f`。
- 最后,通过`for`循环计算到给定日期之前的总天数(`n`),`p` 从1开始,逐月累加前一个月的天数。循环结束后,`n` 就是目标日期是当年的第几天,输出结果为`n`。
**程序改错**
这部分题目要求编写一个名为`fun`的函数,接收用户输入的三个数,将其中最大的数存入`a`,中间的数存入`b`,最小的数存入`c`。这是一个基础的数组排序和变量交换问题。然而,题目没有给出完整的函数实现,但可以推测函数可能包含如下步骤:
1. 初始化`a`、`b`、`c`为用户输入的第一个数;
2. 遍历剩下的两个数,每次遍历时与当前`a`、`b`、`c`进行比较,更新相应的变量;
3. 遍历结束后,`a`、`b`、`c`将分别存储最大、中间和最小的数。
正确实现可能如下:
```c
double fun(int num1, int num2, int num3) {
double a = num1, b = num2, c = num3;
if (num1 > num2) {
if (num1 > num3)
a = num1;
else
c = num1;
} else {
if (num2 > num3)
b = num2;
else
c = num2;
}
// 同理处理num2与num3之间的关系
return a, b, c;
}
```
通过调用这个函数并传入三个整数,即可得到预期的结果。注意,这个函数返回的是三个值,而不是直接修改原始参数,这与题目描述中的“把……放在……中”略有出入,但根据一般习惯,这种设计更常见。
2022-07-11 上传
2022-07-03 上传
黑色的迷迭香
- 粉丝: 800
- 资源: 4万+
最新资源
- 几乎所有的findIndex练习:Springboard软件工程职业生涯跟踪子单元8.2的练习
- pyg_lib-0.2.0+pt20cpu-cp310-cp310-linux_x86_64whl.zip
- Gravity-Game
- LiveCue-开源
- shield-db::shield_selector:Shield DB,Dot Shield使用的广告和跟踪器的数据库
- swift-boilerplate:使用文件和项目模板节省创建Swift应用程序的时间
- espriturc:预订土耳其语课程的网站
- ANNOgesic-0.7.29-py3-none-any.whl.zip
- angular-remove-diacritics:角度服务可消除字符串中的重音符号
- 减去图像均值matlab代码-PCA-Image-Compression:PCA-图像压缩
- test-msw
- chipster-web
- smart-contract-tutorial:该存储库包含我们的文章https中使用的完整代码
- xderm-mini
- Inventory_management:Etsy小型企业的库存管理
- HFTuner:免提吉他调音器!