当前位置: 代码迷 >> C语言 >> 谁能帮我看看这个程序有什么问题
  详细解决方案

谁能帮我看看这个程序有什么问题

热度:71   发布时间:2007-12-06 15:50:41.0
谁能帮我看看这个程序有什么问题
程序功能:1:输入10个职工名字和工号
         2:按工号由小到大排列;
                  3:输入工号找出名字.
#include "stdio.h"
#include "string.h"
char name[10][10];int num[10];
main()
{void Name_scanf(char);
void Num_scanf(int);
void Paixu(char,int);
void Chazhao(int);
int  n;
printf("请输入名字:\n");
Name_scanf(name[10][10]);    
printf("请输入工号:\n");
Num_scanf(num[10]);
printf("按工号从小到大排列为:\n");
Paixu(name[10][10],num[10]);
printf("请输入工号:");
scanf("%d",&n);
Chazhao(n);  
}
void Name_scanf(char NAME[10][10])
{int i;
for(i=0;i<10;i++)
    gets(NAME[i]);
}
void Num_scanf(int NUM[10])
{int i;
for(i=0;i<10;i++)
    scanf("%d",&NUM[i]);
}
void Paixu(char Name[10][10],int Num[10])
{int i,max;
char word[10];
for(i=0;i<9;i++)
    if(Num[i]>Num[i+1])
      {max=Num[i];Num[i]=Num[i+1];Num[i+1]=max;
       strcpy(word,Num[i]);
       strcpy(Num[i],Num[i+1]);
       strcpy(Num[i+1],word);}
for(i=0;i<10;i++)
   printf("%10s%10d",Name[i],Num[i]);
}
void Chazhao(int N)
{int i;
    for(i=0;i<10;i++)
       if(N==num[i])
         {printf("该员工的姓名是:");
          puts(name[i]);}
       else
          printf("该工号不存在!");
}
----------------解决方案--------------------------------------------------------
排序那块
好好看看,数上排序的例子很多,随便一个就可以
----------------解决方案--------------------------------------------------------
不止这一点,当我运行时甚至连函数中 定义整形变量都有毛病
----------------解决方案--------------------------------------------------------
我想知道排序中这一块用法到底对不对;
        strcpy(word,Num[i]);
       strcpy(Num[i],Num[i+1]);
       strcpy(Num[i+1],word);}
----------------解决方案--------------------------------------------------------
Num应该改为Name吧,应该是把名字交换,而不是把序号交换...
----------------解决方案--------------------------------------------------------
改了一下能实现功能了,下面是代码:
#include "stdio.h"
#include "string.h"
char name[10][10];int num[10];

void Name_Num_scanf()
{int i;
for(i=0;i<10;i++)
    {scanf("%s",name[i]);
     scanf("%d",&num[i]);
    }
}

void Paixu()//排序
{int i,j,max;
char word[10];
  for(j=0;j<9;j++)
  for(i=0;i<9-j;i++)
    if(num[i]>num[i+1])
      {max=num[i];num[i]=num[i+1];num[i+1]=max;
       strcpy(word,name[i]);
       strcpy(name[i],name[i+1]);
       strcpy(name[i+1],word);
      }
for(i=0;i<10;i++)
   printf("%10s%10d\n",name[i],num[i]);
}
void Chazhao(int N)
{int i;
for(i=0;i<10;i++)
    {if(N==num[i])
        {printf("该员工的姓名是:");
         puts(name[i]);break;}
      if(i==10)
       printf("该工号不存在!");
    }
}

void main()
{
  int  n;
  printf("请输入名字和工号:\n");
  Name_Num_scanf();        
  printf("按工号从小到大排列为:\n");
  Paixu();
  printf("请输入工号:");
  scanf("%d",&n);
  Chazhao(n);  
}
----------------解决方案--------------------------------------------------------
  相关解决方案