北理工C语言编程网上作业答案

2025-07-27

H1:计算通用产品代码(UPC)的校验位(选作)

成绩: 5 / 折扣: 0.8

背景

许多年来,货物生产商都会把超市售卖的每件商品上放置一个条码。这种被称为通用产品代码(Universal Product Code,缩写UPC)的条码可以识别生产商和产品。超市可以通过扫描产品上的条码来确定支付此项商品的费用。每一个条码由十二位数字构成,通常这些数字会显示在条码下面。例如,包装为26盎司的Morton牌碘化盐所用条码下的数字是: 0 24600 01003 0

第一个数字表示商品的种类(0表示大部分的食品杂货,2表示需要称量的货品,3表示药品或和健康相关的商品,而5表示优惠券)。接下来的一组五位数字用来识别生产商。而第二组五位数字则用来区分产品类型(其中包括包装尺寸)。最后一位数字是“校验位”,它可以帮助鉴别先前数字中的错误。如果条码扫描出现错误,那么前十一位数字和最后一位数字可能会不一致,而超市扫描机也会拒绝整个条码。

下面是一种计算校验位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和第十位数字相加。接着把第一次加法结果乘以3后再加上第二次加法的结果。随后,再把上述结果减去1。减法后的结果除以10取余数。最后,用9减去上一步骤中得到的余数。现在以Morton碘盐为例,第一组数字的加法是0+4+0+0+0+3=7,而第二组数字的加法是2+6+0+1+0=9。把第一组加法值乘以3后再加上第二组加法值得到的结果是30。再减去1,结果变为29。再把这个值除以10取余数为9。9在减去余数结果9,最终值为0。

输入

每次输入三行数据,第一行是UPC的第一位数字,第二行是UPC的第一组五位数字,第三行是UPC的第二组五位数字。

输出

UPC的校验位

提示

本题有隐藏测试用例。如果想多找不同的实例验证你的算法,可以拿身边书或食品背后的条码测试一下。

1. #include 2. main() 3. {

4. int a,b,c;

5. int b1,b2,b3,b4,b5; 6. int c1,c2,c3,c4,c5; 7. int d1,d2,d3,d4;

8. scanf(\,&a,&b,&c);

9. b1=b/10000,b2=(b/1000),b3=(b/100),b4=(b/10),b5=b; 10. c1=c/10000,c2=(c/1000),c3=(c/100),c4=(c/10),c5=c; 11. d1=a+b2+b4+c1+c3+c5,d2=b1+b3+b5+c2+c4,d3=(3*d1+d2-1),d4=9-d3; 12. printf(\,d4); 13. }

H2:数制转换(选作)

成绩: 5 / 折扣: 0.8

我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。

这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。

程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 A~Z 表示。

求出分别在 2~36 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。

21. 零钱换整钱

成绩: 5 / 折扣: 0.8

小明手中有一堆硬币,小红手中有若干张10元的整钱。已知 1 角的硬币厚度为 1.8mm,5 角的硬币厚 1.5mm, 1 元的硬币为 2.0mm 。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将 1 角的硬币放成一摞,将 5 角的硬币硬币放成一摞,将 1 元的硬币放成一摞,如果 3 摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。 输入:

小红希望交换几张10元的纸币 输出:

1 角的数量,5 角的数量,1元的数量

1. #include 2. main() 3. {

4. int n,a,b,c,s,j=0; 5. scanf(\,&n);

6. for(a=1;a<10*n;a++)

7. for(b=1;b*15<=a*18;b++) 8. for(c=1;c

22. 买东西

成绩: 5 / 折扣: 0.8

某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元, B品牌为每个3元,而C品牌为每3个1元。如果要用 M 元钱买 N 个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。

输入:

先后输入M(钱数)及N(商品个数)的实际数值

输出:

所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。 要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 1. #include 2. main() 3. {

4. int a,b,c,M,N,s;

5. scanf(\,&M,&N); 6. for(a=1;a<=N;a++) 7. {

8. for(b=1;b<=N;b++) 9. { 10. c=N-a-b; 11. if(c%3==0) 12. { 13. s=a*5+b*3+c/3; 14. if(s==M) 15. printf(\,a,b,c); 16. } 17. } 18. } 19. }

23 谁能出线

成绩: 10 / 折扣: 0.8

背景:

电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。

输入:

按顺序给出一个小组10个人的最后得分(int)。

输出:

能够出线的学生序号(0~9)。 #include main()

{int a[10]={0},i,max=0; for(i=0;i<10;i++) {

scanf(\ if(max

for(i=0;i<10;i++) {if(a[i]==max) printf(\ } }

24. 寻找特殊偶数

成绩: 5 / 折扣: 0.8

背景

有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。

输入

所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。

输出

列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。

1. #include


北理工C语言编程网上作业答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:加强道德修养,锤炼道德品质

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219