You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2019下C语言身高体重计算程序的错误排查请求

你的C语言身高体重计算程序问题分析与修复

看起来你在VS2019里写的这个小程序遇到了几个典型的C语言基础问题,我帮你逐个拆解并修复:

首先说说你代码里的具体问题:

  • printf多余参数导致的"Too many arguments"警告:你写的printf("Enter Body Weight: ", weightBody);这类语句里,第二个参数weightBody完全没必要——因为你的格式化字符串里没有对应的占位符(比如%d),printf根本不知道怎么处理这个参数,所以编译器会报错。而且此时weightBody还没被赋值,又触发了"使用未初始化内存"的警告,一举两错。
  • 未初始化变量的警告:你声明的heightBody、weightBody、heightAndWeightResult在声明时都没有初始化值,虽然后面用scanf_s赋值了,但在前面的printf里错误地引用了未赋值的变量,这也是警告来源之一。
  • getch()返回值被忽略:VS的编译器会严格检查函数返回值,getch()返回一个int类型的字符码,如果你不需要使用这个返回值,应该显式忽略它,不然会触发警告。
  • 逻辑问题(非编译警告,但功能错误):你把身高和体重直接相加得到heightAndWeightResult,这显然不是身高体重相关的合理计算(比如常用的BMI是体重(kg)除以身高(m)的平方),这个逻辑你可能需要根据实际需求调整。

修复后的代码:

#include <stdio.h>
#include <conio.h>

int main(void) {
    // 初始化变量,避免未初始化内存警告
    int heightBody = 0, weightBody = 0;
    // 如果是计算BMI,建议用浮点类型更准确,这里先按你的需求调整
    float calcResult = 0.0f;

    // 移除多余的参数,printf只需要提示文本即可
    printf("Enter Body Weight (kg): ");
    scanf_s("%d", &weightBody);

    printf("Enter Body Height (cm): ");
    scanf_s("%d", &heightBody);

    // 这里改成BMI计算(更合理的身高体重相关计算),如果你的需求就是相加,可以改回 heightBody + weightBody
    // 注意要把身高转换成米,所以除以100.0f(用浮点除法避免整数截断)
    calcResult = weightBody / ((heightBody / 100.0f) * (heightBody / 100.0f));

    // 输出结果时添加对应的格式化占位符,不然看不到计算结果
    printf("Body Calculation Result: %.2f\n", calcResult);

    // 显式忽略getch()的返回值,消除警告
    (void)getch();
    return 0;
}

关键修改说明:

  1. 给变量初始值,消除未初始化内存的警告;
  2. 移除printf里多余的变量参数,解决"Too many arguments"错误;
  3. 输出结果时添加对应的格式化占位符(%.2f表示保留两位小数的浮点数),这样才能看到计算后的结果(你原来的代码里printf没有占位符,根本不会输出计算变量的值);
  4. 用(void)getch();显式忽略返回值,消除警告;
  5. 把计算逻辑改成了更实用的BMI计算,如果你确实只需要身高体重相加,把计算部分改回int calcResult = heightBody + weightBody;并对应修改printf的占位符为%d即可。

内容的提问来源于stack exchange,提问作者Juaquin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:14:52