如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//生成3个位不重复的十六进制数,以字符形式返回每个位上的数
void getrand(char *aa,char *bb,char *cc)
{
int a,b,c;
//int s=0;
a = rand()%15+1; //生成1-15的随机数
while(1)
{
b = rand()%15; //生成0-15的随机数
if(b != a)
break; //避免b跟a重复
}
//生成c
while(1)
{
c = rand()%15; //生成0-15的随机数
if(c != a && c != b)
break;
}
//s = a*16*16+b*16+c;
//printf("三个位置上的数分别是:%d %d %d\n",a,b,c);
//printf("生成的三位数十六进制分别是:%X %X %X\n",a,b,c);
if(a<10)
*aa = '0'+ a;
else
*aa = 'A'+a-10;
if(b<10)
*bb = '0'+ b;
else
*bb = 'A'+b-10;
if(c<10)
*cc = '0'+ c;
else
*cc = 'A'+c-10;
}
int main()
{
char a,b,c;
char a1,b1,c1;
int times = 8;
srand((unsigned int)time(NULL));
getrand(&a,&b,&c);
while(times)
{
printf("请输入3个位上的数字(0-F):");
scanf("%c%c%c",&a1,&b1,&c1);
getchar();
if(a1==a && b1==b && c1==c)
{
printf("猜对了\n");
break;
}else
{
if(a1==a)
printf("数字 1 位置正确数字正确;");
else
{
if(a1 ==b || a1==c)
printf("数字1 位置不正确数字正确;");
}
if(b1==b)
printf("数字 2 位置正确数字正确;");
else
{
if(b1 ==a || b1==c)
printf("数字2位置不正确数字正确;");
}
if(c1==c)
printf("数字 3 位置正确数字正确。");
else
{
if(c1==a ||c1==b)
printf("数字 3 位置不正确数字正确。");
}
times--;
//printf("请重新输入:");
}
}
if(times==0)
printf("8次没猜对,游戏结束");
return 0;
}