ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:59.26KB ,
资源ID:3600123      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3600123.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北理工C语言编程网上作业答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

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

3、数字的加法是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

4、,c4,c5; 7.int d1,d2,d3,d4; 8.scanf(%dn%dn%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(%dn,d4); 13. H2:数制转换(选作)成绩: 5 / 折扣: 0.

5、8我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。 这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。 程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 236 之间。对于十以下的数字,用 09 表示,而十以上的数字,则使用大写的 AZ 表示。 1.2.#include 3.main() 4. 5.

6、int n,a,b,c,s,j=0; 6.scanf(%d,&n); 7.for(a=1;a10*n;a+) 8.for(b=1;b*15=a*18;b+) 9.for(c=1;ca;c+) 10. 11.s=a+b*5+c*10; 12.if(b*15=c*20&a*18=b*15&s=100*n) 13.printf(%d,%d,%dn,a,b,c); 14.j+=1; 15. 16. 17.if(j=0) 18.printf(No change.n); 19.return 0; 20. 22. 买东西成绩: 5 / 折扣: 0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品

7、牌的价格为每个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(%d%d,&M,&N); 6.for(a=1;a=N;a+)

8、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(%d %d %dn,a,b,c); 16. 17. 18. 19.23 谁能出线成绩: 10 / 折扣: 0.8背景:电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。输入:按顺序给出一个小组10个人的最后得分(int)。输出:能够出线的学生序号(

9、09)。#includemain()int a10=0,i,max=0;for(i=0;i10;i+) scanf(%d,&ai); if(maxai) max=ai; for(i=0;i10;i+) if(ai=max) printf(%dn,i); 24. 寻找特殊偶数成绩: 5 / 折扣: 0.8背景有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。输入所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。1.#inclu

10、de 2.main() 3. 4.int a,b,counter,i,number1,number2,number3,number4; 5.do 6. 7.scanf(%d%d,&a,&b); 8.if(a=0)&(b=0) 9.break; 10.if(a=b) printf(Errorn); 11.else 12. 13.if(a1000)|(b1000) printf(Errorn); 14.else 15. 16.for(i=a,counter=0;i=b;i+) 17. 18.number1=i/1000; 19.number2=i/100%10; 20.number3=i/10%1

11、0; 21.number4=i%10; 22.if(number1!=number2)&(number1!=number3)&(number1!=number4)&(number2!=number3)&(number2!=number4)&(number3!=number4) 23. 24.if(i%2)=0) 25. 26.printf(%d ,i); 27.counter+; 28. 29. 30. 31.printf(n); 32.printf(counter=%dn,counter); 33. 34. 35. 36.while(a!=0)&(b!=0); 37.return; 38.

12、26 二年级小学生的题目成绩: 10 / 折扣: 0.8两个二年级小朋友在一起玩游戏,小明给出一堆不超过两位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。输入:用逗号分隔的不超过两位的正整数序列,及其运算符和等号输出: 最大数 op 最小数=结果1.#include 2.int main() 3. 4.int op=0; 5.int max=0; 6.int min=99; 7.int mark=0; 8.int n1=-1,n2=-1,n=0; 9.for(;1;) 10. 11.char c; 12.

13、scanf(%c,&c); 13.if(c=,) 14. 15.if(mark=1) 16.n=n1; 17.else if(mark=2) 18.n=n1*10+n2; 19.if(nmax) 20.max=n; 21.if(nmin) 22.min=n; 23.mark=0; 24.n1=-1,n2=-1; 25.continue; 26. 27.if(c=+) 28.op=1; 29.else if(c=-) 30.op=2; 31.else if(c=*) 32.op=3; 33.else if(c=/) 34.op=4; 35.else if(c=%) 36.op=5; 37.els

14、e if(c=) 38.break; 39.else if(c=0) 40. 41.if(mark=0) 42.n1=c-0;mark=1; 43.else if(mark=1) 44.n2=c-0;mark=2; 45.46. 47. 48.switch (op) 49. 50.case 1: 51. 52.printf(%d + %d = %dn,max,min,max+min); 53.break; 54. 55.case 2: 56. 57.printf(%d - %d = %dn,max,min,max-min); 58.break; 59. 60.case 3: 61. 62.pr

15、intf(%d * %d = %dn,max,min,max*min); 63.break; 64. 65.case 4: 66. 67.if(min=0) 68.printf(Error!n); 69.else 70. 71.printf(%d / %d = %dn,max,min,max/min); 72. 73.break; 74. 75.case 5: 76. 77.if(min=0) 78.printf(Error!n); 79.else 80. 81.printf(%d % %d = %dn,max,min,max%min); 82. 83.break; 84. 85. 86. 2

16、7 等值数列段成绩: 10 / 折扣: 0.8如果一个数列中的某一段(至少有两个元素)的各元素值均相同,则称之为等值数列段。等值数列段中元素的个数叫做等值数列段的长度。输入:由N个元素组成的整数数列A(其中N=50)输出:A中长度最大的所有等值数列段的始末位置,如果没有等值数列段,则输出No equal number list.说明:始末位置是指数组下标,即0表示第一个元素。如果有多个同等长度的等值数列,只输出第一个等值数列的起始位置。当在一个LIST中出现两个等长的连续串的时候,我们的答案应该是第一个等长串。1.#include 2.int main() 3. 4.5.for(;1;) 6.

17、 7.int num50=0; 8.int n=0; 9.10.scanf(%d,&n); 11.for(int i=0;in;i+) 12.scanf(%d,&numi); 13.int starttemp=num0; 14.int start=num0; 15.int a=-1; 16.int b=0; 17.int count=1; 18.int counttemp=1; 19.20.for(int i=1;icount) 27.b=a;count=counttemp; 28.continue; 29. 30.else 31. 32.counttemp=1; 33. 34.35. 36.

18、if(a=-1) 37. printf(No equal number list.n);break; 38.else 39.printf(The longest equal number list is from %d to %d.n,b+1-count,b); break; 40. 41. 28 大家一起做游戏成绩: 15 / 折扣: 0.8幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。每个小朋友都希望自己能有更多的练习数数的机会,

19、所以都希望成为最终被留下的那位。现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。输入:小朋友的个数(=50) 要被练习的数字输出:最终被留下的小朋友的序号说明:如“要被练习的数字”是5,则每次数到5的同学要退出该游戏1.#include 2.void main() 3. 4.int N,n,i,s=0,a; 5.scanf(%d %dn,&N,&n); 6.for(i=2;i=N;i+) 7.s=(s+n)%i; 8.a=s+1; 9.printf(The left child is NO %d.n,a); 10. 29 组成最大数成绩: 10 / 折扣

20、: 0.8任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。输入: 自然数 n 输出: 各位数字组成的最大数 1.#include 2.#include 3.int main() 4. 5.char a100000,c; 6.int i,j,k; 7.scanf(%s,&a); 8.i=strlen(a); 9.for(j=0;ji-1;j+) 10.for(k=0;ki-j-1;k+) 11. 12.if(akak+1) 13. 14.c=ak; 15.ak=ak+1; 16.ak+1=c; 17. 18. 19.printf(%s,a);

21、 20.printf(n); 21. 30 删除重复字符成绩: 5 / 折扣: 0.8背景: 输入一个长度不超过 100 的字符串,删除串中的重复字符。输入:输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。输出:删除重复字符后的字符串。例如:abced。 1.#include 2.3.#include 4.5.int alread_saved(char lastchar, char newstr, int j) 6.7. 8.9.int i=0; 10.11.while(ij) 12.13. 14.15.if(lastchar=newstri)return 1;

22、 16.17.i+; 18.19. 20.21.return 0; 22.23. 24.25.void main() 26.27. 28.char str100; char newstr100; int n,i,j; 29.30.i=0; 31.32.j=0; 33.34.gets(str); 35.36.while(stri!=0) 37.38. 39.40.if(!alread_saved(stri,newstr,j) 41. newstrj=stri; j+; 42.43. 44.i+; 45.46. 47.48.newstrj=0; 49.50.puts(newstr); 51.52.

23、 31 合并字符串成绩: 10 / 折扣: 0.8输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到 大排列。输入:两个已经排好顺序(升序)的两个字符串输出:一个合并在一起的有序(升序)的字符串要求:设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。如果采用先进行串连接,然后再进行排序的算法,则效率太低了。1.#include 2.3.#include 4.5.void MergeList(char str1,char str2,char str3); 6.7.void main() 8.9. 10.char str1100; cha

24、r str2100; char str3100; gets(str1); gets(str2); 11.12.MergeList(str1,str2,str3); 13.14.printf(%sn,str3); 15.16. 17.18.void MergeList(char str1,char str2,char str3) 19.20. 21.22.int i,j,k; 23.24.i=0;j=0;k=0; 25.int lengthOfStr1,lengthOfStr2; lengthOfStr1=strlen(str1); lengthOfStr2=strlen(str2); 26.w

25、hile(ilengthOfStr1&jlengthOfStr2) 27.28. 29.if(str1i=str2j) str3k+=str1i+; else str3k+=str2j+; 30.31. 32.while(ilengthOfStr1)str3k+=str1i+; while(jlengthOfStr2)str3k+=str2j+; str3k=0; 33.34. 32 串的减法成绩: 10 / 折扣: 0.8输入字符串s和t(串长不超过80个字符),将在字符串s中出现,但未在字符串t中出现的字符组成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符,输出u

26、。例如:当s=112345,t=2467时,u=1135。输入:第一行为串s第二行为串t输出:串u1.#include 2.#include 3.int main() 4. 5.char a80; 6.char b80; 7.gets(a); 8.gets(b); 9.10.int l=strlen(a); 11.12.for(int i=0;bi!=0;i+) 13. 14.for(int j=0;jl;j+) 15.if(aj=bi) 16.aj=0; 17. 18.for(int k=0;kl;k+) 19.if(ak!=0) 20.printf(%c,ak); 21.printf(n)

27、; 22.23. 33 单词排序成绩: 10 / 折扣: 0.8输入 5 个单词,将它们按从大到小的顺序排列后输出。输入:5个单词输出:排序后的顺序1.#includestdio.h 2.#includestring.h 3.void main() 4.char ch526,c26; 5.int i,j,k; 6.for(i=0;i5;i+) 7.gets(chi); 8.for(i=0;i4;i+) 9.k=i; 10.for(j=i+1;j5;j+) 11.if(strcmp(chk,chj)0) k=j; 12.if(k!=i) 13.strcpy(c,chi); 14.strcpy(chi,chk); 15.strcpy(chk,c); 16. 17.for(i=0;i5;i+) puts(chi); 18. 34 北理工的恶龙成绩: 10 / 折扣: 0.8背景:最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1