C 在这个程序中,要打印两个数之间的素数,编译器会发出警告;从不使用参数a和n”—;这是什么意思?
WAP通过函数打印两个数字之间的素数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); } #包括
#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;
}