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

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

ID:6425056

大小:59.83 KB

页数:29页

时间:2018-01-13

北理工c语言编程网上作业答案_第1页
北理工c语言编程网上作业答案_第2页
北理工c语言编程网上作业答案_第3页
北理工c语言编程网上作业答案_第4页
北理工c语言编程网上作业答案_第5页
资源描述:

《北理工c语言编程网上作业答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、H1:计算通用产品代码(UPC)的校验位(选作)成绩:5/折扣:0.8背景许多年来,货物生产商都会把超市售卖的每件商品上放置一个条码。这种被称为通用产品代码(UniversalProductCode,缩写UPC)的条码可以识别生产商和产品。超市可以通过扫描产品上的条码来确定支付此项商品的费用。每一个条码由十二位数字构成,通常这些数字会显示在条码下面。例如,包装为26盎司的Morton牌碘化盐所用条码下的数字是:024600010030第一个数字表示商品的种类(0表示大部分的食品杂货,2表示需要称量的货品,3表示药品或和健康相关的商品,而

2、5表示优惠券)。接下来的一组五位数字用来识别生产商。而第二组五位数字则用来区分产品类型(其中包括包装尺寸)。最后一位数字是“校验位”,它可以帮助鉴别先前数字中的错误。如果条码扫描出现错误,那么前十一位数字和最后一位数字可能会不一致,而超市扫描机也会拒绝整个条码。下面是一种计算校验位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和第十位数字相加。接着把第一次加法结果乘以3后再加上第二次加法的结果。随后,再把上述结果减去1。减法后的结果除以10取余数。最后,用9减去上一步骤中得到

3、的余数。现在以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.#include2.m

4、ain()3.{4.inta,b,c;5.intb1,b2,b3,b4,b5;6.intc1,c2,c3,c4,c5;7.intd1,d2,d3,d4;8.scanf("%d%d%d",&a,&b,&c);9.b1=b/10000,b2=(b/1000)%10,b3=(b/100)%10,b4=(b/10)%10,b5=b%10;10.c1=c/10000,c2=(c/1000)%10,c3=(c/100)%10,c4=(c/10)%10,c5=c%10;11.d1=a+b2+b4+c1+c3+c5,d2=b1+b3+b5+c2

5、+c4,d3=(3*d1+d2-1)%10,d4=9-d3;12.printf("%d",d4);13.}H2:数制转换(选作)成绩:5/折扣:0.8我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如12和5,在十进制下它们是不等的,但若12使用3进制而5使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制,12和5就可以是相等的。程序的输入是两个数字M和N(其十进制的值不超过100000000

6、0),它们的进制在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角的硬币硬币

7、放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入:小红希望交换几张10元的纸币输出:1角的数量,5角的数量,1元的数量1.#include2.main()3.{4.intn,a,b,c,s,j=0;5.scanf("%d",&n);6.for(a=1;a<10*n;a++)7.for(b=1;b*15<=a*18;b++)8.for(c=1;c

8、b*15&&s==100*n)12.{printf("%d,%d,%d",a,b,c);13.j+=1;14.}15.}16.if(j==0)17.printf("Nochange.");18.re

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。