吉林大学2021年C语言题库:日期计算与数组排序算法
173 浏览量
更新于2024-08-04
2
收藏 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 上传
黑色的迷迭香
- 粉丝: 786
- 资源: 4万+
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录