C 在这个程序中,要打印两个数之间的素数,编译器会发出警告;从不使用参数a和n”—;这是什么意思?

C 在这个程序中,要打印两个数之间的素数,编译器会发出警告;从不使用参数a和n”—;这是什么意思?,c,C,WAP通过函数打印两个数字之间的素数 #include<stdio.h> #include<conio.h> int primenumbers(int a,int n); void main() { int a,n,result,i,f; clrscr(); printf("enter the starting element and ending element"); scanf("%d%d",&a,&n); } #包括

WAP通过函数打印两个数字之间的素数

#include<stdio.h>
#include<conio.h>
int primenumbers(int a,int n);
void main()
{
    int a,n,result,i,f;
    clrscr();
    printf("enter the starting element and ending element");
    scanf("%d%d",&a,&n);
}
#包括
#包括
整数素数(整数a,整数n);
void main()
{
int a,n,result,i,f;
clrsc();
printf(“输入起始元素和结束元素”);
scanf(“%d%d”、&a和&n);
}
我想打印a和n之间的素数

for(i=a;i<=n;i++)
{
    f=primenumbers(a,n);
    if(f==0&&n!=1)
        printf("%d is prime",i);
    }
    getch();
}

int primenumbers(int a, int n)
{
    int i,j,f;
    for(j=2;j<=(i/2);j++)
    {
        if(i%j==0)
        {
            f=1;
            break;
        }
    }
    return f;
}

for(i=a;i您得到警告的原因很简单,因为函数中未使用函数参数
a
n

你的代码中似乎有一些基本的误解。你在
main
中有一个循环,使用
i
作为计数器变量,从
a
n
。但是,当你调用
primenumbers
时,你使用
a
n
来调用它,而不是
i

我猜函数应该接收一个数字并返回该数字是否为素数。因此,
main
中的调用应该是:

for(i=a;i<=n;i++)
{
    f=primenumbers(i);  // Notice i instead of a and n
    if (f==0 && n!=1)
        printf("%d is prime",i);
}
因此,改变主要内容如下:

for(i=a;i<=n;i++)
{
    if (primenumber(i))
        printf("%d is prime",i);
}

for(i=a;i)随着错误消息的出现,该错误消息似乎非常清楚。在
primeNumbers
函数中既不使用参数
a
也不使用参数
n
。您的
primeNumbers()
函数接受两个参数,这两个参数在函数中被称为
a
n
。但是函数中的代码从不使用
a
n
-因此出现警告。您的函数没有注意到它被告知要做什么。请注意,您可能应该结束
printf()
用换行符格式化字符串。此外,您在函数
primenumbers
中使用的
i
是一个未初始化的变量,编译器可能也警告过您。该函数中的
i
main
中的
i
不同。因为
main
a
n
我建议函数应该是
intprimenumbers(inti)
并删除它的另一个
inti
声明。然后用
f=primenumbers(I);
    if (f==0 && n!=1)  // It is a bad idea to let main check for 1
                       // the function should handle all numbers
                       //
                       // Further it is unusual to return the value
                       // 0 for TRUE. Normally we use 1 for true
for(i=a;i<=n;i++)
{
    if (primenumber(i))
        printf("%d is prime",i);
}
// This function returns 1 if number is a prime, otherwise it returns 0
int primenumber(int number)
{
    int j;

    if (number < 2) return 0;  // Not a prime

    for(j=2; j<=(number/2); j++)
    {
        if (number % j == 0)     
        {
           // Not a prime
           return 0;
        }
    }

    // It is a prime
    return 1;
}