zoukankan      html  css  js  c++  java
  • 不会赢的游戏1

    游戏规则:输入整数范围,根据系统给出提示进行猜数,每猜一次减少一次机会,猜中或者机会耗尽则一轮游戏结束。

    游戏示例:输入范围0-4,你可以猜数1,2,3,系统提示有一次猜数机会

        如果你猜1,如果猜中,系统显示“恭喜你,猜对了”,否则将显示“猜错了,正确结果为XXX”。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include <time.h>
    
    int main(void){
    	int guess_cishu=0;
    	int guess_cishu1=0; int guess_cishu2=0;
    	int up_limit=0;
    	int down_limit=100;
    	int caishu=1;
    	int result;
    	char cmd[10];
    	double random_number;
    
    	while(1){
    		srand((unsigned)time(NULL)*100);
    		printf("输入start开始游戏,输入end结束游戏
    ");
    		scanf("%s", cmd);  //用fgets会出问题,why
    		if(memcmp(cmd, "end", 3)==0) break;
    		else if(memcmp(cmd, "start", 5)==0){
    			memset(cmd, 0, 10);
    			random_number = (double)rand()/RAND_MAX;
    
    			printf("请输入猜数范围
    ");
    			printf("范围上限:");
    			scanf("%d", &up_limit);
    			printf("范围下限:");
    			scanf("%d", &down_limit);
    			if(up_limit>=down_limit-2){
    				printf("范围不合理,请重新输入
    ");
    				continue;
    			}
    			guess_cishu = (int)(log10((double)down_limit-up_limit-1)/log10((double)2));
    			printf("你有%d次猜的机会
    ", guess_cishu);
    			while(1){
    				printf("输入要猜的数字:");
    				scanf("%d", &caishu);
    				if(caishu>=down_limit||caishu<=up_limit){
    					printf("输入的数字非范围内
    ");
    					continue;
    				}
    				else{
    					random_number = (double)rand()/RAND_MAX;
    					guess_cishu --;
    					guess_cishu1 = (int)(log10((double)caishu-up_limit-1)/log10((double)2));
    					guess_cishu2 = (int)(log10((double)down_limit-caishu-1)/log10((double)2));
    					if(guess_cishu==guess_cishu1&&guess_cishu==guess_cishu2){
    						if(random_number<0.5) up_limit=caishu;
    						else down_limit=caishu;
    					}
    					else if(guess_cishu==guess_cishu1){
    						down_limit = caishu;
    					}
    					else{
    						up_limit = caishu;
    					}
    					/*
    					if(caishu>(up_limit+down_limit)/2){
    						down_limit = caishu;
    					}
    					else if(caishu<(up_limit+down_limit)/2){
    						up_limit = caishu;
    					}
    					else{
    						if(random_number<0.5) up_limit = caishu;
    						else down_limit = caishu;
    					}*/					
    					if(guess_cishu>0){
    						printf("你猜错了,你还可以再猜%d次,范围是%d-%d
    ", guess_cishu, up_limit, down_limit);
    					}
    					else break;
    				}
    			}
    			random_number = (double)rand()/RAND_MAX;
    			result = floor(random_number*(down_limit-up_limit-1))+up_limit+1;
    			printf("哈哈,猜错了,正确答案是%d
    ", result);  //用随机数输出结果
    		}
    		else{
    			printf("未知指令
    ");
    			memset(cmd, 0, 10);
    		}
    	}
    	printf("用户结束游戏
    ");
    	system("pause");
    
    	return 0;
    }


    我们来看结果:




  • 相关阅读:
    Flume(二)Flume的Source类型
    Hadoop(四)HDFS的高级API操作
    Flume(一)Flume的基础介绍与安装
    MySQL 的索引优化
    CentOS7.5安装Mysql5.7.22
    Hadoop(三)HDFS读写原理与shell命令
    iOS NSDictionary JSON 相互转换
    iOS UICollectionView 在滚动时停在某个item位置上
    vim的基本使用方法
    初次使用git上传代码到github远程仓库
  • 原文地址:https://www.cnblogs.com/xhyzjiji/p/6159397.html
Copyright © 2011-2022 走看看