首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

while 失灵了吗解决方案

2012-04-03 
while 失灵了吗写了:/****一个厘米换算成英尺和英寸的函数*******/#includestdio.h#define CM_FEET 38.4

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。
楼主试试下面的:

C/C++ code
/****一个厘米换算成英尺和英寸的函数*******/#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++不一样的

热点排行