当我在本地 vscode 使用我的代码时,它只给出 63 作为答案,但是当我使用不同的在线编译器时,它工作正常
When i use my code in local vscode its giving only 63 as answer but when i use a different online complier it works fine
这是一个 Luhn 算法代码,它在在线编译器中运行良好,但是当我在本地使用它时 vscode 它只给出 63 作为输出。
我不知道它是否是一个内存问题,因为它晚了 long 变量。
即信用卡号作为输入。
#include <stdio.h>
// Finds its Luhn algorithm to see if its a valid credit card number.
void checksum(long num)
{
int sum = 0;
for (int i = 0; num != 0; num /= 10, i++)
{
if (i % 2 == 0)
{
sum = sum + num % 10;
}
else
{
int digit = 2 * (num % 10);
sum = sum + (digit / 10) + (digit % 10);
}
}
printf("%d", sum);
}
int main()
{
long int num;
// Takes credit Card number as input.
do
{
printf("Number: ");
scanf("%li", &num);
} while (num < 0);
checksum(num);
return 0;
}
我的输入类似于 374245455400126
、378282246310005
。
输出总是 63
.
结果取决于类型 long int
的大小,它可以等于类型 int
的大小或类型 long long int
的大小。
所以使用类型 long long int
而不是类型 long int
。
此外,由于程序需要一个无符号值,而不是有符号类型 long long int
,最好使用 unsigned long long int
.
类型
这是一个 Luhn 算法代码,它在在线编译器中运行良好,但是当我在本地使用它时 vscode 它只给出 63 作为输出。
我不知道它是否是一个内存问题,因为它晚了 long 变量。
即信用卡号作为输入。
#include <stdio.h>
// Finds its Luhn algorithm to see if its a valid credit card number.
void checksum(long num)
{
int sum = 0;
for (int i = 0; num != 0; num /= 10, i++)
{
if (i % 2 == 0)
{
sum = sum + num % 10;
}
else
{
int digit = 2 * (num % 10);
sum = sum + (digit / 10) + (digit % 10);
}
}
printf("%d", sum);
}
int main()
{
long int num;
// Takes credit Card number as input.
do
{
printf("Number: ");
scanf("%li", &num);
} while (num < 0);
checksum(num);
return 0;
}
我的输入类似于 374245455400126
、378282246310005
。
输出总是 63
.
结果取决于类型 long int
的大小,它可以等于类型 int
的大小或类型 long long int
的大小。
所以使用类型 long long int
而不是类型 long int
。
此外,由于程序需要一个无符号值,而不是有符号类型 long long int
,最好使用 unsigned long long int
.