C语言趣味程序百例精解.pptx
《C语言趣味程序百例精解.pptx》由会员分享,可在线阅读,更多相关《C语言趣味程序百例精解.pptx(144页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一南军三军盟附啊在事自里啤目录1 1 2 3 4 5 6 6 7 8 0 2 2 3 4 5 6 7 8 1 1 1 2 2 3 4 5 5 6 6 8 9 0 0 1 鸣唱E 咱A 咽BA 唱E 咽A 咱aA 唱A 唱E A唱 “n y“o y 内“,nZM O y u “ay 万“0“。,n Z M “O Z 只“。“。,“7 内u n噜H W肉4U U咱EA 数 山 皮 位 时 山川 口 刚 吁 的 T tJ 1 个 u三 川 川 叫得 法 线 “获 忖 主 段“题 数 数 数 HHHb与“叮叮 数 忡 少 明网 犯 献 眯 盐 盐数 叫”跚 线 线 尾 的 多数 晒 事 钱 利 鱼鱼数
2、 的 的 数 方 朗 回 族 和刷 刷 刷 卜 明 叫 树 时32孟2 2佳 跚 地 称芷速 怦 脯 数 数 数 jm 瞅 数ZM 制 制 制 星 最 次 乘 书 辉 删 蝉 阳 瞅 脐 僻 触 蜡 刊 蚓 辄 峨 斗,他 轩 阳 刚 挝 蛐 阴 阳 相 黝 精 明 刊,绘 绘 绘 歌 求 高 阶 借 杨章 1 2 3 4 5 6 7 8 9第10第二章11121314151617第三章181920212223242526272829第四章303132,.333435第五章363738394041第六章424344454647第七章48495051525354555657第八章58 拉 丁 方
3、.”.“.”59 填表格606162636465666768第九章69702L回 文 素 数要发就发素 数 幻 方.”.”.”.33.”.34.3644444545不 定 方 程 求 整 数 解.”.”.”.百 钱 百 鸡 问 题 .爱 因 斯 坦 的 数 学 题 .”.换 分 币.-.”川.年龄几何.“.“.46 三 色 球 问 题.47马 克 思 手 稿 中 的 数 学 题.4 7分 数 踵 题.49最 大 公 约 数 和 最 小 公 倍 数.,.”、.4950分 数 比 较 .“.”.分 数 之 和.”将 真 分 数 分 解 为 埃 及 分 数“.52列 出 真 分 数 序 列 .”.:
4、.”53计 算 分 数 的 精 确 值.“.54逻镜推理与判断.56新 娘 和 新 郎”.“.56委派任务.”.57谁 在 说 谎 .”.58谁 是 窃 贼”.”.”.”.“.5 9黑与白.”.”.”.60谜 语 博 士 的 难 题 (1).61谜 语 博 士 的 难 题(2).62哪 个 大 夫 哪 天 值 班 .“.”.“.64区 分 旅 客 国 籍 .66谁 家 孩 子 跑 最 慢 “.”.”.687070数 字。到 的 奇 妙 变 幻.川.”.1 9 分 成 1 :2 I 3 的 三 个 3 位 数.”.,.721 9 组 成 三 个 3 位 的 平 方 数 .”73由 8 个 整 数
5、 形 成 奇 特 的 立 方 体 .-.-.:.山.75减 式 还 原 “乘 式 还 原(1).、.”.”“.78乘 式 还 原(2).“.“.79除 式 还 原(1)“.”.”.“8283除 式 还 原(2).”.?山”.叩“.九 位 累 进 可 除 数 .”.”.,_.85徽 的 变 幻 .”.”.”.88魔 术 师 的 猜 牌 术(1).,.,.叫.”.88魔 术 师 的 猜 牌 术(2).”.”.川”.”.川.89 ,民A V1 A“。,n O AA崎F D 。4 Q JV Q d n VA V A 。qd p ua u 。on v q uA丛E n t n u 1 4R U Q u
6、a u n w u n v1i q JV 严Dn 39 9 9 9 9 9 0山 Q U O d 9 0 0 0 0 0 0 o o 1 1 1 2 2 2 2 2 3 3 3 3 3唱EA 唱EE 咱EA 咽 唱a 咱E4 唱EEA 咽,咱EA 唱A 咽EA 唱E A 唱EA 唱E A喃自4唱EA EA 咽A T E啥唱E A 咽EA、E A 4数 整 正 “uu 字 u个 码 川 质 数5 硅 性uuuu 马H 罗的 块 趣 uuuuuuuu UH 列 数3 4 题)有HHHHUHHHUH 川、尸 un为法 寸 的 果 趣 0 0 个 “uHuuqqu序 u 译 u的 u加 U1 磅,糖
7、山 洒值 值 一 数 理 成”“HU 戏 戏 程 翻 件 的 川题 间示 分分 想 似 似的“常 定 形 戏”换“游 游 川 味“数“条“数“合 表 叫 孩 书,的 猜 近 近 方 想 理 克 斯 的 游 牌 交 军 戏 数 数“趣 子 伯 赛 异 题 整 动夫组 能 1 小 买 松 与 的 的 平 猜 定 列 彻 数 力 发 子 将“游猜 猜 塔 它 产 拉 比 特 问 正 移瑟 票 数 称 个 明 瓦 理 数 谷 方 布 科 文 智 动 白 胜 山 机 机 诺 其 子 阿 美 足 后 M K 字约邮 和 可 川 小 波 定 求 求 奇 角 四 卡 尼 固自 黑 常 抢 搬 入 人 汉兔 将
8、 选 满 八 超 数章章。刊 刊 刊 付 章 刊m mm 阳 白 白第臼 UM 臼 “盯 胞第的 问 贝 归 归二 问 归 mw 阻 四 川第 f3,第一章最简单的问题与算法,作为趣味程序设计的入门,我们先来涉猎一些简单的例子。通过这些例子,让读者体验一 下程序设计的乐趣。1.绘制余弦曲线在屏幕上用“铃”显示 0。360。的余弦函数cos(x)曲 线。姥问题分析与算法设计,如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易 了。关键在于余弦曲线在 0。360。的区间内,一行中要显示两个点F 而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,
9、不能再返回到上一行。为了获得本 题要求的图形就必须在行中次顺序输出两个“祷”。为了同时得到余弦函数 cos(x)图形在一行上的两个点,考虑利用 cos(x)的左右对称性。将屏幕的行方向定义为 x,列方向定义为y,则o1so的图形与 180。360。的图形是左右对称的。若定义图形的总宽度为 62 列,计算出 x 行。180。时y 点的坐标 m,那么在同一行与之 对称的 180。.360。的y 点的坐标就应为 62-m。程序中利用反余弦函数acos 计算坐标仪,y)的对应关系。使用这种方法编出的程序短小精练,体现了一定的技巧。普程序说明与注释#include (stdio.h#include (m
10、ath.h)main()double y;mt x,口1;for (y=1;y=-1;y O.1)怜 y 为列方向,值从 1到一 1,步长为0.1 铃 m=acos(y)铃 10;铃计算出y 对应的弧度 m,乘10 为图形放大倍数铃for (x=l;xm;x+)printf(”;print(”II)Ifor(;x 6 2-m;x+)printf(”);printf(”铃 n);赞控制打印左侧的赘号铃铃控制打印同一行中对称的右侧祷号祷铸运行结果?民 民*当k 民*,民*,岖 比 民*大*民 曾 也民 食k*长思考题如何实现用“祷”显示 oo360。的sin(x)曲 线。2.绘制余弦曲线和直线在屏
11、幕上显示 0。360的 cos(x)曲线与直线们对45 铸(y-1)+3 1 的迭加图形。其中 cos(x)图 形 用“脊”表 示,f(x)用“十”表示,在两个图形的交点处则用 f(x)图形的符号。铃问题分析与算法设计本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图 形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判定图形的交点,再分别控制打 印两个不同的图形。铸程序说明与注释#include (stdio.h)#include (math.h)main()double y;int x,m,n,yy;for (yy=O;yy;:=20;y y+)y =0.1
12、 禄 yy;m =acos(l-y)铸 10;n =45 祷(y-1)+3 1;for (x=O;x if (x=m&x=n)else if (x=n )2,。elseprintf(n”);print(”);快打印不相交时的 cos(x)图形势卢其它情况打印空格铃else if f a=m 11 x=6 2-m)printf(铃 II);羡运行结果*3比*民*,比 民 民*民 也比 民*?翻*民铸思考题如何实现 sin(x)曲线与 cos(x)曲线图形的同时显示。3.绘制圆在屏幕上用“祷”画一个空心的圆。铃问题分析与算法设计打印圆可利用图形的左右对称性。根据圆的方程 zR R=X X+Y Y可
13、以计算出圆上每点行和列的对应关系。铸程序说明与注释#include (stdio.h#include (math.h main()double y;mt x,口l;for (y=lO;y =-1 0;y 一m =2.5 铃 sqrt(l-00-y 餐 y);铃圆的半径为 10 铃 铃计算行y 对应的列坐标 m。2.5 是屏幕纵横比调节系数,因为屏幕的 行距大于列距,不进行调节显示出来的将是椭圆铸for (x=l;x 3 0-m;x+)print(”);赞图形左侧空白控制怜3print ”誉”);for (;x30+m;x 十十)printf(”);print(”传 n”;祷圆的左侧铃祷祷图形的
14、空心部分控制铃铃圆的右侧铃备铸运行结果警碍言6,.当,.2鼻,.习、6、萨3,.刻、习 言、6、昏到 萨、3鼻.布,尊,.刻,、6、到 萨,.、6、尊且$铃忠考题实现函数 y=x2 的图形与圆的图形的叠加显示。4.歌星大奖赛在歌星大奖赛中,有 10 个评委为参赛的选手打分,分数为 1到 100 分。选手最后得分为 z 去掉一个最高分和一个最低分后其余 8 个分数的平均值。请编写一个程序实现。铸问题分析与算法设计这个问题的算法十分简单,但要撞意在程序中判断最大、最小值的变量是如何赋初值的。铃程序说明与注释main()int integer,i,max,min,sum;max=-32768;min
15、=32767;sum=O;铃先假设当前的最大值 max 为 C 语言革型数的最小值势铃先假设当前的最小值 min 为 C 语言整型数的最大值 I 将求累加和变量的初值置为 0 铸 for (i=1;imax)max=integer;if (integer=lOO;j 一一)铃所求的约数的可能取值是从 999 到 100,j 从大到小祷if (i%j=0)祷若是约数,则输出结果祷print(The max factor with 3 digits in%ld is:%d.n”,i j)铃使用长整型变量,以免超出整数的表示范围祷break;5一一一一一铃运行结果输入:555555输出:The ma
16、x factor with 3 digits in 555555 is:777.6.高次方数的尾数求 13 的 13 次方的最后三位数。祷问题分析与算法设计解本题最直接的方法是:将 13 累乘 13 次后截取最后三位即可。但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。事实上,题目仅要求后三位的值,完全没有必要求 13 的 13 次方的完整结果。研究乘法的规律会发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。利用这一规律,可以大大简化程序。铃程序说明与注释main()int.i,x,y,last=1;铃变量last 保存求 X 的
17、 Y 次方过程中的部分积的后三位铃printf(Input x and y ex 铃 快 Y):);scanf (”%d 祷 铸%dI&.x&.y);for (i=1;i=y;i十)怜 X 自乘Y 次祷last =iast 提 x%1000;势将last 乘 X 后对 1000 取模,即求积的后三位祷 printf(”The last 3 digits of%d 赞铸%dis:%dn ,x,y,last%1000);问打印结果铃祷运行结果Input X and Y CX 祷 祷 Y):13 铃 13 he last 3 qigits of 13祷铸 13 is:253Input X andY
18、CX 铃祷 Y):13 铃 保 20The last 3 digits of 13餐 善 20 is:8017.阶乘尾数零的个数100!的未尾有多少个零?赞问题分析与算法设计可以设想:先求出 1001 的值,然后数一下末尾有多少个零事实上,与上题一样,由手计算 机所能表示的整数范围有限,这是不可能的。为了解决这个问题,必须首先从数学上分析在 100!结果值的末尾产生霉的条件。不难看出z一个整数若含有一个因子 5则必然会在求 100t 时产生一个零。因此问题转化为求 1 到 10。这 100 个整数中包含了多少个因子 5。若整数 N 能被 25 整除,则 N 包含 2 个因子 5;若整数 N 能
19、被 5 整除,则 N 包含 1个因子 5。铸程序说明与注释main()、int a,count=O;6for (a=5;a=lOO;a+=5)count 十;if (!Ca%25)count+;势循环从5 开始,以 5 的倍数为步长,考察整数铃铃若为5 的倍数,计数器加 1 铃 择若为25 的倍数,计数器再加 1 铃 printf(Th number of 0 in the end of 100!is:%d.n”,count);怜打印结果铃铸运行结果The number of 0 in the end of 100!is:24.祷问题的进一步讨论本题的求解程序是正确的,但存在明显的缺点。程序中
20、判断整数 N 包含多少个因子 5 的 方法是与题目中 100 有关的,若题目中的 100 改为 1000,则就要修改程序中求因子5 的数目 的算法了。势思考题修改程序中求因子 5 的数目的算法,使程序可以求出任意 NJ 的末尾有多少个零。8.借书方案知多少小明有五本新书,要借给 A、B、C 三位小朋友,若每人每次只能借一本,则可以有多少种不 同的借法?养问题分析与算法设计本问题实际上是一个排列问题,即求从 5 个中取 3 个进行排列的方法的总数。首先对五本 书从 1 至 5 进行编号,然后使用穷举的方法,假设三个人分别借这五本书中的一本,当三个人 所借的书的编号都不相同时,就是满足题意的一种借
21、阅方法。势程序说明与注释main()int a,b,c,count=O;printf(11There are different methods for XM to distribute books to 3:r:eaders:n”);for (a=l;a =5;a+)for (b=l;b =5;b+)赞穷举第一个人借 5 本书中的 1 本的全部情况替祷穷举第二个人借 5 本书中的 1 本的全部情况祷for (c=l;a!=b&c=2)当 J=l 或 J=N+l 时z其值为 1;当 JI =1 且J!=N+l 时:其值为第 N 一1 行的第 J一1个值与第 N-1 行第J 个值之和 F将这些特
22、点提炼成数学公式可表示为 zc.(x,v)=lc(x-1,y 1)+c(x-1,y)本程序就是根据以上递归的数学表达式编制的。铃程序说明与注释main()int i,j,n=l3;8x=l 或 x=N+l其它16:2.3,117:2 3,418:2.3,519:2.4,120:2.4,321:2.4,522:2.5,123:2.5,324:2.5,425:3.1,226:3.1,427:3.1,528:3.2,129:3.2,430:3.2,531,3,4,136:3.5,441:4.2,346:4,5,151:5.1,432:3,4,237:4.1,242:4.2,547:4.5,252:5
23、,2,133,3,4,538:4.1.,343:4.3,148:4.5,353:5.2,334,3,5,139:4.1,544:4.3,249:5.1,254:5.2,435:3.5.240:4.2,145:4.3,550:5.1,355:5,3,156:5.3,257:.5,3,458:5.4,159:5.4,260:5.4,3print ”N=);while (n 12)scanf(”%d”,.n);for (i=O;i =n;i十)for (j=O;j12 一i 川)print(”:for (j=l;ji+2;j+)printf(%6d”,e(i,j);printf(n);祷控制输入正确
24、的值以保证屏幕显示的图形正确铃铸控制输出N 行赞铃控制输出第i行前面的空格快祷输出第i行的第 j 个值铃int c(x,y)int x,y;int z;if y=D I I main()int x;print (”Input number:);scanf(%d”,&.x);printf(number of decimal form:%dn”,x);printf(”its binary form:1 1);printb(x,sizeof(int)祷 8);铃 X:整数sizeof(int):int 型在内存中所占的字节数,sizeof(int)秘 8:int 型对应的位数铃putchar(n )
25、;printb (x,n)mt x,n;。if CnO)祷输出整数x 二进制形式的后 n 位铃putchar(O+(unsigned)Cx&Cl (n-1)(n-1);铸输出第n 位祷printb 仗,n 一 1);铃递归调用,输出 x 的后 n-1 位堤L r i,铃运行结果输入:8输出:number of decimal form:8its binary form:0000000000001000输入:8输出:number of decimal form:-8it s binary form:输入:32767输出:number of decimal form:3276710、1it s b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 趣味 程序 百例精解
限制150内