末尾没有数字的两位数字符串加法
two-digit string addition with no number at the end
我必须添加两个数字字符串,意思是 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)
#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;
}
我必须添加两个数字字符串,意思是 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)
#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;
}