填空题
以下程序从文本文件worker.txt中输入10个职工的信息(包括工号和工资),然后计算并输出平均工资,再从键盘上输入一个职工号,查找并输出该职工的信息,如果没有找到,则输出Not Found。假设文件操作总是成功的。
#include<stdio.h>
struct worker
{/*职工结构体*/
int num; /*工号*/
float pay /*工资*/
struct worker *next;
};
float averpay(struct worker per[],int n)
{
float sum=0;
int i;
for(i=0;i<n;i++)
sum+= 1;
return sum/n;
}
struct worker*find(struct worker per[],int n,int num)
{
inti;
for(i=0;i<n;i++)
if(per[i].num==num)
return 2;
return NULL;
}
main ()
{
struct worker per[10],*p;
float x,ave;
int num,i;
FILE *fp;
/*从文件中输入10个职工的信息*/
fp= 3;
for(i=0:i<10; i++)
{
fscanf(fp,"/%d/%f",&num,&x);
per[i].num=num;
per[i].pay=x;
}
fclose(fp);
/*计算并输出平均工资*/
ave=averpay(per,10);
printf("Average=/%f\n",ave);
/*查找某个职工*/
scanf("/%d",&num);
p= 4;
if(P!=NULL)
printf("/%d,/%f\n",p->num,p->pay);
else
printf("Not Found\n");
}
【正确答案】
1、per[i].pay 或 (per+i)->pay &per[i]或per+i fopen("worker.txt","r") find(per,10,num)
【答案解析】