#include
在你的代码基础上改了,见下面代码,并且也格式化了。 注意下次用代码块贴出来代码
没有结果是因为这句话 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;
}
要养成代码加注释的习惯,否则很难协作做大项目