2015-10-14 16 views
0
#include<stdio.h> 

    int main() 
    { 
     int x, i, j=0; 
     char factors[101]; 

     printf("Enter a number: "); 
     scanf("%d", &x); 

     for(i=1;i<=x;i++) 
     { 
      if(x%i==0) 
      { 
       factors[j]=i; 
       j++; 
       printf("%d\t", i); 
      } 
     } 
     getchar(); 
     printf("%s", factors); 

    } 

我的目標是找到一個數字的因子並將這些因子存儲在一個數組中。如何查找數字的因子並將因子保存在C的數組中?

當我運行此代碼時,它確實發現了這些因素,但是當我嘗試打印數組時,它會打印字符?因爲我不是因爲陣列而打印的因素。我如何解決這個問題,爲什麼要這樣做?

+0

爲什麼不將factor設爲整數數組並計算因子數量。然後你可以很好地打印出來。 – Transcendental

+0

@Intercendental我需要將每個因子存儲到一個數組中的索引,以便以後我可以訪問每個因子來對它們執行其他操作。 –

+0

看看我的答案吼叫。您仍然可以單獨訪問這些因素。更好的是,您可以將它們作爲整數訪問並立即用於計算。 – Transcendental

回答

0

使用整數數組,而不是即:

#include<stdio.h> 

int main() 
{ 
    int x, i, j=0; 
    int factors[101]; 

    printf("Enter a number: "); 
    scanf("%d", &x); 

    for(i=1;i<=x;i++) 
    { 
     if(x%i==0) 
     { 
      factors[j++]=i; 
      printf("%d\t", i); 
     } 
    } 
    getchar(); 
    for(int k =0;k<j;++k) 
    printf("%d\n",factors[k]); 
} 

還有大量的工作,如果你想保持一個字符數組,因爲因素可能大於10河畔一個字符只能代表一個數字做。如果你知道你的號碼有小於10的因素,那麼你可以在你的原始代碼中執行:factors[j]=i+48;。但我不建議這樣做,因爲它不是一個真正的解決方案,只能在一小組輸入上工作。

+0

非常感謝!這段代碼正如我所希望的那樣工作。謝謝你謝謝你! –

+0

歡迎:) – Transcendental