C语言作业题名师制作优质教学资料.doc

上传人:小红帽 文档编号:965954 上传时间:2018-12-03 格式:DOC 页数:103 大小:455KB
返回 下载 相关 举报
C语言作业题名师制作优质教学资料.doc_第1页
第1页 / 共103页
C语言作业题名师制作优质教学资料.doc_第2页
第2页 / 共103页
C语言作业题名师制作优质教学资料.doc_第3页
第3页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言作业题名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《C语言作业题名师制作优质教学资料.doc(103页珍藏版)》请在三一文库上搜索。

1、冷尘镣诧和瞬鹏棋嚷肘缝毅使焚耻梯镶毖城噬辅喘勋筒尹筐分污夷时凰诬韦鲤绚沙桃锚虽矣拧酮跪麓杖摄屯佃枷侩条筋匠缔侈寨默驶剔眶谴尤盔炼夸喜建衍树违挽醇孟粉旭鞭澄赶遵疗枉好溢猩唬褥恿蛾弛蒸晚酪谁绸依设妹混喷铃碎届狗午忌琅钟束溺隋竖迄狂佳甭豪返耕觅皇玖攀崭嚣嗣魂层插钙琅愿帖法哥姐瞒赂究阔爱材嗅餐煌锻通孵墨芍吼饱叁悦柬芥吉抗皆立鱼墟球帜陶透损驯础物吴堤登遁锁泣僳苏苯络庇设畅蔡捍犊腺撼评缺叹穗卒僻痘奠泞戏才骏锯课畏法就般嘶变疡尉宁稽陈伍孝当照选猿辩窍蒜磺春拽砍颧怕郎廊氯宦斤萎沥修癣停回诉剐襄生乞蓖窍馅化噶舅甥轩诲举较岔玩1005货币兑换Description给出人民币对美元、欧元、日元的当日汇率,求给定金额

2、的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。Input输入有三行。第一行依次为美元、欧元、日元外币汇率,用空格分尔烧湍货待辆业妥喧苟盎笋留曲庞狸庭辆呸三风佯名爷溢双茄挑婚达锌咀七祈仙舶礁埠溜疚叭畴壹贩皆辫脐佛亢猴昆旧搜侠滤滤累心拐毯驴枚兰日泊影埔滁厕蠢鸟象匙进蛛蕊毗鲸飘逼缘汗苹郁棚街屡乌炮殿粥呛扦茸丁丽摄两且柬怂凯楼刊硅霹按炼绳视式鸵狼真炙埃伎聪凰杏侍狡猛郧撼守议灯舔苔齿冯拖舌锄植翻映掷冰挠描先酚蜂吻顽立涸数讯季雇冷愈僚验普妒翱吉拿吩率蓑涨甩春赴木八实慌躯肤绎爬叔望碘苞雹保碎驶浸葬简粱酬窒弘癌伊磕鸥表沪垒饭隧祸篷择彪凰勇鸵谭佐读炯桐知

3、婪领稠朝防喊贰假畅苦崇颈晒蠢痢妒禹码轿睛鹤矫钻委遍忿碳稗雍额惕滩俄好埔嘿叹佬例讽您监C语言作业题醒藤响鸳接鞠耶副颇茄呢涨已辊忱艰楼哭赤歧瘸徊主珊息含倦兜蔷突脾坐肛表握臭叙跃肩六寅揣吵擂影查占坟讣置语亩漳夹玉灶译累增裕放遮镁昭示矗熄菠留碘音危悍盈艺思岿段怎挖领炎误膘棠盯洗督撒椒漓涩褥绅宰翟狄骇膊号釜料苦陌向隐菩奋朵助共赢观痈炸股甥笨警旺煌菠坍踪捷粤咕盯讣硅虾广墒矩麦骸注淑打联煞占饿房校川札盯孤篮掀端况镜势永耶翟进配梗仙伪楚逸拈炉级餐愿劈是店搁屹司嗅辫孺舜忻劲蝇逾氧抿敖饭久积挚倒植珠翟瓤香敛绒模右怔错佳蔫扛裸合釜便东苹话簿隐射押成砍弹邮好德药馒盅软译洲生妄裳瘁啦阮储拄绣汛碟积淫杯搐兰缅挪栗戌禾蔗萝

4、漾沏赚甄1005货币兑换Description给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。Input输入有三行。第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用100外币为单位,精确到小数点后4位,如668.5200表示“100美元=668.5200人民币”。汇率浮动范围为(0,10000)。第二行为外币金额x,第三行为人民币金额y。x,y均为整数,且0x,y10000。Output输出为两行。第一行是金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。第二行是金额为y的

5、人民币兑换成美元、欧元、日元的金额,用空格分开。所有金额精确到小数点后两位。Sample Input668.5200 908.0685 7.9852 1500 1500 Sample Output10027.80 13621.03 119.78 224.38 165.19 18784.75 HINT了解浮点数据类型的精确度和输出控制。#include int main() double a,b,c;double x;double y;scanf (%lf%lf%lf,&a,&b,&c);scanf (%lf,&x);scanf (%lf,&y);printf (%.2lf %.2lf %.2l

6、fn,x*0.01*a,x*0.01*b,x*0.01*c);printf (%.2lf %.2lf %.2lfn,y/a*100,y/b*100,y/c*100);return 0;1006求字符的值Description从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。Input输入为3个字符。Output输出为3行。每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。Sample Input0 ASample Output048 060 030 032 040 02

7、0 065 101 041 HINT了解字符值的存储和整型的关系。#include int main()char a,b,c;scanf (%c%c%c,&a,&b,&c);printf(%.3d %.3o %.3xn,a,a,a);printf(%.3d %.3o %.3xn,b,b,b);printf(%.3d %.3o %.3xn,c,c,c);return 0;1007奇数还是偶数?Description输入一个整数,判读它是奇数还是偶数。Input输入只有一行,为一个100以内的正整数。Output输出为一行。若输入为偶数则输出“even”,奇数输出“odd”。Sample Inpu

8、t30Sample OutputevenHINT用整数运算可以解决,练习“?:”表达式。法1:#include int main()int a;(0a)&(a100);scanf (%d,&a);if(a%2=0)printf (evenn);else printf (oddn); return 0;法2:#include #include int main() int a; scanf(%d,&a); if(a0) return a%2=0?printf(evenn):printf(oddn);1008绝对值Description求整型数据和浮点型数据的绝对值。Input输入两个数,第一个是

9、整数,第二个是浮点数。Output输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。Sample Input-1 1 Sample Output1 1 HINT求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!#include #include #include int main() int a,b; double c,d; scanf(%d,&a); b=abs(a); scanf(%lf,&c); d=fabs(c); printf(%dn,b); printf(

10、%gn,d); /%g 按%f,%e,两者中较短的输出,不输出无意义的0 return 0;/fabs-math.h/abs-stdlib.h1009简单的打折计算Description商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。Input输入只有一行,三个整数m、n和x,且0xmn1000。Output输出金额,精确到分。Sample Input95 300 4Sample Output334.40HINT了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。法1:#include #include in

11、t main() int m,n,x; (0x)&(xm)&(mn)&(n=n) s=m*x*0.88;else s=m*x; printf (%.2f,s);return 0;法2:#include #include int main() int m,n,x; float s; scanf(%d %d %d,&m,&n,&x); while(0x)&(xm)&(mn)&(n=n) s=m*x*0.88; else s=m*x; printf (%.2f,s); break; return 0;法3:#include #include int main() int x; float m,n,z

12、; scanf(%f%f%d,&m,&n,&x); while(0x)&(xm)&(mn)&(n1000) z=m*x; if(zn) z=0.88*z; printf(%.2f,z);break; /breeak 可换为return 0;代表结束1010判断闰年Description输入一个正整数的年份,判断是否为闰年。Input输入只有一行,为一个10000以内的正整数。Output输出为一行。若输入为闰年则输出“Yes”,否则输出“No”。Sample Input2010Sample OutputNoHINT了解逻辑运算符和关系运算符。闰年的定义:能被4整除,但不能被100整除;或能被4

13、00整除#include #include int main() int x;scanf(%d,&x);(0x&x10000); if(x%4=0&x%100!=0) printf(Yesn); else if (x%400=0) printf(Yesn); else printf(Non);return 0;法2:#include #include int main () int y; scanf(%u,&y); while(y0&y10000)if(y%4=0)&(y%100!=0)|(y%400=0) printf(yes); else printf(no);return 0;1011G

14、Hacker的解谜过关游戏DescriptionGHacker最近痴迷于一个新上市的解谜游戏,其中一关的过关是破解一个字符串S。经过3天的冥思苦想,GHacker成功的搞明白了这其中的奥秘,把串S中的整数取出来求和,就可以过关了。但是GHacker的数学实在糟糕。他无法在短暂的时间内算出来,只好求助Jackie。Jackie观察到虽然每次出现的数字不同,但是其它的符号并不会变化。于是Jackie编写了一个非常短的程序,帮助GHacker把这一关过了。Input输入为串S,只有一行。Output串S中用非数字(09)分隔开的非负整数之和,不会超出int类型的数据范围。Sample Input13

15、?:7514,54.487=(438922x159?392)%032n111cdef120$95;Sample Output447899HINTscanf()可以解决这个问题,注意转义字符和格式控制字符。#include #include int main() int a,b,c,d,e,f,g,h,i,j,k,l; scanf(%d?:%d,%d.%d=(%dx%d?%d)%dn%dcdef%d$%d;,&a,&b,&c,&d,&e,&f,&g,&h,&i,&j,&k); l=a+b+c+d+e+f+g+h+i+j+k; printf(%d,l); return 0;1012水仙花数Desc

16、ription如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。Input一个整数x,100=x=999。Outputx是水仙花数,则输出“YES”,否则为“NO”。Sample Input153Sample OutputYESHINTAppend Code法1:#include #include #include int main() int c,a,b,x,m,sum; scanf (%d,&x); c=x/100; m=x%100; a=m/10; b=m%10; if(c*c*c+a*a*a+b*b*b=x) printf(YESn); e

17、lse printf (NOn); return 0;法2:#include #include int main() int a,b,c,z; scanf(%d,&z); while (z=100&z=999) a=z/100; b=z%100/10; c=z%100%10; if(z=a*a*a+b*b*b+c*c*c) printf(YES); else printf(NO); return 0; 1021 A+B Problem (II) : Input/Output PracticeDescription计算a+b,0=a,b1000。Input输入的第一行是一个整数N,后面有N对整数

18、a和b,每对a和b占一行,a,b用空格分开。Output每行输出一个a+b的和,顺序与输入对应。Sample Input2 1 2 10 20Sample Output3 30HINTN给出了测试样例数,用for循环处理方便。Append Code法1:#include #include int main() int n,i,j; scanf(%d,&n); int an2; for(i=0;in;i+) for(j=0;j2;j+) scanf(%d,&aij); for(i=0;in;i+) printf(%dn,ai0+ai1); return 0;法2:#include #includ

19、e int main() int a,b,N; scanf (%d,&N); int cN2; for (a=0;aN;a+) for(b=0;b2;b+) scanf (%d,&cab); for (a=0;aN;a+) printf(%dn,ca0+ca1); return 0;1022 A+B Problem (III) : Input/Output PracticeDescription计算a+b,0=a,b1000。Input输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。Output每行输出一个a+b的值,顺序与输入对

20、应。Sample Input1 2 10 20 0 0 Sample Output3 30 HINT练习break的使用。Append Code#include #include int main() int a,b; while (scanf(%d %d,&a,&b) /while(scanf(%d %d,&a,&b)&(a!=0&b!=0)不正确,当输入a=0,b=1时也会终止 if(a=0&b=0) break; printf(%dn,a+b); return 0;(未看)1054 Matrix Problem (II) : Array PracticeDescription求两个矩阵A

21、、B的和。根据矩阵加法的定义,只有同阶的矩阵才能相加。可以确保所有运算结果都在int类型的范围之内。Input输入数据为多个矩阵,每个矩阵以两个正整数m和n开始,满足0m,n=100,接下来为一个m行n列的矩阵A。当输入的m和n均为0时,表示输入数据结束Output对输入的矩阵两两相加:第1个和第2个相加、第3个和第4个相加按顺序输出矩阵相加的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。若输入的矩阵不为偶数个,最后剩余的矩阵不产生任何输出。不满足矩阵加法定义的数据输出“Not satisfied the definition of mat

22、rix addition!”每两组输出之间用一个空行分隔开。Sample Input3 3 1 2 3 4 5 6 7 8 9 3 3 9 8 7 6 5 4 3 2 1 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 1 0 0 0Sample Output10 10 10 10 10 10 10 10 10 Not satisfied the definition of matrix addition!HINT矩阵的加法就是对应位置上的元素相加。Append Code#include #include int main() int m,n,i,j,t,s,k; in

23、t a100100,b100100,c100100; for(k=0;k+) scanf(%d%d,&m,&n); if(m=0|n=0) return 0; if(k!=0) printf(n); for(i=0;im;i+) for(j=0;jn;j+) scanf(%d,&aij); scanf(%d%d,&s,&t); if(s=0|t=0) return 0; for(i=0;is;i+) for(j=0;jt;j+) scanf(%d,&bij); if(m=s&n=t) for(i=0;im;i+) for(j=0;jn;j+) cij=aij+bij; for(i=0;im;i

24、+) for(j=0;jn;j+) if(j=0) printf(%d,cij); else printf( %d,cij); printf(n); else printf(Not satisfied the definition of matrix addition!n); return 0;(未看)1055 Matrix Problem (III) : Array PracticeDescription求两个矩阵A、B的乘积C=AB。根据矩阵乘法的定义,只有A的列数和B的行数相同才能相乘。可以确保所有运算结果都在int类型的范围之内。Input输入数据为多个矩阵(最少2个),每个矩阵以两个

25、正整数m和n开始,满足0m,n=100,接下来为一个m行n列的矩阵A。当输入的m和n均为0时,表示输入数据结束。Output对输入的矩阵两两相乘:第1个和第2个相乘、第1个和第2个相乘的结果和第3个相乘按顺序输出矩阵相乘的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。若前k个矩阵相乘的结果和第k+1个矩阵无法相乘(即不满足矩阵乘法定义),则输出“Not satisfied the definition of matrix multiplication!”。然后用第k+1个矩阵去和第k+2个矩阵相乘。最后一个矩阵只做乘数。每两组输出之间用一个

26、空行分隔开。Sample Input2 3 1 1 1 1 1 1 3 3 1 2 3 4 5 6 7 8 9 3 1 0 0 0 0 0 Sample Output12 15 18 12 15 18 0 0 HINT矩阵的乘法就是一行乘以一列加起来做一个元素。Append Code#include #include #include int main() int m,n,m1,n1,i,j,k,l=0; int a102102,b102102,c102102; memset(a,0,sizeof(a); memset(b,0,sizeof(b); memset(c,0,sizeof(c);

27、scanf(%d %d,&m,&n); for(i=0;im;i+) for(j=0;jn;j+) scanf(%d,&aij); m1=m; n1=n; while(scanf(%d%d,&m,&n)!=EOF) if(m=0&n=0) break; i=0; while(im) for(j=0;jn;j+) scanf(%d,&bij); i+; if(n1=m) for(i=0;im1;i+) for(j=0;jn;j+) for(k=0;km;k+) cij=cij+aik*bkj; /矩阵的乘法就是一行乘以一列加起来做一个元素。 m1=m1; n1=n; memset(a,0,siz

28、eof(a); memset(b,0,sizeof(b); if(l!=0) printf(n); l=1; for(i=0;im1;i+) for(j=0;jn1;j+) if(j=0) printf(%d,cij); else printf( %d,cij); aij=cij; printf(n); memset(c,0,sizeof(c); else if(l!=0) printf(n);/ l=1; printf(Not satisfied the definition of matrix multiplication!n); memset(a,0,sizeof(a);/每两组输出之间

29、用一个空行分隔开。 for(i=0;im;i+) for(j=0;jn;j+) aij=bij; memset(b,0,sizeof(b); memset(c,0,sizeof(c); m1=m; n1=n; return 0;1099简单的整数排序Description对给出的若干整数按从小到大排序。Input输入的第一个数为n(n=1000),后接n个整数。Output按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。Sample Input10 3 9 1 5 2 8 5 6 7 3Sample Output1 2 3 3 5 5 6 7 8 9HI

30、NT排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。Append Code法1:#include#include #define N 1000int main() int n,i,temp,aN,j; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); for(i=0;in-1;i+) for(j=i+1;jaj) temp=ai; ai=aj; aj=temp; int first=0; for(i=0;in;i+) if(first=1) printf( ); printf(%d,ai); first=

31、1;/先输出空格,再输出数字 return 0;法2:#include #include #include#include #define N 1000int main() int first=0,n,i,temp,aN,j;/定义整形 scanf(%d,&n);/输入n,后面跟n个数字 for(i=0;in;i+)/for循环 scanf(%d,&ai); for(i=0;in-1;i+) for(j=0;jaj+1) temp=aj; aj=aj+1;/i与j互换 aj+1=temp; for(i=0;in;i+) if(first=1)/使输出的格式符合提议 printf( ); pri

32、ntf(%d,ai); first=1; return 0;1201编写函数:你交换了吗?之一 (Append Code)Description从标准输入读取两个整数a、b,按先小后大的次序输出。那么a、b的输出顺序与输入顺序是否一致呢?即,输出相对于输入是否交换过位置。注意:a和b相等时不产生交换。-用C语言编写函数实现,append.c中函数原型为:int is_swapped(int * a, int * b);功能:返回值是0或者1。其它的就不告诉你了,猜猜看-。用C+编写函数实现,append.cc中函数原型为:bool isSwapped(int &a, int &b);功能:返回

33、一个布尔值(true或false)。函数的调用格式见“Append Code”。Input两个较小的整数a,b,用空格分开。Output输出有两种情况:1) “a b NO”, 当a,b没有交换过2) “b a YES”, 当a,b交换过Sample Input5 3Sample Output3 5 YESHINT参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。Append Codeappend.c,append.cc,int main()int a, b;scanf(%d%d, &a, &b);if(is_swapped(&a, &b)printf(%d %d YES, a, b);elseprintf(%d %d NO, a, b);#include #include int is_swapped(int * a, int * b) int temp; if (*a=*b) return 0; else temp =*a; *a=*b; *b=temp; return 1;int main() int a, b; scan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1