编程经典试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

贪吃的猴子成绩:100/折扣:0.8有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。输入:天数n输出:第一天的桃子个数,输出语句为printf(Themonkeygot%dpeachsinfirstday.\n,sum);Smaple:Input:5OutputThemonkeygot114peachsinfirstday.提示:问题分析:总共t0日吃掉剩余1t0/2+1t0-(t0/2+1)=t0/2-1t1=t0/2-1=t0=(t1+1)*22t1/2+2t1-(t1/2+2)=t1/2-2t2=t1/2-2=t1=(t2+2)*2n-1tn-2/2+(n-1)tn-2-(tn-2/2+(n-1))=tn-2/2-(n-1)tn-1=tn-2/2-(n-1)=tn-2=(tn-1+n-1)*2n10tn-1=11001Themonkeygot14peachsinfirstday.?测试用例2以文本方式显示10?以文本方式显示Themonkeygot8706peachsinfirstday.?测试用例3以文本方式显示30?以文本方式显示Themonkeygot536870914peachsinfirstday.?#includestdio.h#includemath.hintmain(){inta,i,j=1,n;scanf(%d,&n);for(a=n-1;a=1;a--){i=j;j=(i+a)*2;}printf(Themonkeygot%dpeachsinfirstday.\n,j);return0;}迭代法用迭代法求.求平方根的迭代公式为:要求前后两次求出的x的差的绝对值小于10-5。2.0Thesquarerootof2.00is1.41421#includestdio.h#includemath.hintmain(){doublea,b=1,n;scanf(%lf,&n);do{a=b;b=(a+n/a)/2;}while(fabs(a-b)0.00001);printf(Thesquarerootof%.2lfis%.5lf\n,n,b);return0;}空心字符菱形成绩:100/折扣:0.8输入:菱型起始字母和菱形的高度。1.输出:C42.C3.DD4.EE5.FF6.EE7.DD8.C9.#includestdio.h10.intmain()11.{inti,a,j;12.charch,b;13.scanf(%c%d,&ch,&a);b=ch;14.for(i=1;i=a-1;i++)printf();printf(%c\n,ch);15.for(i=2;i=a;i++)16.{for(j=1;ja-i+1;j++)17.printf();18.ch=b+i-1;printf(%c,ch);19.for(j=1;j=2*i-3;j++)20.printf();printf(%c\n,ch);21.}22.for(i=1;i=a-2;i++)23.{for(j=1;j=i;j++)24.printf();25.ch=b+a-i-1;26.printf(%c,ch);27.for(j=1;j=2*(a-i)-3;j++)28.printf();29.printf(%c\n,ch);30.}31.for(i=1;i=a-1;i++)printf();printf(%c\n,b);32.return0;}5.13黑色星期五在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的13日又恰逢星期五就叫“黑色星期五”。输入某年年号和该年的元旦是星期几(1-7),输出该年所有的“黑色星期五”的日期(年/月/日)。输入:4位年号和该年元旦是星期几输出:所有的“黑色星期五”的日期(年/月/日)测试输入期待的输出时间限制内存限制额外进程测试用例输入20067↵输出2006/1/132006/10/13↵#includestdio.h#includemath.hintmain(){intm,n,i,j,k,x;scanf(%d%d,&m,&n);for(i=1;i13;i++){{if(i==2){if((i%4==0&&i%100!=0)||(i%400==0))x=29;elsex=28;}elseif(i==4||i==6||i==9||i==11)x=30;elsex=31;}for(j=1,k=n;j=x;j++,k++){if(k==5&&j==13)printf(%d/%d/%d\n,m,i,j);if(k==7)k=0;if(j==x)n=k+1;}}return0;}ABC各教哪门课A、B、C是小学老师,各教2门课,互不重复。共有如下6门课:语文、算术、政治、地理、音乐和美术。已知:(1)政治老师和算术老师是邻居。(2)地理老师比语文老师年龄大。(3)B最年轻。(4)A经常对地理老师和算术老师讲他看过的文学作品。(5)B经常和音乐老师、语文老师一起游泳。请编程输出A、B、C各教哪两门课。#includestdio.h#includestdlib.hintmain(){intc,d,e,f,m,n;for(m=1;m4;m++){for(f=1;f4;f++){for(c=1;c4;c++){for(d=1;d4;d++){for(n=1;n4;n++){for(e=1;e4;e++){if((n!=c)+(m!=d)+(d!=2)+(n!=d&&n!=1&&d!=1)+(m!=e&&m!=2&&e!=2)+(m+n+c+d+e+f==12)==6)printf(语文课是%c教的\n算术课是%c教的\n政治课是%c教的\n地理课是%c教的\n音乐课是%c教的\n美术课是%c教的\n,m+'A'-1,n+'A'-1,c+'A'-1,d+'A'-1,e+'A'-1,f+'A'-1);}}}}}}return0;}肿瘤面积在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。第一行有一个整数n,表示正方形图像的边长。其后n行每行有n个整数,取值为0或255。整数之间用一个空格隔开。已知n不大于1000。输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。例子输入525525525525525525500025525502550255255000255255255255255255例子输出1#includestdio.hintmain(){inti,n,count=0,sum=0,a[1000];scanf(%d,&n);for(i=0;in*n;i++)scanf(%d,&a[i]);for(i=0;in*n;i++){if(a[i]==0){count++;if(a[i+1]!=0)break;}}count=count-2;for(i=0;in*n;i++){if(a[i]==0)sum++;}sum=(sum-4-2*count)/2;sum=sum*count;printf(%d\n,sum);return0;}冒泡法排序冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。编写程序,对输入的十个数按照从小到大排序#includestdio.hintmain(){inta[10],i,max,j;for(i=0;i=9;i++)scanf(%d,&a[i]);for(i=1;i=9;i++){for(j=1;j=10-i;j++){if(a[j-1]a[j]){max=a[j];a[j]=a[j-1];a[j-1]=max;}}}for(j=0;j=9;j++){printf(%d,a[j]);}printf(\n);return0;}给数组中的元素按顺序编号成绩:100/折扣:0.8对数组a[10]中的十个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组a中元素的顺序,且相同的整数要具有相同的编号。例如数组是:A=(5,3,4,7,3,5,6,8,9,10)则输出为:(4,1,3,7,1,4,6,8,9,10)#includestdio.hintmain(){inti,j,k=0,a[10];for(i=0;i10;i++)scanf(%d,&a[i]);for(i=0;i10;i++){k=1;for(j=0;j10;j++){if(a[i]a[j])k++;}printf(%3d,k);}printf(\n);return0;}大家一起做游戏幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。每个小朋友都希望自己能有更多的练习机会,所以都希望成为最终被留下的那位。现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。输入;小朋友的个数(=50),要被练习的数字输出:最终被留下的小朋友的序号说明:如“要被练习的数字”是5,则每次数到5的同学要退出该游戏测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示43↵以文本方式显示TheleftchildisNO1.↵测试用例2以文本方式显示105↵以文本方式显示TheleftchildisNO3.↵#includestdio.hintmain(){inti,j,a[50],m,n,count=0;scanf(%d%d,&n,&m);for(i=0;in;i++)a[i]=i+1;do{for(i=0;in;i++){count++;if(count==m)if(i==n-1){n--;count=0;}else{for(j=i+1;jn;j++)a[j-1]=a[j];n--;count=1;}}i=0;}while(n!=1);printf(TheleftchildisNO%d.\n,a[i]);return0;

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功