2015-11-19 77 views
1

所以我想創建一個代碼來查找數字中的數字數量。所以這可能聽起來很奇怪,但它的作用就像這樣。計算C中的整數數

Input 
12893012 

Output 
1 2 2 1 0 0 0 0 1 1 

所以裝置的輸出,在12893012中,有一個0,2 1'S,2 2的,一個3,第4,沒有5,無6,無7,一個8,和一個9

#include <stdio.h> 
int main() 
{ 
int n,count=0; 
printf("Enter an integer: "); 
scanf("%d", &n); 
while(n!=0) 
{ 
    n/=10;    /* n=n/10 */ 
    ++count; 
} 
printf("Number of digits: %d",count); 
} 

我的代碼似乎只能找到數字中的位數,任何想法?非常感謝btw。

+2

阿呆的解決方案:'INT numberOfZeros = 0,numberOfOnes = 0 ,numberOfTwos = 0,...;'。根據當前的最後一位數字增加它們。不那麼愚蠢的解決方案:'int digitCount [10] = {0};'。根據當前的最後一位數字遞增。 – Zeta

+1

如果輸入爲「0」,則應輸出爲「1 0 0 0 0 0 0 0 0 0」或「0 0 0 0 0 0 0 0 0 0 0」? – chux

+0

發佈的代碼中沒有包含任何數字的每個數量級的出現次數,所有發佈的代碼都是統計數字中的數字數。請張貼試圖回答問題的代碼。 – user3629249

回答

6

把它放入一個數組並計數。

粗略地說,

int count[10] = {0}; 
while(n != 0) 
{ 
    count[n % 10]++; 
    n /= 10; 
} 

打印出結果。

+0

已編輯。謝謝。 – rohit89

2

您繼續遞增count但未檢查數字。這隻會給你一些數字。您需要一個數組,您可以在其中存儲每個數字的計數。

int digitCounts[10]; 
//... 
while (n != 0){ 
    digitCounts[n % 10]++; 
    n /= 10; 
} 

您可以使用mod%),使其更容易,因爲% 10給出了最後一位。

2

製作一個存儲數字計數的數組。其餘運營商將會給你的最後一位,這將是9介於0和

int digit[10]; 
//... 
while(n!=0) 
{ 
    int d = n % 10; 
    digit[d]++ 
//... 

,然後在循環打印。

1

我建議創建一個數組(或10個變量),它包含數字的數量,然後逐個讀取數字並檢查它是什麼數字。 可以使用

scanf(%1d, &variableName) 

getchar() 

功能讀取單個數字。

0

所有要感謝@ rohit89,@這一點,並@ Arc676

這僅僅是一個當零輸入(0)修正

int count[10] = {0}; 
if(n){ 
    while(n != 0) 
    { 
     count[n % 10]++; 
     n /= 10; 
    } 
}else 
    count[0]=1; 
+0

如果代碼使用'do {} while循環而不是'while {}',則可以刪除if()。 – chux

+0

@chux,怎麼樣,我無法得到圖像。 – milevyo

+0

而不是'if(n){...} else {...}',使用'do {count [n%10] ++; n/= 10;} while(n);' – chux