C语言程序:交换个位和百位数

需积分: 0 0 下载量 146 浏览量 更新于2024-08-04 收藏 165KB DOCX 举报
"8207191303_胡韵涛1" 这段代码是一个C语言程序,用于寻找特定范围内的三位数,使得该数的各位数字重新排列后得到的新数位于原数的两倍和三倍之间。具体来说,它首先遍历100到299之间的所有整数,然后通过一系列运算找到该数的百位、十位和个位,再构造一个新的数,如果这个新数满足条件(大于原数的两倍且小于原数的三倍),则将其打印出来。 代码首先初始化变量`num`从100开始,利用循环遍历到299。在循环内部,通过一系列取模和除法操作获取数字的各位数字,分别存储在变量`a`、`b`和`c`中。接着,程序构建一个新的数`temp`,它是原数的个位、十位和百位数字对调后的结果。如果`temp`满足条件,就将其打印出来。 为了提高可读性,代码在检查数据部分进行了改进,使用`printf`格式化输出,每打印10个数字换一行,并在最后显示总共找到了多少个满足条件的数字。 在用户交互方面,程序增加了让用户输入搜索范围的功能。用户输入的最小值`min`和最大值`max`会被验证是否在100到999之间,如果不是,程序会提示用户重新输入,直到输入有效为止。 在错误数据测试中,程序遇到了两个问题。第一个问题是当用户输入非整数时,程序出现不明错误。这可能是由于`scanf`函数在处理非整数输入时的行为导致的。为解决此问题,可以将`min`和`max`声明为`float`类型,然后在接收用户输入后进行类型转换。第二个错误测试涉及正确处理浮点数输入,程序成功捕获了浮点数并进行了相应的处理。 最终的完整代码中,`num`、`a`、`b`、`c`和`temp`都是`int`类型,`count`用来计数找到的满足条件的数字,`min`和`max`是`float`类型,用于存储用户输入的范围。程序通过`scanf`接收用户输入,然后进行类型转换和有效性检查,确保输入的范围在100到999之间。当所有条件满足时,程序会执行预期的操作,输出满足条件的三位数及其数量。
2024-10-23 上传