没有合适的资源?快使用搜索试试~ 我知道了~
北理工C语言编程网上作业标准答案.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 122 浏览量
2021-10-12
03:17:14
上传
评论
收藏 3.75MB PDF 举报
温馨提示
试读
27页
北理工C语言编程网上作业标准答案.pdf
资源推荐
资源详情
资源评论
北理工 C语言编程网上作业答案
2
———————————————————————————————— 作者:
———————————————————————————————— 日期:
3
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 的校验位
4
提示
本题有隐藏测试用例。 如果想多找不同的实例验证你的算法, 可以拿身边书或食品背后的条
码测试一下。
1. #include<stdio.h>
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( "%d\n%d\n%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+c4,d3=(3*d1+d2-1)%10,d4=9-d3;
12. printf( "%d\n" ,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
成绩 : 5 / 折扣 : 0.8
小明手中有一堆硬币,小红手中有若干张 10 元的整钱。已知 1 角的硬币厚度为 1.8mm ,
5 角的硬币厚 1.5mm , 1 元的硬币为 2.0mm 。小明和小红一起玩游戏,小红拿出若干
张 10 元的纸币,小明要将 1 角的硬币放成一摞,将 5 角的硬币硬币放成一摞,将 1 元
的硬币放成一摞,如果 3 摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以
进行交换,否则没有办法交换。
输入 :
小红希望交换几张 10 元的纸币
输出 :
1 角的数量 ,5 角的数量 ,1 元的数量
1. #include<stdio.h>
2. main()
3. {
4. int n,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<a;c++)
9. {
10. s=a+b*5+c*10;
11. if (b*15==c*20&&a*18==b*15&&s==100*n)
12. {printf( "%d,%d,%d\n" ,a,b,c);
13. j+=1;
14. }
15. }
16. if (j==0)
17. printf( "No change.\n" );
18. return 0;
19. }
22. 买东西
成绩 : 5 / 折扣 : 0.8
某商品有 A、B、C 三种品牌,各品牌的价格各不相同,其中 A 品牌的价格为每个 5 元, B
品牌为每个 3 元,而 C 品牌为每 3 个 1 元。如果要用 M 元钱买 N 个该商品, 要求每个商
品至少买一个,编程求各种品牌各能买多少个。
剩余26页未读,继续阅读
资源评论
- m0_685821772023-11-07资源简直太好了,完美解决了当下遇到的难题,这样的资源很难不支持~
weixin_40895192
- 粉丝: 17
- 资源: 21万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功