“上升数”是指右边数字都比左边数字大的自然数。 例如123,右边的数字都大于左边。 输入两个正整数,a和b(且保证a < b),输出a和b之间(包括a和b在内)的所有“上升数”。C语言
时间: 2024-10-23 10:18:20 浏览: 118
javascript验证只能输入数字和一个小数点示例
在C语言中,要生成并输出给定范围内(从a到b,包含a和b)的上升数,可以采用递归或循环的方式。这里给出一个使用循环的解决方案:
```c
#include <stdio.h>
// 函数定义,用于检查一个数是否为上升数
int is_upward(int num, int prev) {
if (num == 0 || prev > num) {
return 0; // 如果当前数为0或左侧数字大于右侧,不是上升数
}
return 1; // 否则,只要上一位小于当前位就是上升数
}
// 主函数,生成并输出上升数
void print_rising_numbers(int start, int end) {
for (int i = start; i <= end; ++i) {
if (is_upward(i, (i / 10))) { // 检查每一位是否比上一位大
printf("%d ", i);
}
}
printf("\n");
}
int main() {
int a, b;
// 输入a和b
scanf("%d %d", &a, &b);
// 确保a < b
if (a >= b) {
printf("Invalid input! a should be less than b.\n");
return 0;
}
// 输出a到b之间的上升数
printf("Rising numbers between %d and %d are:\n", a, b);
print_rising_numbers(a, b);
return 0;
}
```
这个程序首先定义了一个辅助函数`is_upward`检查一个数是否为上升数。然后,在主函数中,通过一个循环遍历范围内的每个数字,并利用`is_upward`函数判断是否符合条件。最后,将满足条件的上升数输出。
阅读全文