如何对同一变量中的所有值求和?
How to sum all values in a same variable?
我正在做一项作业,但代码正在做一些奇怪的事情。这是我的第 7 天 "programming",所以这可能只是一个明显的错误,我根本看不出来。
我希望程序对存储在同一个变量中的所有值求和。我试图从这里复制一些代码:,但它没有按预期工作。
So,给定一组值 - 比方说 012345-,程序应该每隔一个数字 -4、2、0-,求和-返回“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);
}
}
一些例子:
对于输入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
而且,总而言之,我想要的是一种对同一变量中的所有值求和的方法。
sum = c;
您正在将 ASCII 值赋给 sum.You 应该得到相应的数字并将其添加到总和中,而不仅仅是赋值。
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';
我正在做一项作业,但代码正在做一些奇怪的事情。这是我的第 7 天 "programming",所以这可能只是一个明显的错误,我根本看不出来。
我希望程序对存储在同一个变量中的所有值求和。我试图从这里复制一些代码:,但它没有按预期工作。
So,给定一组值 - 比方说 012345-,程序应该每隔一个数字 -4、2、0-,求和-返回“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);
}
}
一些例子:
对于输入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
而且,总而言之,我想要的是一种对同一变量中的所有值求和的方法。
sum = c;
您正在将 ASCII 值赋给 sum.You 应该得到相应的数字并将其添加到总和中,而不仅仅是赋值。
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';