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

news/2024/4/21 0:24:05/

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

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

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

#include <stdio.h>/*当华氏温度为 0,20,40,...300时,打印出华氏温度与摄氏温度对照表华氏温度与摄氏温度 C=(5/9)(̧F-32) 其中C表示摄氏温度,F表示华氏温度
*/
main() 
{// 华氏温度f, 摄氏温度cint f, c;// 最低温度,最高温度,步长int lower, upper, step;lower = 0;upper = 300;step = 20;f = lower;while (f<=upper) {// 如果先计算5/9,小数部分会被舍位,结果永远是0c = 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 按照十进制整型数打印    decimalismprintf("%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 按照八进制打印   octonaryprintf("%o\n", 8);// %x 按照十六进制打印 hexadecimalprintf("%x\n", 16);// %c 字符printf("%c\n", 'c');// %s 字符串printf("%s\n", "hello wrold!");// %% 表示%本身printf("%%\n");

三、练习

  1. 修改温度转换程序,使之能在转换表的顶部打印一个标题
#include <stdio.h>
main()
{// 华氏温度f, 摄氏温度cfloat 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, 摄氏温度cfloat 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.ppmy.cn/news/1236056.html

相关文章

国家超级计算济南中心低代码平台应用实践

摘要&#xff1a;文章主要介绍了济南超算使用低代码平台明道云解决了一系列业务问题&#xff0c;包括资产管理、人员与机构管理、流程制度管理等。通过明道云平台&#xff0c;济南超算成功地将不同部门的业务信息进行整合&#xff0c;提高了工作效率和管理水平。文章还强调了明…

目标检测 Faster RCNN全面解读复现

Faster RCNN 解读 经过R-CNN和Fast RCNN的积淀&#xff0c;Ross B. Girshick在2016年提出了新的Faster RCNN&#xff0c;在结构上&#xff0c;Faster RCNN已经将特征抽取(feature extraction)&#xff0c;proposal提取&#xff0c;bounding box regression(rect refine)&…

Nevron Vision for .NET 2023.1 Crack

Nevron Vision for .NET 适用于桌面和 Web 应用程序的高级数据可视化 Nevron Vision for .NET提供最全面的组件&#xff0c;用于构建面向 Web 和桌面的企业级数据可视化应用程序。 该套件中的组件具有连贯的 2D 和 3D 数据可视化效果&#xff0c;对观众产生巨大的视觉冲击力。我…

springboot自动重启及SpringBoot Developer tools简介

项目中引用了SpringBoot Developer tools&#xff0c;修改类后会自动重启。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional&…

孟德尔随机化 MR入门基础-简明教程-工具变量-暴露

孟德尔随机化&#xff08;MR&#xff09;入门介绍和分章分享&#xff08;暂时不解读&#xff09; 大家好&#xff0c;孟德尔随机化大火&#xff0c;但是什么是孟德尔随机化&#xff0c;具体怎么实操呢 这没有其他教程的繁冗&#xff0c;我这篇讲最基础的孟德尔随机化的核心步…

SQLY优化

insert优化 1.批量插入 手动事务提交 主键顺序插入&#xff0c;主键顺序插入性能高于乱序插入 2.大批量插入数据 如果一次性需要插入大批量数据&#xff0c;使用Insert语句插入性能较低&#xff0c;此时可以使用MYSQL数据库提供的load指令进行插入 主键优化 主键设计原则 …

多数据库使用django-apscheduler时,migrate后并不能生成django_apscheduler_djangojob表的问题

先说一下django-apscheduler定时器的使用过程&#xff1a; django-apscheduler基本使用 1.安装django-apscheduler代码如下&#xff08;示例&#xff09;&#xff1a; pip install django-apscheduler 2.配置settings.py的INSTALLED_APPS代码如下&#xff08;示例&#xff09…

【C语言:深入理解指针二】

文章目录 1. 二级指针2. 指针数组3. 字符指针变量4. 数组指针变量5. 二维数组传参的本质6. 函数指针变量7. 函数指针数组8. 转移表9. 回调函数10. qsort函数的使用与模拟实现 1. 二级指针 我们知道&#xff0c;指针变量也是变量&#xff0c;它也有自己的地址&#xff0c;使用什…

OpenStack-train版安装之基础组件安装

基础组件安装 安装MariaDB&#xff08;数据库&#xff09;安装RabbitMQ&#xff08;消息队列&#xff09;安装Memcached&#xff08;缓存&#xff09; 安装MariaDB&#xff08;数据库&#xff09; 安装 # yum install mariadb mariadb-server python2-PyMySQL -y数据库配置 …

本地Git项目同时推送至GitHub和Gitee

分别在gitee和github新建一个仓库 github: gitee: 添加远程仓库 git remote add origin1 [你的GitHub仓库URL] git remote add origin2 [你的Gitee仓库URL] 在本地中初始化创建一个git本地分支 git init 进入.git目录下修改config文件 [remote "origin"] url g…

SpringBoot : ch05 整合Mybatis

前言 随着Java Web应用程序的快速发展&#xff0c;开发人员需要越来越多地关注如何高效地构建可靠的应用程序。Spring Boot作为一种快速开发框架&#xff0c;旨在简化基于Spring的应用程序的初始搭建和开发过程。而MyBatis作为一种优秀的持久层框架&#xff0c;提供了对数据库…

基于django的在线教育系统

基于python的在线教育系统 摘要 基于Django的在线教育系统是一种利用Django框架开发的现代化教育平台。该系统旨在提供高效、灵活、易用的在线学习体验&#xff0c;满足学生、教师和管理员的需求。系统包括学生管理、课程管理、教师管理、视频课程、在线测验等核心功能。系统采…

latex通过bib添加参考文献作者名字有特殊符号如字母上有两点乱码解决办法

一、背景 在使用latex写英文论文时&#xff0c;一般是通过bib的方式添加参考文献。但有的参考文献作者是法国人或其他国家的&#xff0c;名字会有特殊符号&#xff0c;如某个字母上有两个点&#xff0c;或者声调符号等等&#xff0c;如下图所示&#xff1a; 如果不进行特殊操作…

什么是arguments对象?

arguments 对象是 JavaScript 中的一个特殊对象&#xff0c;它包含了函数被调用时传入的所有参数。arguments 对象是一个类数组对象&#xff0c;它有一个 length 属性和按数字索引的元素。 每个函数在执行时都会自动创建一个 arguments 对象。我们可以通过arguments去访问参数…

Centos7 Python环境和yum修复

1、删除现有残余包 [rootlocalhost ]# rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps[rootlocalhost ]# rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps[rootlocalhost ]# whereis python |xargs rm -frv[rootlocalhost ]# whereis python ##验证清除&…

日志技术logback

一&#xff0c;日志概括 二&#xff0c;日志技术的特点 三&#xff0c;日志技术的体系 三&#xff0c;入门 四&#xff0c;案例 package XinZheng;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class Main58 {//1,创建一个Logger日志对象public static fi…

【面试】jvm中堆是分配对象存储的唯一选择吗

目录 一、说明二、逃逸分析2.1 说明2.2 参数设置 一、说明 1.在《深入理解Java虚拟机》中关于Java堆内存有这样一段描述:随着JIT编译期的发展与逃逸分析技术逐渐成熟&#xff0c;栈上分配、标量替换优化技术将会导致一些微妙的变化&#xff0c;所有的对象都分配到堆上也渐渐变得…

Vmware 扩展硬盘空间后的操作-Ubuntu

在VMware中扩展了Ubuntu虚拟机的硬盘容量后&#xff0c;你需要在Ubuntu内部进行操作才能使用新增的空间。过程包括为增加的空间建立分区、格式化以及挂载该分区供使用。下面是具体的步骤&#xff1a; 首先登录到你的Ubuntu系统&#xff0c;用lsblk命令查看分区情况。这样你可以…

港口大型设备状态监测及预测性维护策略

在现代港口运营中&#xff0c;大型设备的正常运行对于保障港口作业的高效性至关重要。为了实现设备的可靠性和持续性&#xff0c;港口管理者需要采取一系列状态监测和预测性维护策略。 推进自动化和智能化是提高港口大型设备状态监测和维护管理效率的重要途径。通过应用先进的…