C语言编程挑战:判断数字与找寻最小最大值
版权申诉
58 浏览量
更新于2024-07-17
收藏 988KB PDF 举报
"啊哈C语言 第12讲 逻辑挑战二:3个数怎么办.pdf"
在本讲中,我们关注的是C语言中的逻辑问题和基本操作。首先,给出的示例程序旨在检测输入的整数是否是7的倍数或者以7结尾。以下是程序的修正版:
```c
#include<stdio.h>
int main() {
int a;
scanf("%d", &a);
// 使用等号(==)进行比较,而非赋值(=)
if ((a % 7 == 0) || (a % 10 == 7)) {
printf("yes\n");
} else {
printf("no\n");
}
// 使用正确拼写的printf,而非prinf
system("pause");
return 0;
}
```
在原始代码中,存在以下几个错误:
1. 在条件语句`if(a%7=0|a%10=7);`中,应该使用等号`==`进行比较,而不是赋值运算符`=`.
2. `|`是位运算符,这里应使用逻辑或`||`。
3. `if`后的条件应该包含在括号内以确保正确的逻辑。
4. `else`后的`prinf("no")`应该是`printf("no\n")`,注意`f`和`n`的拼写。
5. 结束语句分号`;`在`if`和`else`后面是不必要的。
接下来,我们探讨了几个逻辑挑战:
1. **找出三个整数中的最小值**:可以使用三元运算符或嵌套的`if`语句来实现。例如,如果`a <= b && a <= c`,那么`a`是最小的。通过比较`b`和`c`,我们可以找到其他两个数的较小者。
```c
int min = (a <= b) ? ((a <= c) ? a : c) : ((b <= c) ? b : c);
printf("The minimum number is: %d\n", min);
```
2. **找出四个整数中的最大值**:类似地,可以使用类似的方法找到最大值。首先比较前两个数,然后将较大的数与第三个数比较,最后将结果与第四个数比较。
```c
int max = (a >= b) ? ((a >= c) ? ((a >= d) ? a : d) : ((c >= d) ? c : d)) : ((b >= c) ? ((b >= d) ? b : d) : ((c >= d) ? c : d));
printf("The maximum number is: %d\n", max);
```
3. **判断闰年**:根据闰年的规则,年份能被4整除但不能被100整除,或者能被400整除的都是闰年。
```c
int year;
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("yes\n");
} else {
printf("no\n");
}
```
此外,提到了几本关于C语言入门的书籍,包括《啊哈C!思考快你一步》、《啊哈C语言!逻辑的挑战(修订版)》、《啊哈!算法》等,这些书籍可以帮助初学者深入理解和掌握C语言及编程逻辑。
dllglvzhenfeng
- 粉丝: 1w+
- 资源: 1919
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析