2021-10-23-----统计0-29岁、30-59岁、60以上的男、女人数。

每日一题

从键盘输入100个人的姓名、性别和年龄,分别统计0-29岁、30-59岁、60以上的男、女人数。
.

#include<stdio.h>
#define N 5   //确定人数
struct people{
char name[10];
int gender;
int age;
};
void Input(struct people peo[]);
void Output(struct people peo[]);
int main(){
struct people peo[N];
Input(peo);      //输入人数的信息
Output(peo);    //输出不同年龄段的男女人数
return 0;
}
//输入人数的信息
void Input(struct people peo[]){
    int i;
    struct people *p;
    p=peo;
    for(i=0;i<N;i++,p++){
            printf("请输入第%d个人的信息:\n",i+1);
        scanf("%s%d%d",&(p->name),&(p->gender),&(p->age));
    }

}
//输出不同年龄段的男女人数
void Output(struct people peo[]){
int i; //for循环的变量
int agee; //结构体中人的年龄赋值给agee(便于记忆)
int s;  //存储年龄除以10的结果,放入switch里面
int C_0_29=0,C_30_59=0,C_60_up=0; //不同年龄段的人数赋值为0
int C_0_29_1=0,C_0_29_0=0,C_30_59_1=0,C_30_59_0=0,C_60_up_1=0,C_60_up_0=0;     //记录年龄段的男女人数
struct people *p;
    p=peo;
for(i=0;i<N;i++,p++){   
    agee=p->age;        //来个for循环遍历所有人的年龄
    s=agee/10;         
    switch(s){
    case 0:
    case 1:
    case 2:C_0_29++;   //如 26/10=2,相应年龄段人数加1,再判断是男是女?
    if(p->gender==0) //默认了男是1,女是0
        C_0_29_0++;  
    else C_0_29_1++;
    break;
    case 3:
    case 4:
    case 5:C_30_59++;
        if(p->gender==0)
        C_30_59_0++;
    else C_30_59_1++;
    break;
    default:
        C_60_up++;
        if(p->gender==0)
        C_60_up_0++;
    else C_60_up_1++;
    break;

    }
}
//出循环,输出结果
printf("0-30岁的人数:%d,男有:%d个,女有:%d个\n",C_0_29,C_0_29_1,C_0_29_0);
printf("30-59岁的人数:%d,男有:%d个,女有:%d个\n",C_30_59,C_30_59_1,C_30_59_0);
printf("60岁以上的人数:%d,男有:%d个,女有:%d个\n",C_60_up,C_60_up_1,C_60_up_0);
}

结果图:
在这里插入图片描述
下面是另外一个答案,比我写的看着简单些:
它是在输入人数信息之后,用for循环和&&判断在哪个范围之内,然后用strcmp函数判断男女。

#include <string.h>
#define NUM 2
struct person {
	char name[16];
	char gender[8];
	int age;
}p[NUM];
int main() {
	int a0=0, b0=0, c0=0, a1=0, b1=0, c1=0;
	printf("please input:\n");
	printf("name gender age\n");
	for (int i = 0; i < NUM; i++) {
		scanf("%s %s %d", &(p[i].name), &(p[i].gender), &(p[i].age));
	}
	for (int i = 0; i < NUM; i++) {
		if (p[i].age>=0 && p[i].age<=29) {
			if (!strcmp(p[i].gender,"女")) {
				a0++;
			}
			else
				a1++;
		}
		if (p[i].age >= 30 && p[i].age <= 59) {
			if (!strcmp(p[i].gender, "女")) {
				b0++;
			}
			else
				b1++;
		}
		if (p[i].age >= 60) {
			if (!strcmp(p[i].gender, "女")) {
				c0++;
			}
			else
				c1++;
		}
	}
	printf("0-29 female %d male %d\n", a0, a1);
	printf("30-50 female %d male %d\n", b0, b1);
	printf(">60 female %d male %d\n", c0, c1);
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值