C语言课程设计实验 猜数字
(1)由电脑自动生成一个三个位且不重叠的十六进制数;
(2)用户可以猜8次,若累计都猜错,则游戏失败,如果猜对,即三个位上的数字都猜对,则设计合理的规则给予用户评分;
(3)用户输入一个数,电脑告诉用户有几个数字位置正确且数字正确、有几个数字位置不正确但数字正确,如要猜的数字是:1F2,用户输入:125,那电脑会提示:数字1位置正确数字正确、数字2位置不正确但数字正确;
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
char a[3];
//十进制转十六进制
char ff(int n) {
if(n>=0&&n<=9) {
return '0'+n;
} else {
return 'A'+(n-10);
}
}
//生成三个十六进制数
void f(int count) {
if(count==3)
return ;
int n=rand()%16;
a[count]=ff(n);
int flag=1;
for(int i=1; i<count; i++) {
if(a[i]==a[count]) {
flag=0;
break;
}
}
if(flag==0)
f(count);
else
f(count+1);
}
int main() {
srand((unsigned int)time(NULL));//每次生成不同 随机数
f(0);
char b[3];
for(int i=0; i<8; i++) {
printf("输入一个16进制的三位猜想数字:");
scanf("%s",b);
if(strcmp(b,a)==0) {
printf("恭喜你!回答正确!");
return 0;
}
int flag1=0;
for(int j=0; j<3; j++) {
if(b[j]==a[j]) {
printf("数字%c正确 ",a[j]);
flag1=1;
} else {
int flag=0;
for(int k=0; k<3; k++) {
if(b[j]==a[k])
flag=1;
}
if(flag==1) {
printf("数字%c位置不正确但数字正确 ",b[j]);
flag1=1;
}
}
}
if(flag1==0)
printf("你可真腻害呢 一个都不对");
printf("\n你还有%d次机会\n",7-i);
}
printf("你没有机会了!正确答案是:%s",a);
return 0;
}
}