●编写程序,计算person. txt中所有人员的平均年龄。要求,结果保留两位小数;键盘输入文件名(绝对路径)。
1条回答 默认 最新
- a5156520 2022-05-26 10:04关注
一个实现,供参考:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
- ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?
- ¥15 Google speech command 数据集获取
- ¥15 vue3+element-plus页面崩溃
- ¥15 像这种代码要怎么跑起来?
- ¥15 安卓C读取/dev/fastpipe屏幕像素数据
- ¥15 pyqt5tools安装失败
- ¥15 mmdetection
- ¥15 nginx代理报502的错误
- ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧