C语言三天打鱼两天晒网
- 格式:docx
- 大小:12.32 KB
- 文档页数:5
C语言竞赛练习题目录一、穷举1、求最大数2、高次方数的尾数3、借书方案知多少6、抓交通肇事犯12、平分七筐鱼13、有限5位数14、除不尽的数15、一个奇异的三位数16、位反序数17、求车速18、阿姆斯特朗数19、完全数20、亲密数21、自守数22、回文数23、求具有abcd=(ab+cd)2性质的四位数24、求素数25、歌德巴赫猜想26、要发就发27、素数幻方28、百钱百鸡问题29、斯坦的数学题31、换分币32、三色球问题33、马克思手稿中的数学题34、分数比较、分数之和35、将真分数分解为埃及分数36、列出真分数序列37、计算分数的精确值38、谁是窃贼39、黑与白40、迷语博士的难题41、哪个大夫哪天值班42、区分旅客国籍43、谁家孩子跑最慢44、拉丁方45、填表格46、1~9分成1:2:3的三个3位数47、1~9组成三个3位的平方数48、由8个整数形成奇特的立方体49、减式还原50、乘式还原51、九位累进可除数52、魔术师的猜牌术53、约瑟夫问题、邮票组合54、和数能表示1~23的5个正整数55、可称1~40磅的4块砝码56、10个小孩分糖果57、小明买书61、四方定理63、尼科彻斯定理65、自动发牌66、黑白子交换67、常胜将军二、计算4、数制转换5、打鱼还是晒网7、该存多少钱8、怎样存钱利最大9、捕鱼和分鱼10、出售金鱼11、分数四则运算30、年龄几何58、波松瓦酒的分酒趣题59、波松瓦酒的分酒趣题60、角谷猜想62、卡布列克常数64、回文数的形成1.求最大数问555555的约数中最大的三位数是多少?*问题分析与算法设计根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。
因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。
本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。
*程序说明与注释#include<stdio.h>void main(){long i;int j;printf("Please input number:");scanf("%ld",&i);for(j=999;j>=100;j--)if(i%j==0){printf("The max factor with 3 digits in %ld is:%d,\\n",i,j);break;}*运行结果输入:555555输出:The max factor with 3 digits in 555555 is:7772.高次方数的尾数求13的13次方的最后三位数*问题分析与算法设计解本题最直接的方法是:将13累乘13次方截取最后三位即可。
1.猜数字小游戏:每次程序随机生成一个数字,用户输入数字进行猜测,十回合内猜出数据则胜利,否则失败,可重复游戏。
代码如下:#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){int magic;int guess;int count;int ret;char reply;srand(time(NULL));do{magic = rand()%100+1; //产生1到100之间的随机数//count = 0;do{do{printf("Please guess a magic number:");ret = scanf("%d",&guess);if(ret!=1){while(getchar()!='\n');}}while(ret!=1||guess<1||guess>100); //如果输入不是1到100之间的数字则连续读取//count = count+1;if(guess>magic)printf("Wrong!Too big!\n");else if (guess<magic)printf("Wrong!Too small!\n");else{printf("Right!\n");printf("The number is :%d\n",magic);}}while(guess!=magic&&count<10);if (magic==guess)printf("count = %d\n",count);if (magic!=guess)printf("You lose!");printf("Do you want to continue(Y/N or y/n)?\n");scanf(" %c",&reply);}while((reply=='y')||(reply=='Y'));return 0;}2.任意时间时钟时针与分针的夹角:钟面上的时针和分针之间的夹角总是在 0 度~ 359 度之间。
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、说明一个结构体变量时系统分配给它的内存是。
A. 各成员所需要内存量的总和B. 结构体中第一个成员所需内存量C. 成员中占内存量最大者所需的容量D. 结构中最后一个成员所需内存量2、 C 语言结构体类型变量在程序执行期间。
A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在在内存中D. 没有成员驻留在内存中3、设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是。
A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和b 都是结构体成员名4、程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是。
A. 编译出错B. 程序将顺利编译、连接、执行C. 能顺利通过编译、连接、但不能执行D. 能顺利通过编译、但连接出错5、有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam",16};根据上述定义,能输出字母M 的语句是。
A. prinft(" %c\n",class[3].name);B. printf(" %c\n",class[3].name[1]);C. prinft(" %c\n",class[2].name[1]);D. printf(" %c\n",class[2].name[0]);6、下面程序的输出是。
韩信点兵在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。
据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:按从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这九个数字。
C语言课程设计选题一、c语言课程设计选题如下(每个题目不能超过五人选择)1、课题:设计一个万年历功能要求:1.输入年份,并分段返回全年日历(包括年、月和周)。
2.注意闰年2、课题:设计简单的计算器功能要求:1.通过菜单选择实现。
判断采用加减乘除法。
选择规则后,输入两个要计算的数字并输出计算结果。
3.主题:做一个猜谜游戏。
功能要求:1、计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直到我猜2、猜中后给出所用的时间和评语4、课题:将任一整数转换为二进制形式功能要求:将任意整数转换成二进制形式,输出5。
主题:小学生考试大纲的功能要求:1、电脑随机出10道题,每题10分,程序结束时显示学生得分2、不能有负数3.每个问题有三次输入答案的机会。
当输入错误答案时,提醒学生重新输入,若三次机会结束则输出正确答案4、对于每道题,第一次输入正确答案得10分,第二次输入正确答案得7分,如果你第三次输入正确答案,你会得到5分,否则你不会得到5分。
如果总分超过90分,则显示“智能”,80-90:good70-80:ok60-70:pass60以下:tryagain6.主题:24个游戏功能要求:输入四个一位数,通过加减乘除,允许加入括号,计算出24,显示计算过程,并提示成功信息7、课题:大数相乘功能要求:1.大整数指超过十位的十进制整数。
这里很简单,假设不超过50位。
由于超界溢出,这种大整数在C语言系统中无法直接表达和计算。
您可以使用数组来表示大整数,并在此基础上编写程序来乘以大整数。
8.主题:从十六进制到十进制的转换功能要求:实现输入一个十六进制,转换为十进制的设计9、课题:位数大小排序功能要求:输入一个五位整数,将该整数中的五个值从大到小排序,形成一个新的五位整数,并输出该整数。
10.主题:回文的形成功能要求:取任意十进制整数,将其加回原始整数,得到一个新整数,然后重复上述步骤,最终得到一个回文数。
请进行程序验证。
C语⾔实验题及参考答案实验⼀1、计算整数各位数字之和(10 分)输⼊⼀个3位正整数,将其每⼀位的数字相加,输出和。
输⼊格式:输⼊⼀个3位正整数。
变量数据类型为unsigned。
输出格式:输出整数每⼀位相加后的整数和。
输⼊样例:输出样例:【参考答案】#include ""int main(){ unsigned int a,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;sum=ge+shi+bai;printf("%d\n",sum);return 0;}2、计算代数表达式(10 分)求:输⼊格式:输⼊⾓度x。
变量数据类型为double。
π为。
输出格式:输出y的值,精确到⼩数点后2位。
输⼊样例:输出样例:#include <>#include <>#define PIint main(){double x,y;scanf("%lf",&x);y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数(10 分)程序每次读⼊⼀个正3位数,然后输出按位逆序的数字。
注意:当输⼊的数字含有结尾的0时,输出不应带有前导的0。
⽐如输⼊700,输出应该是7。
输⼊格式:每个测试是⼀个3位的正整数。
输出格式:输出按位逆序的数。
输⼊样例:输出样例:【参考答案】#include ""int main(){ int a,ge,shi,bai,b;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;b=ge*100+10*shi+bai;printf("%d\n",b);return 0;}4、求整数均值(10 分)本题要求编写程序,计算4个整数的和与平均值。
C语言竞赛练习题1.求最大数问555555的约数中最大的三位数是多少?2.高次方数的尾数求13的13次方的最后三位数。
3.借书方案知多少小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?4.数制转换将任一整数转换为二进制形式。
5.打鱼还是晒网中国有句俗语叫“三天打鱼两天晒网”。
某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
6.抓交通肇事犯一辆卡车违反交通规则,撞人后逃跑。
现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。
甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。
请根据以上线索求出车号。
7.该存多少钱假设银行一年整存零取的月息为0.63%。
现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。
8.怎样存钱利最大假设银行整存整取存款不同期限的月息利率分别为:0.63% 期限=1年0.66% 期限=2年0.69% 期限=3年0.75% 期限=5年0.84% 期限=8年利息=本金*月息利率*12*存款年限。
现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。
9.捕鱼和分鱼A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。
C、D、E依次醒来,也按同样的方法拿走鱼。
问他们合伙至少捕了多少条鱼?10.出售金鱼买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。
项目三循环程序设计—打鱼还是晒网任务一while语句学案学生自评教师评分1. 了解循环结构、循环语句2. 掌握while语句和语法形式、执行顺序及用法3. 掌握循环结构的嵌套使用方法【学习重点、难点】1.while语句2. 算法描述。
【学时安排】4学时【学习过程】中国有句俗话叫“三天打鱼两天晒网”。
某人从1990年1月1日开始“三天打鱼两天晒网”,问这个人在1994年3月1日这一天是在“打鱼”,还是“晒网”?一、课前预习及课堂学习任务1、循环结构?2、循环语句:实现循环结构的语句称为循环语句。
3、在C中,循环语句有以下三种:for语句while语句do…while语句1)while循环——当型循环while语句的一般格式为:while(表达式)语句while语句的执行过程为:(1)计算并判断表达式的值。
若值为0,则结束循环,退出while语句;若值为非0,则执行循环体。
(2)转步骤(1)。
执行过程流程图:二、While语句-------使用要点(当型循环)1.圆括号中的表达式可以是任意表达式,它仅用来测试表达式的结果值是零值还是非零值,用以决定循环进行的条件,称为“判终表达式”,一般是关系表达式或逻辑表达式,与条件语句一样可进行如下简化:while(x != 0) →while(x == 0) →2.当判终表达式为时,这样的while语句为无穷循环语句,如:while(1) 语句; // 无穷循环语句3. while语句的循环体通常是一个复合语句,也可以是简单语句,甚至可以是一个。
4.在循环体中应有使循环趋于的语句,以避免“死循环”。
任务二do-while循环——直到型循环学案学生自评教师评分1. 了解循环结构、循环语句2. 掌握do-while语句和语法形式、执行顺序及用法3. 掌握循环结构的嵌套使用方法【学习重点、难点】1.do-while语句【学时安排】2学时【学习过程】二、课前预习及课堂学习任务do-while语句的一般格式为do 语句while(表达式);do-while语句的执行过程为:(1)执行循环体语句。