题目要求:
1. 我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
printf("============== 数字炸弹=====================\n");
int bomb,num,gao,di;
srand(time(0));
bomb=rand()%100+1;
gao=100;di=1;num=0;
printf("炸弹已放入雷区(1-100)\n");
printf("玩家1进入哪个位置(1-100)?");
scanf("%d",&num);
int jiejie;
for(jiejie=2;jiejie<=50;jiejie++){
if( jiejie%2 == 0 ){
if(num>bomb){
printf("(%d-%d)区域安全\n",num,gao);
gao=num;
printf("玩家2进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);while(num<di || num>gao){printf("玩家2进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);}}
if(num<bomb){
printf("(%d-%d)区域安全\n",di,num);
di=num;
printf("玩家2进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);while(num<di || num>gao){printf("玩家2进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);}}
if(num==bomb){
printf("位置%d有炸弹,玩家2被炸身亡...........游戏结束\n",num);break;}
}
if( jiejie%2 != 0 ){
if(num>bomb){
printf("(%d-%d)区域安全\n",num,gao);
gao=num;
printf("玩家1进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);while(num<di || num>gao){printf("玩家1进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);}}
if(num<bomb){
printf("(%d-%d)区域安全\n",di,num);
di=num;
printf("玩家1进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);while(num<di || num>gao){printf("玩家1进入哪个位置(%d-%d)?",di,gao);scanf("%d",&num);}}
if(num==bomb){
printf("位置%d有炸弹,玩家1被炸身亡...........游戏结束\n",num);break;}
}
}
return 0;
}
2. 老师的标准简洁代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
printf("============== 数字炸弹=====================\n");
int bomb,num,gao,di,player=1;
srand(time(0));
bomb=rand()%100+1;
gao=100;di=1;//初始雷区数字上下限
printf("炸弹已放入雷区[1-100]\n");
do{
do{
printf("玩家%d进入哪个位置(%d-%d)?",player,di,gao);
scanf("%d",&num);
}while(num<di || num>gao);//限制雷区范围数字
if(num==bomb)
printf("位置%d有炸弹,玩家%d被炸身亡.......游戏结束\n",bomb,player );
else
{
if(num>bomb){
printf("[%d-%d]区域安全\n",num,gao);
gao=num;}
else {
printf("[%d-%d]区域安全\n",di,num);
di=num;}
}
player=(player==1?2:1);//切换玩家
}while(num!=bomb);
return 0;
}
没有对比就没有伤害吧,一个菜鸡大一学生的自我反思。。。。。。
感谢老铁们的浏览。