(二)C语言之变量与算数运算表达式概述

news2024/11/16 7:52:16

C语言之变量与算数运算表达式概述

  • 一、华氏温度与摄氏温度对照
  • 二、代码概述
  • 三、练习

一、华氏温度与摄氏温度对照

#include <stdio.h>

/*
 当华氏温度为 0,20,40,...300时,打印出华氏温度与摄氏温度对照表
 华氏温度与摄氏温度 C=(5/9)(̧F-32) 其中C表示摄氏温度,F表示华氏温度
*/
main() 
{
	// 华氏温度f, 摄氏温度c
	int f, c;
	// 最低温度,最高温度,步长
	int lower, upper, step;
	lower = 0;
	upper = 300;
	step = 20;
	f = lower;
	while (f<=upper) {
	    // 如果先计算5/9,小数部分会被舍位,结果永远是0
		c = 5 * (f - 32) / 9;
		printf("%d\t%d\n", f, c);
		f = f + step;
	}
}

在这里插入图片描述

二、代码概述

上面的程序比较简单,这里从上到下只做粗略描述,目的是了解程序的构造:

  • 包含在/*与*/之间的字符序列,称之为多行注释;
  • 在//后面的字符序列,称之为单行注释;
  • 注释会被编译器忽略。
  • 在C语言中,所有变量都必须先声明后使用。声明通常放在函数起始处,在任何可执行语句之前。
  • 声明用于说明变量的属性,它由一个类型名和一个变量表组成,例如
    • int f, c; 其中int为类型名,表示整数;f,c为两个变量,放到一起就是一个变量表
    • int lower, upper, step; 同上
  • int的取值范围取决于具体的机器(这与java不同),有16位的,也有32位的,即决定给变量分配多少空间
    • 2字节int, 16位,符号位占1位,正/负数取值2^15=32768
    • 4字节int, 32位,符号位占1位,正/负数取值2^31=2,147,483,648
  • 变量基本类型除了int,还有char, short,long,long long,float,double
  • 赋值语句,就是给变量设置初始值、或新的值
    • lower = 0;
    • upper = 300;
    • step = 20;
    • f = lower;
  • while循环语句,重复执行的逻辑可以放到while循环里面,()里面的是进入循环的条件,如果成立,则进入循环执行循环体,{}里面的代码就是所谓的循环体;当()中的条件不成立时,循环结束,继续执行循环结构后面的其他代码
    while (f<=upper) {}
  • printf是一个通用输出格式化函数,该函数第一个参数是待打印的字符串,其中的每个%是其他参数(第二个、第三个…)的占位符,运行之后实际的参数值会替换掉%,从而打印出完整的、格式化的字符串
    • printf(“%d\t%d\n”, f, c); 打印华氏\t摄氏温度\n,\t表示一个制表符,\n表示换行,二者都属于转义字符
  • 上面的温度转换程序存在两个问题
    • 输出的数字不是靠右对齐,不美观,可以使用printf()进行格式化,使其右对齐

      • printf(" %3d\t%6d\n", f, c); 3个空格位+3个数字位+1个制表符+6个数字位,这样显现出来的效果就是右对齐,左边不足的位数空出
        在这里插入图片描述
    • 另一个较为严重的问题是,我们使用的是整型运算,由于小数位会被舍弃,所以得到的结果不太准确。可以使用浮点数计算,修改程序如下:
      在这里插入图片描述

      • 变量声明为float,赋值时,如果给定的值是整型,则会自动转为浮点型,比如 lower=0;
      • 运算时,如果有一个浮点型和一个整型,则在运算之前,整型会自动转为浮点型,比如 f-32, 32会自动转为32.0
      • 可以按照公式进行程序编写, C=(5/9)(̧F-32),把运算表达式中所有的整型数字都改成浮点数
      • 3.0f 表示浮点数至少占3个字符宽,不保留小数
      • 6.1f 表示浮点数至少占6个字符宽,保留一位小数
      • 格式测试
	// %d 按照十进制整型数打印    decimalism
	printf("%d|%d|%d\n", 1, 100, 1000);
	// %6d 按照十进制整型数打印,至少6个字符宽(待打印字符小于6个,左侧不足位补空格;大于等于6个,按实际打印)
	printf("%6d|%6d|%6d|%6d\n", 6, 66666, 666666, 66666666);
	// %f 按照浮点数打印  float  小数点最多6位,如果实际不足6位,右侧不足位补0;如果实际多于6位,则进位
	printf("%f|%f|%f|%f|%f\n", 1.1, 1000.222, 1.123456, 1.1234567, 1.12345638);
	// %6f 按照浮点数打印,至少6个字符宽,基本同上
	printf("%6f|%6f|%6f|%6f|%6f\n", 1.1, 1000.222, 1.123456, 1.1234567, 1.12345638);
	// %.2f 按照浮点数打印, 小数点后两位小数,不足右端补0,多出进位
	printf("%.2f|%.2f|%.2f|%.2f|%.2f\n", 1.1, 1000.222, 1.123456, 1.1234567, 1.12345638);
	// %6.2f 按照浮点数打印, 至少6个字符宽(包含小数部分、小数点), 小数部分两位;不足6位左侧补空格,多出6位整数部分按实际打印
	printf("%6.2f|%6.2f|%6.2f|%6.2f|%6.2f\n", 1.1, 1000.222, 1.123456, 1.1234567, 123451.12345638);
	// %o 按照八进制打印   octonary
	printf("%o\n", 8);
	// %x 按照十六进制打印 hexadecimal
	printf("%x\n", 16);
	// %c 字符
	printf("%c\n", 'c');
	// %s 字符串
	printf("%s\n", "hello wrold!");
	// %% 表示%本身
	printf("%%\n");

三、练习

  1. 修改温度转换程序,使之能在转换表的顶部打印一个标题
#include <stdio.h>
main()
{
	// 华氏温度f, 摄氏温度c
	float f, c;
	// 最低温度,最高温度,步长
	float   lower, upper, step;
	lower = 0;
	upper = 300;
	step = 20;
	f = lower;
	printf("%s\t%s\n", "华氏温度", "摄氏温度");
	while (f <= upper) {
		c = 5.0 / 9.0 * (f - 32.0);
		printf("   %3.0f\t%14.1f\n", f, c);
		f = f + step;
	}
}
  1. 编写一个程序,打印摄氏温度转换为华氏温度的转换表
#include <stdio.h>

/*
 当摄氏温度为 0,20,40,...300时,打印出摄氏温度与华氏温度对照表
 F=(9.0/5.0)*C+32 其中F表示华氏温度,C表示摄氏温度
*/
main()
{
	// 华氏温度f, 摄氏温度c
	float f, c;
	// 最低温度,最高温度,步长
	float   lower, upper, step;
	lower = 0;
	upper = 300;
	step = 20;
	c = lower;
	printf("%s\t%s\n", "摄氏温度", "华氏温度");
	while (c <= upper) {
		f = (9.0 / 5.0) * c + 32;
		printf("   %3.0f\t%14.1f\n", c, f);
		c = c + step;
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1243711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jenkins Ansible 参数构建

首先在Jenkins中创建自由项目 在web端配置完成后在另一台机子上下载nginx 在gitlab端创建项目并创建文件配置代码 在有Jenkins的机器上下载Ansible [rootslave1 ~]# yum -y install epel-release [rootslave1 ~]# yum -y install ansible再进入下载nginx机器中克隆gitlab项目…

【CCF-PTA】第03届Scratch第01题 -- 梦醒时分

梦醒时分 【题目描述】 睡眠是人体正常的生理需要&#xff0c;同年龄男女睡眠时间无明显差别&#xff0c;一般是8小时左右。居家的小明作息生活很规律&#xff0c;晚上11点睡觉&#xff0c;早晨7点起床学习。请你编写程序来判断&#xff0c;每周&#xff08;共168小时&#x…

YOLO目标检测——垃圾检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;智能化垃圾分类系统、垃圾回收和处理领域的优化管理等方面数据集说明&#xff1a;垃圾分类检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含报纸、蛋壳、矿泉水瓶、电池、拉链顶罐、塑料餐盒、纸质药盒、香蕉皮…

协同过滤与矩阵分解讲解(PPT)

总览 协同过滤算法&#xff0c;就是一种完全依赖用户和物品之间行为关系的推荐算法。 从字面理解&#xff0c;协同大家的反馈、评价和意见一起对海量的信息进行过滤&#xff0c;从中筛选出用户可能感兴趣的信息。 知识概括 从这几个方面进行分析。 一、基于用户的协同过滤 显示…

富士康转移产线和中国手机海外设厂,中国手机出口减少超5亿部

富士康和苹果转移生产线对中国手机制造造成了巨大的影响&#xff0c;除此之外&#xff0c;中国手机企业纷纷在海外设厂也在减少中国手机的出口&#xff0c;2022年中国的手机出口较高峰期减少了5.2亿部。 手机是中国的大宗出口商品&#xff0c;不过公开的数据显示2022年中国的手…

深入了解Java8新特性-日期时间API_LocalDate类

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概12000多字&#xff0c;预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…

【Python】批量将PDG合成PDF,以及根据SS号重命名秒传的文件

目录 说明批量zip2pdf批量zip2pdf下载SS号重命名源代码SS号重命名源代码下载附录&#xff0c;水文年鉴 说明 1、zip2pdf是一个开源软件&#xff0c;支持自动化解压压缩包成PDG&#xff0c;PDG合成PDF&#xff0c;笔者在其基础上做了部分修改&#xff0c;支持批量转换。 2、秒…

SQL LIKE 运算符:用法、示例和通配符解释

SQL中的LIKE运算符用于在WHERE子句中搜索列中的指定模式。通常与LIKE运算符一起使用的有两个通配符&#xff1a; 百分号 % 代表零个、一个或多个字符。下划线 _ 代表一个单个字符。 以下是LIKE运算符的用法和示例&#xff1a; 示例 选择所有以字母 “a” 开头的客户&#x…

如何应用ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作??

如果我想让gpt从pdf文档中提取相关关键词的内容&#xff0c;可以怎么做呢&#xff1f;&#xff1f;我们评论区讨论 ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题&#xff0c;ChatGPT都能为您提供实用且高质量的建议和指导&am…

【SpringMVC】 三层架构

一.lombok工具包 中央仓库查找这个工具包:https://mvnrepository.com/ 给类添加Data注解就可以获取gettter和setter方法 , 这样我们就不必写getter 和 setter 方法. 也可以给成员属性添加单独的getter 和 setter , 针对某个成员属性单独添加setter或setter方法. 二.如果使用spr…

Leetcode173. 二叉搜索树迭代器

Every day a Leetcode 题目来源&#xff1a;173. 二叉搜索树迭代器 解法1&#xff1a;中序遍历 我们可以直接对二叉搜索树做一次完全的递归遍历&#xff0c;获取中序遍历的全部结果并保存在数组中。随后&#xff0c;我们利用得到的数组本身来实现迭代器。 代码&#xff1a…

Python生产、消费Kafka

如果想通过docker安装kafka&#xff0c;可参考 Docker安装Kafka 生产者 import json import time import tracebackfrom datetime import datetime from kafka import KafkaProducer from kafka.errors import kafka_errorsproducer KafkaProducer(bootstrap_servers[localho…

JSP:Servlet

Servlet处理请求过程 B/S请求响应模型 Servlet介绍 JSP是Servlet的一个成功应用&#xff0c;其子集。 JSP页面负责前台用户界面&#xff0c;JavaBean负责后台数据处理&#xff0c;一般的Web应用采用JSPJavaBean就可以设计得很好了。 JSPServletJavaBean是MVC Servlet的核心…

NOIP2003提高组第二轮T3:加分二叉树

题目链接 [NOIP2003 提高组] 加分二叉树 题目描述 设一个 n n n 个节点的二叉树 tree \text{tree} tree 的中序遍历为 ( 1 , 2 , 3 , … , n ) (1,2,3,\ldots,n) (1,2,3,…,n)&#xff0c;其中数字 1 , 2 , 3 , … , n 1,2,3,\ldots,n 1,2,3,…,n 为节点编号。每个节点都…

抖音汽车租赁小程序背后的技术挑战与解决方案

随着共享经济的不断发展&#xff0c;抖音上的汽车租赁小程序也逐渐崭露头角。然而&#xff0c;这背后涉及的技术挑战却不容小觑。本文将深入探讨抖音汽车租赁小程序的技术挑战&#xff0c;并提出相应的解决方案。 一、实时位置追踪 汽车租赁小程序的核心在于用户能够实时追踪…

JS中reduce函数的使用

一&#xff1a;函数解释 reduce()是一个对数组中的每个元素按照顺序依次执行自定义函数的方法。 就是遍历数组&#xff0c;每个元素都执行相同的方法。 二&#xff1a;实际应用 accumulator和currentValue分别用acc和cur表示哈&#xff0c;举例如下&#xff1a; 应用例子①…

赛迪生电源充电模块维修CHR-22005 RCU-202A

通信电源维修品牌&#xff1a;英可瑞,许继,艾默生,通合,动力源,九洲,华隆,合欣,泰坦,赛迪生等 直流屏模块故障和解决办法&#xff1a; 1、针对各类变电站直流屏&#xff0c;若显示交流空开跳闸&#xff0c;但并没有动作。应当检查三处地方是否正确&#xff1a; 接线是否正确…

SWT/Jface(2): 表格的编辑

前言 上节说到, 创建和渲染表格需要如下几个步骤: 接收源数据数组(也可以是单个对象或者其他集合类型): TableViewer.setInput(Object)渲染接收的数据 渲染表头: TableViewer.setLabelProvider(IBaseLabelProvider)渲染内容: TableViewer.setContentProvider(IContentProvide…

k8s-pod生命周期 4

容器环境初始化 pod 由pod 镜像来提供&#xff0c;在pod 生命周期里容器主要分为两种&#xff1a;初始化容器和主容器 初始化容器一定要成功运行并退出&#xff0c;当初始化容器运行退出完了之后主容器开始和运行 主容器开始运行的时候&#xff0c;有两个探针&#xff1a;存…

【C++初阶】STL详解(七)Stack与Queue的模拟实现

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…