丢的FC 发表于 2024-4-12 14:13:19

为什么我这段代码,输入的时候只能读取到字符,后面的数字就无了

#include <stdio.h>
int main ()
{
        char nm;
        float h,w,lb,in;
        scanf("%s,%f,%f",&nm,&h,&w);
        lb=w*2.2046226;
        in=h*0.3937007;
        printf("请输入您的姓名:%s\n",nm);
        printf("请输入您的身高(cm):%f\n",h);
        printf("请输入您的体重(kg):%f\n",w);
        printf("======= 正在为您转换 =======");
        printf("%s的身高是%f(in),体重是%f(lb)\n",nm,in,lb) ;
        return 0;

}

FishC 发表于 2024-4-12 14:13:35

在你的代码中,你定义了一个字符变量 `nm` 来存储姓名,但是使用 `%s` 格式化字符串时,应该传入一个字符数组来存储字符串。

此外,你还需要删除 `&` 操作符,因为字符数组本身就是一个指针。

以下是修改后的代码:

#include <stdio.h>

int main()
{
    char nm; // 定义一个字符数组来存储姓名
    float h, w, lb, in;
    printf("请输入您的姓名:");
    scanf("%s", nm); // 使用字符数组接收姓名

    printf("请输入您的身高(cm):");
    scanf("%f", &h);

    printf("请输入您的体重(kg):");
    scanf("%f", &w);

    lb = w * 2.2046226;
    in = h * 0.3937007;

    printf("======= 正在为您转换 =======\n");
    printf("%s的身高是%f(in),体重是%f(lb)\n", nm, in, lb);

    return 0;
}

现在你可以输入字符和数字组成的姓名了,而且可以正确地读取身高和体重值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-4-12 15:47:12

#include <stdio.h>
int main(void)
{
      char nm;
      float h,w,lb,in;
      scanf("%s,%f,%f",&nm,&h,&w);                        // 数据输入在前 , nm 前面不用加取址符
      lb=w*2.2046226;
      in=h*0.3937007;
      printf("请输入您的姓名:%s\n",nm);                  // 输入提示在后
      printf("请输入您的身高(cm):%f\n",h);               // 输入提示在后
      printf("请输入您的体重(kg):%f\n",w);               // 输入提示在后
      printf("======= 正在为您转换 =======");
      printf("%s的身高是%f(in),体重是%f(lb)\n",nm,in,lb) ;
      return 0;
}
页: [1]
查看完整版本: 为什么我这段代码,输入的时候只能读取到字符,后面的数字就无了