猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手。

老程序猿就不要看了,黑呵呵

源代码1
include stdio.h
include stdlib.h
include time.h
void generate(int a[]); //4位数随机生成函数
void deal(int num,int b[]); //对用户所猜数处理
void judge(int a[]); //多余函数!!!!
void compare(int a[],int b[],int c[]); //比较函数,用于进行比较
int main()
{
int i,j; //定义变量
int m=0,n=0; //m代表相同的位数,n代表不同的位数
int a[4],b[4],c[4]; //a存储随机数,b存储用户猜测数,c存储标志
int num;
generate(a);
printf("已经产生系统随机数,且4位数各个位的数字不相同\n");
while(1)
{
printf("1.查看随机数输入1\n");
printf("1.进行猜测输入2\n");
printf("请输入你的选择:");
scanf("%d",&j);
switch(j)
{
case 1:
{
for(i=0;i {
printf("%d",a[i]);
}
printf("\n");
};
break;
case 2:
/*{
printf("请输入你猜测的数:");
scanf("%d",&num);
deal(num,b);
compare(a,b,c);
printf("相同的数位为第:");
for(i=0;i {
if(c[i]==1)
printf("%d ",(i+1));
}
printf("位");
printf("\n");
};*/
{
printf("请输入你猜测的数:");
scanf("%d",&num);
deal(num,b);
compare(a,b,c);
for(i=0;i {
if(c[i]==1)
m++;
else
n++;
}
printf("相同的数位有:%d位,不同的数位有:%d位\n",m,n);
m=0;
n=0;
};
break;
}
}
return 0;
}
/**********************
* 4位数随机生成函数
* @para int a[]
* @return ;
***********************/
void generate(int a[])
{
int i,j;
srand((unsigned)time(0));
for(i=0;i {
a[i]=rand()%10;
for(j=0;j {
if(a[j]==a[i])
{
j=0;
a[i]=rand()%10;
}
}
}
}
/**************************
* 用户所猜数处理
* @para int a
* @return int*
***************************/
void deal(int num,int b[])
{
int i;
int flag=1000;
for(i=0;i {
b[i] = num/flag;
num-=num/flag*flag;
flag/=10;
}
}
/**************************
* 比较函数,用于进行比较
* @para
* @return
***************************/
void compare(int a[],int b[],int c[])
{
int i;
for(i=0;i {
if(a[i]==b[i])
{
c[i]=1;
}
else
{
c[i]=0;
}
}
}
源代码2
include stdio.h
include cstdlib
/*定义一些必要的数组,用来存放数据*/
int b[10],c[10],d[10],e[10], f[10],w[10];
void fenjie(int n,int s[]){ //分解函数,用于分解四位数的个、十、百、千位
s[0]=n/1000;
s[1]=n/100-s[0]*10;
s[2]=n/10-s[0]*100-s[1]*10;
s[3]=n%10;
}
int Isequeal(int y,int w[]) //判断函数,用于判断用户输入的初始被猜数字是否有重复数字
{
w[0]=y/1000;
w[1]=y/100-w[0]*10;
w[2]=y/10-w[0]*100-w[1]*10;
w[3]=y%10;
if(w[0]!=w[1] && w[0]!=w[2] && w[0]!=w[3] && w[1]!=w[2] && w[1]!=w[3] && w[2]!=w[3] )
{
printf("您输入的被猜的数字符合要求\n");
return 0;
}
else
{
printf("您输入的被猜的数字中有重复数字,不符合要求,请重新输入:\n");
return -1;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main(void) //主函数
{ int a; //定义用户输入的被猜数据
int p;
printf ("请输入一个需要被猜的数值:\n");
A: scanf("%d",&a);
if(Isequeal(a,w) ==0) //如果用户输入的数字符合要求
{
fenjie(a,b);
int cont=0; //定义用户猜的次数
while(1){
cont++;
int x; //定义用户输入的猜测数据
printf("第%d次猜: ",cont);
scanf("%d",&x);
fenjie(x,c); //分解用户输入的猜测数据
int j=0, t=0,v=0,i=0;
for(i=0;i d[i]=1;
e[i]=1;
f[i]=-1;
}
for(i=0;i for(j=0;j if(e[i]==2)
continue;
if(b[i]==c[j]){
if(d[j]){
if(e[i]==1){
t++;
}else{
d[f[i]]=1;
}
d[j]=0;
e[i]=0;
f[i]=j;
}
if(i==j){
v++;
e[i]==2;
}
}
}
}
printf("系统提示:%d个数字位置相同,%d个数字位置不同\n",v,4-v);
if(v==4){
printf("恭喜你猜对了,你一共猜了%d 次\n",cont);
break;
}
}
printf("您一共猜了%d次",cont);
}
else
{
goto A; //goto语句用于判断是否重复
}
return 0;
}
非系统生成随机数源代码
#include stdio.h
#include stdlib.h
#include time.h
void deal(int num,int b[]);
void compare(int a[],int b[],int c[]);
int main()
{
int i,j,flag=1;
int m=0,n=0;
//m代表相同的位数,n代表不同的位数
int a[4],b[4],c[4];
//a存储随机数,b存储用户猜测数,c存储标志
int num,z;
printf("请输入想要猜的数字:");
scanf("%d",&z);
deal(z,a);
while(1)
{
for(i=0;i {
for(j=i+1;j {
if(a[i]==a[j])
{
flag=0;
}
}
}
if(flag==1)
{
break;
}
else
{
printf("输入的数字不符合规定,请重新输入:");
scanf("%d",&z);
deal(z,a);
flag=1;
}
}
while(1)
{ printf("请输入你猜测的数:");
scanf("%d",&num);
deal(num,b);
compare(a,b,c);
for(i=0;i {
if(c[i]==1)
m++;
else
n++;
}
printf("相同的数位有:%d位,不同的数位有:%d位\n",m,n);
m=0;
n=0;
}
return 0;
}
void deal(int num,int b[])
{
int i;
int flag=1000;
for(i=0;i {
b[i] = num/flag;
num-=num/flag*flag;
flag/=10;
}
}
void compare(int a[],int b[],int c[])
{
int i;
for(i=0;i {
if(a[i]==b[i])
{
c[i]=1;
}
else
{
c[i]=0;
}
}
}
玩笑图片
经典代码程序,也是感受面向过程编程的实例。

C语言猜数字游戏的更多相关文章

  1. c语言-猜数字游戏

    #include <stdio.h> #include <stdlib.h> int top(); int input(); void main() { ; int numbe ...

  2. [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏]

    [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏] 项目实战 实战1:猜数字游戏 我们今天来来开始简单的项目实战. 第一个简单项目是猜数字游戏. 简单来说,系统给了 ...

  3. C语言之猜数字游戏

    猜数字游戏 猜数字游戏是以前功能机上的一款益智游戏,计算机会根据输入的位数随机分配一个符合要求的数据,计算机输出guess后便可以输入数字,注意数字间需要用空格或回车符加以区分,计算机会根据输入信息给 ...

  4. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  5. 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。

    最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...

  6. 实验三 Java猜数字游戏开发

    课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         ...

  7. 通过游戏学python 3.6 第一季 第三章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码 可复制直接使用 娱乐 可封装 函数

       猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码   #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码 import random secrst = random.rand ...

  8. 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数

      猜数字游戏--核心代码--猜测次数   #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...

  9. 通过游戏学python 3.6 第一季 第一章 实例项目 猜数字游戏--核心代码 可复制直接使用 娱乐 可封装 函数

    本文实例讲述了python实现的简单猜数字游戏.分享给大家供大家参考.具体如下: 给定一个1-99之间的数,让用户猜数字,当用户猜错时会提示用户猜的数字是过大还是过小,知道用户猜对数字为止,猜对数字用 ...

随机推荐

  1. C# - 多线程 之 异步编程

    异步编程 同步编程,请求响应模型,同步化.顺序化.事务化. 异步编程,事件驱动模型,以 Fire and Forget 方式实现. 异步编程模式  -§- 异步编程模型 (APM) 模式: IAsyn ...

  2. PHP 观察者模式

    观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. [观察者模式中主要角色] 1.抽象主题(Subject)角色: 抽象主题提供了增加 ...

  3. TYPESDK手游聚合SDK客户端远程开关:渠道支付黑名单

    渠道支付要做开关干嘛用呢?为什么要做这种东西呢? 这个教训来分享一下,我们的游戏上线公测了,59个渠道首发,其中包括了应用宝,UC,360等的大渠道,也包含有一些工会渠道和小渠道,上线后一切正常,但是 ...

  4. Workflow笔记3——BookMark和持久化

    BookMark 我们在平时的工作流使用中,并不是直接这样一气呵成将整个工作流直接走完的,通常一个流程到了某一个节点,该流程节点的操作人,可能并不会马上去处理该流程,而只有当处理人处理了该流程,流程才 ...

  5. asp.net将图片转成二进制存入数据库

    一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...

  6. 取代SharedPreferences的多进程解决方案

    Android的SharedPreferences用来存储一些键值对, 但是却不支持跨进程使用. 跨进程来用的话, 当然是放在数据库更可靠啦, 本文主要是给作者的新库PreferencesProvid ...

  7. Android 手机卫士--导航界面1的布局编写

    本文地址:http://www.cnblogs.com/wuyudong/p/5943005.html,转载请注明出处. 本文实现导航界面1的布局的实现,效果如下图所示: 首先分析所使用的布局样式: ...

  8. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】

    过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能: 判断 ...

  9. Windows 10不能拨L2TP协议的VPN

    之前是Windows 10版本1607版本14393.102升级14393.187过后,突然出现不能拨公司防火墙的L2TPVPN了. 网上众说纷纭,原来遇到这个问题的人真不少,不过我是第一次遇到.结合 ...

  10. tomcat安装后,本地可以访问,远程不能访问

    问题描述:tomcat安装后,在本地可以使用本地IP地址.localhost可以访问,但是在远程却不能访问. 使用工具:无. 解决方法:关闭服务器端的"公用网络防火墙"即可.