2015-01-11 100 views
0

我必須添加兩位數的字符串,意思是1234 12 + 34(至少這是我收集的)。我寫了一個程序,這樣做只會有一個例外,那就是當最後一個數字沒有配對時它不會正確添加。兩位數的字符串加在末尾沒有數字

下面是代碼我有:

void main() 

{ 


char string[1000]; 
int count,sum=0,x,y; 

printf("Enter the string containing both digits and alphabet\n"); 
scanf("%s",string); 

for(count=0;count < string[count]; count++) 
{ 
     x=(string[count] - '0') * 10; 
     y=(string[count+1] - '0') + x; 
     sum += y; 
     count++;  
} 

printf("Sum of string in two digit array is =%d\n",sum); 

} 

所以基本上,如果我有123的程序執行12+(30-48),而不是12 + 3。我已經坐了一段時間,無法弄清楚如何解決這個問題,任何提示或建議將受到歡迎。

(如1234或4567的字符串將做12 + 34及45 + 67)

+1

'計數<串[COUNT]'?? – BLUEPIXY

+0

輸入「12」會怎樣?或'1234567'? – lared

+0

count

回答

1
#include <stdio.h> 
#include <ctype.h> 

int main(void){ 
    char string[1000]; 
    char digits[3] = {0}; 
    int i, j, x, sum = 0; 

    printf("Enter the string containing both digits and alphabet\n"); 
    scanf("%999s", string); 
    for(j = i = 0; string[i]; ++i){ 
     if(isdigit(string[i])){ 
      digits[j++] = string[i]; 
      if(j==2){ 
       sscanf(digits, "%d", &x); 
       sum += x; 
       j = 0; 
      } 
     } 
    } 
    if(j==1){ 
     digits[j] = 0; 
     sscanf(digits, "%d", &x); 
     sum += x; 
    } 
    printf("Sum of string in two digit array is = %d\n", sum); 
    return 0; 
} 
+0

哇,謝謝。你不必經歷寫整件事情的麻煩,但是你這正是我所需要的。 –

相關問題