书签 分享 收藏 举报 版权申诉 / 57
上传文档赚钱

类型第2章 基本IO和基本数据类型.ppt

  • 上传人(卖家):最好的沉淀
  • 文档编号:5819377
  • 上传时间:2023-05-11
  • 格式:PPT
  • 页数:57
  • 大小:5.54MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第2章 基本IO和基本数据类型.ppt》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第2章 基本IO和基本数据类型 基本 IO 数据类型
    资源描述:

    1、第第2章章程序设计方法学基础程序设计方法学基础基本基本I/O和基本数据类型和基本数据类型哈尔滨工业大学哈尔滨工业大学2.1初识初识C语言语言【例例2.1】向屏幕输出向屏幕输出Hello world!分两行输出分两行输出“Hello world!”呢?呢?#include int main(void)printf(Hello worldn);return 0;以#开头,编译预处理指令Every C program must have a main functionThe execution of C program starts from main()function头文件2.2常量与变量常量与

    2、变量常量(常量(Constant)在程序中不能改变其值的量在程序中不能改变其值的量变量(变量(Variable)其值在程序执行过程中是可以改变的其值在程序执行过程中是可以改变的2.2.1变量的类型和变量的定义变量的类型和变量的定义 (1)声明变量的同时为变量声明变量的同时为变量赋值赋值(Assignment)变量的初始化(变量的初始化(Initialize)未被初始化的未被初始化的变量的值会是什么?变量的值会是什么?其值为随机数(乱码)其值为随机数(乱码)n变量的声明(Variable Declaration)类型关键字 变量名;2.2.1变量的类型和变量的定义变量的类型和变量的定义n使用变量

    3、的基本原则变量必须先声明,后使用n一条声明语句可声明若干个同类型的变量nint a,b,c;n声明的顺序无关紧要2.2.2最佳编码原则:最佳编码原则:标识符的命名规则和程序注释标识符的命名规则和程序注释n(1)标识符由英文字母、数字和下画线组成,且必须以英文字母或下画线开头。n(2)不允许使用关键字作为标识符,同时标识符也不应与系统预定义的库函数重名。n(3)C语言的标识符可以是任意长度。一般也会有最大长度(与编译器相关)限制。n(4)标识符应直观、易于拼读、易于记忆,即做到“见名知意”,最好使用英文单词及其组合,切忌使用汉语拼音。2.2.2最佳编码原则:最佳编码原则:标识符的命名规则和程序注

    4、释标识符的命名规则和程序注释n(5)标识符应尽量与所采用的操作系统或开发工具的风格保持一致。例如,Windows应用n程序的标识符通常采用“大小写混排”方式,如MaxValue,而UNIX应用程序的标识符通常采用n“小写加下画线”方式,如max_value。不要将两类风格混在一起使用。n(6)C语言的标识符是区分大小写(对大小写敏感)的。n在程序中不能改变其值的量在程序中不能改变其值的量n包括包括:整型整型(如如 0,67,2,123L,123u,022,0 x12)l默认为基本整型默认为基本整型int实型实型(如如 2.3,1.2e-5,2.73F,2.73L)l默认为双精度实型默认为双精度

    5、实型double字符型字符型(如如 z,3,$)字符串字符串(如如 UKM,1,5a”)枚举型枚举型2.2.3常量的表示形式常量的表示形式长整型长整型 无符号整型无符号整型八进制八进制十六进制十六进制单精度实型单精度实型长双精度实型长双精度实型十进制小数十进制小数指数形式指数形式十进制十进制2.2.3常量的表示形式常量的表示形式2.2.3常量的表示形式常量的表示形式11/532.2.4最佳编码原则:最佳编码原则:使用宏常量和使用宏常量和const变量变量n在程序中直接使用的常数,称为在程序中直接使用的常数,称为幻数幻数(Magic Number)n问题:使用幻数存在什么问题?问题:使用幻数存在

    6、什么问题?程序的可读性变差程序的可读性变差容易发生书写错误,产生不一致性容易发生书写错误,产生不一致性当常数需要改变时,要修改所有引用它的代码,繁琐,还可能有遗漏当常数需要改变时,要修改所有引用它的代码,繁琐,还可能有遗漏n良好的程序设计风格建议把幻数定义为良好的程序设计风格建议把幻数定义为n宏常量宏常量nconst常量常量n优点优点n减少重复书写常数的工作量减少重复书写常数的工作量n提高程序的可读性和可维护性提高程序的可读性和可维护性宏常量(宏常量(Macro Constant)用一个标识符号来表示的常量用一个标识符号来表示的常量宏定义宏定义#define 标识符标识符 字符串字符串 编译预

    7、处理命令编译预处理命令:在源程序编译之前,先对程序中的编译预处理命令进行处理:在源程序编译之前,先对程序中的编译预处理命令进行处理然后将处理的结果和源程序一起进行编译,以得到目标代码然后将处理的结果和源程序一起进行编译,以得到目标代码2.2.4最佳编码原则:最佳编码原则:使用宏常量和使用宏常量和const变量变量宏常量(宏常量(Macro Constant)宏定义宏定义#define 标识符标识符 字符串字符串#define PI 3.14159 符号常量符号常量(Symbolic Constant)宏名宏名(Macro Name),一般全大写),一般全大写不区分数据类型不区分数据类型2.2.

    8、4最佳编码原则:最佳编码原则:使用宏常量和使用宏常量和const变量变量宏常量存在的问题是什么?宏常量存在的问题是什么?没有数据类型,编译器在宏替换时不进行类型检查没有数据类型,编译器在宏替换时不进行类型检查只进行简单的字符串替换,极易产生意想不到的错误只进行简单的字符串替换,极易产生意想不到的错误2.2.4最佳编码原则:最佳编码原则:使用宏常量和使用宏常量和const变量变量nconst double pi=3.14159;nconst常量与宏常量相比的优点是什么?常量与宏常量相比的优点是什么?常量有常量有数据类型,编译器能对其进行类型检查数据类型,编译器能对其进行类型检查某些集成化调试工具

    9、可以对某些集成化调试工具可以对常量进行调试常量进行调试占用内存空间的大小占用内存空间的大小数据的存储形式数据的存储形式合法的表数范围合法的表数范围可参与的运算种类可参与的运算种类 2.32.3变量的类型决定了什么?变量的类型决定了什么?(1)不同数据类型可参与的运算不同不同数据类型可参与的运算不同n整型整型加、减、乘、除、求余加、减、乘、除、求余n实型实型加、减、乘、除加、减、乘、除n字符型字符型加、减(整数)加、减(整数)对对ASCII码值的运算码值的运算指针类型指针类型加、减(整数)和比较运算加、减(整数)和比较运算(2)不同类型数据占用的内存大小不同不同类型数据占用的内存大小不同如何计算

    10、变量或类型占内存的大小如何计算变量或类型占内存的大小n计算变量占内存空间的大小计算变量占内存空间的大小n用用sizeof运算符运算符n一元运算符一元运算符n用用sizeof运算符计算变量占内存空间的大小的好处运算符计算变量占内存空间的大小的好处n增加程序的可移植性增加程序的可移植性n编译时执行的运算符,不会导致额外的运行时间开销编译时执行的运算符,不会导致额外的运行时间开销语法形式语法形式运算结果运算结果sizeof(类型类型)类型类型占用的内存字节数占用的内存字节数 sizeof(变量或表达式变量或表达式)变量或表达式所属类型变量或表达式所属类型占的内存字节数占的内存字节数n整型数整型数n一

    11、个多字节的数据是如何存放到存储单元中的呢?一个多字节的数据是如何存放到存储单元中的呢?n小端次序小端次序n便于计算机从低位字节向高位字节运算便于计算机从低位字节向高位字节运算n大端次序大端次序n与人们从左到右的书写顺序相同,便于处理字符串与人们从左到右的书写顺序相同,便于处理字符串(3)不同类型数据的存储形式不同不同类型数据的存储形式不同高位字节低位字节低位字节高位字节高位字节低位字节n如何存储如何存储实型数实型数呢?呢?n关键:确定小数点的位置关键:确定小数点的位置n问题:如何表示实型数?问题:如何表示实型数?n小数形式小数形式n指数形式指数形式科学计数法科学计数法(3)不同类型数据的存储形

    12、式不同不同类型数据的存储形式不同小数部分n定点数(定点数(Fixed Point)n小数点的位置固定小数点的位置固定n定点整数定点整数n定点小数定点小数定点数定点数定点定点小数小数(纯小数)(纯小数)小数点位于符号位和最高数值位之间小数点位于符号位和最高数值位之间定点定点整数整数小数点位于数值位的最低位小数点位于数值位的最低位(3)不同类型数据的存储形式不同不同类型数据的存储形式不同.0N1N2N3NmN符号位符号位固定小数点固定小数点数值部分数值部分.0NmN1-mN2mN1N符号位符号位固定小数点固定小数点数值部分数值部分n问题:如何表示实型数?问题:如何表示实型数?n小数形式小数形式n指

    13、数形式指数形式科学计数法科学计数法(3)不同类型数据的存储形式不同不同类型数据的存储形式不同小数部分小数部分n定点数(定点数(Fixed Point)n小数点的位置固定小数点的位置固定n浮点数(浮点数(Floating-Point)n小数点的位置不固定小数点的位置不固定浮点数实现小数点位置可浮动的主要原因浮点数实现小数点位置可浮动的主要原因将实数拆分成了将实数拆分成了阶码阶码(Exponent)和和尾数尾数(Mantissa)分别存储分别存储对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大(3)不同类型数据的存储形

    14、式不同不同类型数据的存储形式不同阶码阶码E(指数部分)指数部分)尾数尾数M(小数部分)小数部分)N=r E Mr 为基数为基数通常取通常取 2决定实数的表数精度决定实数的表数范围同样是同样是4个字节(个字节(32位)位)定定点数表数范围受其二进制位数的限制点数表数范围受其二进制位数的限制值域都是有限的值域都是有限的n在计算机中通常是用在计算机中通常是用定点数定点数来表示整数和纯小数来表示整数和纯小数n用用浮点数浮点数表示既有整数部分、又有小数部分的实数表示既有整数部分、又有小数部分的实数(3)不同类型数据的存储形式不同不同类型数据的存储形式不同定点数定点数-231 231-1单精度单精度浮点数

    15、浮点数-3.40282346610383.4028234661038n字符型数据字符型数据(英文字母、数字、控制字符)(英文字母、数字、控制字符)n以二进制编码方式存储,一个字节保存一个字符以二进制编码方式存储,一个字节保存一个字符n字符编码方式字符编码方式取决于计算机系统所使用的字符集取决于计算机系统所使用的字符集ASCII(美国标准信息交换码)字符集(美国标准信息交换码)字符集每个字符有一个编码值(查每个字符有一个编码值(查ASCII码表)码表)字符常数就是一个普通整数字符常数就是一个普通整数(3)不同类型数据的存储形式不同不同类型数据的存储形式不同01001000H72(4)不同数据类型

    16、的表数范围不同不同数据类型的表数范围不同(2)不同数据类型的表数范围不同不同数据类型的表数范围不同以以2字节(字节(16位)短整型为例位)短整型为例有符号整数的最高位有符号整数的最高位是是符号位,使其数据位比无符号整数的数据位少了符号位,使其数据位比无符号整数的数据位少了1位位2.4键盘输入和屏幕输出键盘输入和屏幕输出单个字符的输入输出函数单个字符的输入输出函数n格式化输入输出函数格式化输入输出函数2.4.1单个字符的输入输出单个字符的输入输出字符输出函数字符输出函数putchar()putchar(ch)向屏幕输出一个字符,字符型变量向屏幕输出一个字符,字符型变量ch的值的值n字符输入函数字

    17、符输入函数getchar()ch=getchar()从键盘接收的字符作为从键盘接收的字符作为getchar()的函数值的函数值无参数无参数【例例2.2】大写大写英文字母转换成英文字母转换成小写小写英文字母英文字母B b#include int main(void)char ch;ch=getchar();/从键盘输入一个字符从键盘输入一个字符,按回车键结束输入按回车键结束输入ch=ch+a-A;/将大写字母转换为小写字母将大写字母转换为小写字母putchar(ch);/在屏幕上显示变量在屏幕上显示变量ch中的字符中的字符 putchar(n);/输出一个回车换行控制符输出一个回车换行控制符 r

    18、eturn 0;2.4.2数据的格式化屏幕输出数据的格式化屏幕输出按指定格式和类型输出变量的值,或者输出一行字符串按指定格式和类型输出变量的值,或者输出一行字符串 printf(格式控制字符串格式控制字符串,输出值参数表输出值参数表);printf(a=%d b=%f,a,b);输出值参数类型应与格式转换说明符相匹配输出值参数类型应与格式转换说明符相匹配可输出多个可输出多个任意类型任意类型的数据的数据可变长度的可变长度的输出参数表输出参数表与格式说明符一一对应普通字符转换说明转换说明指定输出数据格式%d decimal 输出输出十进制有符号十进制有符号int型型%u unsigned 输出输出

    19、十进制无符号十进制无符号int型型%f float 以以小数形式小数形式(6位小数位小数)输出输出float,double型型%e exponent 以以标准指数形式标准指数形式输出输出float,double型型int a=10;printf(%d,a);10 double b=10.3;printf(%f,b);10.300000 float b=10.3;printf(%e,b);1.030000e+001 2.4.2数据的格式化屏幕输出数据的格式化屏幕输出%c character以字符形式以字符形式输出输出单个字符单个字符char c=A;printf(%c,c);A char c=A

    20、;printf(%d,c);65 2.4.2数据的格式化屏幕输出数据的格式化屏幕输出l 加加d、u前输出前输出long型型h 加加d、u前输出前输出short型型long a=10;printf(%ld,a);10 short b=10;printf(%hd,b);10 2.4.2数据的格式化屏幕输出数据的格式化屏幕输出Example:printf(Value is:%10f,32.6784728);Value is:32.67847310 characters右对齐右对齐6 digits(default)m 输出数据的输出数据的最小域宽最小域宽 数据位宽大于数据位宽大于m,按实际位宽输出,按

    21、实际位宽输出 数据位宽小于数据位宽小于m时,时,右对齐,左补空格右对齐,左补空格2.4.2数据的格式化屏幕输出数据的格式化屏幕输出Example:printf(Value is:%-10f,32.6784728);Value is:32.67847310 characters左对齐左对齐6 digits(default)m 数据占用的最小域宽数据占用的最小域宽 数据位宽小于数据位宽小于m时,右对齐,左补空格时,右对齐,左补空格-m 左对齐,右补空格左对齐,右补空格2.4.2数据的格式化屏幕输出数据的格式化屏幕输出Example:printf(Value is:%.3f,32.6784728);

    22、Value is:32.678 3 digits显示精度显示精度.n 对对浮点数浮点数表示输出表示输出n位小数位小数格式:格式:%.nf2.4.2数据的格式化屏幕输出数据的格式化屏幕输出显示精度显示精度.n 对对浮点数浮点数表示输出表示输出n位小数位小数一般格式:一般格式:%m.nfExample:printf(Value is:%10.4f,32.6784728);Value is:32.6785 10 characters4 digits2.4.2数据的格式化屏幕输出数据的格式化屏幕输出显示精度显示精度.n 对对浮点数浮点数表示输出表示输出n位小数位小数一般格式:一般格式:%m.nfExa

    23、mple:printf(Value is:%10.0f,32.6784728);Value is:33 10 characters2.4.2数据的格式化屏幕输出数据的格式化屏幕输出int a=10;printf(%d%,a);10%nprintf()用用%作为格式字符的标识作为格式字符的标识2.4.2数据的格式化屏幕输出数据的格式化屏幕输出两种输入输出方法的比较两种输入输出方法的比较n输入字符的两种方法输入字符的两种方法ch=getchar();scanf(%c,&ch);n输出字符的两种方法输出字符的两种方法putchar(ch);printf(%c,ch);速度快速度快更灵活更灵活2.4.

    24、3数据的格式化键盘输入数据的格式化键盘输入 转换说明转换说明可变长度可变长度输入输入地址参数表地址参数表n格式格式 scanf(格式控制字符串格式控制字符串,输入地址表输入地址表);scanf(%d%f,&a,&b);&是取地址运算符是取地址运算符#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;若程序第若程序第5行语句行语句未使用未使用&,结果会怎样?,结果会怎样?a,b12 34 a=12,b=34warning:a is used uninitialized in the functi

    25、onwarning:b is used uninitialized in the function2.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;若程序第若程序第5行语句行语句格式字符写错格式字符写错,结果会怎样?,结果会怎样?结果:结果:scanf()将读入错误的数据将读入错误的数据%f%f12 34 a=1094713344,b=11078205442.4.3数据的格式化键盘输入数据的格式化键盘输入格式格式 scanf(格式控制字符串格

    26、式控制字符串,输入地址表输入地址表);scanf(%d%f,&a,&b);如何分隔多个如何分隔多个输入数据输入数据?1)空格、空格、Tab或或回车回车2)达到)达到输入位宽输入位宽3)遇)遇非法字符非法字符遇以上情况都认为一个数据输入结束:遇以上情况都认为一个数据输入结束:2.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;当要求程序输出结果为当要求程序输出结果为 a=12,b=34时,用户应该如何输入数据?时,用户应该如何输入数据?12 34

    27、 a=12,b=3412 34 a=12,b=342.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;%2d%2d 1234 a=12,b=34当要求程序输出结果为当要求程序输出结果为 a=12,b=34时,用户应该如何输入数据?时,用户应该如何输入数据?2.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);ret

    28、urn 0;如果用户输入了非数值的字符,例如,输入了如果用户输入了非数值的字符,例如,输入了12 3a,那么程,那么程序运行结果如何?序运行结果如何?12 3a a=12,b=32.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;问题:如果用户输入的是问题:如果用户输入的是123a,那么结果又会如何呢?,那么结果又会如何呢?123a a=123,b=1212.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()i

    29、nt a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;,格式字符串中的格式字符串中的普通字符原样输入普通字符原样输入当要求程序输出结果为当要求程序输出结果为 a=12,b=34时,用户应该如何输入数据?时,用户应该如何输入数据?12,34 2.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);return 0;a=12,b=34 格式字符串中的格式字符串中的普通字符原样输入普通字符原样输入scanf(a=

    30、%d,b=%d,&a,&b);当要求程序输出结果为当要求程序输出结果为 a=12,b=34时,用户应该如何输入数据?时,用户应该如何输入数据?2.4.3数据的格式化键盘输入数据的格式化键盘输入%d 输入输入十进制十进制int型型%f,%e输入输入float型型(不能指定输入数据的精度不能指定输入数据的精度)%c 输入输入一个字符(包括空白字符)一个字符(包括空白字符)常见错误常见错误scanf(%7.2f,&a);scanf(%f,a);scanf(%fn,&a);2.4.3数据的格式化键盘输入数据的格式化键盘输入scanf()的格式修饰符的格式修饰符m 输入数据的输入数据的位宽位宽l 加加d

    31、、u前输入前输入long型型加加f、e前输入前输入double型型L 加加f、e前输入前输入long double型型h 加加d前输入前输入short型型%ld 输入输入long int型型%hd 输入输入short int型型%f输入输入float型型%lf 输入输入double型型m 输入数据的位宽输入数据的位宽l 加加d、u前输入前输入long型型加加f、e前输入前输入double型型L 加加f、e前输入前输入long double型型h 加加d前输入前输入short型型*输入项在读入后不赋给相应的变量输入项在读入后不赋给相应的变量2.4.3数据的格式化键盘输入数据的格式化键盘输入n格式

    32、符格式符%f与与%lfn调用调用scanf()输入数据时,通过地址指向变量输入数据时,通过地址指向变量%f告诉编译器告诉编译器scanf()在该地址存储一个在该地址存储一个float型数型数%lf告诉编译器告诉编译器scanf()在该地址存储一个在该地址存储一个double型数型数n调用调用printf()输出数据时输出数据时编译器将编译器将float参数自动转换为参数自动转换为double类型类型printf()无法区分无法区分float和和double2.4.3数据的格式化键盘输入数据的格式化键盘输入#include int main()int a,b;scanf(%2d%*2d%2d,&a,&b);printf(a=%d,b=%d,a+b=%dn,a,b,a+b);return 0;a=12,b=56,a+b=68123456 输入输入123456时程序的输出结果是什么?时程序的输出结果是什么?2.4.3数据的格式化键盘输入数据的格式化键盘输入本章知识树本章知识树56/53Q&A57/50

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第2章 基本IO和基本数据类型.ppt
    链接地址:https://www.163wenku.com/p-5819377.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库