|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
s1e8
动动手0
要求 写一个华氏度到摄氏度的转换程序,用户输入华氏度,程序计算并输出对应的摄氏度。
正确答案应该输入45输出7.22
错误代码
#include <stdio.h>
int main()
{
double a;
double b;
printf("请输入华氏度:");
scanf("%f",&a);
b = (a - 32) * 5 / 9;
printf("转换为摄氏度是:%.2f\n",b);
return 0;
}
此时输入45输出-17.78,
问题1.若把double a换成float a,则输入输出正确,这是为何呢?小甲鱼不是说float和double的区别是小数点后面的位数吗
问题2.在更改为float a后,若把scanf("%f",&a);改为scanf("%.2f",&a);,则输入45同样输出-17.78,是因为scanf不能限定小数点后面的位数吗?
动动手1.
要求 我们都说要与时俱进,与时代接轨。这不,小甲鱼到“非死不可”投了份简历,体重和身高这一栏要求使用磅(lb)和英寸(in)为单位。大家帮忙写一个转换的小工具吧。
错误代码
#include <stdio.h>
int main()
{
char a[100];
double height;
double weight;
double height_in;
double weight_lb;
printf("请输入您的姓名:");
scanf("%s",&a);
printf("请输入您的身高(cm):");
scanf("%.2f",&height);
printf("请输入您的体重(kg):");
scanf("%.2f",&weight);
printf("======正在为您转换======\n");
height_in=0.3937*height;//厘米转换为英寸
weight_lb=2.205*weight;//公斤转换为磅
printf("%s的身高是%.2f(in),体重是%.2f(lb)",a,height_in,weight_lb);
return 0;
}
问题1.基本上同上题,若不进行更改,输入身高之后会直接跳过输入体重一栏,运行一阵子之后结束,结果输出为两个0
问题2.若仅将double改为float,表现同上
问题3.若仅将scanf函数内.2删除,不会跳过输入体重一栏,但是结果输出为0
问题解决办法:一定要同时将double改为float以及删除scanf函数内.2f才能正确得出结果
想知道我是有什么理解上的问题呢
- #include <stdio.h>
- int main()
- {
- char a[100];
- double height;
- double weight;
- double height_in;
- double weight_lb;
-
- printf("请输入您的姓名:");
- scanf("%s",a);// 不需要取地址符&
- printf("请输入您的身高(cm):");
- scanf("%lf",&height); // 同上double 用lf
- printf("请输入您的体重(kg):");
- scanf("%lf",&weight);// 同上double 用lf
- printf("======正在为您转换======\n");
-
- height_in=0.3937*height;//厘米转换为英寸
- weight_lb=2.205*weight;//公斤转换为磅
-
- printf("%s的身高是%.2f(in),体重是%.2f(lb)",a,height_in,weight_lb);
-
- return 0;
-
- }
复制代码
|
|