5第三章程序练习《循环结构练习2——猜数游戏》
猜数游戏
生成随机数
倒是这里暂时不需要完全理解,但是要会用,拿一个随机数还是非常常见的一个技巧的
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { srand(time(0));//这一行让每次运行的结果都不同 int a=rand();//只有这一行的话是伪随机,虽然生成了一个随机数,但是每次都是这个数 printf("%d",a); return 0; }
猜数游戏
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int guess; srand(time(0)); int a=rand()%100+1;//只生成了1-100的数字,如果生成3-96的数也会了 a=rand()%94+3 // printf("%d ",a); scanf("%d",&guess) ;//这两行总是绑定在一起的,即输入一个数,次数就要加1 int count=1; while(guess!=a) { if(guess>a) { printf("你猜的数大了 "); }else { printf("你猜的数小了 "); } scanf("%d",&guess) ; count++; } printf("恭喜你猜对了,你用了%d次猜对的",count); return 0; }
猜数游戏改进版
改进版中已经对人机交互的部分做了一些改良
//改进版,如果猜数游戏三次没猜对,我就不想玩了,就问我还要不要玩 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int guess,count=0; int choose; srand(time(0));//这一行让每次运行的结果都不同 int a=rand()%100+1;//只生成了1-100的数字,如果生成3-96的数也会了 a=rand()%94+3 printf("%d ",a);//调试用 scanf("%d",&guess) ; count++; while(guess!=a) { if(guess>a) { printf("你猜的数大了 "); }else { printf("你猜的数小了 "); } if(count==3) { printf("你三次都没猜对,如果继续玩请输入1,退出游戏请输入0 "); scanf("%d",choose) ; if(choose==0) { break; }else if(choose!=1) { printf("请重新输入"); } } scanf("%d",&guess) ; count++; } if (guess==a) { printf("恭喜你猜对了,你用了%d次猜对的 ",count); }else { printf("没猜对"); } printf("游戏结束"); return 0; }
注意,这里的代码其实可以改进的地方是,在选择choose的时候不是用0和1,而是用Y和N,但这样子就需要用到字符的比较函数了,只能算是炫技,对代码没有实质性的改良,还有中也是可以用类似的技巧
上一篇:
IDEA上Java项目控制台中文乱码