当前位置:首页 > 通信资讯 > 正文

如何用C语言写出一个猜数字游戏,供大家参考,具体内容如下

首先调用头文件

?
1 2 3 4 5 6 /***调用头文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***调用头文件***/

再者定义函数

?
1 2 3 4 5 6 7 8 9 10 11 /**定义函数**/ void start();//开始函数 void low();//低级 void mediate();//中级 void high();//高级 void res();//重启函数 void chooce();//选择函数 void help();//查看帮助 void name_set();//姓名询问 int main(void);//主函数 /**定义函数**/

start()函数,主要是进行选择进入,代码如下

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 void start(){//开始函数 printf("***************************\n"); printf("* 1.进行猜数字 *\n"); printf("* 2.退出猜数字 *\n"); printf("* 3.选择 帮助 *\n"); printf("***************************\n\n"); /*设置选择*/ int c; printf("请选择:"); scanf("%d",&c); switch(c){ case 1: chooce(); break; case 2: printf("谢谢您!\n"); break; exit(0); case 3: help(); break; default: printf("请输入正确的数字:\n"); break; } /*设置选择*/ }

name_set()函数主要是询问一下游玩者的名字,再输出一下名字,毕竟是个游戏供来娱乐嘛

?
1 2 3 4 5 6 void name_set(){//问候函数 char name[10]; printf("您好,您叫什么?输入您的姓名:"); gets(name); printf("%s,欢迎来到猜数字游戏\n\n",name); }

help()函数纯纯就是提示帮助

?
1 2 3 4 5 6 void help(){//帮助函数 printf("\t1.低级范围在300以内,共5次机会\n"); printf("\t2.中级范围在300-1000以内,共10次机会\n"); printf("\t3.高级在1000以上,共20次机会\n"); start();//返回开始函数,并不运行问候函数 }

chooce()函数,主要是进行选择游戏等级

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 void chooce(){//选择等级 printf("***************************\n"); printf("* 1.选择低级 *\n"); printf("* 2.选择中级 *\n"); printf("* 3.选择高级 *\n"); printf("***************************\n"); int dj; printf("请选择等级:"); scanf("%d",&dj);//设置等级 /*判定选择等级*/ if(dj==1){ low(); } else if(dj==2){ mediate(); } else if(dj==3){ high(); } else{ printf("请输入正确的数字,我们即将返回程序!\n"); chooce(); } /*判定选择等级*/ }

接下来就是主要的函数了,是游戏内容和逻辑

简单来说,低级中级高级的代码逻辑是一样的,都是运用stdlib.h里的rand()函数抽取随机数值,然后与输入的guess对比,可以看出来,在while里运行,输入一次做一次对比,如果正确times+1并结束循环,如果不正确,提示错误并返回while运行,直到times超过那个数值,跳出循环。
在下面可以看一下基本模板(里面数值用拼音代替)

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 void dengji(){ int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(//表达式代取数值对比){ printf("太大了建议您玩中级!\n"); printf("请再次输入\n"); low(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<n){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<n){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } }

然后可以看一下代码

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 void low(){//低级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb>300){ printf("太大了建议您玩中级!\n"); printf("请再次输入\n"); low(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<5){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<5){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void mediate(){//中级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<300){ printf("太小了建议您玩低级!\n"); printf("请再次输入\n"); mediate(); } else if(sb>1000){ printf("太大了建议您玩高级!\n"); printf("请再次输入\n"); mediate(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<10){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<10){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void high(){//高级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<1000){ printf("太小了,建议您退出游戏!\n"); high(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<20){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<20){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } }

res()函数可以理解为询问返回游戏,我是在return games的基础上缩写的,毕竟游戏不能只有一次,在里面做一个逻辑运算,并返回其他函数

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 void res(){//询问是否重新再来 printf("\n还要在玩一遍吗?\n1.是的 2.退出。"); int s; scanf("%d",&s); /*进行选择*/ if(s==1){ chooce(); } else if(s==2){ printf("谢谢您!\n"); exit(0);//退出程序 } else{ printf("请输入正确的数字!\n"); res(); } /*进行选择*/ return res();//将res函数返回main函数 }

main()函数主要是做了一个调用,调用前面start,name_set,chooce,res等函数

?
1 2 3 4 5 6 7 8 9 10 int main(){ name_set();//问候 start();//执行选择 int yes=1;//设置重启值,调用res函数 if(yes==1){ res(); } }

到最后可以看一下所有代码

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 /***调用头文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***调用头文件***/ /**定义函数**/ void start();//开始函数 void low();//低级 void mediate();//中级 void high();//高级 void res();//重启函数 void chooce();//选择函数 void help();//查看帮助 void name_set();//姓名询问 int main(void);//主函数 /**定义函数**/ void start(){//开始函数 printf("***************************\n"); printf("* 1.进行猜数字 *\n"); printf("* 2.退出猜数字 *\n"); printf("* 3.选择 帮助 *\n"); printf("***************************\n\n"); /*设置选择*/ int c; printf("请选择:"); scanf("%d",&c); switch(c){ case 1: chooce(); break; case 2: printf("谢谢您!\n"); break; exit(0); case 3: help(); break; default: printf("请输入正确的数字:\n"); break; } /*设置选择*/ } void name_set(){//问候函数 char name[10]; printf("您好,您叫什么?输入您的姓名:"); gets(name); printf("%s,欢迎来到猜数字游戏\n\n",name); } void help(){//帮助函数 printf("\t1.低级范围在300以内,共5次机会\n"); printf("\t2.中级范围在300-1000以内,共10次机会\n"); printf("\t3.高级在1000以上,共20次机会\n"); start();//返回开始函数,并不运行问候函数 } void chooce(){//选择等级 printf("***************************\n"); printf("* 1.选择低级 *\n"); printf("* 2.选择中级 *\n"); printf("* 3.选择高级 *\n"); printf("***************************\n"); int dj; printf("请选择等级:"); scanf("%d",&dj);//设置等级 /*判定选择等级*/ if(dj==1){ low(); } else if(dj==2){ mediate(); } else if(dj==3){ high(); } else{ printf("请输入正确的数字,我们即将返回程序!\n"); chooce(); } /*判定选择等级*/ } void low(){//低级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb>300){ printf("太大了建议您玩中级!\n"); printf("请再次输入\n"); low(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<5){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<5){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void mediate(){//中级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<300){ printf("太小了建议您玩低级!\n"); printf("请再次输入\n"); mediate(); } else if(sb>1000){ printf("太大了建议您玩高级!\n"); printf("请再次输入\n"); mediate(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<10){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<10){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void high(){//高级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<1000){ printf("太小了,建议您退出游戏!\n"); high(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<20){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<20){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void res(){//询问是否重新再来 printf("\n还要在玩一遍吗?\n1.是的 2.退出。"); int s; scanf("%d",&s); /*进行选择*/ if(s==1){ chooce(); } else if(s==2){ printf("谢谢您!\n"); exit(0);//退出程序 } else{ printf("请输入正确的数字!\n"); res(); } /*进行选择*/ return res();//将res函数返回main函数 } int main(){ name_set();//问候 start();//执行选择 int yes=1;//设置重启值,调用res函数 if(yes==1){ res(); } }

这里函数的顺序可以打乱,因为我们在前面是声明过一遍函数的,并不需要函数的顺序,因为不声明的话,很难去找到想用的函数!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/weixin_46536945/article/details/111878540

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。