c语言习题:华氏度摄氏度比照表

简介: c语言习题:华氏度摄氏度比照表

这是《C程序设计语言》第二版中1.2的练习题,要求根据Celsius = (5 / 9) * (Fahr - 32)的公式实现一个比照表的打印输出。 (运算符号两侧最好用空格与其他内容分隔开,这样可以提高代码的可读性)


这道练习题看似简单,但其实藏着一个很容易被忽视的坑,那就是C语言中,整数除法操作会自动执行舍位,结果中的任何小数部分都会被舍弃。由于5和9都是整数,相除结果为0,因此这样计算求得的所有摄氏度都将为0。对此我们采用5 * (Fahr - 32) / 9的运算方式来进行运算下面是成功的例子

#include <stdio.h>
main(){
//整数型华氏度摄氏度比照表成功案例 
  int Fahr,Celsius;
  int max,min,step;
  max = 300;//最大值
  min = 0;//最小值
  step = 20;//步长(间距)
  Fahr = min;
  printf("Fahr\tCelsius\n");//打印标题
  while(Fahr <= max){
//while循环语句,循环将Fahr换算为Celsius
    Celsius = 5*(Fahr - 32) / 9;
    printf("%d\t%d\n",Fahr,Celsius);
//%d\t和%d\n整体上作为printf语句的第一个参数,分别对第二和第三个参数的格式进行设置
//%d表示按照整数打印,
//%.1f表示按照整数打印,小数点后有一位小数 
//%9f表示按照整数打印,至少9个字符宽 
//%9.1f表示则是在上述基础上,小数点后有一位小数
//\t和\n是换码序列,\t表示制表符(9个空格)\n表示换行输出
    Fahr = Fahr + step;
  }
}

使用整数型的变量有较大的不足,计算得到的摄氏度不太精确,例如华氏度0应对应摄氏度-17.8,计算得到的结果却为-17,这点在下面的程序中能得到解决。


由于已经用float声明了变量为浮点型,因此在=的赋值运算中,等号右侧的字面量(数据)会自动转换为小数 ,但最好还是将字面量(数据)写为小数的形式,这样可以强调其浮点性,增强代码可读性。  

#include <stdio.h>
main(){
  float Fahr,Celsius;
  float Upper,Lower,Step;
  Upper = 300;
  Lower = 0.0;
  Step = 20.0;
  //由于已经用float声明了变量为浮点型,
  //因此在=的赋值运算中,等号右侧的字面量(数据)会自动转换为小数 
  //但最好还是将字面量(数据)写为小数的形式,这样可以强调其浮点性,增强代码可读性。 
  Fahr = Lower;
  printf("Fahr\tCelsius\n"); 
  while(Fahr <= Upper){
    Celsius = 5 * (Fahr - 32) / 9;
    printf("%3.0f %9.1f\n",Fahr,Celsius);
    //%f表示按照浮点数打印,
    //%.1f表示按照浮点数打印,小数点后有一位小数 
    //%9f表示按照浮点数打印,至少9个字符宽 
    //%9.1f表示按照则是在上述基础上,小数点后有一位小数 
    Fahr = Fahr + Step;
  }
}

%f表示按照浮点数打印,

%.1f表示按照浮点数打印,小数点后有一位小数

%9f表示按照浮点数打印,至少9个字符宽

%9.1f表示按照则是在上述基础上,小数点后有一位小数

目录
相关文章
TU^
|
5月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
27 1
|
3月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
74 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
5月前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
21 2
TU^
|
5月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
38 1
TU^
|
5月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
27 1
TU^
|
5月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
25 1
TU^
|
5月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
17 1
TU^
|
5月前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
22 1
TU^
|
5月前
|
自然语言处理 C语言 C++
C语言习题~day29
C语言习题~day29
TU^
21 1
TU^
|
5月前
|
存储 C语言
C语言习题~day28
C语言习题~day28
TU^
19 1