C语言结构体

描述

统计某一班级每位同学的身体指数,并有序输出。 输入自己的体重(单位为千克)和自己的身高(单位为米),按以下公式计算自己的BMI(身体质量指数),它是衡量一个人身材的重要指标。 (BMI是体重除以身高的平方) 每位同学的信息包含姓名、体重、身高,并根据体重和身高计算BMI. 按BMI从小到大输出。用结构体表示学生信息。

输入

第一行输入学生人数(n<100),然后,每行输入一位学生的作息:姓名,体重,身高。

输出

按BMI从小到大输出。每行一位学生,每位学生输出,姓名,体重,身高和BMI。姓名的长度小于10,体重、身高和BMI,每个数据占6位,其中小数位数2位。各列数据要对齐。参考输出样例

样例

输入

复制

3
zhang 56.4 1.75 
wang 78.3  1.65
deng 72.3 1.73

输出

复制

zhang      56.40 1.75 18.42
deng       72.30 1.73 24.16
wang       78.30 1.65 28.76

输入

复制

10
zhang 56.4 1.75 
wang 78.3  1.65
deng 72.3 1.73
lin  62.5 1.65
zheng 56.2 1.71
wu     55.5  1.65
guo    45.5  1.58
li    68    1.72
chen  78   1.76

输出

复制

guo        45.50 1.58 18.23
zhang      56.40 1.75 18.42
zheng      56.20 1.71 19.22
wu         55.50 1.65 20.39
lin        62.50 1.65 22.96
li         68.00 1.72 22.99
deng       72.30 1.73 24.16
chen       78.00 1.76 25.18
gao        85.00 1.78 26.83
wang       78.30 1.65 28.76

题解

#include <stdio.h>
#include <string.h>
struct student
{
	double	BMI;
	double	height;
	double	weight;
	char name[21];
};



int main()
{
	int N;
	struct student stu[101];
	struct student temp;
	scanf("%d",&N);
	for(int i=0;i<N;i++)
	{
		scanf("%s%lf%lf",stu[i].name,&stu[i].weight,&stu[i].height);
		stu[i].BMI = stu[i].weight/(stu[i].height*stu[i].height);
	}
	
	for(int i=1;i<N-1;i++){
		for(int j=0;j<N-i;j++){
			if(stu[j].BMI>stu[j+1].BMI){
			temp = stu[j];
			stu[j]=stu[j+1];
			stu[j+1]=temp;
			}
		}

		
	}

	for(int i=0;i<N;i++)
	{
		printf("%-10s %.2lf %.2lf %.2lf\n",stu[i].name,stu[i].weight,stu[i].height,stu[i].BMI);
	}


	return 0;
 } 

要点:冒泡排序

备忘录:

C语言strcmp()函数:比较两个字符串

C语言 strcmp() 函数用于对两个字符串进行比较(区分大小写)。

头文件:string.h

语法/原型:

int strcmp(const char* stri1,const char* str2);

参数 str1 和 str2 是参与比较的两个字符串。

strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不到的字符,或者到达字符串末尾(遇见\0)。

返回值:

  • 如果返回值 < 0,则表示 str1 小于 str2。
  • 如果返回值 > 0,则表示 str2 小于 str1。
  • 如果返回值 = 0,则表示 str1 等于 str2。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云无心鸟知还

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值