2015-01-11 4 views
0

1234 12 + 34를 의미하는 두 자릿수 문자열을 추가해야합니다 (최소한 내가 수집 한 것임). 필자는 한 가지 예외가 예상되는 프로그램을 작성했습니다. 마지막 번호에 제대로 추가되지 않는 쌍이없는 경우입니다. I 대신 12 + 3의 프로그램은 12+ (30-48)를 수행 (123)가있는 경우이므로, 기본적끝에 숫자가없는 두 자리 문자열 추가

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); 

} 

: 여기

제가 가지고있는 코드이다. 필자는 잠시 그 ​​위에 앉아 있었고 그 문제를 해결하는 방법을 알지 못했다. 조언이나 조언이 환영 받는다.

(1234 또는 4567과 같은 문자열을 수행 할 + 34 12 45 + 67)

+1

'카운트 <문자열 [카운트]' ?? – 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

와우, 고마워요. 당신은 모든 것을 쓰는 데 어려움을 겪지 않아도되었지만 나중에 내가해야 할 일을 정확하게 수행합니다. –