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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

c语言趣味题.docx

1、c语言趣味题一、九九乘法表 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72

2、 9*9=81分析: 这需要编写一个循环结构的程序。 需要循环嵌套。外循环控制打印第几行,内循环控制打印某一行的若干个等式。程序如下:main( ) int m,n; for(m=1;m=9;m+) for (n=1;n=m;n+) printf(%1d*%1d=%-4d,m,n,m*n); printf(n); 请思考:请你用别的编程方法再解此题。二、说谎有甲、乙、丙三人,每人或者说真话,或者说假话。甲说:“乙说假话。”乙说:“甲和丙是同一种人。”问甲、乙、丙三人谁说真话,谁说假话?分析: 本题看似漫无边际,无法入手,不知道怎么与C语言程序设计挂钩。但只要和“真”、“假”、逻辑表达式联系起来

3、,脉络就清晰起来。 这里用整型变量a、b、c表示甲、乙、丙三人说话的真假,当变量值为1时表示此人说真话,变量值为0时表示此人说假话。甲说:“乙说假话。”这有两种可能:甲说的是真话,而乙确实说假话,即:a=1&b=0 等价于a&!b或者甲说的是假话,而乙说真话,即:a=0&b=1 等价于!a&b由此可得逻辑表达式:a&!b|!a&b乙说:“甲和丙是同一种人。”这有两种可能:乙说真话,而甲和丙确是同一种人,即:b=1&a=c 等价于b&a=c或者乙说的是假话,而甲和丙不是同一种人,即:b=0& a!=c 等价于!b& a!=c由此可得逻辑表达式:b&a=c|!b& a!=c上述两个逻辑表达式是“与

4、”的关系(因为该满足的条件都要满足,所以是“与”的关系),最终得到确定谁说真话的逻辑表达式 (a&!b|!a&b)&( b&a=c|!b& a!=c) 穷举每个人说真话或说假话的各种情况,用上述表达式测试,使上述表达式的值为1(真)的情况就是正确的结果。程序如下:main( ) int a,b,c; for(a=0;a=1;a+) for(b=0;b=1;b+) for(c=0;c=1;c+) if(a&!b|!a&b)&( b&a=c|!b& a!=c) printf(a=%d,b=%d,c=%dn,a,b,c); 运行结果为:a=0,b=1,c=0a=1,b=0,c=0请思考:如果题目中加

5、入“丙说:甲说假话。”,则程序如何编写?运行结果又是什么?三、兔子繁殖问题求Fibonacci数列:1,1,2,3,5,8,13, 的前40项。本题来自于一个有趣的古典数学问题:有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。如果生下的所有兔子都能成活,且所有的兔子都不会因年龄大而老死,问每个月的兔子总数为多少?分析: 此数列的规律是第1、2项都是1,从第3项开始,都是其前两项之和,并且有固定循环次数,因此可以用for循环实现。 这里用到的是什么算法呢?是迭代算法。迭代算法的基本思想是:不断地用新值取代变量的旧值,或由旧值递推出变量的新值。程序如下:main

6、( ) long int f1,f2; int i; f1=1;f2=1; for(i=1;i=20;i+) printf(%12ld %12ld ,f1,f2); /*每次输出两项*/ if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; /*求出两项*/ 四、百钱与百鸡我国古代数学家张丘建在算经中提出了著名的“百钱百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?”意思是说:一只公鸡卖5枚钱,一只母鸡卖3枚钱,三只小鸡卖1枚钱,用100枚钱买100只鸡,能买到公鸡、母鸡、小鸡各多少只?分析: 这是一个不定方程问题。有3个

7、未知数,2个方程:设公鸡、母鸡、小鸡数分别为i、j、k,则有i+j+k=100,i*5+j*3+k/3=100。需要让计算机去一一测试是否符合条件,找出所有可能的答案。由于价格的限制,如果只是一种鸡,则公鸡最多为19只(由于共100只鸡的限制,不能等于20只),母鸡最多33只,小鸡最多99只。 这里用到的是穷举算法。穷举算法的基本思想是:对问题的所有可能答案一一测试,直到找到正确答案或测试完全部可能的答案。程序如下:main( ) int i,j,k; for(i=1;i=19;i+) for(j=1;j=33;j+) for(k=3;k=99;k=k+3) if(i+j+k=100)&(i*

8、5+j*3+k/3=100) printf(i=%d,j=%d,k=%dn,i,j,k); 运行结果为:i=4,j=18,k=78i=8,j=11,k=81i=12,j=4,k=84请思考:还有没有别的编程方法?五、该程序在TC3.0环境下编译通过,共有9个函数。分别是printScreen,start,leave,levelChoice,newWord,moving,wordHit,result和main。其功能分别是:printScreen:刷新屏幕输出的图像。Start:用户进入程序时选择开始,退出和求助。Leave:用户离开程序事提示感谢使用levelChoice:用户开始之前选择等级

9、newWord:生成一个新的字母并将其置于首行。moving:将屏幕上的所有字母向下移动一行wordHit:判断用户是否输入字母,如果输入,且屏幕上有该字母则将该字母所在位置置空。result:判断该用户的得分,提示其是否进入下一等级。main:总体控制以上各函数,判断其是否运行。压缩包下载: 打字游戏-以下是程序源码-#include stdio.h#include time.h#include stdlib.h#include conio.h#include dos.h#define xLine 70#define yLine 20#define full 100#define true

10、1#define false 0/*-*/void printScreen(int level,int right,int sum,char pyLinexLine)/* 刷新屏幕的输出图像 */ int i,j; clrscr(); printf(level:%d Press 0 to exit;1 to pause score:%d/%dn,level,right,sum);/* 输出现在的等级,击中数和现在已下落总数 */ printf (-n); for (i=0;iyLine;i+) for(j=0;j0&level10) return (level); else if (level

11、=0) leave (); else printf (Please input a correct number!n); /* while (true) */* levelChoice */*-*/int newWord(int sum,char pyLinexLine)/* 随生成一个新的字符并将其加入数组的首行 */ int j,w; if (sum!=full) j=(rand()%(xLine-2)+1; w=(rand()%26)+65; p0j=w; return (+sum); /* if */ return (sum);/* newWord */*-*/int moving(i

12、nt miss,char pyLinexLine)/* 将最后一行置空,并使所有在数组中其他行的字符下降一行 */ int i,j; char w; for (j=1,i=yLine-1;j=0;i-)/* 从倒数第二行的最后一个字符开始开始向前遍历该数组内的元素,如果该位置非空则将该字符移动至下一行 */ for (j=xLine-2;j0;j-) if (pij!= ) w=pij; pij= ; pi+1j=w; /* if */ /* for(j) */ /* for(i) */ return (miss);/* moving */*-*/int wordHit(char pyLine

13、xLine)/*判断是否有字符从键盘键入。如果有,则从最后一行的最后一个元素开始遍历该数组,找出该字符,并把对应位置置空,且返回1。如果有输入,但屏幕上无对应项,或无输入则返回0*/ int i,j; char key; if(kbhit()/* 判断用户是否从键盘键入字符。如果kbhit返回值为 */ key=getch(); if(key) if (key=0) leave(); if (key=1) clrscr(); printf (Press any key to continue.); getch(); for (i=yLine;i0;i-) for (j=xLine;j0;j-)

14、 if (key-32=pi-1j-1) pi-1j-1= ; return (true); /* if */ /* for (j) */ /* for (i) */ sound(300); /* if (key) */ return (false);/* wordHit */*-*/int result(int right)/*判断该次的成绩并输出对应的结果,询问用户是否继续,若继续,判断是否可以进入下一级别。*/ int score; char yn; score=right*100/full; nosound(); clrscr(); if (score=100) printf(perf

15、ect!n); else if (score=85) printf(good!n); else if (score=70) printf(Thats OK!n); else printf(you need to play again.n); printf(do you want to continue? Y/Nn); for (;)/* void */ yn=getch(); switch (yn) case y : if (score=70) return(true); else return(false); /* case */ case n : leave (); default : p

16、rintf(Please input a correct choice:); /* switch */ /* for */* result */*-*/int start()/* 进入程序时调用该函数,提示其操作。 */ char c; while (true) clrscr (); printf (nnnnn Welcome to type game!nnn 1.startn 2.How to playn 0.Exit); c=getch(); switch (c) case 0 : leave();/* 用户选择退出,退出主程序 */ case 2 : clrscr(); printf (

17、nnnnn Hit the type when you see it on the screen.n Press 0 to exit.n Press 1 to pausen 1.startn 0.exit); while (true) c=getch (); if (c=0) leave(); if (c=1) return (true); case 1 : return (true); /*-*/void main() /*-*/ /*函数声明*/ void printScreen(int level,int right,int sum,char pyLinexLine); void lea

18、ve(); int levelChoice(int level); int newWord(int sum,char pyLinexLine); int moving(int miss,char pyLinexLine); int wordHit(char pyLinexLine); int result(int right); int start(); /*-*/ char pyLinexLine; int i,j,level,right,sum,n,m,miss; srand(time(NULL); start(); for (i=0;iyLine;i+)/* 初始化屏显数组 */ for (j=0;jxLine;j+) if (j=0|j=xLine-1) pij=140; else pij= ; /* for (i) */ level=levelChoice(level); for (;)/* 开始运行主程序 */ sum=0; right=0; miss=0;

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

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