#include
#include
#include
int main(int argc, char *argv[])
{
int i=0,j=0,n=0;
printf("please enter the number you want:\n%d",i);//手动输入数字不让对方看,这里出错了,先输出了个0
scanf("%d",&i);
while(1)
{
printf("please enter the number you guess:\n%d",j);//这里也出错了,输出了个0
scanf("%d",&j);
if(i==j)
{
printf("Congratulations,YOU GET IT\n");
break;
}
else if(i>j)
{
printf("The number is lower than the number,please try again\n");
}
else if(i<j)
{
printf("The number is higher than the number,please try again\n");
}
};
getch();
return 0;
}
都比,你把
printf("please enter the number you want:\n%d",i);
printf("please enter the number you guess:\n%d",j);
中的%d去掉,后面的,i去掉,下面一句一样的做法,附赠两个简单猜数游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int m,x;
/* 用0调用时间函数time(),将其返回值强制转换为unsigned型,作为参数来调用srand( )函数。
srand( )是为rand( )函数初始化随机发生器的启动状态,以产生伪随机数,所以常把srand( )称
为种子函数。用time()返回的时间值做种子的原因是time()返回的是实时时间值,
每时毎刻都在变化,这样产生的伪随机数就有以假乱真的效果。 */
srand((unsigned)time(0));
m=rand()%10000+1; //产生一个随机数。
printf("随机发生器随机一个四位数\n");
printf("%d\n",m); //输入一个四位数m。
printf("****************************\n");
int a[4],b[4]; //a[4]数组存放m的每一位。
a[0]=m%10;
a[1]=m/10%10;
a[2]=m/100%10;
a[3]=m/1000;
int i,k,t;
for(t=0;;t++)
{
int c[4]={1,1,1,1};
printf("您猜的四位数是:\n");
scanf("%d",&x); //输入要猜的四位数x。
b[0]=x%10; //b[4]数组存放x的每一位。
b[1]=x/10%10;
b[2]=x/100%10;
b[3]=x/1000;
int count,j;
/*************判断相同的数的个数**********/
for(i=0,count=0; i<=3; i++)
{
for(j=0; j<=3; j++)
{
if(b[j]==a[i]&&c[j])
{
count++;
c[j]=0;
break;
}
}
}
printf("%d ",count); //count指相同的数的个数。
/*************判断相同位置的数的个数**********/
for(i=0,k=0; i<=3; i++)
{ //k指相同位置上的一致的数的个数
if(a[i]==b[i])
k++;
}
printf("%d\n",k); //k为位置相同的数。
if(k==4)
{
printf("恭喜您!!!结果正确!!\n");
printf("****************************");
break;
} //k为4时,猜对了。
}
return 0;
}
#include<stdio.h>
#include <stdlib.h>
#include <time.h> //用到了time函数
int main(void)
{
//存储元数据的数组
int a[4];
//以时间为种调用rand()函数生成随机数并赋值
srand((unsigned) time(NULL));
for (int i=0;i<4;i++) {
a[i]=rand()%9;
// printf("%d",a[i]);//输出生成的随机数,测试用
}
printf("请开始猜吧\n");
//存储输入数据的数组
int b[4];
//猜测字数的计数器
static int count=0;
for(int j=0;j<4;j++){
scanf("%d",&b[j]);
}
count+=1;
//while循环控制变量,控制跳出循环
int control=1;
while(control){
int c=0;
//是否全部猜对检测
for(int i=0;i<4;i++){
if(a[i]==b[i]){
c+=1;
printf("第%d个数猜对了,其值为%d\n",i+1,a[i]);
}
if(c==4){
printf("恭喜你猜对了,你总共猜了%d次",count);
//直接跳出外层循环
control=0;
}
}
//检测数组b中的数是否为猜测数组中有的数
for(int k1=0;k1<4;k1++){
for(int i=0;i<4;i++){
if(i==k1){
continue;
}
if(b[k1]==a[i]){
printf("%d是其中的数\n",b[k1]);
}
}
}
//猜测不成功再猜
for(int j=0;j<4;j++){
scanf("%d",&b[j]);
}count+=1;
}
return 0;
}
你把程序中的
printf("please enter the number you want:\n%d",i);//手动输入数字不让对方看,这里出错了,先输出了个0
和
printf("please enter the number you guess:\n%d",j);//这里也出错了,输出了个0
这两句改为:
printf("please enter the number you want:");
和
printf("please enter the number you guess:\n")
这样就不会输出0了,如果不清楚为什么可以去看一下printf函数的使用。
还有一个既然是猜的话,那么前面输入的数字应该在输入之后就清除掉吧。。
在while(1)的前面加上一句system("cls");
如图:
运行结果如图: