summing/adding 整数数组中的所有其他组件均失败
Failed summing/adding every other component inside an integer array
我继续存储输入的信用卡号并验证它。
1) 用户输入假设的信用卡号,如 1234567898769999(存储为字符串)。
2) 将字符串转换为整数数组 int digits[]。
3) 将 digitis 在位置 1, 3, 5 ... 最后一个奇数位置乘以 2,
例如 2*2、2*4、2*6、2*8、2*8、2*6、2*9、2*9。
4) 将它们存储在相同的数组和位置 [4,8,12,16,16, 12, 18,18] 中。
5) 对位置 0、2、4 ... 最后一个偶数位置的数字求和。
尝试运行下面出现异常值的代码:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main (void) {
string cc_string;
printf("Please enter a credit card number:\n");
//Capture credit card number
cc_string = GetString();
// Array of integers for credit card digits int cc_digits[15];
int sum_evens, sum_odds = 0;
for (int i = 0; i < 16; i++)
{
cc_digits[i] = cc_string[i] - '0';
//Sum digits in even positions (0 ... 14)
if (i % 2 == 0)
{
sum_evens = sum_evens + cc_digits[i];
//Checking values
printf("cc_digits[%d] = %d; Sum_evens = %d\n", i, cc_digits[i], sum_evens);
}
else if (i % 2 == 1)
{
//Multiplies values in each position by 2 and stores in the same position
cc_digits[i] = 2 * cc_digits[i];
sum_odds = sum_odds + cc_digits[i];
//Checking values
printf("cc_digits[%d] = %d; Sum_odds = %d\n", i, cc_digits[i], sum_odds);
}
}
}
有人知道这里发生了什么吗?
自从我试图解决这个问题以来已经三天了。
在此先感谢您的帮助。
abnormal values appearing
int sum_evens, sum_odds = 0;
这里您还没有初始化 sum_evens
的值,但是您在 for
循环的 if
块中以这种方式在您的程序中进一步使用它:
sum_evens = sum_evens + cc_digits[i];
因此,这会导致未定义的行为,从而出现异常值。为避免这种情况,请尝试初始化 sum_evens
.
int sum_evens = 0, sum_odds = 0;
我继续存储输入的信用卡号并验证它。
1) 用户输入假设的信用卡号,如 1234567898769999(存储为字符串)。 2) 将字符串转换为整数数组 int digits[]。 3) 将 digitis 在位置 1, 3, 5 ... 最后一个奇数位置乘以 2, 例如 2*2、2*4、2*6、2*8、2*8、2*6、2*9、2*9。 4) 将它们存储在相同的数组和位置 [4,8,12,16,16, 12, 18,18] 中。 5) 对位置 0、2、4 ... 最后一个偶数位置的数字求和。
尝试运行下面出现异常值的代码:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main (void) {
string cc_string;
printf("Please enter a credit card number:\n");
//Capture credit card number
cc_string = GetString();
// Array of integers for credit card digits int cc_digits[15];
int sum_evens, sum_odds = 0;
for (int i = 0; i < 16; i++)
{
cc_digits[i] = cc_string[i] - '0';
//Sum digits in even positions (0 ... 14)
if (i % 2 == 0)
{
sum_evens = sum_evens + cc_digits[i];
//Checking values
printf("cc_digits[%d] = %d; Sum_evens = %d\n", i, cc_digits[i], sum_evens);
}
else if (i % 2 == 1)
{
//Multiplies values in each position by 2 and stores in the same position
cc_digits[i] = 2 * cc_digits[i];
sum_odds = sum_odds + cc_digits[i];
//Checking values
printf("cc_digits[%d] = %d; Sum_odds = %d\n", i, cc_digits[i], sum_odds);
}
}
}
有人知道这里发生了什么吗? 自从我试图解决这个问题以来已经三天了。 在此先感谢您的帮助。
abnormal values appearing
int sum_evens, sum_odds = 0;
这里您还没有初始化 sum_evens
的值,但是您在 for
循环的 if
块中以这种方式在您的程序中进一步使用它:
sum_evens = sum_evens + cc_digits[i];
因此,这会导致未定义的行为,从而出现异常值。为避免这种情况,请尝试初始化 sum_evens
.
int sum_evens = 0, sum_odds = 0;