#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#define N 5
void getnum(char *);
void input(char *);
void output(char *,int,int);
void main()
{
char a[N]={0};
getnum(a);
input(a);
}
void getnum(char *a)
{
int i;
srand((unsigned)time(NULL));
for(i=0;i<N-1;i++)a[i]=rand()%10+48;
a[i]='\0';
}
void input(char *a)
{
char b[N]={0};
int i,j,m,n;
do
{
i=0,n=0,m=0;
int d[10]={'\0'};
printf("input the numeber x:");
gets(b);
if(b[0]=='E'){printf("the correctnumber is %s",a);break;}
for(j=0;j<N-1;j++)
{
if(a[j]==b[j])m++;
switch(b[j])
{
case '0': d[0]++;break;
case '1': d[1]++;break;
case '2': d[2]++;break;
case '3': d[3]++;break;
case '4': d[4]++;break;
case '5': d[5]++;break;
case '6': d[6]++;break;
case '7': d[7]++;break;
case '8': d[8]++;break;
case '9': d[9]++;break;
}
}
for(j=0;j<10;j++)if(d[j]!=0)for(i=0;i<N-1;i++)if((j+48)==a[i])n++;
output(b,n,m);
}while(n<4||m<4);
getch();
}
void output(char *b,int n,int m)
{
printf("\n");
printf("-------------------------------------------------------\n");
printf("inputnumeber numbercorrect positioncorrect\n");
printf(" %s %d %d\n",b,n,m);
}
重新修改了一下
想退出的时候输入EXIT总之E大写,通过这个判断的
同时输出正确答案
本人比较菜,所以有些不完美
[此贴子已经被作者于2007-5-11 22:55:19编辑过]
#include<conio.h>
#include<time.h>
#define N 5
void getnum(char *);
void input(char *);
void output(char *,int,int);
void main()
{
char a[N]={0};
getnum(a);
input(a);
}
void getnum(char *a)
{
int i;
srand((unsigned)time(NULL));
for(i=0;i<N-1;i++)a[i]=rand()%10+48;
a[i]='\0';
}
void input(char *a)
{
int d[10]={0};
char b[N]={0};
int i,j,m,n;
do
{
i=0,n=0,m=0;
for(i=0;i<10;i++) d[i]=0;
printf("input the numeber x:");
gets(b);
if(b[0]=='E'){printf("the correctnumber is %s",a);break;}
for(j=0;j<N-1;j++)
{
if(a[j]==b[j])m++;
switch(b[j])
{
case '0': d[0]++;break;
case '1': d[1]++;break;
case '2': d[2]++;break;
case '3': d[3]++;break;
case '4': d[4]++;break;
case '5': d[5]++;break;
case '6': d[6]++;break;
case '7': d[7]++;break;
case '8': d[8]++;break;
case '9': d[9]++;break;
}
}
for(j=0;j<10;j++)if(d[j]!=0)for(i=0;i<N-1;i++)if((j+48)==a[i])n++;
output(b,n,m);
}while(n<4||m<4);
getch();
}
void output(char *b,int n,int m)
{
printf("\n");
printf("-------------------------------------------------------\n");
printf("inputnumeber numbercorrect positioncorrect\n");
printf(" %s %d %d\n",b,n,m);
}
不好意思
这回我用TC编译的没有问题了
原来和TC还是有区别的
想要正确答案和退出时候输入EXIT注意E一定要大写
这是我的4位猜数,还好吧.....
#include <stdio.h>
main()
{
int a[4],b[4],c[4];
int i,j,m=0,n=0,k;
for(i=0;i<4;i++)
c[i]=rand()%10;
for(k=0;k<8;k++)
{
printf("please intput you number:\n");
for(i=0;i<4;i++)
{
a[i]=c[i];
scanf("%1d\0",&b[i]);
}
printf("\nhere is your number:\n");
for(i=0;i<4;i++)
printf("%d",b[i]);
printf("\nright number*****right location\n");
m=0;n=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(b[i]==a[j])
{
m++;
break;
}
for(i=0;i<4;i++)
if(a[i]==b[i])
n++;
printf(" %d %d \n",m,n);
if(k<8&&n==4)
{
printf("success!\n");
break;
}
else
printf("bad boy!\n");
}
}