使用C语言编写猜数字问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C语言编写猜数字问题相关的知识,希望对你有一定的参考价值。
一.问题描述:
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复.玩游戏者通过游戏的提示输入8次来匹配上面所输入的数字.A表示位置正确且数字正确,B表示数字正确而位置不正确.
二.功能要求:
1.本游戏显示这样的菜单:
⑴随机产生数据
⑵用户输入数据
⑶退出游戏
2.游戏成功与否都能返回主菜单
三.算法提示:
1.数据结构:数组
2.用简单的程序设计方法
四.测试数据:
测试数据: 3792
第一次输入: 1234
0A2B
第二次输入: 5678
0A1B
第三次输入: 0867
0A1B
第四次输入: 9786
1A1B
第五次输入: 1794
2A0B
<head>
<title>NumberGame</title>
<style type="text/css">
<!--
body padding:0; margin:0; font-size:12px; color:#000000; background:#ffffff; line-height:180%;
div,ul,li,img padding:0; margin:0; border:0;
h1,h2,h3,h4,h5,h6 font-size:12px; color:#555; text-decoration:none; padding:0; margin:0;
a font-size:12px; color:#000000; text-decoration:none;
a:hover font-size:12px; color:#000000; text-decoration:underline;
.clear clear:both;
.tab1 margin-left:200px; height:50px; width:450px; background-color:#00FFFF; text-align:center;
#txt margin-left:330px; margin-top:100px; height:50px; line-height:50px;width:150px; background-color:#00FFCC; font-size:24px; text-align:center;
inputmargin:0px;padding:0px;
-->
</style>
<script type="text/javascript">
var j=10;
var number =[0,0,0,0,0,0,0,0,0];
var numberv =[0,0,0,0,0,0,0,0,0];
function startgame()
j=10;
window.status="number game";
document.getElementById("txt0").value = "";
document.getElementById("txt1").value = "";
document.getElementById("txt2").value = "";
document.getElementById("txt3").value = "";
document.getElementById("txt4").value = "";
document.getElementById("txt5").value = "";
document.getElementById("txt6").value = "";
document.getElementById("txt7").value = "";
document.getElementById("txt8").value = "";
for(i=0;i<9;i++)
document.getElementById("txt"+i).style.backgroundColor = '#ffffff';
document.getElementById("number0").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number1").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number2").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number3").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number4").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number5").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number6").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number7").innerHTML=Math.floor(Math.random()*10);
document.getElementById("number8").innerHTML=Math.floor(Math.random()*10);
number[0]= document.getElementById("number0").innerHTML;
number[1]= document.getElementById("number1").innerHTML;
number[2]= document.getElementById("number2").innerHTML;
number[3]= document.getElementById("number3").innerHTML;
number[4]= document.getElementById("number4").innerHTML;
number[5]= document.getElementById("number5").innerHTML;
number[6]= document.getElementById("number6").innerHTML;
number[7]= document.getElementById("number7").innerHTML;
number[8]= document.getElementById("number8").innerHTML;
document.getElementById("start").disabled=true;
count();
function count()
if(j>0)
j--;
document.getElementById('txt').innerHTML ='倒计时: '+j;
b = setTimeout("count();",1000);
else
document.getElementById("number0").innerHTML = " ";
document.getElementById("number1").innerHTML = " ";
document.getElementById("number2").innerHTML = " ";
document.getElementById("number3").innerHTML = " ";
document.getElementById("number4").innerHTML = " ";
document.getElementById("number5").innerHTML = " ";
document.getElementById("number6").innerHTML = " ";
document.getElementById("number7").innerHTML = " ";
document.getElementById("number8").innerHTML = " ";
document.getElementById("txt0").disabled=false;
document.getElementById("txt1").disabled=false;
document.getElementById("txt2").disabled=false;
document.getElementById("txt3").disabled=false;
document.getElementById("txt4").disabled=false;
document.getElementById("txt5").disabled=false;
document.getElementById("txt6").disabled=false;
document.getElementById("txt7").disabled=false;
document.getElementById("txt8").disabled=false;
document.getElementById("submit").disabled=false;
function submit()
document.getElementById("number0").innerHTML = number[0];
document.getElementById("number1").innerHTML = number[1];
document.getElementById("number2").innerHTML = number[2];
document.getElementById("number3").innerHTML = number[3];
document.getElementById("number4").innerHTML = number[4];
document.getElementById("number5").innerHTML = number[5];
document.getElementById("number6").innerHTML = number[6];
document.getElementById("number7").innerHTML = number[7];
document.getElementById("number8").innerHTML = number[8];
numberv[0] = document.getElementById("txt0").value;
numberv[1] = document.getElementById("txt1").value;
numberv[2] = document.getElementById("txt2").value;
numberv[3] = document.getElementById("txt3").value;
numberv[4] = document.getElementById("txt4").value;
numberv[5] = document.getElementById("txt5").value;
numberv[6] = document.getElementById("txt6").value;
numberv[7] = document.getElementById("txt7").value;
numberv[8] = document.getElementById("txt8").value;
for(i=0;i<9;i++)
if(number[i]!=numberv[i])
document.getElementById("txt"+i).style.backgroundColor = '#FF0000';
document.getElementById("start").disabled=false;
document.getElementById("submit").disabled=true;
</script>
</head>
<body>
<div id="txt"></div>
<div id="abc">
<table width="200" border="1" class="tab1">
<tr>
<td><span id="number0"></td>
<td><span id="number1"></td>
<td><span id="number2"></td>
<td><span id="number3"></td>
<td><span id="number4"></td>
<td><span id="number5"></td>
<td><span id="number6"></td>
<td><span id="number7"></td>
<td><span id="number8"></td>
</tr>
</table>
</div>
<div id="div2">
<table width="200" border="1" class="tab1">
<tr>
<td><input type="text" id="txt0" size="2" disabled/></td>
<td><input type="text" id="txt1" size="2" disabled/></td>
<td><input type="text" id="txt2" size="2" disabled/></td>
<td><input type="text" id="txt3" size="2" disabled/></td>
<td><input type="text" id="txt4" size="2" disabled/></td>
<td><input type="text" id="txt5" size="2" disabled/></td>
<td><input type="text" id="txt6" size="2" disabled/></td>
<td><input type="text" id="txt7" size="2" disabled/></td>
<td><input type="text" id="txt8" size="2" disabled/></td>
</tr>
</table>
<center><input id="start" type=button value="开始游戏" onClick="startgame();"></center>
<center><input id="submit" type=button value="提交 " onClick="submit();"></center>
</div>
</body>
</html>
这是js的猜数字,我这里木C语言的猜数字。呵呵。希望能有点用。 参考技术A #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int aj[4],bj[4];
int operate1(int a)
aj[0]=a%10;
aj[1]=a/10%10;
aj[2]=a/100%10;
aj[3]=a/1000;
if(aj[0]!=aj[1]&&aj[0]!=aj[2]&&aj[0]!=aj[3]&&aj[1]!=aj[2]&&aj[1]!=aj[3]&&aj[2]!=aj[3]&&aj[0]!=0&&aj[1]!=0&&aj[2]!=0&&aj[3]!=0)
return 0;
else
return 1;
int operate2(int x)
if(x>=10000||x<=1000)
printf("Wrong data!\n");
return 1;
bj[0]=x%10;
bj[1]=x/10%10;
bj[2]=x/100%10;
bj[3]=x/1000;
return 0;
void main()
int a,flag=1,i,j,x,flag2=1;
int sum,num;
srand( (unsigned)time( NULL ) );
while(flag)
a=rand()%9000+1000;
flag=operate1(a);
while(num!=4)
flag2=1;
printf("Please input the number(1000--10000):\n");
scanf("%d",&x);
while(flag2)
flag2=operate2(x);
if(flag2==1)
printf("Please input the number again!(1000--10000):\n");
scanf("%d",&x);
sum=0;num=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(aj[i]==bj[j])
sum++;
for(i=0,j=0;i<4,j<4;i++,j++)
if(aj[i]==bj[j])
num++;
printf("%dA%dB\n",sum,num);
if(num==4)
printf("You guess it!\n");
我这里有一个,稍稍修改,就能满足你的要求了!本回答被提问者采纳
c语言猜数游戏编程
由计算机 " 想 " 一个四位数,请人猜这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字中有几个数字是猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,请人再猜,直到人猜出计算机所想的四位数是多少时为止。
拜托二楼,一看就不对嘛。
#include"stdio.h"
#define MAX_NUM 4
#define TRUE 1
#define FALSE 0
void main()
int i,j;
int guess_num[MAX_NUM];//随机生成四个数
int input[MAX_NUM];//用户输入四个数
int pos_same = 0;//位置相同个数
int num_same = 0;//数字相同个数
int correct = FALSE;//判断输入是否完全正确
//随机生成四个0到10之间的数
for(i = 0;i<MAX_NUM;i++)
guess_num[i] = (int)rand()%10;
for(i = 0;i<MAX_NUM;i++)
printf(" %d",guess_num[i]);
printf("\n");printf("请输入四个0到10之间的数\n");
while(!correct)
//输入四个数
for(i = 0;i<MAX_NUM;i++)
scanf("%d",&input[i]);
//获得位置相同的个数
for(i = 0;i<MAX_NUM;i++)
if(input[i] == guess_num[i])
pos_same++;
//获得与随机数相同的个数
for(i = 0;i<MAX_NUM;i++)
for(j = 0;j<MAX_NUM;j++)
if(input[i] == guess_num[j])
num_same++;
break;
if(i>0)//判断与之前的数字是否相同
for(j=i;j>0;j--)
if(input[i] ==input[j-1])
num_same--;
break;
printf("数字正确个数: %d \n位置正确个数: %d\n",num_same,pos_same);
num_same = (num_same ==MAX_NUM)?num_same:0;
pos_same = (pos_same ==MAX_NUM)?pos_same:0;
if(pos_same ==MAX_NUM && num_same ==MAX_NUM)
correct = TRUE;
printf("你猜对了!\n数字就是");
for(i = 0;i<MAX_NUM;i++)
printf(" %d",guess_num[i]);
printf("\n");
参考技术A 我以前写的一个,你看看行不行,不过这个只能猜7次。
while(A!=4&×!=7);这一句是:while((A!=4)&&(times!=7))不知道为什么一发出去就变样了...
#include <stdlib.h>
#include <stdio.h>
void voice()
sound(3000);
delay(30*3000);
nosound();
void main()
int n[4],ig[4],gu[4],times,A,B,i,j,k,str;
char g[15],x;
do
randomize();
n[0]=random(10);
for(i=1;i<4;i++)
j=i-1;
n[i]=random(10);
while(j>=0)
if(n[i]==n[j]) n[i]=random(10);
else j--;
times=0;
do
printf("Please input 4 numbers between 0 and 9:\n");
do
gets(g);
str=0;
i=0;
while(g[i++])
str++;
if(str!=4)
voice();
printf("ERROR:The length you input is wrong!Please input 4 numbers!\n");
while(str!=4);
for(i=0;i<4;i++)
if(!(g[i]>='0'&&g[i]<='9'))
voice();
printf("WARNING:The number you input maybe have some wrongs!\n");
break;
for(i=0;i<4;i++)
ig[i]=(int)g[i]-48;
times++;
A=0;B=0;k=1;
gu[0]=ig[0];
for(i=1;i<4;i++)
for(j=i-1;j>=0;j--)
if(ig[i]==ig[j]) break;
if(j==0) gu[k++]=ig[i];
for(i=0;i<k;i++)
for(j=0;j<4;j++)
if(gu[i]==n[j]) B++;
for(i=0;i<4;i++)
if(ig[i]==n[i])
A++;
B--;
printf("%dA%dB the %d time\n",A,B,times);
while(A!=4&×!=7);
if(A==4)
printf("How clever you are!The answer is:\n");
for(i=0;i<4;i++)
printf("%d",n[i]);
printf("\n");
else
printf("You are lost!The answer is:\n");
for(i=0;i<4;i++)
printf("%d",n[i]);
printf("\nTry again!\n");
printf("Go on the game?(Y\\N)\n");
scanf("%c",&x);
system("cls");
while(x=='Y'||x=='y');
参考技术B #include "stdio.h"
#include "stdlib.h"
#include "time.h"
void main()
int i,m,n;
srand(time(NULL));
i=1+(int)rand()%100;
for(m=5;m>0;m--)
printf("请输入你认为的值:");
scanf("%d",&n);
if(n>i) printf("对不起 你输入的数字太大了,你现在还有%d次机会.\n",m-1);
else if(n<i) printf("对不起 你输入的数字太小了,你现在还有%d次机会.\n",m-1);
else printf("恭喜你 答对了。");
if(m==0)
printf("正确数字是%d\n",i);
以上是关于使用C语言编写猜数字问题的主要内容,如果未能解决你的问题,请参考以下文章