第三章:顺序程序设计

2024-01-01 11:52

本文主要是介绍第三章:顺序程序设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 第三章:最简单的C程序设计-->顺序程序设计
      • 二进制运算
      • 进制转换
        • 10转N进制
        • 转10进制
      • 3.2-数据的表现形式及其运算
          • 常量
          • 变量
        • 数据类型
      • 3.2-整型数据
          • 原码、反码、补码
          • 整数数据的存储
        • 字符型数据
          • 字符与字符代码
          • 字符变量
          • 字符型数据的存储空间和取值范围
        • 浮点型数据
          • 浮点型常量的表示方法
          • 浮点型变量
          • 浮点型数据在内存中存放形式
      • 3.3-C的运算符
        • 运算符顺序(重要)
        • 常用算术运算符
        • 自增(++),自减(--)运算符
        • 数据类型间的自动转换与强制转换
          • 自动类型转换
          • 强制类型转换
            • 临时性
      • 3.4-C语句
      • 3.5数据的输出与输入
        • 用printf函数输出数据
          • printf函数中用到的格式字符
          • printf()高级用法
        • putchar()字符输出函数
        • 输入数据
        • 格式化输入函数scanf()
        • getchar()字符输入函数

第三章:最简单的C程序设计–>顺序程序设计

二进制运算

  • 加法:逢2进1

0+0=0;0+1=1;1+0=1;1+1=10

  • 减法

1-1=0;1-0=1;0-0=0;0-1=1

  • 乘法:同十进制

  • 除法:同十进制

进制转换

  • 二进制:0、1;数字前面加0;逢2进1
  • 八进制:0~7;逢8进1
  • 十进制:0~9;数字前面加0x;逢10进1
  • 十六进制:09、AF;逢16进1
10转N进制
  • 除N,取余,倒排
转10进制
  • 乘权,相加

3.2-数据的表现形式及其运算

常量
  • 整型常量

    • 十进制数
    • 八进制数
    • 十六进制数
  • 浮点型常量(实数)

    • 小数形式,如123.456、345. 、 .123
    • 指数形式,如123.456=123.456e0=12.3456e1=1.23456e2
      • e前必须有数字,e后面必须为整数
  • 字符常量

    • 用单引号包含的单个字符(英文大小写字母、数字字符、特殊字符)
    • 转义字符:以字符反斜线(\)开头的字符序列。
  • 字符串常量

    • 一对双引号括起来的字符序列。

      ‘x'与“x"在c语言中意义不同
      
  • 符号常量

    • 用一个标识符代表一个常量,即标识符形式的常量,称为符号常量。
    • 符号常量的值在其作用域内不能改变,也不能被再赋值,这与变量不同。习惯上,符号常量用大写字母,变量名用小写字母加以区别。
变量
  • C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。变量名是标识符的一种。
    • 第一个字符不能是数字,只能由数字、字母、下划线构成
    • 不能与关键字同名
    • 区分大小写
数据类型

在这里插入图片描述

3.2-整型数据

原码、反码、补码
  • 计算机里都是以__补码__的形式存储数据
  • 原码

一个字节(8位)位例:

最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。

  • 反码

正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变

  • 补码

正数的补码与原码一致,负数的补码是该数的反码加1

整数数据的存储
  • C语言中,整数在内存中是以__补码方式__存放
  • 正数的补码就是其原码(二进制形式)
  • 负数的补码是其绝对值的原码取反加一

在这里插入图片描述

  • 一个短整型分配两个字节,因此有符号变量的值的范围为:-32768-32767;无符号变量的值的范围为:0-65535,如果超出这个范围就发生数据溢出.
  • c语言中,系统对于数据溢出不会给出出错信息,要仔细考虑,以防止出错.
  • 两个字节(16位)、四个字节(32位)、八个字节(64位)
  • 有符号整数存储单元中最高位代表数值的符号(0为正,1为负);如果是unsigned型,存储单元中全部二进制都用作存放数值本身,而没有符号。因此不能存放负数。
short a;                  //a为有符号短整型变量;变量范围:-32768~32767
unsigned short b;         //b为无符号短整型变量,范围要小一点;变量范围:0~65535

注意:

1.只有整型和字符型数据可以加signed或unsigned修饰符,实型(浮点类型)数据不能加

2.对无符号整型数据用"%u"格式输出. %u表示用无符号十进制数的格式输出

字符型数据
字符与字符代码
  • 只能使用系统字符集中的字符,目前多采用ASCII字符集
    • 包括英文大小写字母(严格区分大小写)、数字字符、空格符、专门符号、不能显示的字符(控制字符):空字符(‘\0’表示)、警告(’\a’)、退格(‘\b’)、回车(‘\r’)
字符变量
  • 定义关键字:char
  • 字符变量实质上是一个字节的整型变量,常用来存放字符,注意__只能放一个字符.__
eg:
char c1 = 'A',c2 = 97
%d表示格式输出十进制整数; %c格式输出字符
字符型数据的存储空间和取值范围
[signed] char 字节数为1  取值范围:-128~127,即-2**7~(2**7-1)
unsigned char 字节数为1  取值范围:0~255,即0~(2**8-1)

注意:

字符’1’与1是不同的概念.字符’1’只代表形状为’1’的符号,输出时按原样输出,在内存中以ASCII码形式存储,占一个字节;而整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节.

浮点型数据
浮点型常量的表示方法
  • 小数形式
  • 指数形式

123.456=123.456e0=12.3456e1=1.23456e2

=0.123456e3=0.0123456e4

​ =0.00123456e5=……

其中的1.23456e2称为“规范化的指数形式”

注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数

  • C编译系统把浮点型常量都按双精度处理,分配8个字节
浮点型变量

在这里插入图片描述

浮点型数据在内存中存放形式
  • 小数在内存中以浮点数的形式存储,浮点数是数字(或者说数值)在内存中的一种存储格式,与定点数相对
  • 浮点型数据在内存中是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放
  • 浮点数不一定能保存真实的小数,很有可能保存的是一个近似值

3.3-C的运算符

运算符顺序(重要)

在这里插入图片描述

  • 表中所有运算符序号逐次递增,而优先级递减,列在同一优先级别栏内的所有运算符具有相同的优先级,其运算顺序由结合规则决定

  • 15种优先级的运算符采用如下方法分类:

    • 去掉一个最高级(()、[]、. 、->),去掉一个最低级的逗号,把剩下的分为4类
      • 单目运算符:全部在第2级,共10个运算符
      • 双目运算符:第3级到第12级为双目,共18个运算符,(算数运算符:3,4级;关系运算符:6,7;逻辑运算符:11,12)
      • 三目运算符:仅唯一1个条件的运算符,列在第13级(唯一1个条件运算符)
      • 赋值运算符:共11个运算符,全部列在第14级
常用算术运算符
  • “+”
  • “-”
  • “*”
  • “/”
    • 整数相除为整数:5/3=1;-5/3=-1或-2
    • 舍入方向不确定,一般向0方向:3/5=0
  • “%”
    • 两侧均应为整数数据
    • 取余的结果只与被除数的符号有关,与除数符号无关;5%-3=2;-5%-3=-2

注意:

若参加运算+,-,*,/运算的两个数中有一个数是实数,结果为double型,因为所有的实数都是按double型计算的

自增(++),自减(–)运算符
  • C语言中,简化为++,–,作用是使变量的值增1或减1
  • 前置运算(++放在前面)
++i,  先执行i=i+1,再使用i的值
  • 后置运算
i++,  先使用i值,再执行i=i+1

自增,自减运算符只能用于变量

  • 应用:
    • 循环语句,使得循环变量的值自动+1
    • 指针变量,使得指针指向下一地址
数据类型间的自动转换与强制转换
自动类型转换
  • 自动类型转换是编译器默默地进行的数据类型转换,这种类型不需要程序员干预,会自动发生.
    • 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换(向左看齐,转换为赋值运算符左侧的类型)
    • 在不同类型的混合运算中,编译器也会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算(向长看齐,转换按数据长度增加的方向进行)
      • 转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 类型的数据转成 long 类型后再进行运算
      • 所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算
      • char 和 short 参与运算时,必须先转换成 int 类型
        在这里插入图片描述
强制类型转换
  • 强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换
  • 格式:

在这里插入图片描述

临时性
  • 无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值

3.4-C语句

在这里插入图片描述

3.5数据的输出与输入

  • 在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是:

    • puts():只能输出字符串,并且输出结束后会自动换行
    • putchar():只能输出单个字符,包括转义字符
    • printf():可以输出各种类型的数据
  • C语言没有提供输入/输出的语句,所有的输入/输出操作都是通过调用I/O系统的标准库函数来完成的。

  • 在引用输入/输出函数时,需要先输入预处理命令

    #conclude<stdio.h>
    
用printf函数输出数据
  • 按格式控制字符串规定的格式,向指定的输出设备输出在输出表列中列出各输出项
  • 一般格式:
printf(格式控制字符串,输出表列)
  • 格式控制字符串由普通字符和格式说明两部分组成
    • 普通字符:执行时按照原样输出,一般起提示作用
    • 格式说明:以%开头的字符串,即:%格式符
    • "%[修饰符]格式字符"用来说明输出数据的类型、形式、宽度、小数位。在这里插入图片描述
printf函数中用到的格式字符

在这里插入图片描述
在这里插入图片描述

printf()高级用法
  • 要输出一个 3×3 的整数矩阵,为了增强阅读性,数字要对齐:
#include <stdio.h>
int main()
{int a1=12, a2=3456, a3=7001;int b1=56720, b2=99995, b3=20098;int c1=233, c2=2055, c3=23006783;printf("%-9d %-9d %-9d\n", a1, a2, a3);printf("%-9d %-9d %-9d\n", b1, b2, b3);printf("%-9d %-9d %-9d\n", c1, c2, c3);return 0;
}

在这里插入图片描述

putchar()字符输出函数
  • 向终端输出一个字符
putchar(c);    //c可为char型或int型
  • putchar函数也可输出控制符或其他转义符
putchar('\n') ;       // 换行 putchar('\121');      // Q
输入数据
  • 在C语言中,有多个函数可以从键盘获得用户输入
    • scanf():与 printf() 类似,scanf() 可以输入多种类型的数据
    • getchar()、getche()、getch():这三个函数都用于输入单个字符
    • gets():获取一行数据,并作为字符串处理
格式化输入函数scanf()
  • 功能:按照格式控制字符串规定的格式,从指定的输入设备上读数据到指定的变量中
  • 一般格式:scanf(格式控制字符串,地址列表)
  • 说明:
    • unsigned型数据,可用%u、%d、%o、%x输入
    • 格式控制字符串中的普通字符照原样输入.即scanf(“%d,%d,%d”,&a,&b,&c)以,隔开,输入时也要用逗号隔开
    • 若格式控制字符串中没有普通字符作输入数据间的间隔,也没有指定域宽时,对于整数和浮点数,可用空格、制表符或回车键作为间隔
getchar()字符输入函数
  • 功能:从终端输入一个字符
  • 一般形式:getchar()
  • 函数值:从输入设备得到的字符
  • 说明:getchar()只能接受一个字符,该字符可以赋给一个char型或者int型变量

这篇关于第三章:顺序程序设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559170

相关文章

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

分布式文件系统设计

分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景 / 问题时,具有借鉴意义。并且,分布式文件系统并非只有 HDFS/GFS 这一种形态,在它之外,还有其他形态各异、各有千秋的产品形态,对它们的了解,也对扩展我们的视野有所俾益。本文试图分析和思考,在分布式文件系统领域,我们要解决哪些问题、有