你们好呀!这里是@小梁coding~欢迎你们来到我的博客,这是我的第一篇文章,很高兴能够与大家在CSDN上进行学术交流(有问题欢迎在我的评论区下留言,嘿嘿),要想掌握一样技能,就一定要动手动脑实践,并要求我们要将输入输 出相结合,好了话不多数,开始我们的游戏吧!
游戏简介:该游戏可以由程序随机产生四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。当A为4时,即四个数字都猜对即为挑战成功。
输入输出要求:玩家一次性输入四个(0~9)不重复的数字,输出A,B个数判断的结果,若成功则提前输出游戏成功,若八次机会用完还未猜出,则游戏失败,并显示正确答。
(利用数组解题) 我们所需要思考的问题是:1.如何让系统产生随机数2.如何实现一次性输入四个数并将其分开存入数组3.如何实现A.B的计数
1.利用srand()函数及rand()函数实现四个随机数的产生time(NULL)
{srand(time(NULL));
int i,x[4];
while(1)
{for(i=0; i<4; i++)
x[i]=rand()%10;
if((x[0]!=x[1])&&(x[0]!=x[2])&&(x[0]!=x[3])&&(x[1]!=x[2])
&&(x[1]!=x[3])&&(x[2]!=x[3]))
break;}
2.利用取余%实现一次性输入四个0~9的数并将四个数字分开存入数组
scanf("%d",&num);
for(i=0;i<4;i++)
{
guess[i]=num%10;
num=num/10;
}
是不是发现解决这个问题很简单呢!有许多同学的输入方式都不是一次性输入四个数(但是题目要求我们一次输入4个数),有的打一个数字按一下空格,接着再打一个数字按一下空格最后回车才对AB进行判断,还有的要打一个数字按一次回车,按5次后才进行AB判断
3.利用for循环语句if条件判断语句实现八次循环输入判断与AB计数
A=0;
for(i=0; i<4; i++)
{
if(guess[i]==x[i])
A++; //数字正确且位置正确,A加1
}
B=0;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
if((guess[j]==x[i])&&(i!=j)) //数字正确而位置不正确,B加1
B++;
}
4.源代码如下
#include#include #include #include int main() { srand(time(NULL)); int i,h,j,x[4],guess[4],A,B,num; while(1) {for(i=0; i<4; i++) x[i]=rand()%10; if((x[0]!=x[1])&&(x[0]!=x[2])&&(x[0]!=x[3])&&(x[1]!=x[2])&&(x[1]!=x[3])&&(x[2]!=x[3])) break; } printf("正确答案为:%d%d%d%dn",x[3],x[2],x[1],x[0]); printf("游戏规则:nn该游戏可以由程序随机产生四个不重复的数字n要求一次性输入这四个数n玩家可通过提示A.B提示进行八次猜测nA表示位置正确且数字正确nB表示数字正确而位置不正确n"); printf("只要A为4个则游戏挑战成功n违反游戏规则游戏提前结束n"); printf("祝你顺利!!游戏开始!!nn"); for(h=0; h<8; h++) { printf("第%d次输入(每输入一次回车):n",h+1); scanf("%d",&num); for(i=0;i<4;i++) { guess[i]=num%10; num=num/10; } if((guess[0]==guess[1])&&(guess[0]==guess[2])&&(guess[0]==guess[3])&&(guess[1]==guess[2]) &&(guess[1]==guess[3])&&(guess[2]==guess[3])){h--;break;} A=0; for(i=0; i<4; i++) { if(guess[i]==x[i]) A++; } B=0; for(i=0; i<4; i++) for(j=0; j<4; j++) { if((guess[j]==x[i])&&(i!=j)) B++; } printf("%dA%dBn",A,B); if(A==4) { printf("恭喜您!游戏成功!!ngame overn"); h--; break; } } if(h==8) { printf("八次机会已用完,游戏失败ngame overn"); printf("正确答案为:%d%d%d%dn",x[3],x[2],x[1],x[0]); } printf("违反游戏规则,游戏结束!n"); return 0; }
5.运行结果如下
成功
失败
重复提前结束程序(若有更好的解决方法评论区留言)
解题方式如上,可供参考,有很好方法,欢迎评论区留言,这里是@小梁coding,一个励志要将输入与输出相结合的成长型学生!!



