C语言学习知识课后复习习题集.doc

上传人:小** 文档编号:2541852 上传时间:2020-04-19 格式:DOC 页数:103 大小:400.52KB
返回 下载 相关 举报
C语言学习知识课后复习习题集.doc_第1页
第1页 / 共103页
C语言学习知识课后复习习题集.doc_第2页
第2页 / 共103页
点击查看更多>>
资源描述

《C语言学习知识课后复习习题集.doc》由会员分享,可在线阅读,更多相关《C语言学习知识课后复习习题集.doc(103页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、兑换成美元、欧元、日元的金额,用空格分开。所有金额精确到小数点后两位。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 %.2lfn,

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

4、65 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 Input30

5、Sample 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输入两个数,第一个是整数,

6、第二个是浮点数。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(%gn

7、,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 int m

8、ain() 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; s

9、canf(%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整除;或能被400整

10、除#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;1011GHac

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

12、514,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水仙花数Descrip

13、tion如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如: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); else

14、 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对整数a和b

15、,每对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 #include i

16、nt 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的值,顺序与输入对应。S

17、ample 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、B的

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

19、 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; int a

20、100100,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+)

21、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个),每个矩阵以两个正整数

22、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个矩阵相乘。最后一个矩阵只做乘数。每两组输出之间用一个空行分

23、隔开。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); sca

24、nf(%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,sizeof

25、(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);/每两组输出之间用一个

26、空行分隔开。 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 9HINT排

27、序前必须把所有的整数都存储下来。因为只有最多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=1;/

28、先输出空格,再输出数字 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( ); printf

29、(%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);功能:返回一个布

30、尔值(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 %

31、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; scanf(%d%d, &a, &b); if(is_swapped(&a, &b) printf(%d %d YES, a, b); else printf(%d %d NO, a, b);1202编写函数:你交换了吗?之二 (Ap

32、pend 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);功能:返回一个布尔值(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, b, a);elseprintf(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁