鱼C论坛

 找回密码
 立即注册
查看: 4392|回复: 3

[已解决]字符串问题

[复制链接]
发表于 2022-4-15 14:49:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <math.h>

int main()
{

    float a, b, d, e;
    char name[8];

    printf("请输入华氏度:");
    scanf("%f", &a);
    while (getchar() != '\n')
        ;
    b = (a - 32) * 5 / 9;
    printf("转换为摄氏度是%.2f\n", b);

    printf("请输入您的姓名:");
    scanf("%s", name);
    while (getchar() != '\n')
        ;
    printf("请输入您的身高(cm):");
    scanf("%f", &d);
    while (getchar() != '\n')
        ;
    printf("请输入您的体重(kg):");
    scanf("%f", &e);
    while (getchar() != '\n')
        ;
    printf("========== 正在为您转换 ==========\n");
    d = d / 2.5;
    e = 2.2 * e;
    printf("%s的身高是%.2f(in),体重是%.2f(lb)",name, d, e);

    return 0;
}

输出:
请输入华氏度:45
转换为摄氏度是7.22
请输入您的姓名:发发发
请输入您的身高(cm):170
请输入您的体重(kg):69。1
========== 正在为您转换 ==========
zsh: abort     

问1:以上是什么问题,怎么解决
问2:修改代码第一次摁运行是从  请输入您的身高(cm):   开始,这是为什么。之后在运行就是正常从华氏度开始
最佳答案
2022-4-15 16:20:18
#include <stdio.h>

int main(void)
{

    float a , b , d , e                                                ;
    char name[8]                                                       ;

    printf("请输入华氏度 : ")                                          ;
    scanf("%f" , & a)                                                  ;
    b = (a - 32) * 5 / 9                                               ;
    printf("转换为摄氏度是%.2f\n", b)                                  ;
    printf("请输入您的姓名 : ")                                        ;
    scanf("%s" , name)                                                 ;
    printf("请输入您的身高(cm) : ")                                    ;
    scanf("%f" , & d)                                                  ;
    printf("请输入您的体重(kg) : ")                                    ;
    scanf("%f" , & e)                                                  ;
    printf("========== 正在为您转换 ==========\n")                     ;
    d = d / 2.5;
    e = 2.2 * e;
    printf("%s 的身高是 %.2f(in) , 体重是 %.2f (lb)\n" , name , d , e) ;
}
        编译、运行实况:
D:\[00.Exercise]\[C]>g++ -o x x.c

D:\[00.Exercise]\[C]>x
请输入华氏度 : 45
转换为摄氏度是7.22
请输入您的姓名 : 发发发
请输入您的身高(cm) : 170
请输入您的体重(kg) : 69.1
========== 正在为您转换 ==========
发发发 的身高是 68.00(in) , 体重是 152.02 (lb)

D:\[00.Exercise]\[C]>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-15 14:57:32 | 显示全部楼层
#include <stdio.h>
#include <math.h>

int main(void)//为什么要加void
{

    float a, b, d, e;
    char name[8];

    printf("请输入华氏度:");
    scanf("%f", &a);
    while (getchar() != '\n')
        ;
    b = (a - 32) * 5 / 9;
    printf("转换为摄氏度是%.2f\n", b);

    printf("请输入您的姓名:");
    scanf("%s", name);//为什么这里没有&
    while (getchar() != '\n')
        ;
    printf("请输入您的身高(cm):");
    scanf("%f", &d);
    while (getchar() != '\n')
        ;
    printf("请输入您的体重(kg):");
    scanf("%f", &e);
    while (getchar() != '\n')
        ;
    printf("========== 正在为您转换 ==========\n");
    d = d / 2.5;
    e = 2.2 * e;
    printf("%s的身高是%.2f(in),体重是%.2f(lb)",name, d, e);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 16:20:18 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

int main(void)
{

    float a , b , d , e                                                ;
    char name[8]                                                       ;

    printf("请输入华氏度 : ")                                          ;
    scanf("%f" , & a)                                                  ;
    b = (a - 32) * 5 / 9                                               ;
    printf("转换为摄氏度是%.2f\n", b)                                  ;
    printf("请输入您的姓名 : ")                                        ;
    scanf("%s" , name)                                                 ;
    printf("请输入您的身高(cm) : ")                                    ;
    scanf("%f" , & d)                                                  ;
    printf("请输入您的体重(kg) : ")                                    ;
    scanf("%f" , & e)                                                  ;
    printf("========== 正在为您转换 ==========\n")                     ;
    d = d / 2.5;
    e = 2.2 * e;
    printf("%s 的身高是 %.2f(in) , 体重是 %.2f (lb)\n" , name , d , e) ;
}
        编译、运行实况:
D:\[00.Exercise]\[C]>g++ -o x x.c

D:\[00.Exercise]\[C]>x
请输入华氏度 : 45
转换为摄氏度是7.22
请输入您的姓名 : 发发发
请输入您的身高(cm) : 170
请输入您的体重(kg) : 69.1
========== 正在为您转换 ==========
发发发 的身高是 68.00(in) , 体重是 152.02 (lb)

D:\[00.Exercise]\[C]>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 18:53:11 | 显示全部楼层
jackz007 发表于 2022-4-15 16:20
编译、运行实况:

问1:scanf函数后什么时候需要加入while (getchar() != '\n')
        ;//清空键盘缓冲区域
因为我上次这个代码
#include <stdio.h>
#include <math.h>

int main()
{

  int i,c;
  long long int result;
  char k;


  printf("请输入一个整数:");
  scanf("%d", &i);
  result = pow(i, 10);
  printf("%lld\n", result);
  
  printf("请输入一个字符:");
  scanf("%c", &k);
  
  printf("请输入一个十六进制:");
  scanf("%x",&c);
  result = pow(c,2);
  printf("%llx\n",result);

  return 0;
}
终端会跳过 输入一个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 02:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表