2020年西北农林科技大学信息工程学院c语言阶段二A(条形码校验位)

7 篇文章 2 订阅
5 篇文章 0 订阅

1514: 条形码校验位

时间限制: 1 Sec 内存限制: 128 MB

提交: 3381 解决: 369

[提交][状态][讨论版]

题目描述

EAN商品条形码由13位数字构成,它是商品的“身份证”,前8位是厂商识别代码,接着4位是商品项目代码,最后一位是校验码。校验码是由前12位数按下面的步骤计算得到的。

请实现函数getEAN13(),函数原型为:int getEAN13(char *ean);

其中ean是条形码的前12位,返回值为校验码。

如ean=“690123456789”,该函数返回2。

为便于程序调试并确保多次调试中的输入数据的一致性,可通过输入重定向方法从test1.dic文本文件中读取条形码前12位,输入样例文件test1.dic可以通过wget从此处下载。

输入

输出

提示

(1) 不可变更要求的函数原型。

(2) 仅可提交指定的函数及该函数中调用的其它自定义函数代码。

#include<stdio.h>
int getEAN13(char *ean);
int getEAN13(char *ean){
    int i,x=0,sum1=0,sum2=0,a=0,b=0,c=0;
    for(i = 0;i < 12;i++){
        if(i%2 != 0){
            sum1=sum1+(int)ean[i]-48;//把字符型转为整型
        }
        else{
            sum2=sum2+(int)ean[i]-48;//48指的是字符ascii码值减去48的值为其对应的整数值
        }
    }
    a=sum1*3;
    b=a+sum2;
    c=b%10;
    x=(10-c)%10;
    return x;
}
int main(){
    char arr[1000];
    int q,mn=0;
    for(q=0;q<12;q++){
        scanf("%c",&arr[q]);
    }
    mn=getEAN13(arr);
    printf("%d",mn);
}

题目仅需提交getEAN13函数部分,main函数是我自己写的测试函数;

因为输入进来的数是以字符的形式输进来的,所以计算时要转成int整型来计算,结果才会正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

511511511

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值