c语言高手帮个忙啊!!我要怎么往程序里面加排列功能啊!急需!!!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
//结构体定义
typedef struct {
int number; //编号
char name[40]; //姓名
char sex[3];//性别
float salary; //工资
char department[40]; //部门
}Employee ;
Employee emp[MAX];

void init_list(); //初始化
int find_free();//查找未定义的成员
void enter();//输入
void del();//删除
void showlist(); //显示
void save();//保存到文件
void append();//添加数据到文件
void load();//从文件中读取
void salary();
int menu_select();//菜单
int main()
{ char choice;
init_list();
while (1)
{ choice = menu_select();
switch(choice)
{ case 1: enter(); break;
case 2: del(); break;
case 3: showlist(); break;
case 4: save(); break;
case 5: append(); break;
case 6: load(); break;
case 7: exit(0); break;
default: exit(0);
}
}
return 0;
}
//初始化
void init_list()
{ int i;
for (i=0; i<MAX; ++i)
{ emp[i].number = 0;
strcpy(emp[i].name,"");
emp[i].salary = 0.0;
strcpy(emp[i].department,"");
}
}
int menu_select(void)
{
int n;
printf("\t\t 主菜单\n");
printf("\t\t===========\n");
printf("\t\t1,添加成员\n");
printf("\t\t2,删除成员\n");
printf("\t\t3,显示成员\n");
printf("\t\t4,保存文件\n");
printf("\t\t5,添加存储\n");
printf("\t\t6,读取文件\n");
printf("\t\t7,退出程序\n");
printf("\t\t===========\n");
do {
printf("\t\tEnter your choice:");
scanf("%d",&n);//printf(" %d\n",n);
}while (n<0 || n>8);
return n;
}

//未定义的成员的位置
int find_free()
{ int t;
for (t=0; (strlen(emp[t].name)) && t<MAX; ++t);
if (t == MAX) return -1;
return t;
}

//输入
void enter()
{
int i,slot,n;
printf("\n\t\t要输入的成员数量:"); scanf("%d", &n);
for(i=0;i<n;i++)
{ slot = find_free();
if (slot==-1) { printf("\n表已满!"); exit(1); }
printf("\n\t\t输入编号:"); scanf("%d",&emp[slot].number);
printf("\t\t输入姓名:"); scanf("%s",emp[slot].name);
printf("\t\t输入工资:"); scanf("%f",&emp[slot].salary);
printf("\t\t输入部门:"); scanf("%s",emp[slot].department);

}
}

//删除一个成员
void del()
{ int i,num;
char name[40];
printf("\n输入要删除的人员编号:"); scanf("%d",&num);
for(i=0;i<MAX;i++)
if (num==emp[i].number)
{ emp[i].number=0;
strcpy(emp[i].name,"");
emp[i].salary = 0.0;
strcpy(emp[i].department,"");
}
}

第1个回答  2011-06-20
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
//结构体定义
typedef struct {
int number; //编号
char name[40]; //姓名
char sex[3];//性别
float salary; //工资
char department[40]; //部门
}Employee ;
Employee emp[MAX];

void init_list(); //初始化
int find_free();//查找未定义的成员
void enter();//输入
void del();//删除
void showlist(); //显示
//void save();//保存到文件
//void append();//添加数据到文件
//void load();//从文件中读取
void sortemp();//排序
void salary();
int menu_select();//菜单

int main()
{
char choice;
init_list();
while (1)
{ choice = menu_select();
switch(choice)
{ case 1: enter(); break;
case 2: del(); break;
case 3: showlist(); break;
//case 4: save(); break;
//case 5: append(); break;
//case 6: load(); break;
case 7: sortemp(); break;//排序
case 8: exit(0); break;
default: exit(0);
}
}
return 0;
}

//初始化
void init_list()
{ int i;
for (i=0; i<MAX; ++i)
{ emp[i].number = 0;
strcpy(emp[i].name,"");
emp[i].salary = 0.0;
strcpy(emp[i].department,"");
}
}
int menu_select(void)
{
int n;
printf("\t\t 主菜单\n");
printf("\t\t===========\n");
printf("\t\t1,添加成员\n");
printf("\t\t2,删除成员\n");
printf("\t\t3,显示成员\n");
printf("\t\t4,保存文件\n");
printf("\t\t5,添加存储\n");
printf("\t\t6,读取文件\n");
printf("\t\t7,排序\n");
printf("\t\t8,退出程序\n");
printf("\t\t===========\n");
do {
printf("\t\tEnter your choice:");
scanf("%d",&n);//printf(" %d\n",n);
}while (n<0 || n>8);
return n;
}

//未定义的成员的位置
int find_free()
{ int t;
for (t=0; (strlen(emp[t].name)) && t<MAX; ++t);
if (t == MAX) return -1;
return t;
}

//输入
void enter()
{
int i,slot,n;
printf("\n\t\t要输入的成员数量:"); scanf("%d", &n);
for(i=0;i<n;i++)
{ slot = find_free();
if (slot==-1) { printf("\n表已满!"); exit(1); }
printf("\n\t\t输入编号:"); scanf("%d",&emp[slot].number);
printf("\t\t输入姓名:"); scanf("%s",emp[slot].name);
printf("\t\t输入工资:"); scanf("%f",&emp[slot].salary);
printf("\t\t输入部门:"); scanf("%s",emp[slot].department);

}
}

//删除一个成员
void del()
{ int i,num;
char name[40];
printf("\n输入要删除的人员编号:"); scanf("%d",&num);
for(i=0;i<MAX;i++)
if (num==emp[i].number)
{ emp[i].number=0;
strcpy(emp[i].name,"");
emp[i].salary = 0.0;
strcpy(emp[i].department,"");
}
}
void showlist() //显示
{
int i;
printf("编号\t姓名\t工资\t\t部门\n");
for(i=0;emp[i].number != 0;i++)
printf("%d\t%s\t%f\t%s\n",emp[i].number,emp[i].name,emp[i].salary,emp[i].department);
}
void sortemp()//排序
{
Employee temp;
int i,j,n;
for(i=0,n=0;emp[i].number != 0;i++)
n++;

//冒泡排序编号
for(i=0;i<n-1;i++)
for(j=i;j<n-1;j++)
{
if(emp[j].number > emp[j+1].number)
{
memcpy(&temp,&emp[j],sizeof(Employee));
memcpy(&emp[j],&emp[j+1],sizeof(Employee));
memcpy(&emp[j+1],&temp,sizeof(Employee));
}
}
}
第2个回答  2011-06-20
用排序函数吧,qsort(),具体实现可以查下msdn
第3个回答  2011-07-03
else
{P0=tab[yi];
P2=0;
del(2);
P0=tab[er];
P2=1;
del(2);
P0=tab[10];
P2=2;
del(2);
P0=tab[san];
P2=3;
del(2);
P0=tab[si];
P2=4;
del(2);
P0=tab[10];
P2=5;
del(2);
P0=tab[wu];
P2=6;
del(2);本回答被提问者采纳
第4个回答  2011-06-21
求高手,,,,
相似回答