程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> c語言編程求錯誤原因?

c語言編程求錯誤原因?

編輯:C語言問答

c語言編程求錯誤原因?

#include<stdio.h>

#define N 1000

void main()

{

       int x[N],i,j;

       for(i=0;i<=999;i++)

              x[i]=i+1;

           x[0]=0;

       for(j=1;j<=999;j++)

       {

              if(x[i]!=0)

              {

                     for(i=j+1;i<=999;i++)

                            if(x[i]%x[j]==0)

                                   x[i]=0;

              }

       }

       for(i=0;i<=999;i++)

              if(x[i]!=0)

                     printf("%d",x[i]);

}

 

 

輸入運行後顯示的

求原因

補充:

用篩法求1~1000之間的素數。

最佳回答:

第一個循環結束後i已經為1000了,而你在第二個中有寫到if(x[i]!=0),這時x[i]已經超出了數組的范圍。

追問:

那你編寫一個正確的

回答:

#include<stdio.h>

#define N 1000

void main()

{

       int x[N],i,j;

       for(i=0;i<=999;i++)

              x[i]=i+1;

           x[0]=0;
 
  for(j=1;j<=999;j++)

  {  i=j+1;
     if(x[j]!=0)
   for(;i<=999;i++)
     if(x[i]%x[j]==0)
      x[i]=0;

              }

       for(i=0;i<=999;i++)

              if(x[i]!=0)

                 printf("%d\n",x[i]);

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved