c语言error2228,C语言问题

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;

}