如何将同一个变量中的所有值相加?

时间:2017-07-02 16:20:49

标签: c cs50

我正在进行一项任务,但代码正在做一些奇怪的事情。这是我的第7天“编程”,所以这可能只是一个明显的错误,我根本看不到。

我希望程序将存储在同一个变量中的所有值相加。我试图从这里复制一些代码:https://stackoverflow.com/a/42166389,但它没有按预期工作。

所以,给定一组值 -let表示012345 - ,程序应该采用其他每个数字 -4,2和0 - ,并将它们加在一起 -giving back“6” - 。并且,虽然它确实识别了数字,但它并不总结它们......至少是正确的。 我不明白为什么,但它回复了48

我尝试过不同的输入,并且在正确识别数字的同时,总和都是错误的。

我真的很感激任何帮助。 哦,这是我的代码!:

#include <cs50.h>
#include <stdio.h>
#include <string.h>

int main(void) {
    char c;
    string number;
    int length, i, sum = 0;

    printf("Type card number: ");
    number = get_string();

    printf("Tell us how many characters long was your number: ");
    length = get_int();

    for (i = 1; i <= length / 2; i++) {
        c = number[(strlen(number) - i * 2)];
        sum = c;
        printf("%c %i %s\n", c, sum, number);
    }
}

一些例子:

对于输入012345length=6,输出为:

4 52 012345
2 50 012345
0 48 012345

对于输入9876543210length=10,输出为:

1 49 9876543210
3 51 9876543210
5 53 9876543210
7 55 9876543210
9 57 9876543210

而且,总而言之,我想要的是一种在同一个变量中求和所有值的方法。

1 个答案:

答案 0 :(得分:2)

 sum = c;

您将ASCII值分配给sum。您应该获得相应的数字,并将其添加到sum,而不仅仅是assign。

 4 52 012345  //52 is ASCII value of 4
 2 50 012345  //50 is ASCII value of 2
 0 48 012345  //48 is ASCII value of 0

试试这个,

 sum+=c-'0';