永发信息网

这行有什么问题?为什么不执行if里面的语句?

答案:2  悬赏:20  手机版
解决时间 2021-04-28 03:08
  • 提问者网友:精神病院里
  • 2021-04-27 08:57


//5、 输出n以内的全部素数,每行输出5个
#include "stdio.h"
#include "math.h"
void main()
{int i,n,k,j,d=1,a[1000],p=0,x,y;
printf("输入需输出的偶数的范围n=");
scanf("%d",&n);
while(n<=6){
if(n<=6)printf("输入有误");
scanf("%d",&n);}
printf("%d范围内的质数如下:\n",n);
printf(">>===================================<<\n");
for(i=2;i<=n;i++)
{ (int)k=sqrt(i);
for(j=2;j<=k;j++)
{if(i%j==0)break;
}
if(j>k)
{printf("%5d",i);
a[p]=i;
d++;}
if(d%6==0) {printf("\n");d=1;}
}printf("\n");
printf(">>====================================<<\n");
for(i=6;i<=n;i++){printf("%d=",i);
for(x=0;x<=p;x++){
for(y=0;y<=p;y++){
if(a[x]+a[y]==i)//*******这行有什么问题?为什么不执行if里面的语句?
{printf("%d+%d \n",a[x],a[y]);
break;break;}
}
}
i++;
printf("\n");
}
}


最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-04-27 09:31

一些问题.. 我也忘了改了什么了. 下面是正确代码. 你自己看看吧.



#include "stdio.h"
#include "math.h"


void main()
{
int i,n,k,j,d=1,a[1000],p=0,x,y;
printf("输入需输出的偶数的范围n=");
scanf("%d",&n);
while(n<=6){
if(n<=6)printf("输入有误");
scanf("%d",&n);
}


printf("%d范围内的质数如下:\n",n);
printf(">>===================================<<\n");
for(i=2;i<=n;i++)
{
k=sqrt(i); //... 前面加个(int)干嘛...
for(j=2;j<=k;j++)
{
if(i%j==0)break;
}
if(j>k)
{
printf("%5d",i);
a[p++]=i; //数组下标要增加...
d++;
}
if(d%6==0)
{
printf("\n");
d=1;
}
}
printf("\n");
printf(">>====================================<<\n");


for(i=6;i<=n;i++)
{
for(x=0;x<=p;x++){
for(y=0;y<=p;y++){
if(a[x]+a[y]==i)//*******这行有什么问题?为什么不执行if里面的语句?
{
printf("%d= %d+%d \n",i,a[x],a[y]);
break;
}
}
}
i++;
printf("\n");
}
}
效果图如下:


全部回答
  • 1楼网友:鱼芗
  • 2021-04-27 09:53

太长,没有缩进, 建议你单步跟踪调试。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯