每日一题
从键盘输入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);
}