C语言编程挑战:判断数字与找寻最小最大值

版权申诉
0 下载量 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语言及编程逻辑。