为什么函数放在一起就不能用了??
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 4
typedef struct
{
char name [30];
int score;
}DATA;
void menu ();
void game ();
DATA maingame ();
int input ();
int balance_a (int a[],int b[]);
int balance_b (int a[],int b[]);
void zhuanhuan (int a[],int num);
int main()
{
menu();
return 0;
}
void menu ()
{
char a;
printf("\t \t主菜单\n\n " );
printf("\t0\t绝世黑客\n\n " );
printf("\t1\t英雄排名\n\n " );
printf("\t2\t清楚英雄记录\n\n " );
printf("\t3\t退出系统\n\n " );
printf("\t 请输入一个编号:[ ]\b\b" );
scanf("%c",&a);
switch (a)
{
case '0': game(); //进入游戏
break;
//case 1: display(); //查看排名
//break;
//case 2: clear(); //清楚所有排名
break;
//case 3: quit(); //退出系统
break;
default:
printf("输入有误,请从新输入\n");
}
return;
}
void game()
{
maingame();
}
DATA maingame () //游戏主程序
{
int question[N];
int answer[N];
int i,j,k=0,l,m,n;
int defen;
int grades=0;
int result_a=0,result_b=0;
int end=0;
char ch;
char name[30];
DATA player;
int a=0;
int b=0;
int num;
srand((unsigned )time(NULL ) );
for(i=0;i<N;i++)
{
question[i]=rand()%10;
}
printf("\n\n\n\n\n\n\n\n\n\n");
printf("你打开程序,感觉到一震眩晕,醒来后才发现你进入了计算机世界");
printf("现在你要破解一切密码,来揭开这一切谜底。。。。。。\n\n");
printf("现在你需要输入一组四位整数,如:1234,来进行猜测密码,我会对你进行提示,直到得出正确答案\n");
printf("请输入密码:");
fflush(stdin);
while(end!=1 )
{
num=input();
zhuanhuan(answer,num);
a=balance_a(answer,question);
if(a==4)
{
printf("\nyou do a great job!\n " );
k=1;
end=1;
}
else
{
printf("答案错误,是否放弃?放弃后显示正确答案。y/n " );
fflush(stdin);
ch=getchar();
if(ch=='y')
{
printf("正确答案是: " );
for(n=0; n<N; n++ )
{
printf("%d", question[n] );
}
printf("请输入您的姓名: " );
fflush(stdin);
scanf("%s ", name );
end=1;
}
else
{
b=balance_b(question,answer)-a;
printf("系统给您的提示为:%dA%dB\n",a,b);
printf("请重新输入密码:");
fflush(stdin);
}
}
k=k+1;
}
return player;
}
int balance_a (int a[],int b[]) //计算a[i]和b[j]当i等于j时候有几个数相等
{
int *p,*q;
int num=0;
int n=0;
p=a;
q=b;
while(n<N)
{
if(*p==*q)
{
num=num+1;
}
p=p+1;
q=q+1;
n=n+1;
}
return num;
}
int balance_b (int a[],int b[]) //计算a[i]和b[j]当i不等于j时候,有几个数相等
{
int *i,*j;
int num=0;
int temp=0;
for(i=a;i<a+N;i++)
{
for(j=b;j<b+N;b++)
{
if(*i=*j)
{
num=num+1;
break;
}
}
}
return num;
}
void zhuanhuan (int a[],int num) //将用户输入的4位整数转换成4个10以内的整数,记录在a【】中
{
int *p;
for(p=a+N-1;p>=a;p--)
{
*p=num%10;
num=num/10;
}
}
int input ()
{
int num;
scanf("%d",&num);
if(!(num>999||num<10000))
{
printf("输入有误,请输入四位整数");
}
return num;
}
这段代码编译过了,就是结果a和b计算的值不对啊!!!!
[解决办法]
break; //case 1: display(); //查看排名 //break; //case 2: clear(); //清楚所有排名 break; //case 3: quit(); //退出系统 break;