#include<stdio.h>
#include<conio.h>
void main()
{
int m,a,i,b;
printf("Enter the number upto which the prime number is to be displayed:");
scanf("%d",&m);
for(a=1;a<=m;a++)
{
for(i=1;i<=a;i++)
{
if(a%i==0)
{
b++;
}
}
if(b==2)
{
printf("\t%d",a);
}
}
getch();
}
答案 0 :(得分:1)
在代码的开头和循环内初始化b
:
#include<stdio.h>
#include<conio.h>
void main()
{
int m,a,i,b=0; // initialize b
printf("Enter the number upto which the prime number is to be displayed:");
scanf("%d",&m);
for(a=1;a<=m;a++)
{
for(i=1;i<=a;i++)
{
if(a%i==0)
{
b++;
}
}
if(b==2)
{
printf("\t%d",a);
}
b=0; // re-initialize
}
getch();
}
答案 1 :(得分:0)
在初始化b++
之前,您执行b
。未初始化(非静态)局部变量具有不确定的值,并且在操作中使用它们会导致undefined behavior。