直接发程序不直观,我截图后,在图上给你标注。我现在就开始改,百度审核图片比较慢,别着急
我太阳的,为什么发的图到现在还没审核通过?
再发一次吧
你的程序里有很多习惯不好,看看我的是怎么写的。
/*使用函数版程序*/
#include
int isprime(int a)
{int i;
for(i=2;i if(a%i==0)
break;
if(i>=a) //因为你下面的主函数中,只有针对大于等于2的数值才加以判断,所以这里只需要这么写,全部情况下完善条件你自己想
return 1;
else
return 0;
}
main()
{int a,b,n=0; //n表示记录数,a为起始数,b为范围数。
printf("请输入要查询的范围!\n");
scanf("%d",&b);
if(b<0)
printf("输入错误,请输入正整数!\n");
if(b>=0&&b<2) //c代码中,乱加空格不是好习惯,我把空格给你删了
printf("该范围内质数的个数=%d\n",n);
/*if(b==2)
printf("该范围内质数的个数=1\n"); //你都知道个数是1了,还瞎折腾什么?赋值很好玩吗?
而且这段根本就不需要,因为正确的质数判定算法能搞定这个。你单独写出来了,那么完善“5个一行”就会麻烦很多 */
if(b>=2)
{
for(a=2;a<=b;a++)
if(isprime(a)) //for只控制了一条if语句,不需要加{}
{ printf("%-6d ",a);//这里不加空格或逗号,所有的数值会连在一起,11和13会显示成1113。-6如果你没学过可以当没看见。
n++;//你原来的写法对,但是c中++和--是很重要的东西,就当是我逼着你掌握这个吧
if(n%5==0) //只有在n发生变化的时候(此时a肯定是质数),才是需要判断要不要换行
printf("\n");//这个if只控制一条语句,有必要加{}吗?
}
printf("\n");
printf("该范围内质数的个数=%d\n",n);
}
}
====================================================================
/*不用函数版程序*/
#include
main()
{int a,b,n=0,i;
printf("请输入要查询的范围!\n");
scanf("%d",&b);
if(b<0)
printf("输入错误,请输入正整数!\n");
if(b>=0&&b<2)
printf("该范围内质数的个数=%d\n",n);
/*if(b==2)
printf("该范围内质数的个数=1\n"); //你都知道个数是1了,还瞎折腾什么?赋值很好玩吗?
而且这段根本就不需要,因为正确的质数判定算法能搞定这个。你单独写出来了,那么完善“5个一行”就会麻烦很多 */
if(b>=2)
{
for(a=2;a<=b;a++)//这里的for控制了不止一条语句,要加{}
{ for(i=2;i if(a%i==0)
break;
if(i>=a) //因为只有针对大于等于2的数值才加以判断,所以这里只需要这么写,全部情况下完善条件你自己想
{ printf("%-6d ",a);//这里不加空格或逗号,所有的数值会连在一起,11和13会显示成1113。-6如果你没学过可以当没看见。
n++;//你原来的写法对,但是c中++和--是很重要的东西,就当是我逼着你掌握这个吧
if(n%5==0) //只有在n发生变化的时候(此时a肯定是质数),才是需要判断要不要换行
printf("\n");//这个if只控制一条语句,有必要加{}吗?
}
}
printf("\n");
printf("该范围内质数的个数=%d\n",n);
}
}
先发程序,然后我再发那个图。
还有,楼上推荐的答案是错的。程序结构不对
#include
#include
int main()
{
int a,b,n=0,i; //n表示记录数,a为起始数,b为范围数,i为参变量。
printf("请输入要查询的范围!\n");
scanf("%d",&b);
if(b<0)
printf("输入错误,请输入正整数!\n");
if(b>=0 && b<2)
printf("该范围内质数的个数=%d\n",n);
if(b==2)
{
n=1;
printf("该范围内质数的个数=%d\n",n);
}
if(b>2)
{
for(a=2;a<=b;a++)
{
for(i=2;i<=a-1;i++) if(a%i==0) break;
if (i != a) continue;
printf("%d ",a);
n=n+1;
if(n%5==0) printf("\n");
}
}
printf("\n");
printf("该范围内质数的个数=%d\n",n);
system("pause");
return 0;
}
改好了,调试过,应该是行的
#include
#include
int main()
{
int a,b,n=0,i; //n表示记录数,a为起始数,b为范围数,i为参变量。
printf("请输入要查询的范围!\n");
scanf("%d",&b);
if(b<0)
{ printf("输入错误,请输入正整数!\n"); system("pause"); exit(0); }
if(b>=0 && b<2)
{ printf("该范围内质数的个数=%d\n",n); system("pause"); exit(0); }
if(b==2) //逻辑相等条件表达用两个==
{
n=1;
printf("该范围内质数的个数=%d\n",n);
system("pause");
exit(0);
}
printf("%4d",2);
for(a=2,n=1;a<=b;a++) //2也得计数吧!
for(i=2;i<=a-1;i++)
{ //这一段逻辑关系错了,你看看现在是不是你的意思
if(a%i==0) break;
if(i==a-1)
{ printf("%4d",a);
n++;
if(n%5==0) printf("\n");
break;
}
}
printf("\n");
printf("该范围内质数的个数=%d\n",n);
system("pause");
}
注意大括号的严格使用,大括号决定变量与语句的作用域以及整个代码的逻辑表达。