Sxx_27 发表于 2021-10-9 09:47:07

萌新求助!关于作业的问题

#include <stdio.h>

int main()
{
        char name;
    float H, W, I,L;

    printf("请输入你的姓名:");
    scanf("%s", name);

        printf("请输入你的身高(cm):");
    scanf("%.2f", &H);                     //将%.2f换为%f就不会出错
   
    printf("请输入你的体重(kg):");
    scanf("%.2f", &W);
   
    I = (H - 32) * 5 / 9;
    printf("%s的身高为:%.2f(in)\n",name, I);
   
        L = (W - 32) * 5 / 9;
    printf("%s的体重为:%.2f(lb)\n",name, L);

    return 0;
}

想请教一下
这里第十二行为什么不能用%.2f   
如果用%.2f他就出现输入完身高直接跳过体重的输入环节的情况

求助 谢谢{:10_299:}

Sxx_27 发表于 2021-10-9 09:55:24

找到了原因
说是scanf不能控制精度
所以不能用%.2f
但是只改第12行 第15行不改为什么就可以呢?{:10_266:}

村里小黑 发表于 2021-10-9 10:09:40

Sxx_27 发表于 2021-10-9 09:55
找到了原因
说是scanf不能控制精度
所以不能用%.2f


正常来说是应该报错的,可能是编译器的问题,scanf函数只能控制长度不能控制精度,想保留小数点后两位加上小数点前的三位可以用scanf("%6f", &H);

Sxx_27 发表于 2021-10-9 10:13:37

明白了 明白了 谢谢咯
页: [1]
查看完整版本: 萌新求助!关于作业的问题