2014-09-26 83 views
0

我有一些麻煩......我試圖輸入一個數字,然後是一個整數的多個數字。我試圖計算第一個數字出現在整數中的次數。 現在,我製作了這個非常簡單的代碼來向您展示我實際正在嘗試做的事情。事情是,這段代碼只比較兩個整數,並告訴我它們是否相同。你要知道,我是在C編程非常雛,因此這個問題...計算C中整數中特定數字的出現

int main(){ 

    int numberOne; 
    int numberTwo; 
    int count = 0; 

    scanf("%d", &numberOne); 
    scanf("%d", &numberTwo); 

    if(numberOne == numberTwo){ 
     count++; 
    } 

    printf("Amount of equals found: %d", count); 

return 0; 
} 

現在,如果我有以下輸入:「1 1021023234」,輸出將是:「平等的金額發現:0' 輸出應該是(在這種情況下)'輸出將等於找到的金額:2'

我希望你們能給我一些提示。

+0

如果你想處理單個字符,你爲什麼要將它們看作整數?閱讀它們作爲一個字符串。 – 2014-09-26 15:43:41

+0

我曾考慮過這樣做並嘗試過,但效果並不理想。我似乎無法找到任何教程來做這件事。 – user3426706 2014-09-26 15:46:38

+0

有很多使用'scanf'的教程。 – 2014-09-26 15:50:09

回答

0

如果我明白正確的,那麼你需要以下

#include <stdio.h> 

int main(void) 
{ 
    unsigned int numberOne; 
    unsigned int numberTwo; 
    unsigned int x; 
    unsigned int base; 
    size_t n; 

    printf("Enter first number: "); 
    scanf("%u", &numberOne); 

    printf("Enter second number: "); 
    scanf("%u", &numberTwo); 

    x = numberOne; 
    base = 1; 
    do { base *= 10; } while (x /= 10); 

    n = 0; 

    do { n += numberOne == numberTwo % base; } while (numberTwo /= 10); 

    printf("Amount of equals found: %u", n); 

    return 0; 
} 

對於數字1276512612輸出

Amount of equals found: 2 
+0

謝謝,這確實是我的理由! – user3426706 2014-09-26 16:10:12

0

自己寫代碼。下面是提示:

既然你只需要一個輸入,消除你的程序numbertwo,並實現以下功能

  1. numberone%10會給用戶輸入的第一個數字。將其分配給變量one

  2. 如果用戶輸入(numberone)< 10,則打印first digit is found 1 time in input並退出程序。

  3. 使用while環,並把numberone>=10在其condition.check if(numberone%10==one)在循環如果屬實,增加可變count。之後添加 numberone/10

  4. 打印你的最後printf並退出程序

+0

感謝您的提示。這讓我更瞭解它! – user3426706 2014-09-26 16:09:18

0

你可以閱讀他們爲整數,但你不能對它們進行比較,你正在做的方式。爲了比較它們,您需要從數字中提取每個數字並進行比較。

temp = numbertwo % 10; //this gives the digit in the unit place 
if(temp == numberone) 
    count++; 
numbertwo = numbertwo/10; //this now removes the last digit that has already been compared 

保持上述代碼循環,直到numbertwo變成零。它會按你想要的方式工作

另一種方法是將整數作爲字符串讀取。

char* numbertwo; 
char = malloc(20); 
fgets(numbertwo, 20, stdin); 

,然後比較整數for循環

+0

謝謝!我會做一些實驗。 – user3426706 2014-09-26 15:55:36

+0

請注意,第一個例子不適用於前導零,但這可能是一個模擬點,取決於原始問題 – 2014-09-26 15:56:31

0

你可以使用下面的字符串來試試它..

#include<stdio.h> 
#include<string.h> 
main() 
{ 
char int1[100]; 
char int2[100]; 
int cnt=0; 
scanf("%s",int1); 
scanf("%s",int2); 
char *p; 
while(p=strstr(s1,s2)) //searches for the string s2 in s1 and if found, returns the address to the pointer p// 
{ 
cnt++ 
s1=p+strlen(s2); //now s1 points to the next location from the end of string s2 in s1// 
} 
printf("Amout of equals found:%d\n",cnt"); 
} 
相關問題