c语言作业输出姓名班级年龄,C语言结构中根据性别分类按年龄升序输出姓名

这篇博客介绍了一个C语言编程作业,涉及到使用结构体存储个人信息,根据性别将学生分为男生和女生两类,并对每个性别的学生按年龄升序进行冒泡排序,最后按顺序输出姓名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给你个思路,将每个输入的个人信息判断一下,分别录入两个结构体数组,

再将两个结构体数组分别冒泡排序,分别输出

在你的代码上改了下,有好多可以优化的地方,

例如可以将冒泡排序封装成一个函数

给代码给你参考一下

#include

#include

struct student{

char name[20]; //姓名

char sex[10]; //性别

int age; //年龄

};

int main()

{

int i,j,n;

int countM=0,countF=0;

struct student s1;

printf("Input n:");

scanf("%d",&n);

struct student boy[n+1]; //分别定义两个结构体数组

struct student girl[n+1];

for(i=1;i<=n;i++){

scanf("%s%s%d",s1.name,s1.sex,&s1.age);

if(strcmp(s1.sex,"boy")==0){ //男生存在男生的结构体数组中,女生同理

strcpy(boy[countM].name,s1.name);

strcpy(boy[countM].sex,s1.sex);

boy[countM].age=s1.age;

countM++; //统计男生的个数(后面排序用到)

}

if (strcmp(s1.sex,"girl")==0) {

strcpy(girl[countF].name,s1.name);

strcpy(girl[countF].sex,s1.sex);

girl[countF].age=s1.age;

countF++;

}

}

for ( i=0;i

for (j=0;j

if (boy[j].age>boy[j+1].age){

struct student tem;

strcpy(tem.name,boy[j].name);

strcpy(tem.sex,boy[j].sex);

tem.age=boy[j].age;

strcpy(boy[j].name,boy[j+1].name);

strcpy(boy[j].sex,boy[j+1].sex);

boy[j].age=boy[j+1].age;

strcpy(boy[j+1].name,tem.name);

strcpy(boy[j+1].sex,tem.sex);

boy[j+1].age=tem.age;

}

}

}

for ( i=0;i

for ( j=0;j

if (girl[j].age>girl[j+1].age){

struct student tem;

strcpy(tem.name,girl[j].name);

strcpy(tem.sex,girl[j].sex);

tem.age=girl[j].age;

strcpy(girl[j].name,girl[j+1].name);

strcpy(girl[j].sex,girl[j+1].sex);

girl[j].age=girl[j+1].age;

strcpy(girl[j+1].name,tem.name);

strcpy(girl[j+1].sex,tem.sex);

girl[j+1].age=tem.age;

}

}

}

for (i=0;i

printf ("%s ",boy[i].name);

}

printf ("\n");

for (i=0;i

printf ("%s ",girl[i].name);

}

return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值