• 不会赢的游戏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;
    }


    我们来看结果:




  • 相关阅读:
    iOS开发UI篇—CAlayer简介
    iOS开发UI篇—ios手势识别(双击、捏、旋转、拖动、划动、长按, 上下左右滑动)
    录屏专家
    加载Gif图片方法
    制作酸奶方法
    UITabBar小红点(适配iPad)
    那些著名或非著名的iOS面试题-后编
    iOS学习资源
    实用的Mac软件
    安装iOS企业包流程
  • 原文地址:https://www.cnblogs.com/xhyzjiji/p/6159397.html
Copyright © 2020-2023  润新知