2012C编程.doc
《2012C编程.doc》由会员分享,可在线阅读,更多相关《2012C编程.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2011-9-27 周二(第5周)问题1: 从输入一个钱数(整数),请给出最小张数的取钱方式(输出100元的张数、50元的张数、20元的张数、10元的张数,5元钱的张数、2元钱的张数、1元钱的张数)。答案见:moneyarray-question_1.c ( 软件2班 马秀娟提供)问题2:(见 纯小数放数组.c 范提供)怎么样将一个纯小数0.23562的每一位存入一个数组中,规则是第一位为0,第二位是2,第三位是3,第四位是5,第五位是6,第六位是2?问题3:(答案见 迷宫1.c (递归) 迷宫.c (非递归)范提供)问题是给一个迷宫,0代表可以走,1代表墙。求路径 (要求用递归解决)void
2、 main()int loss55=0,1,1,1,10,0,1,1,11,0,0,0,11,1,1,0,11,1,1,0,0; /给一个55的迷宫 next(loss,0,0);问题4: 猜数字(见 猜数.c 范提供)介绍一下游戏规则:首先计算机生成一个随机的4位数字,这个4位数每一位互不相同,首位可以为0。玩家猜这个4位数是多少。计算机跟据玩家每次提交的数字给出相应的提示,提示的格式为:xAyB。其中:A表示玩家的4位数中某一位数字与计算机出的4位数中的一位,数字相同,位置也相同。B表示玩家的4位数中某一位数字与计算机出的4位数中的一位,数字相同,但位置不同。x表示这次玩家猜的数中有几个得
3、A。y表示这次玩家猜的数中有几个得B。如果在7次之内玩家猜到了计算机的数字(也就是4A)则获胜,超过7次则失败。问题4:.歌星大奖赛(较简单,程度不提供)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。问题5:求最大数(最大有三位数约数.c 范提供) 求 555555的约数中最大的三位数是多少。问题 6: .高次方数的尾数(可推广到确定任意一个数的高次方幂的后三位数字,注意:这是一个求余数问题)(见 13的13次方的后三位数.c 范提供)求13的13次方的最后三位数。问题 7:数字之和 (见程
4、序求和为5的三位数.c范提供)求100到1000之间有多少个其数字之和为5的整数。问题8: 一个奇异的三位数(见奇异的三位自然数.c提供了两种算法)一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反,求这个三位数。题目分析与算法设计:根据题意可知,七进制和九进制表示的这全自然数的每一位一定小于7,可设其七进制数形式为kji(i、j、k的取值分别为16),然后设其九进制表示形式为ijk。问题:借书方案知多少(见借书方案.c)小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?问题分析与算法设计本问题实
5、际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。首先对五本书从1至5进行编号,然后使用穷举的方法。假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。问题:抓交通肇事犯(见:交通肇事犯.c)一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。问题分析与算法设计按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是
6、否是另一个整数的平方。问题:该存多少钱(见该存多少钱.c)假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。问题分析与算法设计分析存钱和取钱的过程,可以采用倒推的方法。若第五年年底连本带息要取1000元,则要先求出第五年年初银行存款的钱数: 第五年初存款=1000/(1+12*0.0063)依次类推可以求出第四年、第三年.的年初银行存款的钱数: 第四年年初存款=(第五年年初存款+1000)/(1+12*0.0063) 第三年年初存款=(第四年年初存款+1000)/(1+12*0.0063) 第二
7、年年初存款=(第三年年初存款+1000)/(1+12*0.0063) 第一年年初存款=(第二年年初存款+1000)/(1+12*0.0063)通过以上过程就可以很容易地求出第一年年初要存入多少钱。问题: 捕鱼和分鱼(见抓鱼分鱼.c)A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三竿,A第一个醒来,他将鱼分成五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?(3121)问题分析与算法设计根据题意,总计将所有的鱼进行了五
8、次平均分配,每次分配时的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。假定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除,余下的鱼为4*(X-1)/5。因此,假设分时看到有e个,(Se必须满足Se-1能被整除且5*Se能被4整除)设D分时看到的是Sd则Se=(4/5)(Sd-1) 从而Sd=Se*5/4+1 同样Sc=Sd*5/4+1(Sd必须满足Sd-1能被整除且5*Sd能被4整除)b=Sc*5/4+1 (Sc必须满足Sc-1能被整除且5*Sc能被4整除)a=Sb(5/4+1 (Sb必须满足Sb-1能被整除且5*Sb能被4整除)问
9、题:出售金鱼 (见出售金鱼.c)买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。问原来的鱼缸中共有几条金鱼?(59)题目分析与算法设计题目中所有的鱼是分五次出售的,每次卖出的策略相同;第j次卖剩下的(j+1)分之一再加1/(j+1)条。第五次将第四次余下的11条全卖了。假定第j次鱼的总数为X,则第j次留下: x-(x+1)/(j+1)当第四次出售完毕时,应该剩下11条。若X满足上述要求,则X就是题目的解。应当注意的是:(x+1)/(j+1)
10、应满足整除条件。试探X的初值可以从23开始,试探的步长为2,因为X的值一定为奇数。问题:8 除不尽的数(见8除不尽的数.c)一个自然数被8除余1,所得的商被8除也是余1,再将第二次的商被8除后余7,最后得到一个商为a。又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。求这个自然数。(1993)题目分析与算法设计根据题意,可设最后的商为i(i从0开始取值),用逆推法可以列出关系式: (i*8+7)*8)+1)*8+1=(2*i*17)+15)*17+4 再用试探法求出商i的值。问题15 .图形输出编程输入N,打印图形(当N=3时图形如下):问题(见求一个三位数.c)有
11、一个 3 位数,个位数字比百位大,百位数字比十位大,且个位数字之和等于各位数字之积。求这个数字是多少。问题(见 重量砝码问题.c 范提供)国信蓝点杯软件设计大赛广东省高职C语言初赛最后一题,求解?现有重量分别为1g,3g,9g,27g,81g的五个砝码,砝码可以放在天平的任意一个托盘中。用户输入一个不大于121的数字,输出最优的砝码组合,即使用最少的砝码。如:7979=1-3+81问题2011第二届国信蓝点杯全国软件专业人才设计与开发大赛选拔赛试题-C语言高职组填空题:第一题:(见存1000年取100利3.c 范)小李将本金1000元,存入银行,存期5年 ,年利率3%。 小王每年拿出100元资
12、助贫困儿童double money=1000;int n=5;int i;for(i=0;i1E-15)a=(a+b)/2;b=_; b=(a*a+2)/(2*a);printf(%fn,a);第三题:求最小公倍数 (见最小公倍数.c 范)int f(int a,int b)int i;for(i=a;_) i=i+aif(i%b=0) return i;第四题:该原题有错误多处,下列为修改后代码(见两日期间的天数(见填空题).c 范)求两个日期间的天数,先求每个日期距离1年1月1日天数的差值,再进一步做差#includestruct MyDateint year;int month;int
13、day;int GetAbsDays(struct MyDate x)int i;int days;int year;int month_day=31,28,31,30,31,30,31,31,30,31,30,31;year=x.year-1; /因为欲求距离1年1月1日的差值days=year*365+year/4-year/100+year/400;if(x.year%4=0&x.year%100!=0|x.year%400=0) month_day1+;for(i=0;i ;i+) 12 days+=month_dayi;days+=x.day-1;return days;int Ge
14、tDiffDays(struct MyDate a,struct MyDate b)return GetAbsDays(b)-GetAbsDays(a);int main(int argc,char *argv)struct MyDate a=2011,5,18,b=2012,5,18;int n=GetDiffDays(a,b);printf(%dn,n);第五题:轮转数(每个字符依次向右移) (见 字符串n次轮转.c)例:字符串abcd 经过一次轮转后为dabc 此时位移记作1字符串abcd 进过两次轮转后为 cdab 此时位移记作2以下代码为求字符串S,经过n次位移后的新字符串void
15、shift(char *s,int n)char *p;char *q;int len=strlen(s);if(len=0) return;char *s2=(char *)malloc(_len_);p=s;q=s2+n%len;while(*p)*q+=*p+;if(q-s2)=len)*q=_; 0q=s2;strcpy(s,s2);free(s2);第六题:( 见 金字塔形.c 范) 金字塔数space 为塔底边距离左边的空白长度x 塔底中心字母例:当space=0,x=C输出:AABAABCBA当space=2,x=EAABA ABCBAABCDCBAABCDEDCBAvoid h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2012 编程
限制150内