C趣味程序百例(29)抢30,第1张

C趣味程序百例(29)抢30,第2张

89.抢30
这是中国民间游戏。两个人轮流从1开始数。每个人每次可以数一到两个连号。谁先到30名,谁就赢了。
*问题分析和算法设计
这个问题和上一个问题差不多,算法也差不多。不同的是,谁应该迈出第一步是可选的。如果计算机迈出了第一步,那么计算机一定是赢家。如果人先走,那么计算机就得等着出错。人先走,不犯错,那么人就赢了。否则,计算机会抓住人为错误,让自己成为赢家。
*程序和程序注释
# include
# include
# include
int input(int t);
int copu(int s);
void main()
{
int tol = 0;
printf(" \ n * * * * * * * * *赶三十* * * * * * \ n ");
printf("游戏开始\ n ");
randomize();/*初始化随机数生成器*/
if(random(2)==1) /*取随机数决定哪个机器或人先走一步*/
tol = input(tol);/*如果是1,剩下的元就走第一步*/
while(tol!=30) /*游戏结束条件*/
if((tol = copu(tol))= = 30)/*电脑取一个数,如果是30,机器赢*/
printf("我输了!\ n ");
else
if((tol = input(tol))= = 30)/*每个人取一个数,如果是30,这个人就赢*/
printf("我输了!\ n ");
printf(" * * * * * * * *游戏结束* * * * * * * * \ n ");
}
int input(int t)
{
int a;
do{
printf("请计数:");
scanf("%d ",& a);
if(a>2||a30)
printf("错误输入,再次!");
else
printf("你数:%d\n ",t+a);
} while(a > 2 | | a30);
return t+a;/*返回当前累计已取走的数字之和*/
}
int copu(int s)
{
int c;
printf("计算机计数:");
if((s+1)%3==0) /*如果剩余数的模为1,取1*/
printf(" %d\n ",++ s);
else if((s+2)% 3 = = 0)
{
s+= 2;/*如果剩余数的模为2,取2*/
printf(" %d\n ",s);
}
else
{
c = random(2)+1;/*否则随机取1或2 */
s+= c;
printf(" %d\n ",s);
}
return s;
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C趣味程序百例(29)抢30

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情