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

,代码不能正常运行

2012-03-31 
求助,代码不能正常运行是C primer plus里面的编程练习题。题目要求:编写一个程序,该程序要求输入华氏温度。

求助,代码不能正常运行
是C primer plus里面的编程练习题。
   
  题目要求:编写一个程序,该程序要求输入华氏温度。程序以double类型读入温度值,并将它作为一个参数传递给用户提供的函数Temperatures( ).该函数将计算相应的摄氏温度和绝对温度,并以小数点右边有两位数字的精度显示这三种温度。它应该用每个值所代表的温度刻度来标识这三个值。下面是将华氏温度转为摄氏温度的方程:

  Celsius = 1.8 * Fahrenheit + 32.0
   
  通常用在科学上的绝对温度的刻度是0代表绝对零,是可能温度的下界。下面是将摄氏温度转换为绝对温度的方程:
   
  Kelvin = Celsius + 273.16
   
  Temperatures ( )函数使用const来创建代表该转换里的3个常量的符号。main ( )函数将使用一个循环来允许用户重复地输入温度,当用户输入q或其他非数字值时,循环结束。

  我写的代码如下:

  #include <stdio.h>
  void Temperatures (float n);
  int main (void)

  double Fa;
  printf ("Please enter a temperature in Fahrenheit:");
  scanf ("%f",&Fa);
  Temperatures ((float) Fa);

  while (scanf ("%f",&Fa)==1)
  {  
  printf ("Please enter another temperature in Fahrenheit(\"q\" to quit):");
  scanf ("%f",&Fa);
  }

  printf ("END\n");
  return 0;
 }

  void Temperatures (float n)
 {
  const float Ce = 1.8 * n +32.0; 
  const float Ke = Ce + 273.16;
  printf ("The temperature %.2f you entered is %.2f in Celsius or %.2f"
"in kelvin\n",n,Ce,Ke);
}

但是为什么运行输出的结果是乱码呢?同时不能继续循环下去了,我怎么也搞不清楚,求各位高手指点一下,谢谢,望不吝赐教,我是初学者,也写得不好,求指教,谢谢!

[解决办法]
scanf ("%f",&Fa);这句出的问题,读入一个double应该是%lf,你先试下改成这样看看,如果还有问题再说
[解决办法]
scanf的参数是float,你的是double,造成输入不正确,Fa改成float就行了

另外while循环里边没有调用temperatures函数
[解决办法]
不能循环下去是因为你的调用函数不在循环体内,
int main (void)
{
double Fa;
printf ("Please enter a temperature in Fahrenheit:");
scanf ("%f",&Fa);
Temperatures ((float) Fa);
int rt;

while ((rt = scanf ("%f",&Fa))==1)
{
Temperatures ((float) Fa);
printf ("Please enter another temperature in Fahrenheit(\"q\" to quit):");
}

printf ("END\n");
return 0;
 }

热点排行