C中的一个程序,用于将UPC代码的最后一位与计算值进行比较,并检查其是否有效



所以我在visual studio上用c编写了这段代码,基本上它以产品的UPC代码(12个整数(作为输入。最后一个整数就像校验位,它通过公式与前面的11个数字相关。因此,该代码基本上检查UPC代码是否有效,方法是使用公式计算程序中的校验位,然后将其与最后一位的输入值进行比较:问题是,在visualstudio中,命令提示符只接受输入并挂起,因为它不提供任何输入,如果我按enter键,光标会闪烁并移动到新行。。。编辑:我给它的输入是:031564532525写得完全一样没有空格


int main() {
// initialize the 11 digits of the UPC individually // 
int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, first_sum, second_sum, total ;
int end_dig;
// take input from user of UPC digits //
printf("Enter the UPC code:n");
scanf_s("%d%d%d%d%d%d%d%d%d%d%d%d", &d, &i1, &i2, &i3, &i4, &i5, &j1, &j2, &j3, &j4, &j5, &end_dig);

// caclulate what the check digit SHOULD be according to the previous digits //
int last_digit;
first_sum = d + i2 + i4 + j1 + j3 + j5;
second_sum = i1 + i3 + i5 + j2 + j4;
total = (3 * first_sum) + second_sum;
last_digit = 9 - ((total - 1) % 10);

// compare calculated value of check digit with input value, to see wether its valid or not. //
if (end_dig == last_digit) {
printf("VALIDn");
}
else {
printf("NOT VALIDn");
}
return 0;
system("pause");
}

%d格式说明符不仅读取单个数字,还读取十进制数字序列。因此,您输入的数字被%d的第一个实例消耗,导致程序等待更多的输入来满足剩余的格式说明符。

你需要用空格分隔数字,这样你就可以单独阅读每个数字:

0 3 1 5 6 4 5 3 2 5 2 5 

如果您不想这样做,您需要读取单个字符串,然后检查字符串中的每个数字。

最新更新