代码之家  ›  专栏  ›  技术社区  ›  cs-laz

如何对同一变量中的所有值求和?

  •  0
  • cs-laz  · 技术社区  · 8 年前

    我正在做一项作业,但代码正在做一些奇怪的事情。这是我第七天“编程”,所以这可能只是一个明显的错误,我根本看不出来。

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

    ,给定一组值 ,程序应每隔一个数字执行一次 ,并将其相加 -回馈“6”- .而且,虽然它确实能识别数字,但它不能对它们求和……至少不能正确地求和。 .

    我尝试了不同的输入,在正确识别数字的同时,在所有情况下,总和都是错误的。

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

    一些例子:

    012345 length=6 ,输出为:

    4 52 012345
    2 50 012345
    0 48 012345
    

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

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

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

    1 回复  |  直到 8 年前
        1
  •  2
  •   Gaurav Sehgal    8 年前
     sum = c;
    

    您正在为总和指定ASCII值。您应该得到相应的数字,并将其添加到总和中,而不仅仅是赋值。

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