收藏 分销(赏)

猴子第一天摘了若干个桃子.docx

上传人:s4****5z 文档编号:8345474 上传时间:2025-02-10 格式:DOCX 页数:7 大小:16.04KB 下载积分:10 金币
下载 相关 举报
猴子第一天摘了若干个桃子.docx_第1页
第1页 / 共7页
猴子第一天摘了若干个桃子.docx_第2页
第2页 / 共7页


点击查看更多>>
资源描述
猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子? 分析 1) 设x1为前一天桃子数,设x2为第二天桃子数, 则:     x2=x1/2-1, x1=(x2+1)*2     x3=x2/2-1, x2=(x3+1)*2     以此类推: x前=(x后+1)*2 2) 从第10天可以类推到第1天,是一个循环过程。 程序如下: 1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. int main(){ 5. int day, x1, x2; 6. day=9; 7. x2=1; 8. while(day>0) { 9. x1=(x2+1)*2; // 第一天的桃子数是第2天桃子数加1后的2倍 10. x2=x1; 11. day--; 12. } 13. printf("the total is %d\n",x1); 14. 15. return 0; 16. } 运行结果: the total is 1534 3对情侣参加婚礼,3个新郞为A、B、C,3个新娘为X、Y、Z,有人不知道谁和谁结婚,于是询问了6位新人中的3位,但听到的回答是这样的:A说他将和X结婚;X说她的未婚夫是C; C说他将和Z结婚。这人听后知道他们在开玩笑,全是假话。请编程找出谁将和谁结婚。 算法分析 将A、B、C这3人用 1、2、3 表示,将X和A结婚表示为“X=1”,将Y不与A结婚表示为“Y!=1”。按照题目中的叙述可以写出表达式: · x!=1 A不与X结婚 · x!=3 X的未婚夫不是C · z!=3 C不与Z结婚题意还隐含着X、Y、Z这3个新娘不能结为配偶,则有:x!=y 且x!=z且y!=z,穷举以上所有可能的情况,代入上述表达式中进行推理运算,若假设的情况使上述表达式的结果均为真,则假设情况就是正确的结果。 根据算法分析,可以利用计算机程序对这些情况进行穷举,然后得出正确的结果。 根据算法分析,该问题的程序实现如下: 1. #include <stdio.h> 2. 3. void Marry(void); 4. 5. int main(){ 6. Marry(); 7. 8. return 0; 9. } 10. 11. void Marry(){ 12. int x, y, z; 13. for (x=1;x<=3;x++) //穷举x的全部可能配偶 14. for (y=1;y<=3;y++) //穷举y的全部可能配偶 15. for(z=1;z<=3;z++) //穷举z的全部可能配偶 16. if (x!=1 && x!=3 && z!=3 && x!=y && x!=z && y!=z){ //判断配偶是否满足题意 17. printf ("X和%c结婚\n", 'A'+x-1); //打印判断结果 18. printf ("Y和%c结婚\n", 'A'+y-1); 19. printf ("Z和%c结婚\n", 'A'+z-1); 20. } 21. } 运行结果: X和B结婚 Y和C结婚 Z和A结婚 怎么用循环输出以下图形: * *** ***** ******* ***** *** * main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); } } 打印菱形 #include"stdio.h" int main(void){ int i,j,k; for(i=0;i<=3;i++) { // 循环4次,打出前4行 for(j=0;j<=2-i;j++)//设定每行*前面的空格,每行都是2-i个 printf(" "); for(k=0;k<=2*i;k++)//循环打出2*i-1个*号, printf("*"); printf("\n"); //打完一行后换行 } for(i=0;i<=2;i++) {//循环3次,打出后3行 for(j=0;j<=i;j++)//设定每行*前面的空格,每行都是i个 printf(" "); for(k=0;k<=4-2*i;k++)//循环打出2*(2-i)个*号 printf("*"); printf("\n"); //打完一行后换行 } return 0; 九九乘法表共9行9列,重点考察for循环的掌握情况。 下面给出了输出完整乘法表、右上、右下、左上、左下乘法表的代码。 【代码一】输出完整的三角形: #include <stdio.h> int main() { int i,j; // i, j控制行或列 for(i=1;i<=9;i++) { for(j=1;j<=9;j++) // %2d 控制宽度为两个字符,且右对齐;如果改为 %-2d 则为左对齐 // \t为tab缩进 printf("%d*%d=%2d\t", i, j, i*j); printf("\n"); } return 0; } 运行结果: 1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 【代码二】输出右上三角形和左上三角形: #include <stdio.h> int main() { int i,j; for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ if(j<i) //打印八个空格,去掉空格就是左上三角形 printf(" "); else printf("%d*%d=%2d ",i,j,i*j); } printf("\n"); } return 0; } 运行结果: 1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81 去掉八个空格后的运行结果: 1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81 【代码三】输出右下和左下三角形: #include <stdio.h> int main(){ int i,j,n; for(i=1;i<=9;i++){ // 将下面的for循环注释掉,就输出左下三角形 for(n=1; n<=9-i; n++) printf(" "); for(j=1;j<=i;j++) printf("%d*%d=%2d ",i,j,i*j); printf("\n"); } return 0; } 运行结果: 1*1= 1 2*1= 2 2*2= 4 3*1= 3 3*2= 6 3*3= 9 4*1= 4 4*2= 8 4*3=12 4*4=16 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 去掉循环后的运行结果: 1*1= 1 2*1= 2 2*2= 4 3*1= 3 3*2= 6 3*3= 9 4*1= 4 4*2= 8 4*3=12 4*4=16 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 题目:输出9*9乘法口诀表 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码: #include "stdio.h" #include "conio.h" main() { int i,j,result; printf("\n"); for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/ } printf("\n"); /*每一行后换行*/ } getch(); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服