You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何输入第二组5位数字的提示不显示?C语言条码校验程序问题

条码校验位计算程序的输入异常问题

问题现象

运行下方的C语言条码校验位计算程序时,仅显示Enter First Six Digits :-的提示,输入第一组6位数字后,无法看到Enter Second Five Digits :-的提示,程序无报错但无法继续执行。

程序代码

#include <stdio.h>
#include <stdlib.h>

int a,b,c,d,e;
int f,g,h,i,j;

int add1;
int s;
int add2;
int operation1;
int subtraction;
int Remainder;
int checkdigit;

int main()
{
    printf("Enter First Six Digits :-");
    scanf("%d %d %d %d %d %d " , &s , &a , &b, &c , &d , &e);

    printf("Enter Second Five Digits :-");
    scanf("%d %d %d %d %d" , &f , &g , &h , &i , &j);

    add1 = s + b + d + f + h + j ;
    add2 = a + c + e + g + i ;

    operation1 = ((3*add1) + add2);
    subtraction = (operation1 - 1);
    Remainder = subtraction%10 ;
    checkdigit = (9 - Remainder);
    printf("Bar code Check digit :- %d " , checkdigit);
}

问题原因

问题出在第一个scanf的格式字符串末尾的多余空格:"%d %d %d %d %d %d "。

scanf处理格式字符串时,会自动跳过输入中的空白字符(空格、换行、制表符等)。当格式字符串末尾存在空格时,scanf会持续等待输入非空白字符,直到遇到非空白内容才会结束当前输入操作。用户输入6个数字后按下的回车属于空白字符,因此scanf不会结束,程序卡在第一个输入步骤,导致第二个printf的提示信息被输出缓冲区暂存,无法显示在屏幕上。

解决方法

删除第一个scanf格式字符串末尾的空格,修改后的代码如下:

#include <stdio.h>
#include <stdlib.h>

int a,b,c,d,e;
int f,g,h,i,j;

int add1;
int s;
int add2;
int operation1;
int subtraction;
int Remainder;
int checkdigit;

int main()
{
    printf("Enter First Six Digits :-");
    scanf("%d %d %d %d %d %d" , &s , &a , &b, &c , &d , &e);

    printf("Enter Second Five Digits :-");
    scanf("%d %d %d %d %d" , &f , &g , &h , &i , &j);

    add1 = s + b + d + f + h + j ;
    add2 = a + c + e + g + i ;

    operation1 = ((3*add1) + add2);
    subtraction = (operation1 - 1);
    Remainder = subtraction%10 ;
    checkdigit = (9 - Remainder);
    printf("Bar code Check digit :- %d " , checkdigit);
}

修改后,scanf在读取完6个整数后会立即结束输入操作,程序会正常执行第二个printf提示,等待用户输入第二组数字。

内容的提问来源于stack exchange,提问作者user26419966

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:07:01