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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、北理工C语言编程网上作业答案北理工C语言编程网上作业答案H1:计算通用产品代码(UPC)的校验位 成绩: 5 / 折扣: 背景 许多年来,货物生产商都会把超市售卖的每件商品上放置一个条码。这种被称为通用产品代码的条码可以识别生产商和产品。超市可以通过扫描产品上的条码来确定支付此项商品的费用。每一个条码十二位数字构成,通常这些数字会显示在条码下面。例如,包装为26盎司的Morton牌碘化盐所用条码下的数字是: 0 24600 01003 0 第一个数字表示商品的种类。接下来的一组五位数字用来识别生产商。而第二组五位数字则用来区分产品类型。最后一位数字是“校验位”,它可以帮助鉴别先前数字中的错误。

2、如果条码扫描出现错误,那么前十一位数字和最后一位数字可能会不一致,而超市扫描机也会拒绝整个条码。 下面是一种计算校验位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和第十位数字相加。接着把第一次加法结果乘以3后再加上第二次加法的结果。随后,再把上述结果减去1。减法后的结果除以10取余数。最后,用9减去上一步骤中得到的余数。现在以Morton碘盐为例,第一组数字的加法是0+4+0+0+0+3=7,而第二组数字的加法是2+6+0+1+0=9。把第一组加法值乘以3后再加上第二组加法值得到的结果是30。再减去1,结果变为29。再把这个值除以

3、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

4、=(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 / 折扣: 我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。 这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们

5、是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。 程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 236 之间。对于十以下的数字,用 09 表示,而十以上的数字,则使用大写的 AZ 表示。 求出分别在 236 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。 21. 零钱换整钱 成绩: 5 / 折扣: 小明手中有一堆硬币,小红手中有若干张

6、10元的整钱。已知 1 角的硬币厚度为 ,5 角的硬币厚 , 1 元的硬币为 。小明和小红一起玩游戏,小红拿出若干张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;a7. for(b=1;b*1522. 买东西 成绩:

7、 5 / 折扣: 某商品有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. sc

8、anf(,&M,&N); 6. for(a=1;a8. for(b=1;b23 谁能出线 成绩: 10 / 折扣: 背景: 电视台举办“超级学生”才艺大赛,于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数,各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。 输入: 按顺序给出一个小组10个人的最后得分。 输出: 能够出线的学生序号。 #include main() int a10=0,i,max=0; for(i=0;i scanf( if(max for(i=0;i24. 寻找特殊偶数 成绩: 5 / 折扣: 背景 有一种

9、特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。 输入 所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。 输出 列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。 1. #include 2. main() 3. 4. int a,b,counter,i,number1,number2,number3,number4; 5. do 6. 7. scanf(,&a,&b); 8. if(a=0)&(b=0) 9. break; 10. if(a=b) printf(); 11. e

10、lse 12. 13. if(amber2!=number3)&(number2!=number4)&(number3!=number4) 23. 24. if(i%2)=0) 25. 26. printf(,i); 27. counter+; 28. 29. 30. 31. printf(); 32. printf(,counter); 33. 34. 35. 36. while(a!=0)&(b!=0); 37. return; 38. 26 二年级小学生的题目 成绩: 10 / 折扣: 两个二年级小朋友在一起玩游戏,小明给出一堆不超过两位的正整数和运算要求,小丽要找出这些整数中的最大值和

11、最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。 输入: 用逗号分隔的不超过两位的正整数序列,及其运算符和等号 输出: 最大数 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. scanf(,&c); 13. if(c=,) 14. 15. if(mark=1) 16. n=n1; 17. else if(mark=2) 18.

12、 n=n1*10+n2; 19. if(nmax) 20. max=n; 21. if(n36. op=5; 37. else 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(,max,min,max+min); 53. break; 54. 55. case 2: 56. 57. printf(,max

13、,min,max-min); 58. break; 59. 60. case 3: 61. 62. printf(,max,min,max*min); 63. break; 64. 65. case 4: 66. 67. if(min=0) 68. printf(); 69. else 70. 71. printf(,max,min,max/min); 72. 73. break; 74. 75. case 5: 76. 77. if(min=0) 78. printf(); 79. else 80. 81. printf(,max,min,max%min); 82. 83. break; 8

14、4. 85. 86. 27 等值数列段 成绩: 10 / 折扣: 如果一个数列中的某一段的各元素值均相同,则称之为等值数列段。等值数列段中元素的个数叫做等值数列段的长度。 输入: N个元素组成的整数数列A的,都退出该游戏,直到只剩下一位小朋友游戏才中止。 每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。 现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。 输入: 小朋友的个数 要被练习的数字 输出: 最终被留下的小朋友的序号 说明: 如“要被练习的数字”是5,则每次数到5的同学要退出该游戏 1. #include 2. voi

15、d main() 3. 4. int N,n,i,s=0,a; 5. scanf(,&N,&n); 6. for(i=2;i9. printf(,a); 10. 29 组成最大数 成绩: 10 / 折扣: 任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。 输入: 自然数 n 输出: 各位数字组成的最大数 1. #include 2. #include 3. int main() 4. 5. char a100000,c; 6. int i,j,k; 7. scanf(,&a); 8. i=strlen(a); 9. for(j=0;j16.

16、 ak+1=c; 17. 18. 19. printf(,a); 20. printf(); 21. 30 删除重复字符 成绩: 5 / 折扣: 背景: 输入一个长度不超过 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(i1

17、8. 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(n

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

19、 10. char str1100; char str2100; char str3100; gets(str1); gets(str2); 11. 12. MergeList(str1,str2,str3); 13. 14. printf(,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);

20、 lengthOfStr2=strlen(str2); 26. while(i31. 32. while(iwhile(j32 串的减法 成绩: 10 / 折扣: 输入字符串s和t,将在字符串s中出现,但未在字符串t中出现的字符组成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符,输出u。 例如:当s=,t=时,u=。 输入: 第一行为串s 第二行为串t 输出: 串u 1. #include 2. #include 3. int main() 4. 5. char a80; 6. char b80; 7. gets(a); 8. gets(b); 9. 10. int

21、l=strlen(a); 11. 12. for(int i=0;bi!=0;i+) 13. 14. for(int j=0;j21. for(i=1;i37 大数分解 成绩: 5 / 折扣: 2007级在“计算机科学导论”的期末考试中有一道试题。下面请你看看那题目应该如何编写。 从键盘输入的一个大于 1 的整数,通过算法将该整数分解为若干因子的乘积。 输入: 一个正整数。 输出: 分解后的各个因子。 1. 2. 3. 4. 5. 6. 7. 8. #include void main() int n,i; scanf(,&n); for(i=2;n1;) if(n%i=0) printf(,

22、i);n/=i; 9. else i+; 10. 11. 38 回文字符串递归 成绩: 5 / 折扣: 有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。 输入: 字符串 输出: Yes或者No 说明: 如输出Yes,说明输入的字符串是一个回文字符串 输出No,说明输入的字符串不是一个回文字符串 请使用递归算法实现。 1. #include 2. #include 3. int fun(char str,int a,int b) 4. 5. if(stra!=str) return 0 ; 6. else if(a=b|a+1=b&stra+1=st

23、r) return 1; 7. else if(stra=str) return 1&fun(str,a+1,b-1); 8. 9. void main() 10. char str100; scanf(,str); int n; n=strlen(str); 11. switch(fun(str,0,n-1) 12. 13. case 1:printf();break; 14. case 0:printf();break; 15. 16. 39 求最大公约数递归 成绩: 5 / 折扣: 请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。 = m 当 m输出: n和m的最大公约数 1

24、. #include 2. int gcd(int m,int n) 3. int r; 4. r=m%n; 5. return r=0?n:gcd(n,r); 6. 7. int main() 8. int m,n; 9. scanf(,&m,&n); 10. printf(,gcd(m,n); 11. return 0; 12. 40 求序列之和递归 成绩: 5 / 折扣: 请使用递归算法求下列序列的前n项之和。 1 + 1/2 - 1/3 + 1/4 -1/5 . 输入: n 输出: 序列的前n项和 1. #include 2. int main() 3. int n; 4. doubl

25、e SUM(int); 5. scanf(,&n); 6. n=1?printf():printf(,SUM(n); 7. return 0; 8. 9. double SUM(int n) 10. if(n=2) return 1+/n; 11. else if(n%2) return -/n+SUM(n-1); 12. else return SUM(n-1)+/n; 13. 44. 函数递归 成绩: 10 / 折扣: 编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。 f( n ) =1 f(n-1) + f(n-3) f(n-2) + f(n-4) -1 当 n = 0 且

26、n 4 且n为偶数 时 当 n 4 且n为奇数 时 其他 函数原型如下: int findf(int n); 参数说明:n 项数;返回值是第n项值。 例如输入:10,输出:8 预设代码 前置代码 view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 6. 7. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ #include int main() int n,s, findf( int ); scanf(, &n); 8. s = findf(n); 9. printf(, s); 10. retur

27、n 0; 11. 12. 13. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 1. int findf(int n) 2. 3. int i; 4. if(n=0&n5. if(n4&n%2=0) i=findf(n-1)+findf(n-3); 6. if(n4&n%2=1) i=findf(n-2)+findf(n-4); 7. if(n#include main() int m,n,a,i,j,s=0; printf(scanf(int bmn; if(mn) i=m; m=n; n=i; s=1; int cmn; for(i=0;if

28、or(j=0;jfor(a=1;aif(a%2!=0) c0a=c0a-1+1; for(i=1,j=a-1;i=0&i=0&j ca0=ca-10+1; for(i=a-1,j=1;i=0&i=0&jfor(a=m;aif(a%2!=0) c0a=c0a-1+1; for(i=1,j=a-1;i=0&i=0&j cm-1a+1-m=cm-1a-m+1; for(i=m-2,j=a+2-m;i=0&i=0&jfor(a=n;aif(a%2!=0) ca+1-nn-1=ca-nn-1+1; for(i=a+2-n,j=n-2;i=0&i=0&j cm-1a+1-m=cm-1a-m+1; for(

29、i=m-2,j=a+2-m;i=0&i=0&j if(s=1) for(i=0;ifor(j=0;jfor(j=0;jprintf( putchar(n); else for(i=0;ifor(j=0;jprintf( putchar(n); #include ” #define N 5 int main() int aNN; int i,j,m=0,n=0; int count=1; for(i=1;i amn=count; if(i%2=0) m+; n-; if(ncount+; m=1;n=N-1; for(i=N-1;i=1;i-) for(j=i;j=1;j-) amn=count;if(i%2=0)m+;n-; if(mN-1)n+=2;m=N-1;else m-;n+;if(nN-1) m+=2;n=N-1; count+; for(i=0;i printf( if(j=N-1) printf( system( return 0; #include main( ) int i,j,N,c; scanf(for (i=1;i if

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

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