#包含
布尔型(intx ) )。
{
if(x==1) )。
返回假;
elseif(x=0) ) )。
返回假;
ELSEif(x==2) ) )。
返回真;
else
{
for(intI=2; i x; I )
{
if(x%I==0) ) ) ) ) ) )。
返回假;
}
返回真;
}
}
入主(void ) )。
{
int x;
char ch;
do{
请输入printf (大于' 1的自然数:n );
scanf('%d ',x );
if(isprimenum(x )==false ) ) ) )。
printf('%d”不是素数(n ),x );
elseif(isprimenum(x )==true ) )。
printf('%d为素数(n ),x );
打印(是否继续(y/n ) :n ) n );
scanf('%c ',ch );
}while () y )==ch|| ) y )==ch );
返回0;
}
但是,在运行中,发生了一个问题。
本来,写do.while是为了省去麻烦,反复判断。 但是,目瞪口呆是没有效果的。
随后修改了:
#包含
布尔型(intx ) )。
{
if(x==1) )。
返回假;
elseif(x=0) ) )。
返回假;
ELSEif(x==2) ) )。
返回真;
else
{
for(intI=2; i x; I )
{
if(x%I==0) ) ) ) ) ) )。
返回假;
}
返回真;
}
}
入主(void ) )。
{
int x;
char ch;
do{
请输入printf (大于' 1的自然数:n );
scanf('%d ',x );
if(isprimenum(x )==false ) ) ) )。
printf('%d”不是素数(n ),x );
elseif(isprimenum(x )==true ) )。
printf('%d为素数(n ),x );
打印(是否继续(y/n ) :n ) n );
scanf('%c ',ch ); //在此处输入空格
}while () y )==ch|| ) y )==ch );
返回0;
}
这样,问题就不可思议地解决了。
之后,将:改为这样
#包含
布尔型(intx ) )。
{
if(x==1) )。
返回假;
elseif(x=0) ) )。
返回假;
ELSEif(x==2) ) )。
返回真;
else
{
for(intI=2; i x; I )
{
if(x%I==0) ) ) ) ) ) )。
返回假;
}
返回真;
}
}
入主(void ) )。
{
int x;
char ch;
do{
请输入printf (大于' 1的自然数:n );
scanf('%d ',x );
if(isprimenum(x )==false ) ) ) )。
printf('%d”不是素数(n ),x );
elseif(isprimenum(x )==true ) )。
printf('%d为素数(n ),x );
打印(是否继续(y/n ) :n ) n );
scanf((n%c ),ch ); //在此处输入换行符“n”
}while () y )==ch|| ) y )==ch );
返回0;
}
没关系。
所以,总结起来,问题似乎是输入数字并按回车,“n”还保存在输入流中
因此,请看第一个代码:
入主(void ) )。
{
int x;
char ch;
do{
请输入printf (大于' 1的自然数:n );
scanf('%d ',x );
if(isprimenum(x )==false ) ) ) )。
printf('%d”不是素数(n ),x );
elseif(isprimenum(x )==true ) )。
printf('%d为素数(n ),x );
打印(是否继续(y/n ) :n ) n );
scanf('%c ',ch ); //因为输入流中还有“n”,所以ch='n”;
}while () y )==ch|| ) y )==ch ); //'y '!='n' 'Y '!='n ';
返回0; //因此,程序为return
}
也可以使用fflush(stdin )清空输入缓冲区。
#包含
布尔型(intx ) )。
{
if(x==1) )。
返回假;
elseif(x=0) ) )。
返回假;
ELSEif(x==2) ) )。
返回真;
else
{
for(intI=2; i x; I )
{
if(x%I==0) ) ) ) ) ) )。
返回假;
}
返回真;
}
}
入主(void ) )。
{
int x;
char ch;
do{
请输入printf (大于' 1的自然数:n );
scanf('%d ',x );
if(isprimenum(x )==false ) ) ) )。
printf('%d”不是素数(n ),x );
elseif(isprimenum(x )==true ) )。
printf('%d为素数(n ),x );
printf (是否继续) :(n );
flush(stdin; //清空输入缓冲区
scanf('%c ',ch );
}while () y )==ch|| ) y )==ch );
返回0;
}