gpt4 book ai didi

c - 为什么这个 ISBN 检查代码会将 '0' 变成 45?

转载 作者:行者123 更新时间:2023-11-30 19:04:50 36 4
gpt4 key购买 nike

请帮我找出为什么数组中的第二个 0 会变成 45

Screen shot of plain text

一切都很好,但除了这个数字使结果出错。我无法找出这是怎么回事。

这是我的代码:

 #include <stdio.h>

int getuserchoice() {
int n;
printf("---ISBN Validate---");
printf("\n1-ISBN Checking");
printf("\n2-Quit");
printf("\nSelect: ");
scanf("%d", &n);
return n;
}

int main() {
long a[10];
long sum = 0;
int i = 0, n = 1;
long x;
if (getuserchoice() == 1) {
printf("\nEnter the values for ISBN number : ");
scanf("%ld", &x);
if (x > 0) {
while (x > 0) {
a[i] = x % 10;
x = x / 10;
i++;
}
}

for (i = 0; i < 10; i++)
printf("%ld\t", a[i]);
for (i = 0; i < 10; i++) {
sum += a[i] * n;
n++;
}
if (sum % 11 == 0)
printf("\nISBN Status: Valid!");
else
printf("\nISBN Status: Invalid!");
} else
printf("\nSee you later!");
getchar();
return 0;
}

最佳答案

默认情况下,未初始化的数组包含垃圾(实际上是任何东西)。碰巧该特定元素包含 45(太棒了,不是吗?)。

它保持为 45,因为读取数字时前导 0 会被丢弃(您应该将其读取为字符串 (C++) 或 char[]),因此您永远不会访问该特定数组元素来为其赋予有意义的值。

Here's SO post on how to initialize an array with 0s in C.

关于c - 为什么这个 ISBN 检查代码会将 '0' 变成 45?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011180/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com