C语言函数体C语言函数体

编写函数,求出m个能被3、5或7整除、但不能被其中两个同时整除的所有整数从小到大放在数组中。在main函数中验证。要求: m在main函数中由键盘输入,数组在main函数中输出。

#include <stdio.h>

int specialNum(int num1, int num2, int num3, int upperBound, int arr[]) {
    int i, j = 0;
    for (i = 1; i <= upperBound; i++) {
        if ((i % num1 == 0 || i % num2 == 0 || i % num3 == 0)
            && !(i % num1 == 0 && i % num2 == 0)
            && !(i % num1 == 0 && i % num3 == 0)
            && !(i % num2 == 0 && i % num3 == 0)) {
            arr[j++] = i;
        }
    }
    return j;
}

int main() 
{
    int m, i, length;
    int num1 = 3, num2 = 5, num3 = 7;
    int arr[100];
    scanf("%d", &m);
    length = specialNum(num1, num2, num3, m, arr);
    for (i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

#include <stdio.h>

void findNum(int m, int arr[]) {
    int count = 0;
    for (int i = 1; count < m; i++) {
        if ((i % 3 == 0 || i % 5 == 0 || i % 7 == 0) && !(i % 3 == 0 && i % 5 == 0) && !(i % 3 == 0 && i % 7 == 0) && !(i % 5 == 0 && i % 7 == 0)) {
            arr[count] = i;
            count++;
        }
    }
}

int main() {
    int m;
    printf("请输入m的值:");
    scanf("%d", &m);
    int arr[m];
    findNum(m, arr);
    printf("符合条件的数为:");
    for (int i = 0; i < m; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^