这是我在这个论坛上的第一个问题,而且相当棘手。
我正在处理C
中输入字符的问题,直到您输入符号!
。然后你必须提取数字并打印它们的总和。
输入格式为:
adasdas12fef 1 asdasdas43 da3 23adead
输出应为:82
(12 + 1 + 43 + 3 + 23)
注意:禁止使用string
。
对不起,我很抱歉。
如果对其他细节或用法有任何疑问,请随时发表评论。
答案 0 :(得分:0)
我认为这对你有用:
#include <stdio.h>
int main(void) {
// declear and initialize the variables
char input[200];
char c;
int i = 0, j = 0, sum = 0, num = 0, next = 0;
// get input until '!' is pressed
while((c=fgetc(stdin)) != '!') {
input[i] = c;
i++;
}
// end string
input[i] = '\0';
// loop through the string
// if numeric found, will add to sum.
// for 2 numeric (one after another) will multiply
// previous one with 10 and add with the current one
for (j = 0; j < i; j++) {
if (next == 1) {
next = 0;
num = input[j-1] - '0';
num *= 10;
num += (input[j] - '0');
sum += num;
continue;
}
if (input[j] >= '0' && input[j] <= '9') {
if (input[j+1] >= '0' && input[j+1] <= '9') {
next = 1;
} else {
sum += (input[j] - '0');
}
}
}
printf("sum: %d\n", sum);
}
请不要索要完整的代码。我发现这个问题很有趣,这就是我这样做的原因。首先尝试,然后询问您是否遇到任何具体问题。
答案 1 :(得分:0)
如何让一些伪代码入门?
state = spaces
number = 0
Forever {
Get ch
if (ch == EOF or `!`) {
if (state == num) print number
break;
}
if (state == space) {
if (ch is a digit) {
number = digit
state = num
}
} else {
if (ch is a digit) {
number = number * 10 + digit
} else if (ch is a space) {
print number
state = space
number = 0
}
}
}