gpt4 book ai didi

无法按预期打印 BMI 表

转载 作者:行者123 更新时间:2023-11-30 21:09:44 27 4
gpt4 key购买 nike

我刚刚完成了一个计算体重指数表的程序。但是,我无法按预期打印表格。我尝试更改 for 循环位置,但它给了我相同的结果。如果你执行代码你就会明白我的意思。

实际输出:

the output execute:

预期输出:

the expected output execute


我的代码:

#include <stdio.h>

int main(void){
float kg;
float m;
float col;
float bmi;
float cm;

printf(" BMI");
for(kg=50; kg <= 105 ;kg=kg+5) {
printf(" %.0fkg",kg);
}
printf("\n");
for(cm=140; cm <= 220 ;cm=cm+5) {
printf("%.0fcm\n",cm);
}
for(col=1; col <= 12 ;col++) {
for(m=1.4; m <= 2.2 ;m=m+0.05) {
for(kg=50 ;kg <= 105 ;kg=kg+5) {
bmi = kg/(m*m);
printf(" %.1f",bmi);
}
printf("\n");
}
break;
}
return 0;
}

最佳答案

您想像这样打印 BMI 表:

   BMI          50kg      55kg      60kg      65kg       ...

140cm 25.51 28.06 30.61 33.16 ...
145cm 23.78 26.16 28.54 30.92 ...
150cm 22.22 24.44 26.67 28.89 ...
155cm 20.81 22.89 24.97 27.06 ...
160cm 19.53 21.48 23.44 25.39 ...
... ... ... ... ...

当您打印到终端时,必须从上到下、从左到右打印。当某些东西被打印出来后,就没有办法回去了。因此,您必须相应地构建循环:

  • 打印“BMI”
  • 打印所有批量标签
  • 打印所有数据行:

    • 打印批量标签
    • 打印所有体重和当前高度的 BMI

其他注意事项:

  • 您在 col 上的外部循环是无用的,因为您在第一次迭代后就中断了它。
  • 如果您希望表格在使用固定宽度字体打印时保持整洁,则应指定 printf 格式的字段宽度。例如 %10g 将在数字右侧填充空格,使其占用 10 个空格。 (但是,如果数字太大,则会溢出字段宽度。)

将所有这些付诸实践,我们得到:

#include <stdio.h>

int main(void)
{
int m; // mass in kg
int h; // height in cm

printf("%10s ", "BMI");
for (m = 50; m <= 105; m = m + 5) {
printf("%8dkg", m);
}
printf("\n\n");

for (h = 140; h <= 220; h += 5) {
printf("%8dcm ", h);

for (m = 50; m <= 105; m = m + 5) {
double bmi = 10000.0 * m / (h * h);

printf("%10.2f", bmi);
}
printf("\n");
}

return 0;
}

(我使用整数表示离散的质量和高度,因为它们更容易迭代。计算 BMI 时,必须将它们转换为 float 才能获得 BMI 的小数部分。表达式 10000.0 * m 使分子成为 float ,并确保除法是浮点除法。但是,您必须将缩放因子指定为带小数点的浮点文字。)

关于无法按预期打印 BMI 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33705906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com