(1) 设计 readfile 函数(说明如下),函数从filename文件中读入农户编号、姓名和收入,保存到Farmer数组中,词条数上限为MAX_FARMER_NUM,返回读入农户的个数。 函数声明:int readfile(char *filename, Farmer fm[]); 参数说明:filename为文件名,fm[]为农户结构体数组。 返回值:函数返回读入的农户数,文件打开失败时返回-1。 (2) 设计 sort 函数(说明如下),对结构体数组a按收入升序排序。 函数声明:void sort(Farmer a[], int n); 参数说明:a[]为农户结构体数组, n为数组a的农户数。 (3) 设计 count_word 函数 (说明如下),对数组a中的收入进行统计,统计收入低于某金额(万元)的农户数。 函数声明:int count_lowincome(Farmer a[], int n, Farmer b[],float income); 参数说明:a[]为农户结构体数组,n为数组a的农户数,b[]为统计结果的结构体数组,income为界定为低收入农户的金额。 返回值:函数返回保存在b[]中的农户数。 (4) 修改main()函数,通过调用函数方式,实现程序功能。
时间: 2024-02-21 13:58:09 浏览: 113
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FARMER_NUM 100
typedef struct {
int id;
char name[20];
float income;
} Farmer;
int readfile(char *filename, Farmer fm[]);
void sort(Farmer a[], int n);
int count_lowincome(Farmer a[], int n, Farmer b[], float income);
int main() {
char filename[20];
Farmer fm[MAX_FARMER_NUM];
Farmer b[MAX_FARMER_NUM];
int n, m;
float income;
printf("请输入文件名:");
scanf("%s", filename);
n = readfile(filename, fm);
if (n == -1) {
printf("文件打开失败!\n");
exit(-1);
}
printf("读入%d个农户信息\n", n);
sort(fm, n);
printf("按收入升序排序后的农户信息:\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%.2f万元\n", fm[i].id, fm[i].name, fm[i].income);
}
printf("请输入收入界定值(万元):");
scanf("%f", &income);
m = count_lowincome(fm, n, b, income);
printf("收入低于%.2f万元的农户有%d个:\n", income, m);
for (int i = 0; i < m; i++) {
printf("%d\t%s\t%.2f万元\n", b[i].id, b[i].name, b[i].income);
}
return 0;
}
int readfile(char *filename, Farmer fm[]) {
FILE *fp;
int i = 0;
fp = fopen(filename, "r");
if (fp == NULL) {
return -1;
}
while (!feof(fp) && i < MAX_FARMER_NUM) {
fscanf(fp, "%d%s%f", &fm[i].id, fm[i].name, &fm[i].income);
i++;
}
fclose(fp);
return i;
}
void sort(Farmer a[], int n) {
Farmer temp;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (a[i].income > a[j].income) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int count_lowincome(Farmer a[], int n, Farmer b[], float income) {
int m = 0;
for (int i = 0; i < n; i++) {
if (a[i].income < income) {
b[m++] = a[i];
}
}
return m;
}
```
阅读全文