程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 編程-關於c語言循環嵌套的問題

編程-關於c語言循環嵌套的問題

編輯:編程綜合問答
關於c語言循環嵌套的問題

完全數是其各因子之和正好等於本身的數,如6=1+2+3,28=1+2+4+7+14,所以6,8都是完全數,請編程找出2-20000內的所有完全數.輸入整數n,輸出第n個完全平方數。
第一種:

  #include <stdio.h>   
void main()   
{
    int i,n,s=0,k=0;
    scanf("%d",&n);
    for(i=2;i<=20000;i++,s=0)
    {
        for(int j=1;j<i;j++)
        {
            if(i%j==0)
                s+=j;
            if(i==s)
                k++;
        }
        if(k==n) {printf("%d\n",i);
        break;
        }
    }   
}

第二種:

#include <stdio.h>   
void main()   
{
    int i,n,s=0,k=0;
    scanf("%d",&n);
    for(i=2;i<=20000;i++,s=0)
    {
        for(int j=1;j<i;j++)
        {
            if(i%j==0)
                s+=j;

        }
                if(i==s)
                k++;
        if(k==n) {printf("%d\n",i);
        break;
        }
    }   
}  

這兩個的區別就是if(i==s) k++;第一個中是在內循環,第二個是在外循環。但我覺得這兩種應該都可以因為第一個是內循環每循環一次就進行判斷i是否等於s,直到最後一次判斷是否相等、但是第一種輸出不出來結果,,請問為啥

最佳回答:


因為s在程序運行中是逐漸增加的,如果最終的s是比i大,在程序一,一旦出現s==i的情況,k就加1,k因此就失去了正確計數的作用

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