用c语言写一个编程要求从键盘输出两个正整数m和n,输出m~n之间(包括m和n)能被3整除且至少有一位数字是5的所有整数。每行输出3个数据,数据之间用制表符分隔。
时间: 2024-11-13 20:18:23 浏览: 4
在C语言中,可以使用循环和条件判断来实现这个需求。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h> // 引入字符串库获取strlen函数
void print_numbers(int m, int n) {
for (int i = m; i <= n; ++i) {
char str[10]; // 存储每一位的字符
sprintf(str, "%d", i); // 将数值转换成字符串
// 检查每一位是否有数字5,并且整个数能被3整除
bool has_five = false;
for (int j = 0; j < strlen(str); ++j) {
if (str[j] - '0' == 5) { // 对比ASCII码值,找到5对应的数字
has_five = true;
break;
}
}
if (i % 3 == 0 && has_five) {
// 输出3个连续的数字,每行三个
if ((i - m) % 3 == 0) { // 首次输出
for (int k = 0; k < 3; ++k) {
printf("%d\t", i++);
if (k == 2 || (i - m) % 3 != 0) { // 每行输出完或下一个3的倍数才换行
printf("\n");
}
}
} else { // 已经输出过,继续当前行
printf("%d\t", i);
}
}
}
}
int main() {
int m, n;
printf("请输入两个正整数m和n,用空格分隔:");
scanf("%d %d", &m, &n);
print_numbers(m, n);
return 0;
}
```
注意:这个程序假设输入的m和n都是正整数,并且不会太大导致内存溢出。
阅读全文