用C语言实现猜数字

 更新时间:2021年06月24日 09:31:31   作者:JokerCrying  
这篇文章主要为大家详细介绍了用C语言实现猜数字,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

首先调用头文件

/***调用头文件***/ 
#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);//主函数 
/**定义函数**/

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

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()函数主要是询问一下游玩者的名字,再输出一下名字,毕竟是个游戏供来娱乐嘛

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

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

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

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

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超过那个数值,跳出循环。
在下面可以看一下基本模板(里面数值用拼音代替)

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);//错误结果 
 }
}

然后可以看一下代码

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的基础上缩写的,毕竟游戏不能只有一次,在里面做一个逻辑运算,并返回其他函数

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等函数

int main(){
 name_set();//问候 
 
 start();//执行选择

 int yes=1;//设置重启值,调用res函数 
 if(yes==1){
   res();
  }
}

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

/***调用头文件***/ 
#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();
  }
}

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

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

相关文章

  • 详解C语言中的字符串拼接(堆与栈)

    详解C语言中的字符串拼接(堆与栈)

    这篇文章主要介绍了C语言中字符串拼接(堆与栈)的相关资料,文中通过一段示例代码详细介绍了关于C语言中的字符串拼接问题,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • 从汇编看c++中的多态详解

    从汇编看c++中的多态详解

    下面小编就为大家带来一篇从汇编看c++中的多态详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • C++适用入门同学的模板讲解

    C++适用入门同学的模板讲解

    人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动
    2022-07-07
  • C语言中结构体变量私有化详解

    C语言中结构体变量私有化详解

    结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合,下面这篇文章主要给大家介绍了关于C语言中结构体变量私有化的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • C++中的不规则二维数组实现代码

    C++中的不规则二维数组实现代码

    本文介绍了一个在C++中保存不定长二维数组的数据结构,在这个结构中,我们使用了一个含有指针和数组长度的结构体,用这样的一个结构体构造一个结构体数组,用于存储每一个不定长的数组,感兴趣的朋友一起看看吧
    2024-03-03
  • C语言实现三子棋游戏的示例代码

    C语言实现三子棋游戏的示例代码

    今天我们将会用C语言实现三子棋。所谓三子棋,就是三行三列的棋盘,玩家可以和电脑下棋,率先连成三个的获胜。话不多说,我们开始吧
    2022-10-10
  • C语言实现学生管理系统

    C语言实现学生管理系统

    这篇文章主要为大家详细介绍了C语言实现学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 浅谈C++中各种不同意义的new和delete的使用

    浅谈C++中各种不同意义的new和delete的使用

    本文主要介绍了浅谈C++中各种不同意义的new和delete的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • C语言实现发牌洗牌

    C语言实现发牌洗牌

    这篇文章主要为大家详细介绍了C语言实现发牌洗牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++实现简单五子棋游戏

    C++实现简单五子棋游戏

    这篇文章主要为大家详细介绍了C++实现简单五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论