C语言结构体应用:用户信息存储与平均年龄计算

需积分: 16 8 下载量 45 浏览量 更新于2024-09-14 收藏 10KB TXT 举报
"C语言 结构体应用:创建一个包含姓名、年龄、电话号码和地址的`struct person`结构体,然后编写两个程序,第一个程序让用户输入10个人的信息并将其存储到二进制文件out.dat中,第二个程序读取out.dat文件,计算并输出这些人的平均年龄。" 在C语言中,结构体是一种复合数据类型,可以用来封装多个不同类型的变量。在这个例子中,我们定义了一个名为`struct person`的结构体,它包含了四个成员:姓名(`char name[10]`)、年龄(`int age`)、电话号码(`char phonenum[12]`)和地址(`char address[40]`)。结构体定义如下: ```c struct person { char name[10]; int age; char phonenum[12]; char address[40]; }; ``` 为了实现题目要求的功能,我们需要两个函数:`write()`和`read_ave()`。 `write()`函数的目的是接收用户输入的10个人的信息,并将这些信息写入到二进制文件out.dat中。首先,我们创建一个大小为10的`struct person`数组`peo`来存储用户输入的数据。接着,使用`fopen()`函数打开名为"out.dat"的文件,指定文件模式为"wb",表示以二进制写入方式打开。如果文件无法打开,程序会输出错误信息并退出。然后,通过循环获取用户输入的每个个人信息,使用`scanf()`函数读取姓名、年龄、电话号码和地址,将这些信息存入`peo`数组。最后,使用`fwrite()`函数将整个`peo`数组写入文件,然后关闭文件。 `read_ave()`函数则负责读取out.dat文件中的数据,计算并输出所有人的平均年龄。这个函数会打开已存在的二进制文件,读取每个`struct person`对象,提取年龄并累加,最终除以人数得到平均年龄。由于这部分代码不完整,我们需要补充如下内容来完成`read_ave()`函数: ```c int total_age = 0; int count = 0; rewind(fp); // 重新定位文件指针到文件开头 while (count < SIZE) { fread(&peo[count], LEN, 1, fp); total_age += peo[count].age; count++; } float average_age = (float)total_age / count; printf("平均年龄: %.2f\n", average_age); fclose(fp); ``` 这样,我们就完成了对C语言结构体的运用,实现了用户信息的存储和读取,并能计算平均年龄。注意,实际编程时需要根据实际情况添加错误处理和输入验证,以确保程序的健壮性。