c语言通讯录 有分组,C语言如何实现分组统计

/*通过一次循环分别按性别和年龄统计人数

(c)hele 2013/03/04*/

#include

#define N 8//N是统计人群的最小年龄

#define M 20//年龄跨度设为20岁

enum year{y1=N,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20};

struct hum{

year old;

int num1[M];

char male[2];

int num2[2];

}hum;//构建的结构体,统计年龄跨度20,2种性别的人群

void display()

{int i;

for(i=0;i

{

printf("old:%d\t:%d\n",N+i,hum.num1[i]);

}

for(i=0;i<2;i++)

printf("male:%c\t:%d\n",hum.male[i],hum.num2[i]);

}

void initial()

{hum.male[0]='0';

hum.male[1]='1';

}

int main()

{initial();

char c[8];

FILE *fp;

if((fp=fopen("in.txt","r"))==NULL)

{

printf("Can't open in.txt");

return 1;

}

while(!feof(fp))

{fscanf(fp,"%s",c);

//读年龄

int old;

fscanf(fp,"%d",&old);

hum.old=(year)old;//强制类型转换,使hum.old是old的值

hum.num1[old-y1]++;//count number of every year old

//读性别

int male;

fscanf(fp,"%d",&male);

hum.num2[male]++;//count number of every 性别

}

display();

return 0;

}

说明:

1.仅供参考

2.注意“in.txt"文件格式,其文件结尾不要有空白行,正文只有姓名、年龄、性别三种,用空格隔开,如图

1374b2431f92c6760b5b9f36450bd1b2.png

3.尚有缺陷,没有使用_wchar,对特定中文名字会统计错误,所以尽量用英文名字。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值