C++程序设 重的工业职业技术学院一毛国平 题且和要求 参考步骤 程序 上机操作
趣味取球 C + + 程序 设 计 题目和要求 参考步骤 程序 上机操作 重庆工业职业技术学院-毛国平
C++程序设计 题目 床工业职业米学虎一毛国予 已知袋中有若干个白球和黑球,每 次从中取出两个球。如取出的两个 球为同色,则放回一个白球;如取 出的两个球为异色,则放回十黑球。 (袋外有足够的白球和黑球)试设讯 取球过程的模拟程序,判断最后剩 下的一个球的颜色。 页V回月录页
C++程序设计 重庆工业职业技术学院-毛国平 • 已知袋中有若干个白球和黑球,每 次从中取出两个球。如取出的两个 球为同色,则放回一个白球;如取 出的两个球为异色,则放回一黑球。 (袋外有足够的白球和黑球)试设计 取球过程的模拟程序, 判断最后剩 下的一个球的颜色。 题目 下一页 回目录页
C++程序设计 床工业职业米学虎一毛国予 要求 (1)用循环语句实现重复取出小球的操作。 2)用函数实现一次取球,由随机数决定取 出小球的颜色。 3)选择条件语句来处理取得不同颜色的小 球后的情况。 (4)打印每次取出的两个小球的颜色。 5)分析程序的执行结果。 下一页回且录页
C++程序设计 重庆工业职业技术学院-毛国平 • (1) 用循环语句实现重复取出小球的操作。 • (2) 用函数实现一次取球,由随机数决定取 出小球的颜色。 • (3) 选择条件语句来处理取得不同颜色的小 球后的情况。 • (4) 打印每次取出的两个小球的颜色。 • (5)分析程序的执行结果。 回目录页 要求 下一页
C++程序设计 破题 床工业职业米学虎一毛国予 根据规则,黑球和白球相遇,其结果是白球消失, 黑球和黑球相遇的结果是两个黑球变成一个白球, 两个黑球同时消失。这样,黑球的变化的规律只可 能是:要么两个黑球同时消失,要么黑球的数目不 改变。那么就可以得到结论:如果一开始黑球的个 数是偶数个,那么当球还剩一个的时候,由于此时 黑球的个数仍应该是偶数,显然只可能是零个了 如果一开始黑球的个数是奇数,那么当还剩一个球 的时候,显然剩的这个球就是黑色的球。 下一页回且录页
C++程序设计 重庆工业职业技术学院-毛国平 破 题 • 根据规则,黑球和白球相遇,其结果是白球消失, 黑球和黑球相遇的结果是两个黑球变成一个白球, 两个黑球同时消失。这样,黑球的变化的规律只可 能是:要么两个黑球同时消失,要么黑球的数目不 改变。那么就可以得到结论:如果一开始黑球的个 数是偶数个,那么当球还剩一个的时候,由于此时 黑球的个数仍应该是偶数,显然只可能是零个了, 如果一开始黑球的个数是奇数,那么当还剩一个球 的时候 , 显然剩的这个球就是黑色的球。 下一页 回目录页
C++程序设计 「法描述 床工业职业米学虎一毛国予 1.把黑球和白球放入袋中 每次从袋中取出两个球 3.判断两个球的颜色(同色,则放回一个白 球;异色,则放回一黑球) 4.重复第2、3步骤。 5.判断最后剩下的一个球的颜色 6.结東 下一页平回目录页
C++程序设计 重庆工业职业技术学院-毛国平 算法描述 1. 把黑球和白球放入袋中 2. 每次从袋中取出两个球 3. 判断两个球的颜色(同色,则放回一个白 球;异色,则放回一黑球) 4. 重复第2、3步骤。 5. 判断最后剩下的一个球的颜色 6. 结束 下一页 回目录页
C++程序设计 流程图 床工业职业米学虎一毛国予 的人(技球)u=beck 同色whie 出最后 下一页平回目录页
C++程序设计 重庆工业职业技术学院-毛国平 流程图 下一页 回目录页 开始 输入(装球):sum=black+white 取球:getor=rand( )%sum+1; 放球 同色:white ++; 异色: black ++; 输出:最后球的颜色 结束
C++程序设计 程序 床工业职业米学虎一毛国予 include includestdlib.h> include void maino i int sum srand((unsigned)time(NULL) int black=0, white=0, getor, flag1, flag 2; cou>black cout>white. sum=blackwhite int sum1=sum
C++程序设计 程序-装球 重庆工业职业技术学院-毛国平 • #include • #include • #include • void main() • { int sum; • srand ((unsigned)time(NULL)); • int black=0,white=0,getor,flag1, flag2; • cout>black; • cout>white; • sum=black+white; • int sum1=sum;
C++程序设计 程序 床工业职业米学虎一毛国予 /每次减少一个球,故共取总球数减一次球 for(int k=1: k<=sum1-1; k++) cout<"这是:"<<k<"次取球."<end1 cout<"本次取的第一个球是:”;//生成随机数的办法第一次取球 getor-rand o%sum+1 //生成一个随机数代表小球编号 sum一 f(getor(=black //黑色 black-- cout<<"t黑球."; flag1=0 Jelsei white //白色 cout<<"t白球."; flag1=1; I cout<<endl
C++程序设计 重庆工业职业技术学院-毛国平 //每次减少一个球,故共取总球数减一次球 for(int k=1;k<=sum1-1;k++) { cout<<"这是:"<<k<<"次取球."<<endl; cout<<“本次取的第一个球是:”;//用生成随机数的办法第一次取球 getor=rand()%sum+1; //生成一个随机数代表小球编号 sum--; if(getor<=black) //黑色 { black--; cout<<"\t黑球." ; flag1=0; }else{ white--; //白色 cout<<"\t白球." ; flag1=1;} cout<<endl; 程序-取球
C++程序设计 程序 床工业职业米学虎一毛国予 //用生成随机数的办法第二次取球 getor=rand0‰sum+1; //生成一个随机数代表小球编号 cout<"本次取的第二个球是: if(getor<=black //黑色 i black cout<"t黑球 f1ag2=0; felse i //白色 white cout<"t白球 ag2=1;
C++程序设计 重庆工业职业技术学院-毛国平 • //用生成随机数的办法第二次取球 • getor=rand()%sum+1; //生成一个随机数代表小球编号 • cout<<"本次取的第二个球是:" ; • if(getor<=black) //黑色 • { black--; • cout<<"\t黑球." ; • flag2=0; • }else { //白色 • white--; • cout<<"\t白球." ; • flag2=1; • } 程序-取球
C++程序设计 程序放 床工业职业米学虎一毛国予 //根据放回球的规则放球 if(flag=flag 2) //同色 t white++ cout<"放回一个白球 ls /异色 black++ cout<"放回一个黑球 cout<<endl
C++程序设计 重庆工业职业技术学院-毛国平 • //根据放回球的规则放球 • if(flag1==flag2) //同色 • { white++; • cout<<"放回一个白球." ; • } else //异色 • { black++; • cout<<"放回一个黑球." ; • } • cout<<endl; • } 程序-放球