小蚂蚁学习C语言(25)——C语言结构体——使用结构体手动录入信息的小案例...

    需求:动态创建一个数组,数组元素使用结构体,实现,可以手动输入信息,将手动输入的信息进行一个排序,并把信息输出。

# include <stdio.h>
# include <malloc.h>

//定义一个存放学生信息的结构体
struct student
{
	char name[100];
	int age;
	float score;
};

//输入函数,用于输入学生信息
void InputInfo(struct student * member,int len)
{

	int i;


	for(i = 0; i < len; ++i)
	{
		printf("请输入第%d个学生的信息\n",i+1);
//line 20
		printf("name=");
		scanf("%s",member[i].name);

		printf("age=");
		scanf("%d", &member[i].age);

		printf("score=");
		scanf("%f", &member[i].score);
		
		
		printf("\n\n");

	}

}

//输出函数,讲学生的信息输出
void OutputInfo(struct student * member,int len)
{

	int i;
	
	for(i=0; i < len; ++i)
	{
		printf("%s \n",member[i].name);
		/*
			这里不能写member[i]->name,member[i]就代表了这个结构体的名字,
			所以应该使用 member[i].name
		*/
		printf("%d \n",member[i].age);
		printf("%f \n",member[i].score);
	}
	
}

//对学生的成绩,进行降序排序
void maopao(struct student * member,int len)
{
	int i,j;
	struct student t;

	for(i = 0; i < len-1; ++i)
	{
		for(j = 0; j < len-1-i; ++j)
		{
			if(member[j].score < member[j+1].score)
			{
				t = member[j];
				member[j] = member[j+1];
				member[j+1] =t;
			}
		}
	}
}

//主函数,开辟动态空间
int main(void)
{
	int len;

	printf("请写入需要输入学生的数量:\n");
	
	scanf("%d",&len);

	struct student * member = (struct student *)malloc(sizeof(struct student) * len);
	// 这时候member就是定义了一个数组

	InputInfo(member,len);

	maopao(member, len);

	OutputInfo(member,len);

	return 0;
}
/*
	VC++6.0的输出结果是:
	===================================
	请写入需要输入学生的数量:
	3
	请输入第1个学生的信息
	name=小艾
	age=23
	score=99.9


	请输入第2个学生的信息
	name=小王
	age=23
	score=45.6


	请输入第3个学生的信息
	name=小黑
	age=54
	score=22.5


	小艾
	23
	99.900002
	小王
	23
	45.599998
	小黑
	54
	22.500000
	===================================
*/


学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog



转载于:https://my.oschina.net/woshixiaomayi/blog/548641

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值