C语言:帮我看看这不超过20行的简单程序... ...

来源:百度知道 编辑:UC知道 时间:2024/07/07 11:00:57
请编写函数fun,经的功能是:求出1到100之内能被7或11整除、但不能同时补7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
我的程序是:
#include "stdio.h"
int a[100];
int i;
fun(int m)
{
if (m%7==0 || m%11==0)
{
if (m%7!=0 ||m%11!=0)
return(m);}
}
main()
{
for(i=1;i<=100;i++)
{
a[i]=fun(i);
if(a[i]!=0)
printf("%d ",a[i]);
}
getch();
}
可它却得不到我想要的结果

if (m%7!=0 ||m%11!=0)
或者符号应该改为&&

你吧
fun(int m)
{
if (m%7==0 || m%11==0)
{
if (m%7!=0 ||m%11!=0)
return(m);}
}

main()
{
for(i=1;i<=100;i++)
{
a[i]=fun(i);
if(a[i]!=0)
printf("%d ",a[i]);
}
getch();
}
改成
fun(int m)
{
if (m%7==0 || m%11==0)
{
if (m%7!=0 ||m%11!=0)
return(m);}
return 0;
}

main()
{
int k=0;
for(i=1;i<=100;i++)
{
a[k++]=fun(i);
}
for(k=0;k<100;k++)
{
if(a[k]!=0)
printf("%d ",a[k]);
}
}

原程序不能得到结果的原因是因为没有在条件不成立时反回0值,
所以在主程序中进行判断时由于没有元素为0导致全部输出,另外数组下标是从0开始的,并不是从1开始的,所以在循环中数组下标为i-1

修改后的程序如下:
/////////////////////////////////

#include "stdio.h"
int a[100];
int i;
fun(int m)
{
if (m%7==0 || m%11==0)
{
if (m%7!=