北京理工大学 乐学C语言编程汇编

上传人:郭** 文档编号:77033688 上传时间:2022-04-19 格式:DOC 页数:108 大小:309.19KB
返回 下载 相关 举报
北京理工大学 乐学C语言编程汇编_第1页
第1页 / 共108页
北京理工大学 乐学C语言编程汇编_第2页
第2页 / 共108页
亲,该文档总共108页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2018学年第一学期C语言试题汇编目录:(O(_)O同学们乐学C语言学习的好助手来啦!)19.判断三角形形状20. 【小学生】计算时钟的夹角22.【小学生】找出最大素数24.再算日期(根据星期求日期)25.【小学五年级】确定母亲节27.【中学】寻找特殊偶数28.【中学】寻找阿姆斯特朗数30.【中学】求最后3位数值31.【图形】数字菱形32.【图形】空心的倒三角型34.【日期】计算后续日期35.【中学】零钱换整钱36.【图形】空心数字梯形*37. 晕(回形方阵)38. 【中学】科学记数法*39. 【中学】整数问题40. 数制转换41. 计算通用产品代码(UPC)的校验位42. 五年级小学生的题目43. 【日期】黑色星期五(数组)H【日期】身份证的奥秘*H 高精度加减法*44. 判断二进制对称数45. 【字符】合并字符串46. 猜数字47. 【大学】北理工的恶龙48.【数列】等值数列段49. 扫雷50. 【字符】压缩文本文件H. 安全的密码*H. 子数整除*51. 小蜜蜂52. 回文字符串递归53.计算子字符串个数54. 【小学递归】杀鸡用牛刀要用递归啊!55. 【中学】求最大公约数递归56.【大学递归】求解平方根57. 【数列递归】求序列之和递归H 铺地板*(之字方阵)58. 车辆限行59.采用指针对数组进行排序*60.合并排序61.对一个整数数组排序H 二维数组排序*62. 全能战士63. 三角形是一个永不过时的话题64. 学生成绩排序65.大家一起做游戏*66. 【大学】恭喜发财 利是窦来67. 建立正序链表68. 链表排序69. 链表移动70. 求循环节H. 链表处理*其它:1.期中测试12.期中测试23.期中测试34.期中测试(周青班)15. 期中测试(周青班)26. 期中测试(周青班)37.计算字符串中某字符串出现次数8.编写程序:从键盘输入两个字符串,找出其中没有同时出现在两个字符串中的字符。9.合并删除并排序10.拱猪积分11.合并果子12.大数分解(分解质因数)13.在指定字符后添加字符串14.合伙捕鱼15.统计字符串中各字符的数量16.从指定位置开始删除字符17. 按要求生成矩阵18.谁能出线19.数列Sum20.李仲君小组:排列字符串21.字符M22.数字三角形23.另一种空心数字梯形24.字符X25.字符X升级版26.矩阵转置4527.hybest:A+B28.寻找矩阵鞍点29.洗牌30.整数拆分正文部分:19.判断三角形形状:要求:输入三角型的三条边,判断三角形的形状。假设输入的三边边长均0。(提示:本题中应该要用到 if 语句嵌套)输入:三角型的3条边的长度(int型)。输出:等边三角形:equilateral triangle.等腰三角形:isoceles triangle.不构成三角形:non-triangle.一般三角形:triangle.测试输入期待的输出以文本方式显示1. 222以文本方式显示1. equilateraltriangle.以文本方式显示1. 322以文本方式显示1. isocelestriangle.以文本方式显示1. 131以文本方式显示1. non-triangle.以文本方式显示1. 345以文本方式显示1. triangle.#includemain()int a,b,c;scanf(%d %d %d,&a,&b,&c);if(a+b=c|a+c=b|b+c=a)printf(non-triangle.n); elseif(a=b|b=c|a=c) if(a=b&b=c&c=a) printf(equilateral triangle.n); else printf(isoceles triangle.n); else printf(triangle.n);20.计算时钟夹角:输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 0, 59 上 ) 。输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。再看一看,想一想:是否可以不用if 语句,只使用 printf 函数来简化你的程序?#include#includemain() int a,b;float c,e;scanf(%d %d,&a,&b); if(b=0) e=180-30*abs(a-6); printf(At %d:00 the angle is %.1f degrees.n,a,e); else c=30*a-5.5*b;if(c=-180&c=0&c180) e=360-c; printf(At %d:%02d the angle is %.1f degrees.n,a,b,e); 22.找出最大素数:输入: 取值范围输出:该范围内的最大素数#includemain() int a,b,c; scanf(%d,&a); b=a-1; while (b=2) c=a%b; if(c=0) a-; b=a-1; else b-; printf(The max prime number is %d.n,a);24.再算日期:再次给出任意一个年月日(年1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。输入: 年 月 日输出: 06。 星期日用 0 表示,星期一用 1 表示,星期二用 2 表示.星期六用 6 表示。假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?#includemain() int a,b,c,e,f,g;long s=1; scanf(%d %d %d,&a,&b,&c); if(b12|b31|c30|c29|c28|c1) s=0; if(s=0) printf(day is error.n); break;s+; c-;if(c=0)if(b=5|b=7|b=10|b=12)c=30;if(b=1|b=2|b=4|b=6|b=8|b=9|b=11)c=31;if(b=3)if(g=0|f!=0&e=0)c=29;elsec=28;b-;if(b=0)b=12;a-;if(s!=0)printf(%ldn,s%7);25.确定母亲节:母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。输入: 年份输出:日期(5月的哪一天)#includemain() int a,ri,c; int d,f,g,e; scanf(%d,&a); d=(a-1900)%4; f=(a-1900)%100; g=(a-1600)%400; if (g=0|f!=0&d=0) ri=365*(a-1900)+(a-1900)/4-(a-1900)/100+(a-1600)/400+121;e=ri%7; if(e!=0)c=15-e; else c=8; printf(%dn,c); else ri=365*(a-1900)+(a-1900)/4-(a-1900)/100+(a-1600)/400+121; e=ri%7; if(e!=0) c=15-e; else c=8;printf(%dn,c); 27.寻找特殊偶数:背景有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。输入所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。#include main() int a,b,i,j=0; int d,e,f,g; scanf(%d %d,&a,&b); while(a!=0&b!=0) if(a9999|ab) printf(Errorn); else i=a; while(i=b) g=i%10; f=i/10%10; e=i/100%10; d=i/1000; if(g=f|g=e|g=d|f=e|f=d|e=d) i=i+2; else j+; printf(%d ,i); i=i+2; printf(n); printf(counter=%dn,j); j=0; scanf(%d %d,&a,&b); 28.寻找阿姆斯特朗数:请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。例如:407=444+000+777。所以407就是一个特殊数。输入: 正整数的位数n(n=6)。输出: 所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提示:No output.”;若存在,则从小到大进行输出。#include main() int a,b,c,d,e,f,g; int o=1,p=1,q=1,r=1,s=1,t=1; int n; int shang,xia ; int i=1,j,h=0,k=1,l=1; scanf(%d,&n); while(i=n) k=10*k; i+; shang=k-1; xia=k/10; j=xia; while(j=shang) a=j%10; b=j/10%10; c=j/100%10; d=j/1000%10; e=j/10000%10; f=j/100000%10; while(l=n) o=a*o;p=p*b;q=q*c;r=r*d;s=s*e;t=t*f; l+ ; g=o+p+q+r+s+t; if(j=g) printf(%dn,j); h+; j+; l=1; o=1,p=1,q=1,r=1,s=1,t=1; if(h=0) printf(No output.n); 31.打印数字菱形:这是非信息类2013年出的题目,大家来看看,你会做吗?输入 n 的值,输出如下例( n=4 )所示的数字菱形。 4 434 43234 4321234 43234 434 4 输入: n输出: 数字菱形友情提示:同学们总结一下打印星号组成的实心图形程序的编程思路:第一步,打印星号组成的正方形;第二步,改变每行星号的个数,打印每行星号数量不一样的图形;如果是空心图形,每行第一个和最后一个位置输出星号,其他位置输出空格。现在我们练习输出变化的字符,在打印星号图形的基础上,原来输出*号的位置,将printf(*);改为printf(%2d,x);当然,原来输出一个*号的地方只占一个字符的位置,现在都要改为2个字符的位置,如果输出的是数字且多于2个,则要是%3d或%4d了。x是多少呢?则要寻找其规律,就是该输出位置与所在行列的关系。注意给出的测试用例,输出的数字是左对齐啊。不用数组就可以完成。#includemain() int i=1,j=1,n,m;scanf(%d,&n);m=n;while(i=2*n-1)for( ;i=n;i+) for( ;jn-i&jn&jn&i=2*n-1;i+) for( ;ji-n&jn&j=3*n-1-i;j+) m+;printf(%-2d,m); printf(n); j=1;32.打印空心倒三角形:测试输入期待的输出测试用例 1以文本方式显示1. 3以文本方式显示1. *2. * *3. *测试用例 2以文本方式显示1. 5以文本方式显示1. *2. * *3. * *4. *5. *#includemain() int i=2,j=1,h; scanf(%d,&h); for(;j1) while (i=h) for(j=1;ji&j2*h-i;j+)printf( ); for( ;j=2*h-i;j+) printf(*); printf(n); i+; 34.计算后续日期:我们经常要计算,从今天往后N天之后是哪一天(哪年哪月哪日)。现在我们就可以编写一个程序,推算指定日期之后的第N天是什么日期。输入: 年 月 日 N输出:(年月日+N天后的)年.月.日#includemain() int a,b,c; int nian,yue,ri; int m; scanf(%d %d %d %d,&a,&b,&c,&m); nian=a; yue=b;ri=c; while(m0) switch ( yue ) case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(ri31) ri=1;yue+; break; case 4:case 6:case 9:case 11: if(ri30) ri=1;yue+; break; case 2: if(nian%400=0|nian%100!=0&nian%4=0) if(ri29) ri=1;yue+; else if(ri28) ri=1;yue+; break; m-; if(yue=13)nian+;yue=1;ri=1; printf(%d.%d.%dn,nian,yue,ri); 35.零钱换整钱:小明手中有硬币,小红手中有若干张10元的纸币。已知 1 角硬币厚 1.8mm,5 角硬币厚 1.5mm,1 元硬币厚 2.0mm 。小红拿出若干张10元的纸币,小明要将 1 角的硬币放成一摞,将 5 角的硬币放成一摞,将 1 元的硬币放成一摞,如果 3 摞硬币一样高,且三摞硬币的金额之和正好等于小红要求的面值,则双方交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1 角的数量,5 角的数量,1元的数量#includemain() int a,d,e,f; float x,y,z;scanf(%d,&a); x=25.0/4*a; y=15.0/2*a; z=45.0/8*a; d=x;e=y;f=z; if(x!=d|y!=e|z!=f) printf(No change.n); else printf(%d,%d,%dn,d,e,f);36.空心数字梯形输入行数 n 和首数字字符,在屏幕上输出由数字围起的高和下底宽度均 n 的空心梯形。 要求:输出的数字是循环的,即输出数字 9 后再输出的数字是 0。输入: 行数n 和首字符输出: 空心梯形测试输入期待的输出以文本方式显示1. 55以文本方式显示1. 56789010987652. 6 63. 7 74. 8 85. 90109以文本方式显示1. 10以文本方式显示1. 0以文本方式显示1. 29以文本方式显示1. 90092. 00以文本方式显示1. 31以文本方式显示1. 12343212. 223. 343以文本方式显示1. 66以文本方式显示1. 67890123321098762. 7 73. 8 84. 9 95. 0 06. 123321以文本方式显示1. 99以文本方式显示1. 90123456789010987654321092. 0 03. 1 14. 2 25. 3 36. 4 47. 5 58. 6 69. 789010987以文本方式显示1. 39以文本方式显示1. 90121092. 0 03. 121#includemain()int i,j,k,n,m;/k为操作数 scanf(%d %d,&n,&m);/n行,m首for(i=0;in;i+)if(i=0)for(j=0;j=0;j-)if(j!=0)printf(%-2d,(m+j)%10);elseprintf(%dn,m);elseif(i=n-1)for(j=1;jn;j+)printf( );for(j=0;j=0;j-)if(j=0)printf(%dn,(m+i)%10);elseprintf(%-2d,(m+i+j)%10);elsefor(j=0;ji;j+)printf( );printf(%-2d,(m+i)%10);for(j=1;j=3*n-4-2*i;j+)printf( );printf(%dn,(m+i)%10); 37.晕(回形方阵):n。正方形的边长输出: 边长为 n 的数字回形方阵。期待的输出时间限制以文本方式显示1. 3以文本方式显示1. 1232. 8943. 765以文本方式显示1. 4以文本方式显示1. 12342. 12131453. 11161564. 10987#includemain() int a1010; int i=0,j=0,n,k,b,m=1; /i、j行列,m计数字,k为循环总数,b为循环次数。 scanf(%d,&n); k=(n+1)/2; for( b=1;b=k;b+) for(i=b-1,j=b-1;j=n-b;m+,j+) aij=m; i+; for(j=n-b;i=b-1;m+,j-) aij=m; i-; for(j=b-1;i=b;m+,i-) aij=m; j+; for(i=0,j=0;i=n-1;i+) for(j=0;j=n-1;j+) if(jn-1) printf(%3d,aij); if(j=n-1) printf(%3dn,aij); 38.科学记数法:对于非常大或者非常小的数据,我们通常用科学记数法来表示。例如在科技文献和电脑中经常遇到的 2.3106 (计算机中的科学记数法表示为:2.3E6),或者 9.1810-5 (科学记树法表示:9.18E-5)这种类型的数据。输入: 用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。输出: 该数据的双精度表示说明: 输入数据的精度不高于小数点后50位。 输入数据时,在实数和幂之间有空格进行分隔,空格个数不定。 结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。输入输出以文本方式显示1. 1.2345E3以文本方式显示1. 1234.50000000以文本方式显示1. 1.2345e-3以文本方式显示1. 0.00123450以文本方式显示1. 2.23456789123456789123456789e20以文本方式显示1. 223456789123456789123.45678900以文本方式显示1. 1E0以文本方式显示1. 1.00000000以文本方式显示2.2345678901234567890E1以文本方式显示22.34567890#include#includemain() char a100; char temp; int i,j,k; scanf(%s %*c %d,&a,&i); k=strlen(a); for(j=k;j0) for(j=1;j=1+i;j+) aj=aj+1; a1+i=.; for(j=0;j=9+i;j+) printf(%c,aj); if(i=2;j-) aj+i=aj; ai+1=a0; for(j=0;j=i;j+) aj=0; a1=.; for(j=0;j=9;j+) printf(%c,aj); if(i=0)printf(1.00000000n);39.整数问题请输出满足以下条件的 n 位正整数的个数:要求该n位整数的从高位开始前 1 位可以被 1 整除,前 2 位可以被 2*2 整除,前 3 位可以被 3*3 整除,前 4 位可以被 4*4 整除.。即该整数前 k 位都可被 k 平方整除。例如:n=1,则符合条件的1位正整数为19,输出答案 9。n=2,符合条件的正整数为:12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96,则输出答案22。当n=4时,2432就是一个符合题意的整数。第一位 2 可以被1整除;前2位24可以被4整除;前3位243可以被9整除;整个4位2432可以被16整除。输入:n(0=n9)输出: 符合该条件的n位正整数的数量(本题目为软件学院2007年保研学生初试上机试题。本题可以不用数组)#includemain() int w,i=0; / w为位数,i为计数器 long powerf(int ); long p,h,k,x,t,n; /h为操作数,k为余数 ,x为前t位操作数 scanf(%d,&w);if(w3)for(h=p=powerf(w-1);h1;x=x/10,t-)k=x%(t*t);if(k!=0)break; if(t=1)for(n=10*h;n10*h+10;n+)if(n%(w*w)=0)i+;elsefor(h=p=powerf(w);h1;x=x/10,t-)k=x%(t*t);if(k!=0)break; if(t=1)i+; printf(%dn,i); long powerf(int n)/n是位数 long i=1;if(n=0) return i;elsefor(n-;n0;n-)i*=10;return i;40.数制转化:我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 236 之间。对于十以下的数字,用 09 表示,而十以上的数字,则使用大写的 AZ 表示。求出分别在 236 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。期待的输出时间限制以文本方式显示1. 125以文本方式显示1. 12(base3)=5(base6)以文本方式显示1. 123456以文本方式显示1. 123isnotequalto 456 in any base.#include#include#includemain() char a50,b50; /数组名和变量名不要重复! int c50,d50; int i,j, m,n; long hec,hed; int p,q,max, k,l; /k,l作进制的循环变量 scanf(%s%s,&a,&b); m=strlen(a); /m,n为数组内循环提供控制 n=strlen(b); for(i=0;i=A) cm-1-i=10+ai-A; else cm-1-i=ai-0; for(i=0;i=A) dn-1-i=10+bi-A; else dn-1-i=bi-0; for(i=0,max=c0;i=max) max=ci; p=max+1; for(i=0,max=d0;i=max) max=di; q=max+1; for(k=p;k=36;k+) /k,l作进制的循环变量 for(l=q;l=36;l+) for(j=0,hec=0;j=m-1;j+) hec=hec+cj* (pow(k,j); for(j=0,hed=0;j=n-1;j+) hed=hed+dj* (pow(l,j); if(hec=hed) break; if(hec=hed) break;if(hec=hed)for(i=0;i=m-1;i+) printf(%c,ai); printf( (base %d) = ,k); for(i=0;i=n-1;i+) printf(%c,bi); printf( (base %d)n,l);elsefor(i=0;i=m-1;i+) printf(%c,ai); printf( is not equal to ); for(i=0;i=n-1;i+) printf(%c,bi); printf( in any base 2.36n);/变量使用有好习惯,复制粘贴修改要谨慎。时刻注意改变的量有什么 41.计算UPC校验位:背景许多年来,货物生产商都会把超市售卖的每件商品上放置一个条码。这种被称为通用产品代码(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的校验位#includemain() int a11; int i,b=0,c=0,d; /累加器、乘器勿忘赋初始值 for(i=0;i=10;i+) scanf(%1d,&ai); for(i=0;i=10;i+=2) b+=ai; for(i=1;i=10;i+=2) c+=ai; d=9-(3*b+c-1)%10; printf(%dn,d);42.五年级小学生的题目:那两个小朋友在不断进步,他们已经学会了负数和多位数,于是他们又开始进行游戏了。小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。输入: 用逗号分隔的整数序列,及其运算符和等号输出: 最大数 op 最小数=结果说明:本题目应该可以不使用数组就可以完成,关键是如何处理负数和减法。#include#includemain() char a100000,fu; int b1000; int i,j=0,k,l,lei=0,max,min; /如果是long的话 编译全线飘红 gets(a); k=strlen(a); fu=ak-3; for(i=0;ik;i+) if(ai=0) ai=ai-0; for(j=0,i=0;ik-3;i+) /条件临界控制 ,注意是k-3! if(ai=0) lei=lei*10+ai; if(ai=,) bj=lei;lei=0;j+; if(ai=-) i+; while(ai!=,) lei=lei*10+ai;i+; bj=-lei;j+,lei=0 ; l=j-1; for(j=1,max=b0,min=b0;j=l;j+) if(maxbj) min=bj; switch (fu) case +: if (max=0&min=0) printf(%d + %d = %dn,max,min,max+min);break; case -: if (max=0&min=0) printf(%d - %d = %dn,max,min,max-min);break; case *: if (max=0&min=0) printf(%d * %d = %dn,max,min,max*min);break; case
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!