修改了下2楼的代码,能运行了
程序代码:
/*使用c语言实现五位数字猜谜游戏,读入将用户输入的数字后与随机抽取的数字比对,并给出判定结果的表示。
【基本要求】
(1). 产生五位随机数。
(2). 电脑会将用户提交的数与它自动产生的数进行比较,结果显示成"*Y*N"。Y代表位置正确数字也正确,N代表数字正确但位置不正确,比如:"3Y1N"表示有3个数字的位置正确且数值也正确,除此以外,还猜对了1个数字,但位置不对。共有9次机会,在9次内,如果结果为“5Y0N”,游戏成功。如果9次里都没有猜对游戏失败。
(3). 设计排名榜,保存成绩最高的前10条记录。
*/
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
//
struct P
{
int times;
char Name[20];
};
//
int suiji()
{
int i=0;
int a;
srand(time(0));
while(i!=1)
{
a = rand()%100000;
if(a>=10000)
i++;
}
return a;
}
//
void flgw(int a,int Array[5])
{
Array[0]=a/10000;
Array[1]=(a-Array[0]*10000)/1000;
Array[2]=(a-Array[0]*10000-Array[1]*1000)/100;
Array[3]=(a-Array[0]*10000-Array[1]*1000-Array[2]*100)/10;
Array[4]=(a-Array[0]*10000-Array[1]*1000-Array[2]*100-Array[3]*10);
}
//
void main()
{
int c=1;
//int k=0;//player de number
int M=0;//mei cheng gong yi ge ren ,++
char membername[20];
P player[100];//applay 100 space for user
ZeroMemory(player,sizeof(P)*100);
while(c==1)
{
int n = 0;//次数
int a = suiji();//chan sheng sui ji shu
printf("(你可以删除该句)电脑产生的随机数为 %d \n",a);//you can delete this sentence if you are cleaver enough
printf(" 随机数已产生,可以开始游戏了(你共有9次机会)!\n\n");
printf("Input User Name :");//input user Name eg: yuls
scanf("%s",membername);
int Array1[5];
int Array2[5];
ZeroMemory(Array1,sizeof(int)*5);
ZeroMemory(Array2,sizeof(int)*5);
flgw(a,Array1);//分离 a 的各位存在 Array1 中
while(n<9)
{
printf("time %dth:\t",n+1);
n++;
int b;// cai
int Y = 0,N = 0;
int j ;
scanf("%d",&b);// input the number you have guessed
flgw(b,Array2);//fenli b
int Array11[5]={-1,-1,-1,-1,-1};
int Array21[5]={-1,-1,-1,-1,-1};// initialize ,this 2 arrays are used to save the number which
//exist but not at the right position
for(j=0;j<5;j++)
{
//printf("%c\n",string[j]);
if(Array1[j]==Array2[j])
{
Y++;
if(Y==5)
{
player[M].times=n;
strcpy(player[M].Name,membername);
M++;
n=9;
printf("\tcongratulations!\n\n");
}
}
else
{
Array11[j] = Array1[j];
Array21[j] = Array2[j];
}
}
//
for(int i=0;i<5;i++)
{
if(Array21[i]!=-1 )
{
for(int j=0;j<5;j++)
{
int flag = 0;
if(flag==0&&Array21[i]==Array11[j])
{
N++;
Array11[j]=-1;//
flag = 1; //
//printf("(这是检测语句)已发现 %d 个数存在但位置错误\n",N);//you can delete this sentence
}
continue;
}
}
}
printf(" %dY%dN \n",Y,N);
}
printf("Input 1/0 to continue/leave\t");
scanf("%d",&c);
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
}
//sort();
int temp;
char tem[20];
if(M<=1)
printf("%10s has guess %d times ,and ranked %d\n",player[0].Name,player[0].times,1);
else
{
for(int i=1;i<M;i++ )
for(int j=i;j>0;j--)
if(player[j].times<player[j-1].times)
{
temp = player[j].times;
player[j].times = player[j-1].times;
player[j-1].times = temp;
strcpy(tem, player[j].Name);
strcpy(player[j].Name, player[j-1].Name);
strcpy(player[j-1].Name, tem);
}
else break;
printf("\nthe rank is :\n");
for(i=0;i<M;i++)
printf("%10s has guessed %d times ,ranking %d\n",player[i].Name,player[i].times,i+1);
}
}
[
本帖最后由 waterstar 于 2010-7-4 14:37 编辑 ]