用C语言实现猜数字

时间:2021-12-11 03:19:51

如何用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