16beat 发表于 2021-6-5 20:29:44

新手求助

本帖最后由 16beat 于 2021-6-5 20:32 编辑

为什么我输完姓名后,身高和体重无法输入,直接跳过了?
#include <stdio.h>

int main()
{
      char xm;
      float sg;
      float tz;
      printf("请输入您的姓名:");
      scanf("%c",&xm);
      printf("请输入您的身高(cm):");
      scanf("%f",&sg);
      printf("请输入您的体重(kg):");
      scanf("%f",&tz);
      printf("------------------------------\n");
      sg=sg*0.39;
      tz=tz*0.453;
      printf("%c的身高为%.2f(in),体重为%.2f(lb)");
      return 0;
}





运行结果:
请输入您的姓名:李
请输入您的身高(cm):请输入您的体重(kg):------------------------------
0的身高为0.00(in),体重为0.00(lb)


身高与体重输入直接被跳过了。。。。。

pjcpjc 发表于 2021-6-5 20:33:43

你应该定义一个char xm;
一个汉字代表两个字节
char xm
xm只有一个字节的空间

Twilight6 发表于 2021-6-5 20:39:08

中文不止占一个字节,你输入一个英文程序即可运行

另外你最后 printf 函数忘记加上格式化的参数了:

#include <stdio.h>

int main()
{
    char xm;
    float sg;
    float tz;
    printf("请输入您的姓名:");
    scanf("%c",&xm);
    printf("请输入您的身高(cm):");
    scanf("%f",&sg);
    printf("请输入您的体重(kg):");
    scanf("%f",&tz);
    printf("------------------------------\n");
    sg=sg*0.39;
    tz=tz*0.453;
    printf("%c的身高为%.2f(in),体重为%.2f(lb)", xm, sg, tz);
    return 0;
}

16beat 发表于 2021-6-5 20:48:23

pjcpjc 发表于 2021-6-5 20:33
你应该定义一个char xm;
一个汉字代表两个字节
char xm


多谢{:5_108:}

16beat 发表于 2021-6-5 20:49:11

Twilight6 发表于 2021-6-5 20:39
中文不止占一个字节,你输入一个英文程序即可运行

另外你最后 printf 函数忘记加上格式化的参数了:

懂了,多谢{:5_108:}

一生情缘 发表于 2021-6-5 21:29:23

代码帮你弄好了
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#pragma warning(disable : 4996)
int main()
{
        char xm[] = {""};
        int sg;
        int tz;
        printf("请输入您的姓名:");
        scanf("%s", &xm);
        printf("请输入您的身高(cm):");
        scanf("%d", &sg);
        printf("请输入您的体重(kg):");
        scanf("%d", &tz);
        printf("------------------------------\n");
        printf("%s的身高为%d,体重为d");
        system("pause");
        return 0;
}
页: [1]
查看完整版本: 新手求助