当前位置: 首页 > news >正文

《C语言程序设计》一 2.5 案例学习——华氏温度与摄氏温度的转换

2.5 案例学习——华氏温度与摄氏温度的转换

【例2-7】 你的一个朋友要去某地旅游,当地天气预报是用华氏温度报告的,请你编写程序,帮助你的朋友进行温度的转换,计算并输出对应的摄氏温度。
1.问题分析
1)确定预期的输出。问题中有“计算并输出对应的摄氏温度”,明确了输出项为摄氏温度celsius。
2)确定输入项。本需求中,输入项是华氏温度fahrenheit。
3)列出输入与输出关系的公式。本例中由华氏温度计算摄氏温度的公式为celsius = 5/9(fahrenheit-32)。
4)进行手工计算。设f值为80,对应的c值应为26.67。
2.算法设计
本例中只需要顶层算法:

输入一个华氏温度
用公式celsius = 5 / 9(fahrenheit - 32)计算对应的摄氏温度

输出摄氏温度值

3.代码编写

#include <stdio.h>

int main()
{  
    float  celsius, fahrenheit;           /*变量定义*/
    
    printf("请输入一个华氏温度:\n");       /*必要的提示信息*/
    scanf("%f", &fahrenheit);               /*键盘输入需要转换的华氏温度值*/
    
    celsius = 5 / 9 *(fahrenheit - 32);     /*计算对应的摄氏温度值*/
    
    printf("华氏温度:%.2f,对应的摄氏温度为%.2f\n", fahrenheit, celsius);  /*输出结果*/

    return 0;
}

4.测试与调试
运行该程序,结果为:

请输入一个华氏温度:
80

华氏温度:80.00,对应的摄氏温度为0

程序运行结果与手工计算结果不同,对程序进行测试,发现不管输入数据是多少,结果都为0。考虑到在C语言中5/9为0,所以将转换的数学模型变换为celsius = 5 *(fahrenheit-32)/9。修改后的程序为:

/*程序名:prg2-7.c*/
/*功能:输入一个华氏温度,输出对应摄氏温度*/
#include <stdio.h>

int main()
{    
    float  celsius, fahrenheit;             /*变量定义*/
    
    printf("请输入一个华氏温度:\n");       /*必要的提示信息*/
    scanf("%f", &fahrenheit);               /*键盘输入需要转换的华氏温度值*/
    
    celsius = 5 *( fahrenheit - 32)/ 9;     /*计算对应的摄氏温度值*/
    
    printf("华氏温度:%.2f,对应的摄氏温度为%.2f\n", fahrenheit, celsius);  /*输出结果*/

    return 0;
}

运行该程序,结果为:

请输入一个华氏温度:
80
华氏温度:80.00,对应的摄氏温度为26.67

相关文章:

  • 安防傍上物联网能否迎来硬件免费时代?
  • 深入探析koa之异步回调处理篇
  • 方法和数组
  • 物联网网络技术市场的发展
  • centos中安装mysql
  • 日志收集+分析+报警 logstash
  • 请问一下发博中出现的问题
  • Educational Codeforces Round 26
  • Android 带你撸一个好玩的 DoodleView(涂鸦)
  • javascript中的this和e.target的深入研究
  • 2017-08-04 前端日报
  • 二叉树的最小深度 Minimum Depth of Binary Tree
  • 告别ASP.NET操作EXCEL的烦恼(总结篇)
  • 一个简单RPC框架是怎样炼成的(VI)——引入服务注冊机制
  • UVa 123042D Geometry 110 in 1! [平面几何]
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • Date型的使用
  • ES6核心特性
  • IndexedDB
  • JavaScript学习总结——原型
  • js正则,这点儿就够用了
  • Linux各目录及每个目录的详细介绍
  • linux学习笔记
  • Mybatis初体验
  • mysql常用命令汇总
  • node 版本过低
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊directory traversal attack
  • 前端之Sass/Scss实战笔记
  • 设计模式走一遍---观察者模式
  • 新书推荐|Windows黑客编程技术详解
  • 正则与JS中的正则
  • ​Linux·i2c驱动架构​
  • # Apache SeaTunnel 究竟是什么?
  • #Java第九次作业--输入输出流和文件操作
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (ZT)薛涌:谈贫说富
  • (八十八)VFL语言初步 - 实现布局
  • (二)WCF的Binding模型
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (四)汇编语言——简单程序
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .NET 8.0 中有哪些新的变化?
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET 命令行参数包含应用程序路径吗?
  • .NET导入Excel数据
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net网站发布-允许更新此预编译站点
  • .stream().map与.stream().flatMap的使用
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @property python知乎_Python3基础之:property
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题