c语言数组题,慕课不给过,孩子真的不知道问题在哪儿了

生成指定的数列
题目内容:
编写程序:编写函数fun,求出a到b之内能被7或者11整除,但不能同时被7和11整除的所有正数,并将他们放在数组中,函数返回这些数的个数。编写main函数,定义一个整型数组,可容纳1000个元素,定义整型变量a,b,输入a,b的值(输入时a小于等于b)并调用函数fun进行求解,最后在main函数中输出所有符合条件的元素。
提示: fun的函数原型为: int fun(int a,int b,int r[ ] ); 其中的r用于存放a,b之间满足条件的所有元素
输入格式:
输入表示范围的两个整数a和b(a<b)
scanf的格式控制串为 "%d%d"

输出格式:
输出满足条件的所有元素
输出每个元素时用格式串"%d", 不同元素间以一个空格分隔,但是最后一个元素之后没有空格,输出后直接换行

输入样例:
1 20

输出样例:
7 11 14

#include<stdio.h>
int fun(int a,int b,int r[]);
int main()
{
int r[1000];
int a,b,k,d;
do
{
scanf("%d%d",&a,&b);
getchar();
}while(a>=b);
d=fun(a,b,r);
for(k=0;k<d;k++)
{
printf("%d",r[k]);
if(k!=(d-1))
{printf(" ");}
else
{printf("\n");}
}
getchar();
return 0;

}

int fun(int a,int b,int r[])
{
int i,count=0,j=0;
for(i=(a+1);i<b;i++)

{
    if((i%7==0||i%11==0)&&i>0)
        {    
            if(i%7==0&&i%11==0)
            {break;}
            r[j]=i;
            j++;
            count++;
        }
}
return count;

}

逻辑有问题
仅供参考,谢谢!

img

img

img

#include <stdio.h>

//这里a与b之间包括a或b的,如果是其它情况可自行更改
int fun(int a, int b, int r[])
{
    int j = 0, i, sum = 0;
    
    for (i = a; i <= b; i++)
    {
        if ((i % 7 == 0 && i % 11 != 0) || (i % 7 != 0 && i % 11 == 0))
        {
            sum++;
            r[j++] = i;
        }
    }

    return sum;
}

int main(int argc, char *argv[])
{
    int a, b, n;
    int r[1000];

    do
    {
        scanf("%d%d", &a, &b);
    } while (a > b || a < 0 || b < 0);

    n = fun(a, b, r);

    for (int i = 0; i < n - 1; i++)
    {
        printf("%d ", r[i]);
    }
    printf("%d\n", r[n - 1]);

    return 0;
}

第8行
scanf("%d%d",&a,&b);
两个%d之间有空格啊