调试要求:
下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/∗∗∗∗∗∗∗/字样的注释),使其运行能得到正确的结果。
功能说明:
从键盘读入22个整数,判断输出所有素数,每行输出10个数,并计算素数个数。
输入样例:
37 97 24 541 499 53 17 40 571 71 659 578 811 609 683 467 787 31 911 375 569 643
输出样例:
37 97 541 499 53 17 571 71 659 811
683 467 787 31 911 569 643
共有17素数
带错误源程序:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int prime(int n);
int main(void)
{
int n,i,count;
for(i=1;i<=22;i++)
{
scanf("%d",&n);
if(prime(n)==0)
{
printf("%5d",n);
count++;
if(count%10==0)
printf("\n");
}
}
printf("\n共有%2d素数\n",count);
return 0;
}
int prime(int n)
{
int i,m=sqrt(n);
for(i=2;i<=m;i++)
if(n/i==0)
return 0;
if(n!=1)
return 1;
else
return 0;
}
修改后程序:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int prime(int n);
int main(void)
{
int n,i,count=0; /******/
for(i=1;i<=22;i++)
{
scanf("%d",&n);
if(prime(n)!=0) /******/
{
printf("%5d",n);
count++;
if(count%10==0)
printf("\n");
}
}
printf("\n共有%2d素数\n",count);
return 0;
}
int prime(int n)
{
int i,m=sqrt(n);
for(i=2;i<=m;i++)
if(n%i==0) /******/
return 0;
if(n!=1)
return 1;
else
return 0;
}