C语言编程,输入数据后没有反应

#includeint fun(int a, int b, int m);int main(){ int a, b, i, j , r[1000] = {0}; printf("输入a和b且a

在你的代码基础上改了,见下面代码,并且也格式化了。 注意下次用代码块贴出来代码
没有结果是因为这句话 for (i = 0, j = a; i <= (b-a); j++) 无限循环了,
因为i是要求的符合要求的个数,b-a只是差值。结合在fun里面对循环的判断,i基本不会到达b-a的值,只有b刚好满足条件才可能达到退出循环
其它还有多处错误,下面都标出来了

#include<stdio.h>
int fun(int a, int b, int m);
int main()
{
    int a, b, i, j , r[1000] = {0};
    printf("输入a和b且a<b\n");
    scanf("%d%d", &a, &b);
    for (i = 0, j = a; j <= b; j++) /*i <= (b - a) 改成 j <= b, 不然无限循环了出不了结果,因为i是要求的总个数可能永远到不了b-a的值*/
    {
        int judge = fun(a, b, j);
        if (judge== 0) { continue; }
        if (judge== 1) { r[i] = j; i++; }
    }
    for (j = 0; j < i; j++) { /*for (i = 0; i < (b - a); i++) 改成 j = 0; j < i; j++, 因为这里的i是总个数,在赋值i=0就错了*/
        printf("%d ",r[j]);
    }
    //printf("%d\n", r[i]); /*删除*/
    return 0;
}

int fun(int a,int b,int m) /*fun函数可以改成 int fun(int m)就行了*/
{
    int x = m,judge=0; /*x=a 改成 x=m*/
    //for (; x <= b; x++) {/*删除*/
        if ((x % 7 == 0 && x % 11 != 0) || (x % 7 != 0 && x % 11 ==0)) judge = 1;
        else judge = 0;
    //}/*删除*/
    return judge;
}

别这么贴代码,没法看啊。用代码块贴出来
你的函数不对,函数只用对m是否满足条件进行判断,不要a到b循环。这个循环在主函数里写了啊

#include <stdio.h>

int fun(int m);
int main()
{ 
    int a, b, i, j=0,r[1000]; 
    printf("输入a和b且a<b\n"); 
    scanf("%d%d", &a, &b); 
    for (i = a;i<=b;i++) 
    { 
        if(fun(i) == 1)
            r[j++] = i;
    } 
    for(i=0;i<j-1;i++)
        printf("%d ",r[i]);
    printf("%d",r[i]);
    return 0;
}
int fun(int m)
{ 
    if ((m % 7 == 0 && m % 11 != 0) || (m % 7 != 0 && m % 11 ==0)) 
        return 1;
    return 0;
}

题目是啥,找a,b区间内能被7整除不能11整除的或者11整除不能7整除个数吗,还是从a开始找b-a个这样的数
(1)第一种理解 找a和b之间的被7整除不能11整除的或者11整除不能7整除数据

#include<stdio.h>
int fun(int a);
int main()
{ 
    int a, b, i, j , r[1000] = {0}; 
    printf("输入a和b且a<b\n"); 
    scanf("%d%d", &a, &b); 
    for (i = 0, j = a; j <= b; j++) 
    { 
        int judge = fun(j); 
        if (judge== 0) 
        { continue; } 
        if (judge== 1) 
        { 
            r[i] = j; 
            i++; 
        } 
    } 
    for (j = 0; j < i; j++) 
    { printf("%d ",r[j]); } 
    printf("\n"); 
    return 0;
}
int fun(int a)
{ 
    int judge=0; 
    if ((a % 7 == 0 && a % 11 != 0) || (a % 7 != 0 && a % 11 ==0)) 
    judge = 1; 
    else 
    judge = 0; 
    
    return judge;
}

(2)第二种理解,从a开始,找(b-a)个符合要求的数据并输出

#include<stdio.h>
int fun(int a);
int main()
{ 
    int a, b, i, j , r[1000] = {0}; 
    printf("输入a和b且a<b\n"); 
    scanf("%d%d", &a, &b); 
    for (i = 0, j = a; i < (b - a);j++) 
    { 
        int judge = fun(j); 
        if (judge== 0) 
        { continue; } 
        if (judge== 1) 
        { r[i] = j; i++; } 
    } 
    for (i = 0; i < (b - a); i++) 
    { printf("%d ",r[i]); } 
    printf("\n"); 
    return 0;
}
int fun(int a)
{ 
    int judge=0; 
    if ((a % 7 == 0 && a % 11 != 0) || (a % 7 != 0 && a % 11 ==0)) 
    judge = 1; 
    else 
    judge = 0; 
    
    return judge;
}

要养成代码加注释的习惯,否则很难协作做大项目