C语言编程挑战:判断数字与找寻最小最大值
版权申诉
36 浏览量
更新于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语言及编程逻辑。
2021-09-16 上传
2021-09-16 上传
2021-09-16 上传
2021-09-16 上传
2021-04-08 上传
2021-09-16 上传
2021-09-16 上传
dllglvzhenfeng
- 粉丝: 1w+
- 资源: 1931
最新资源
- RSVP协议的多媒体综合服务机制研究
- 计数器实验——数字电路实验
- VB入门教程.asp.doc(入门级哦)
- 51单片机C语言入门教程.pdf
- 46家各大公司笔试题
- JavaScript DOM 编程艺术.pdf
- Keil uv3快速入门.pdf
- 微控制器 (MCU) 破解秘笈之中文有删节版
- GIVEIO IO驱动的源代码
- 微软应用程序架构指南
- C#串口操作串口操作串口操作
- fsadfdsaarkdffasdfdggdd桌面\C++ STL使用手册.pdfASP.NET新闻、论坛、电子商城、博客源码 很经典的php面向对象教程
- C语言上机南开100题(2009年终结修订word版)
- 软件界面设计及编码标准规范
- 总线的简单项排球介绍
- Gzip压缩.docx