Sekioz 2022-07-16 10:48 采纳率: 100%
浏览 97
已结题

浙大版c语言程序设计2-12

浙大版《C语言程序设计(第4版)》题目集2-12
输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。

输出格式:
第一行输出:"fahr celsius"

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

输入样例1:
32 35
输出样例1:
fahr celsius
32 0.0
34 1.1
输入样例2:
40 30
输出样例2:
Invalid.

这样的代码就通过了示例测试。
#include <stdio.h>
int main(){
int lower;
int upper;
int fahr;
double c;
scanf("%d %d",&lower,&upper);
if(lower>upper){
printf("Invalid.");
}
else{
printf("fahr celsius\n");
for(fahr=lower;fahr<=upper;fahr=fahr+2){
c=5.0*(fahr-32)/9.0;
printf("%d%6.1f\n",fahr,c);

}
}

}

而这个就没有通过。
#include <stdio.h>
int main(){
int lower;
int upper;
int fahr;
double c;
scanf("%d %d",&lower,&upper);
if(lower>upper){
printf("Invalid.");
}
else{
printf("fahr celsius\n");
for(fahr=lower;fahr<=upper;fahr=fahr+2){
c=5*(fahr-32)/9;
printf("%d%6.1f\n",fahr,c);

}
}

}

我发现在输入“32 35”时上面的代码输出的是
fahr celsius
32 0.0
34 1.1
而下面的输出的就是
fahr celsius
32 0.0
34 1.0
求解。

  • 写回答

2条回答 默认 最新

  • 微尘8 2022-07-16 11:53
    关注

    C 语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型
    (1)
    double c;
    c = 5.0*(fahr-32)/9.0; // 假如fahr = 34,5.0和9.0默认是double类型,所以5.0*(34-32)/9.0 = 5.0*(2.0)/9.0(自动转换为同一种类型,即double类型进行计算) = 1.111111111111111(双精度保留15位小数),然后赋值给c,即c = 1.111111111111111,再格式化%6.1f,所以输出c = 1.1
    (2)
    double c;
    c = 5*(fahr-32)/9; // 假如fahr = 34,5和9默认是int类型,所以5*(34-32)/9 = 5*2/9(即10/9,int类型相除取整)= 1,然后赋值给c,即c = 1.000000000000000(双精度保留15位小数),再格式化%6.1f,所以输出c = 1.0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 创建了问题 7月16日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵