趣味C语言题
- 格式:doc
- 大小:31.00 KB
- 文档页数:14
c语言编程题库100题1. 计算两个整数的和编写一个C程序,接收两个整数作为输入并计算它们的和,并将结果输出。
2. 计算两个整数的差编写一个C程序,接收两个整数作为输入并计算它们的差,并将结果输出。
3. 计算两个整数的乘积编写一个C程序,接收两个整数作为输入并计算它们的乘积,并将结果输出。
4. 计算两个整数的商编写一个C程序,接收两个整数作为输入并计算它们的商,并将结果输出。
5. 判断一个整数是否为偶数编写一个C程序,接收一个整数作为输入并判断它是否为偶数,并将结果输出。
6. 判断一个整数是否为质数编写一个C程序,接收一个整数作为输入并判断它是否为质数(只能被1和自身整除的数),并将结果输出。
7. 计算一个整数的阶乘编写一个C程序,接收一个整数作为输入并计算它的阶乘,并将结果输出。
8. 计算一个整数的平方根编写一个C程序,接收一个整数作为输入并计算它的平方根,并将结果输出。
9. 判断一个字符串是否为回文字符串编写一个C程序,接收一个字符串作为输入并判断它是否为回文字符串(正向和反向读取都相同的字符串),并将结果输出。
10. 排序一个整数数组编写一个C程序,接收一个整数数组作为输入并对其进行排序,并将结果输出。
11. 求两个整数之间的最大公约数编写一个C程序,接收两个整数作为输入并计算它们的最大公约数,并将结果输出。
......(依此类推,共100道题)这是一个C语言编程题库,包含100道不同类型的题目。
你可以选择其中的题目进行练习和实践,通过解决这些问题来提升自己的C语言编程能力。
每道题目都有具体的描述和要求,你可以按照题目要求编写相应的代码,并运行测试。
如果遇到问题,可以参考相关的解法或向他人寻求帮助。
通过不断地练习和学习,你将逐渐掌握C语言的编程技巧和思维方式,提高自己在编程领域中的能力。
祝你编程愉快!。
c语言趣味编程例题
以下是一些有趣的C语言编程例题,供您参考:
1. 猜数字游戏
编写一个猜数字的小游戏,让用户从0到100之间随机生成一个数字,用户可以多次猜测,每次猜测后程序会提示用户猜大还是猜小,直到猜中为止。
2. 反转字符串
编写一个函数,接受两个参数,分别为字符串和字符串长度,返回一个新的字符串,该字符串是原字符串的反转。
3. 计算阶乘
编写一个函数,接受一个整数n作为参数,返回n的阶乘。
4. 编写一个简单的计算器
编写一个简单的计算器,可以进行加、减、乘、除四则运算,支持整数和浮点数运算。
5. 编写一个简单的图形界面应用程序
使用C语言编写一个简单的图形界面应用程序,实现一个窗口,其中
包含一个按钮和一个标签。
当用户点击按钮时,标签的文本将更改为“Hello, World!”。
6. 编写一个简单的文本编辑器
编写一个简单的文本编辑器,支持打开、保存和删除文件,并能够在文本中进行插入、删除和替换操作。
7. 编写一个简单的游戏
编写一个简单的游戏,例如俄罗斯方块、扫雷或贪吃蛇等,可以使用C语言编写游戏引擎,然后使用图形库来创建游戏界面。
这些例题可以帮助您练习C语言编程技能,并提高您的编程能力。
Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public写在最前:本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了………………..由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的….呵呵……..有一两个….偷了下懒哦………提供原题目还有本人自己的解答的源代码。
感谢大家的。
建议…………….问题A: 趣味程序设计_狼追兔子时间限制: 1 Sec 内存限制: 128 MB提交: 341 解决: 63[提交][状态][讨论版]题目描述一只兔子躲进了n个环形分布的洞的某一个中。
狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。
以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?输入有多组测试数据,读取到文件结尾符为止。
每组测试数据输入n(2≤n≤100),即洞穴个数。
输入到文件结尾符为止。
输出兔子可能藏匿的洞。
如果不止一个,按从小到大的顺序输出。
如果不存在,输出空行。
样例输入10815样例输出2 4 7 92 4 5 7 8 9 11 12 14提示用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。
通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。
循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。
#include<stdio.h>#include<string.h>int ok[110];int main(){int n,s,i,find;while(scanf("%d",&n)!=EOF){memset(ok,0,sizeof(ok));for(i=1;i<=200;i++)if(!ok[find=(i*(i+1)/2)%n])if(find==0)ok[n]=1;elseok[find]=1;for(s=0,i=1;i<=n;i++)s+=ok[i];for(i=1,find=0;i<=n;i++)if(!ok[i]){if(find!=(n-s-1)){printf("%d ",i);find++;}elseprintf("%d",i);}printf("\n");}return 0;}问题B: 趣味程序设计_巧夺偶数时间限制: 1 Sec 内存限制: 128 MB提交: 174 解决: 73[提交][状态][讨论版]题目描述桌子上有25颗棋子。
1.寻找数组中的最大值和最小值2.寻找数组中的中位数3.查找数组中给定元素的索引4.反转数组5.合并两个升序数组6.移位数组7.查找两个数组的交集8.查找两个数组的并集9.查找两个数组的差集10.寻找数组中的众数11.寻找数组中的缺失元素12.寻找数组中的重复元素13.计算数组的和14.计算数组的平均值15.计算数组的方差16.计算数组的标准差17.比较两个数组是否相等18.复制数组19.排序数组20.搜索数组(线性搜索)21.搜索数组(二分搜索)22.插入元素到数组23.删除元素到数组24.更新数组中的元素25.创建动态数组26.释放动态数组27.字符串复制28.字符串连接29.字符串比较30.字符串搜索31.字符串替换32.字符串分割33.字符串反转34.字符串大小写转换35.字符串修剪36.计算字符串长度37.字符串格式化38.链表创建39.链表插入40.链表删除41.链表搜索42.链表反转43.链表排序44.链表合并45.链表复制46.链表释放47.树创建48.树插入49.树删除50.树搜索51.树反转52.树排序53.树合并54.树复制55.树释放56.堆创建57.堆插入58.堆删除59.堆搜索60.堆反转61.堆排序62.堆合并63.堆复制64.堆释放65.图创建66.图插入67.图删除68.图搜索69.图反转70.图排序71.图合并72.图复制73.图释放74.队列创建75.队列插入76.队列删除77.队列搜索78.队列反转79.队列排序80.队列合并81.队列复制82.队列释放83.栈创建84.栈插入85.栈删除86.栈搜索87.栈反转88.栈排序89.栈合并90.栈复制91.栈释放92.哈希表创建93.哈希表插入94.哈希表删除95.哈希表搜索96.哈希表反转97.哈希表排序98.哈希表合并99.哈希表复制100.哈希表释放。
有趣的C语言笔试题1.gets()函数问:请找出下面代码里的问题:#includeint main(void){char buff[10];memset(buff,0,sizeof(buff));gets(buff);printf(" The buffer entered is[%s] ",buff);return 0;}答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。
这里推荐使用标准函数fgets()代替。
2.strcpy()函数问:下面是一个简单的密码保护功能,你能在不知道密码的情况下将其破解吗?#includeint main(int argc,char*argv[]){int flag=0;char passwd[10];memset(passwd,0,sizeof(passwd));strcpy(passwd,argv[1]);if(0==strcmp("LinuxGeek",passwd)){flag=1;}if(flag){printf(" Password cracked ");}else{printf(" Incorrect passwd ");}return 0;}答:破解上述加密的关键在于利用攻破strcpy()函数的漏洞。
所以用户在向“passwd”缓存输入随机密码的时候并没有提前检查“passwd”的容量是否足够。
所以,如果用户输入一个足够造成缓存溢出并且重写“flag”变量默认值所存在位置的内存的长“密码”,即使这个密码无法通过验证,flag验证位也变成了非零,也就可以获得被保护的数据了。
例如:$./psswd aaaaaaaaaaaaaPassword cracked虽然上面的密码并不正确,但我们仍然可以通过缓存溢出绕开密码安全保护。
在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。
据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:按从1至5报数,记下最末一个士兵报的数为1;再按从1至6报数,记下最末一个士兵报的数为5;再按从1至7报数,记下最末一个士兵报的数为4;最后按从1至11报数,最末一个士兵报的数为10;你知道韩信至少有多少兵?()z谁结婚呢?魔术师的秘密在一次晚会上,一位魔术师掏出一叠扑克牌,取出其中13张黑桃,预先洗好后,把牌面朝下,对观众说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念一,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌,第二次数1,2,将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。
第三次数1,2,3,前面二张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13张牌翻出,准确无误。
现在的问题是,魔术师手中牌的原始顺序是怎样的?约瑟夫问题这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止.问怎样排法,才能使每次投入大海的都是非教徒.求车速一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859.两小时后里程表上出现了第二个新的对称数.问该车的速度是多少新的对称数是多少?现有21根火柴,两人轮流取,每人每次可以取走1至4根,不可多取,也不能不取,谁取最后一根火柴谁输.请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为"常胜将军".十进制转换成N进制(N=2 8 16 )定义一个方法Trans(int num, int regx) 实现将一个输入十进制数num转换成regx 进制Eg: Trans(100, 16) 表示将 100 转成 16进制数输出求100到1000之间有多少个其数字之和为5的整数.(答案:104,113,122,131,140,203,212,221,230,302,311,320,401,410,500)打鱼还是晒网scanf(“%d%d%d”,&year ,&month,&day);中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是"晒网".*思考题:请打印出任意年份的日历*运行结果Enter year/month/day:1991 10 25He was fishing at day.Enter year/month/day:1992 10 25He was sleeping at day.Enter year/month/day:1993 10 25He was sleeping at day.求具有abcd=(ab+cd)^2性质的四位数3025这个数具有一种独特的性质:将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身.请求出具有这样性质的全部四位数.*运行结果There are following numbers with 4 digits satisfied condition:2025 3025 9801填数字游戏已知下面的算式:ABCD× EDCBA 计算ABCDE取什么值? Sum谁在说谎张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎.现在问:这三人中到底谁说的是真话,谁说的是假话*运行结果Zhangsan told a lie (张三说假话)Lisi told a truch. (李四说真话)Wangwu told a lie. (王五说假话)谁是窃贼公安人员审问四名窃贼嫌疑犯.已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的.在回答公安人员的问题中:甲说:"乙没有偷,是丁偷的."乙说:"我没有偷,是丙偷的."丙说:"甲没有偷,是乙偷的."丁说:"我没有偷."请根据这四人的答话判断谁是盗窃者.*运行结果The thief is B. (乙为窃贼.)求数字求出所有可能的以下形式的算式,每个算式中有九个数位,正好用尽1到9这九个数字。
1)○○○+○○○=○○○(共有168种可能的组合)2)○×○○○○=○○○○(共有2种可能的组合)3)○○×○○○=○○○○(共有7种可能的组合)4)○×○○○=○○×○○○(共有13种可能的组合)5)○×○○○=○×○○○○(共有28种可能的组合)6)○○×○○=○×○○○○(共有7种可能的组合)7)○○×○○=○○×○○○(共有11种可能的组合)爱因斯坦的数学题爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶.只有每次跨7阶,最后才正好一阶不剩.请问这条阶梯共有多少阶?119角谷猜想猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1.请编程验证.黑洞数495与6174黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。
任何一个数字不全相同的三位数,经有限次“重排求差”操作,总会得到495.最后所得的495即为三位黑洞数。
所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。
(6174为四位黑洞数)例如,对三位数207:第1次重排求差得:720-027=693;第2次重排求差得:963-369=594;第3次重排求差得:954-459=495;以后会停留在495这一黑洞数。
如果三位数的3个数字全同,一次转换后即为0.因而,可把0与495一并作为判断条件。
试求出任意输入三位数重排求差的过程。
梅森尼数形如2n-1的素数称为梅森尼数(Mersenne Prime)。
例如22-1=3、23-1=7都是梅森尼数。
1722年,双目失明的瑞士数学大师欧拉证明了231-1=47是一个素数,堪称当时世界上“以知最大素数”的一个记录。
试求出指数n<20的所有梅森尼数。
(答案共7个)10个小孩分糖果十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块.然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块.问经过这样几次后大家手中的糖的块数一样多每人各有多少块糖 ?*运行结果childr 1 2 3 4 5 6 7 8 9 100 10 2 8 22 16 4 10 6 14 201 15 6 5 15 19 10 7 8 10 172 17 11 6 11 18 15 9 8 9 143 16 15 9 9 15 17 13 9 9 124 14 16 13 10 13 17 16 12 10 115 13 15 15 12 12 16 17 14 11 116 13 15 16 14 12 14 17 16 13 127 13 15 16 15 13 13 16 17 15 138 14 15 16 16 15 14 15 17 17 159 15 15 16 16 16 15 15 17 18 1710 17 16 16 16 16 16 16 17 18 1811 18 17 16 16 16 16 16 17 18 1812 18 18 17 16 16 16 16 17 18 1813 18 18 18 17 16 16 16 17 18 1814 18 18 18 18 17 16 16 17 18 1815 18 18 18 18 18 17 16 17 18 1816 18 18 18 18 18 18 17 17 18 1817 18 18 18 18 18 18 18 18 18 18委派任务某侦察队接到一项紧急任务,要求在A,B,C,D,E,F六个队员中尽可能多地挑若干人,但有以下限制条件:1)A和B两人中至少去一人;2)A和D不能一起去;3)A,E和F三人中要派两人去;4)B和C都去或都不去;5)C和D两人中去一个;6)若D不去,则E也不去.问应当让哪几个人去*运行结果A will be assigned. (去)B will be assigned. (去)C will be assigned. (去)D will not be assigned. (不去)E will not be assigned. (不去)F will be assigned. (去)哪个大夫哪天值班医院有A,B,C,D,E,F,G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天.现在已知:A大夫比C大夫晚一天值班;D大夫比E大夫晚二天值班;B大夫比G大夫早三天值班;F大夫的值班日在B和C大夫的中间,且是星期四;请确定每天究竟是哪位大夫值班*运行结果Doctor E is on duty MONDAY. (星期一:E)Doctor B is on duty TUESDAY. (星期二:B)Doctor D is on duty WEDNESDAY. (星期三:D)Doctor F is on duty THUESDAY. (星期四:F)Doctor G is on duty FRIDAY. (星期五:G)Doctor C is on duty SATURDAY. (星期六:C)Doctor A is on duty SUNDAY. (星期日:A)谁家孩子跑最慢张王李三家各有三个小孩.一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得9分,跑第2得8分,依此类推.比赛结果各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次.已知获第一名的是李家的孩子,获得第二的是王家的孩子.问获得最后一名的是谁家的孩子*运行结果7 5 38 6 19 4 2The last 王.1~9分成1:2:3的三个3位数将1到9 这九个数字分成三个3位数,求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍.问应当怎样分法.*运行结果No.1:192 384 576No.2:219 438 657No.3:273 546 819No.4:327 654 981分油趣题从大容器往外倒一定体积的液体也是中外古代数学家喜爱研究的一类问题,如下面这道厨师分油的趣题:“有一位厨师要从盛12斤油的桶中倒出6斤油来,可是手边只有盛5斤油和盛8斤油的两个桶,问如何操作才能将6斤取出来呢?”10升水 5升 6升容器 -> 3升出来拉丁方阵构造 NXN 阶的拉丁方阵(2<=N<=9),使方阵中的每一行和每一列中数字1到N只出现一次.如N=4时:1 2 3 42 3 4 13 4 1 24 1 2 31黑与白有A,B,C,D,E五个人,每人额头上都贴了一张或黑或白的纸条。