非常着急!c语言被调函数如何用主函数的内容

#include <stdio.h>
#include <malloc.h>
int Query(int s,int Num,struct cc ** pArr)
{
int min = 0;
int max = Num-1;
int mid = (min+max)/2;
while(s!=pArr[mid].ID)
{
if(s>pArr[mid].ID)
{
min = mid;
mid = (min+max)/2;
}
else if(s<pArr[mid].ID)
{
max = mid;
mid = (min+max)/2;
}
if(mid==min)
break;
}
if(s==pArr[mid].ID)
return mid;
else if(s==pArr[max].ID)
return max;
else
printf("没有找到这个职工编号");
}
struct Worker
{
char Name[20];//职工名称
int ID;//职工号
};
//主函数,实现职工的姓名和编号的排序
int main (void)
{
int i, j;
struct Worker w;//结构体变量w用来替换
int Num;//Num为职工个数
printf("请输入职工的个数!\n");
printf("职工个数:");
scanf("%d", &Num);//将键盘上输入的职工个数赋给Num
struct Worker * pArr;//定义一个结构体类型的指针变量pArr
//定义一个动态的一维数组,实现员工的名称和编号的录入
pArr = (struct Worker *)malloc(Num * sizeof(struct Worker));
for(i=0; i<Num; ++i)
{
printf("请输入第%d个员工的信息!\n", i+1);
printf("职工姓名:");
scanf("%s", pArr[i].Name);
printf("职工号:");
scanf("%d", &pArr[i].ID);
printf("\n\n");
}
//用冒泡排序法实现排序
for(i=0; i<Num-1; i++)
{
for(j=0; j<Num-1-i; j++)
{
//比ID后,互换,大职工号向后移
if(pArr[j].ID > pArr[j+1].ID)
{
w = pArr[j];
pArr[j] = pArr[j+1];
pArr[j+1] = w;
}
}
}
//输出职工姓名和编号
printf("排序后的职工信息为:\n");
for(i=0; i<Num; i++)
{
// printf("第%d个职工的信息为:\n", i+1);
printf("姓名:%s ", pArr[i].Name);
printf("编号:%d\n", pArr[i].ID);
}
printf("请输入您要查找的职工号,按Enter键确认:");
int s;
int n;
scanf("%d\n",&s);
n = Query(s,Num,pArr);
printf("您要查找的职工姓名为:%s\n",pArr[s].Name);
return 0;
}

#include <stdio.h>
#include <malloc.h>

struct Worker  //将这个结构体定义到程序头,各函数都可以用!

char Name[20];//职工名称
int ID;//职工号
};

int Query(int s,int Num,struct Worker pArr[]) //参数类型是struct Worker
{
int min = 0;
int max = Num-1;
int mid = (min+max)/2;
//优化后的查找程序
do {
if(s>pArr[mid].ID)
{
min = mid+1;
mid = (min+max)/2;
}
else if(s<pArr[mid].ID)
{
max = mid-1;
mid = (min+max)/2;
}
else
return mid;
} while( min <= max ) ;
return -1;
}

//主函数,实现职工的姓名和编号的排序
int main (void)
{
int i, j;
struct  Worker w;//结构体变量w用来替换
int Num;//Num为职工个数
printf("请输入职工的个数!\n");
printf("职工个数:");
scanf("%d", &Num);//将键盘上输入的职工个数赋给Num
struct Worker * pArr;//定义一个结构体类型的指针变量pArr
//定义一个动态的一维数组,实现员工的名称和编号的录入
pArr = (struct Worker *)malloc(Num * sizeof(struct Worker));
for(i=0; i<Num; ++i)
{
printf("请输入第%d个员工的信息!\n", i+1);
printf("职工姓名:");
scanf("%s", pArr[i].Name);
printf("职工号:");
scanf("%d", &pArr[i].ID);
printf("\n\n"); 
}
//用冒泡排序法实现排序
for(i=0; i<Num-1; i++)
{
for(j=0; j<Num-1-i; j++)
{
//比ID后,互换,大职工号向后移
if(pArr[j].ID > pArr[j+1].ID)
{
w = pArr[j];
pArr[j] = pArr[j+1];
pArr[j+1] = w;
}
}
}
//输出职工姓名和编号
printf("排序后的职工信息为:\n");
for(i=0; i<Num; i++)
{
// printf("第%d个职工的信息为:\n", i+1);
printf("姓名:%s   ", pArr[i].Name);
printf("编号:%d\n", pArr[i].ID);
}
printf("请输入您要查找的职工号,按Enter键确认:");
int s;
int n;
scanf("%d",&s);//这个\n真坑人!!!
n = Query(s,Num,pArr);
//输出查询结果
if ( n<0 )
printf("没有找到这个职工编号");
else
printf("您要查找的职工姓名为:%s\n",pArr[n].Name);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-09
你的这句错了:int Query(int s,int Num,struct cc ** pArr)
用指针就行,int Query(int s,int Num,struct Worker* pArr)追问

不对,我已经试过了

'struct Worker *' : unknown size提示这个

追答

你怎么试的?这样一定行
函数定义:int Query(int s,int Num,struct Worker* pArr) ;
调用:struct Worker * pArr ;
.......
n = Query(s,Num,pArr);

追问

咱用QQ说行吗         115  12      584   14

追答

好吧,这个是编译问题,你把这个结构的定义放到这个函数之前应该就可以了

追问

恩, 你是对的。问题已经解决了,抱歉,虽然没有采纳你 但真心的感谢你的回答

第2个回答  2015-05-09
作为参数传给被掉函数追问

问题是我主函数如何把pArr传递给Query这个函数?用什么类型来接收啊 ?
我主函数里面是这么定义的:struct Worker * pArr;//定义一个结构体类型的指针变量pArr