字符串问题
#include <stdio.h>#include <math.h>
int main()
{
float a, b, d, e;
char name;
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): 开始,这是为什么。之后在运行就是正常从华氏度开始
#include <stdio.h>
#include <math.h>
int main(void)//为什么要加void
{
float a, b, d, e;
char name;
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;
} #include <stdio.h>
int main(void)
{
float a , b , d , e ;
char name ;
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:\\>g++ -o x x.c
D:\\>x
请输入华氏度 : 45
转换为摄氏度是7.22
请输入您的姓名 : 发发发
请输入您的身高(cm) : 170
请输入您的体重(kg) : 69.1
========== 正在为您转换 ==========
发发发 的身高是 68.00(in) , 体重是 152.02 (lb)
D:\\> 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;
}
终端会跳过 输入一个字符
页:
[1]