首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为何函数放在一起就不能用了?

2012-09-18 
为什么函数放在一起就不能用了??#include stdio.h#include stdlib.h#include time.h#define N 4type

为什么函数放在一起就不能用了??
#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计算的值不对啊!!!!


[解决办法]

C/C++ code
       break;        //case 1: display(); //查看排名        //break;        //case 2: clear(); //清楚所有排名        break;        //case 3: quit(); //退出系统        break; 

热点排行