在C语言中scanf()函数主要是用来读入函数的值,比如语句scanf("%d",&num),scanf函数读入一个值,并把它保存到num中。scanf()函数成功读取一个项目,它就会返回值1;如果它没有读取任何项目(当它期望一个数字而你键入的却是了一个非数字的字符或者字符串就会发生这种情况),scanf()聚会返回值0。当它检测到“文件结尾”(end of file)时,它就返回EOF(EOF是文件stdio.h中定义的特殊值)。一般#define指令把EOF的值定义为-1。在while语句中,我们可以利用scanf()的返回值来检测和处理不匹配的输入。下面我用一个简单的C语言例子来说明一下这个问题。
编写一个程序,该程序要求用户输入一个华氏温度,程序以double类型读入温度值,并将它作为一个参数传递给用户提供的函数Temperatures()。该函数将计算相应的摄氏温度和绝对温度,并显示这三种温度。下面是华氏温度转换成摄氏温度的方程:
celsius=1.8*fahrenheit+32.0
下面是摄氏温度转换成绝对温度的方程:
kelvin=celsius+273.16
Temperatures()函数用const来创建转换里3个常量的符号。main()函数将使用循环来允许用户重复键入温度,当用户输入 q 或其他非数字值时,循环结束。代码如下:
#include <stdio.h>
void temperatures(double fahrenheit);
int main(void)
{
double temperatures_value;
int status;
printf("Please enter a temperatures value ");
printf("(q to quit):");
status=scanf("%lf",&temperatures_value);
while(status==1)
{
temperatures(temperatures_value);
printf("Please enter next temperatures_value(q to quit):");
status=scanf("%lf",&temperatures_value);
}
return 0;
}
void temperatures(double fahrenheit)
{
const double T1=1.8;
const double T2=32.0;
const double T3=273.16;
double celsius;
double kelvin;
celsius=T1*fahrenheit+T2;
kelvin=celsius+T3;
printf("%lf ",celsius);
printf("%lf\n",kelvin);
}