2011-06-07 00:05
5
//编写几个函数:(1)输入10个职工的姓名和职工号;(2)按职工号由小到大顺序排序,姓名顺序也随之调整;
//(3)要求输入一个职工号,找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
#include<stdio.h>
#include<string.h>
#include<conio.h>
int compare(char *no1,char *no2);
void InputData(struct worker person[],int n);
void SortData(struct worker person[],int n);
void SearchData(struct worker person[],int n);
void print(struct worker person[],int n);
struct worker
{
char name[20];
char no[10];
}ps[20];
void main()
{
//输入数据
int n;
printf("你想输入多少个职工的数据\n");
scanf("%d",&n);
InputData(ps,n);
//排序
SortData(ps,n);
print(ps,n);
//查找
SearchData(ps,n);
}
//输入数据
void InputData(struct worker person[],int n)
{
int c;
printf("请你输入%d员工的资料\n",n);
int i;
getchar(c);
for(i=0;i<n;i++)
{
printf("职工号:");
gets(person.no);
printf("姓名:");
gets(person.name);
}
}
//排序
void SortData(struct worker person[],int n)
{
printf("\n排序结果:");
int i,j;
struct worker t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(compare(person.no,person[i+1].no)>0)
{
t=person;
person=person[i+1];
person[i+1]=t;
}
}
}
//查找
void SearchData(struct worker person[],int n)
{
int i;
char no[10];
printf("\n请你输入一个职工号\n");
gets(no);
for(i=0;i<n;i++)
if(!strcmp(no,person.no))
{
printf("\n可找到相符的数据");
printf("\n学号: %s",person.no);
printf("\n姓名: %s\n",person.name);
break;
}
if(i==n)
printf("\n找不到相符的数据");
}
//输出
void print(struct worker person[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\n学号: %s",person.no);
printf("\n姓名: %s",person.name);
}
}
//职工号比较
int compare(char *no1,char *no2)
{
int i=0,j=0;
long a=0,b=0;
while(no1!='\0')
{
a=a*10;
a=a+no1;
i++;
}
while(no2[j]!='\0')
{
b=b*10;
b=b+no1[j];
j++;
}
if(a>b)
return 1;
else return 0;
}