while 失灵了吗
写了:
/****一个厘米换算成英尺和英寸的函数*******/
#include<stdio.h>
#define CM_FEET 38.48 //一英尺等于38.48厘米
#define CM_INCH 2.54 //一英寸等于2.54厘米
int main(void)
{
double cm;
double feet;
int feet_lv;
double inch;
printf("Enter a height in centimeters:");
scanf_s("%f",&cm);
feet = cm / CM_FEET;
feet_lv = (int)cm % (int)CM_FEET;
inch = feet_lv / CM_INCH;
while(cm > 0)
{
printf("%.1f cm = %d feet,%.1f inches\n",cm,(int)feet,inch);
printf("Enter a height in centimeters(<=0 to quit):");
scanf_s("%f",&cm);
}
printf("bye\n");
return 0;
}
编译没有错误
然后运行
:
Enter a height in centimeters:182
bye
循环输出那段不见了!
肿么回事啊,vs2008的。各位帮帮忙吧
[解决办法]
scanf_s("%f",&cm);
=>scanf_s("%lf",&cm);
cm 是double,必须用lf,
不然会放错地址。
[解决办法]
scanf_s("%f",&cm);
主要是cm是double类型,用scanf函数读入double类型要用%lf。
楼主试试下面的:
/****一个厘米换算成英尺和英寸的函数*******/#include <stdio.h>#define CM_FEET 38.48 //一英尺等于38.48厘米#define CM_INCH 2.54 //一英寸等于2.54厘米int main(void){ double cm; double feet; int feet_lv; double inch; printf("Enter a height in centimeters:"); scanf_s("%lf",&cm); feet = cm / CM_FEET; feet_lv = (int)cm % (int)CM_FEET; inch = feet_lv / CM_INCH; while(cm > 0) { printf("%.1f cm = %d feet,%.1f inches\n",cm,(int)feet,inch); printf("Enter a height in centimeters(<=0 to quit):"); scanf_s("%lf", &cm); } printf("bye\n"); return 0;}
[解决办法]
应该是while的条件问题,
看了代码你输入最好利用 %lf, 因为是double型的
[解决办法]
scanf_s("%lf",&cm);
[解决办法]
scanf("lf",&cm);
cm是double 类型。
[解决办法]
scanf_s("%f",&cm);
=>scanf_s("%lf",&cm);
[解决办法]
你两个都改了吗,第二个的scanf_s 也要修改
[解决办法]
在C编译器里面应该这样该
#include<stdio.h>
#define CM_FEET 38.48
#define CM_INCH 2.54
/*int main(void)
{
double cm;
double feet;
int feet_lv;
double inch;
printf("Enter a height in centimeters:");
scanf("%lf",&cm);
feet=cm / CM_FEET;
feet_lv = (int)cm % (int)CM_FEET;
inch = feet_lv / CM_INCH;
while(cm > 0.001)
{
printf("%.1f cm = %d feet,%.1f inches\n",cm,(int)feet,inch);
printf("Enter a height in centimeters(<=0 to quit):");
scanf("%lf",&cm);
}
printf("bye\n");
return 0;
} */
int main()
{
double feet,cm;
feet=cm/CM_FEET;
printf("%d",feet);
}
这样就行了,在C里面#define 后面的一行都是宏定义的范围,你注释掉也不行
[解决办法]
·常量也有类型。
·请检查scanf的返回值。
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
[解决办法]
scanf_s("%f",&cm);
=>scanf_s("%lf",&cm);
[解决办法]
不是说了吗?#define 后面的注释去掉或者换行用/* */注释,TC和visualC++不一样的