●编写程序,计算person. txt中所有人员的平均年龄。要求,结果保留两位小数;键盘输入文件名(绝对路径)。
一个实现,供参考:
#include <stdio.h>
#include <string.h>
int main(void){
char filepath[100];
scanf("%s",filepath); //获取文件的目录
strcat(filepath,"person.txt"); //把获取的文件目录和文件名拼接起来,形成文件的绝对路径,以方便对文件的读取和访问
FILE * fp = fopen(filepath,"r");
if(fp==NULL){
printf("打开文件失败!\n");
return 0;
}
float avgAge=0;
int num=0;
char ids[20];
char sex;
int age;
float weight;
float height;
while(feof(fp)==0){ //如果还没有到达文件结尾。则循环从文件中读取数据
fscanf(fp,"%s\t%c\t%d\t%f\t%f\n",ids,&sex,&age,&weight,&height); //依次读取各参数到变量
if(strcmp("//",ids)!=0){ //如果每一行第一个字符串不是"\\",则表示改行有年龄数据,把年龄读入平均年龄变量avgAge中
avgAge+=age; //累加一个年龄到平均年龄变量avgAge中
num++; //人物数量加一
// printf("age=%d,avgAge=%.2f,num=%d\n",age,avgAge,num);
}else{ //如果改行第一个字符串是"//",则表示文件达到结尾,退出循环
break;
}
}
printf("%.2f",(float)avgAge/num); //打印平均年龄
return 0;
}