【发布时间】:2014-06-13 02:30:10
【问题描述】:
我编写了这个小程序来计算条形码的校验位。基本上它的意思是取第一个数字,然后是两组 5 个数字,并对它们进行一些基本的算术运算。在输入第一组 5 位数字时,我尝试将它们全部输入一行,如下所示:
>Enter the first group of 5 digits: 12345
但它只计算 1 并丢弃其余数字。意思是让程序给出正确的输出我必须输入这样的数据:
>Enter the first group of 5 digits: 1
>2
>3
>4
>5
然后它才会提示我输入第二组 5 位数字。我尝试了许多不同的方法,例如在 scanf() 函数中的说明符之间放置空格,但没有奏效。
有没有人有任何解决方案,以便我能够在同一行输入中输入所有 5 位数字?
代码:
#include <stdio.h>
int main(void)
{
int d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, first_sum, second_sum, chk_dig;
printf("Enter the first (single) digit: ");
scanf("%d", &d1);
printf("\nEnter the first group of 5 digits: ");
scanf("%d%d%d%d%d", &d2, &d3, &d4, &d5, &d6);
printf("\nEnter the second group of 5 digits: ");
scanf("%d%d%d%d%d", &d7, &d8, &d9, &d10, &d11);
first_sum = d1 + d3 + d5 + d7 + d9 + d11;
second_sum = d2 + d4 + d6 + d8 + d10;
chk_dig = 3 * first_sum + second_sum;
printf("\nCheck digit: %d", 9 - ((chk_dig - 1) % 10));
return 0;
}
谢谢!
【问题讨论】: