编写函数,求出m个能被2、3或5整除,但不能被其中两个同时整除的所有整数,从大到小存放在数组中。在main函数中验证。要求:m在main函数中由键盘输入,数组在main函数中输出。用c语言写
时间: 2024-09-12 15:06:19 浏览: 46
C语言程序设计-编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0
5星 · 资源好评率100%
在C语言中,你可以创建一个函数`generate_numbers(int m)`来生成并返回这些符合条件的整数,并在`main()`函数中处理用户输入的`m`值以及输出数组。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
int* generate_numbers(int m);
// 主函数
int main() {
int m;
// 输入m的值
printf("请输入你要找的数量(m): ");
scanf("%d", &m);
// 检查输入是否有效
if (m <= 0) {
printf("错误:m必须大于0.\n");
return 1;
}
// 生成并分配内存给结果数组
int* result = generate_numbers(m);
// 验证生成的数字
for (int i = 0; i < m; i++) {
if (result[i] % 2 == 0 && result[i] % 3 == 0 && result[i] % 5 == 0) {
printf("Number %d is divisible by both 2 and 3, skipping.\n", result[i]);
} else if (result[i] % 2 == 0 || result[i] % 3 == 0 || result[i] % 5 == 0) {
printf("%d ", result[i]); // 输出符合条件的数字
}
}
// 释放内存
free(result);
return 0;
}
// 生成函数
int* generate_numbers(int m) {
int* numbers = malloc(sizeof(int) * m); // 分配内存
int count = 0;
for (int i = (int)pow(10, m); i >= 1; i--) { // 从最大可能的数字开始向下遍历
if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0) {
numbers[count++] = i; // 如果满足条件,将数字放入数组
if (count == m) break; // 当达到所需数量时停止
}
}
return numbers;
}
```
阅读全文