《(中职)C语言程序设计模块三电子课件.pptx》由会员分享,可在线阅读,更多相关《(中职)C语言程序设计模块三电子课件.pptx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YCF正版可修改PPT(中职)C语言程序设计模块三ppt电子课件LOGO数据类型、变量、常量及格式声明模块33.1常量3.1.1常量的类型1)2)3)常量可分为整型常量、实型常量、字符常量和字符串常量。十进制整型常量:由正负号和数字09组成,如-36、25等。1.整型常量八进制整型常量:由正负号和数字07组成,且必须以0开头,如025(对应十进制数为:281+580=21)等。十六进制整型常量:由正负号、数字09和字母AF(不区分大小写)组成,且必须以0 x开头,其中字符AF依次表示1015,如0 xd、0 x15(对应十进制数为:1161+5160=21)等。1)十进制实型常量由正负号、数字
2、09和小数点组成,如1.23、-3.4等。在C语言中,5/2和5.0/2结果是不同的,前者被认为是两个整型数据相除,结果仍为整型,后者5.0为实型常量,则结果为实型。因此,5/2结果为2(取整),5.0/2结果为2.5。2)指数形式的实型常量由正负号、数字09、小数点和字母E(不区分大小写)组成。其一般形式是aEn。其中,a为19的实数,默认小数位为6位;E为阶码标志,代表底数10;n为阶码,只能是十进制整数。例如:0.11写成指数形式就是1.100000E-01,即1.100000101。125.6写成指数形式就是1.256000E+02,即1.256000102。3.1常量3.1.1常量的
3、类型2.实型常量注意:小数点是实数的标志。3.1常量3.1.1常量的类型3.字符常量1)普通字符常量由单引号括起来的单个字符就是普通字符常量,如A,a等。字符常量在内存中占1个字节(B)的内存空间。2)转义字符由一个斜杠“”开头,不同于字符原有意义,故称为转义字符。:表示单引号字符,即。:表示双引号字符,即。:表示反斜杠字符,即。a:响铃。b:退格。n:换行。f:换页。r:回车。t:到下一个制表位。ddd:表示3位八进制数所代表的字符,xhh:表示2位十六进制数所代表的字符,3.1常量3.1.1常量的类型由一对双引号括起来的字符序列就是字符串常量,如English,A等。系统会自动给字符串常量
4、加一个结尾符0,因而字符串常量在内存中所占的空间为实际长度+1,故A 和A是完全不同的,A是字符串常量,在内存中占2 B的空间;A是字符常量,在内存中占1 B的空间。4.字符串常量3.1常量3.1.2常量的进制转换(1)十进制(D)。例如,(35)10或35D。(3)八进制(O)。例如,(145.65)8或145.65O。(4)十六进制(H)。例如,(3C)16或3CH。1.数制的表示(2)二进制(B)。例如,(10000001)2或10000001B。3.1常量3.1.2常量的进制转换2.进制相互转换(1)十进制转二进制(基数2)。整数部分“除2取余”,小数部分“乘2取整”。例如:13.62
5、5D=B?所以,13.625D=1101.101B。以此类推,十进制转八进制(基数8)、十六进制(基数16)方法同上。(2)二进制转十进制。例如:1101.101B=123+122+021+120+12-1+02-2+12-3=13.625D,即数码(如1)乘以位权(如23)之和。3.1常量3.1.2常量的进制转换(3)二进制与八进制互转。八进制范围内的有效数字与其二进制的对应如下:二进制转八进制“三位一并”法,即整数部分自低(右)至高(左)三位一并,小数部分自高(左)至低(右)三位一并,不足部分补0。即1100101.1101B=145.64O。八进制转二进制“一分为三”法。3.1常量3.1
6、.2常量的进制转换(4)二进制与十六进制互转。十六进制范围内的有效数字与其二进制的对应如下:二进制转十六进制“四位一并”法,方法同二进制转八进制类似。1011101010.11101B=0010 1110 1010.1110 1000B=2EA.E8H十六进制转二进制“一分为四”法,方法同八进制转二进制类似。3C9.7AH=0011 1100 1001.0111 1010B=11111001001.0111101B3.2变量3.2.1整型变量1.基本型整型(int)和短整型(short)例如,“int x_1=128;”声明一个名为x_1的int型变量并初始化其值为128。“short x_2
7、=1;”声明一个名为x_2的short型变量并初始化其值为1。(1)内存空间长度:2 B(16 bit)。(2)所表数的范围:-32 76832 767(-215215-1)。(3)对应的格式声明:%d或%i:有符号十进制整数,若为正,则省略“+”号。%u:无符号十进制整数。%o:八进制整数。%x:十六进制整数。3.2变量3.2.1整型变量1.基本型整型(int)和短整型(short)(4)说明:关于负数的%u(无符号)、%o(八进制)、%x(十六进制)输出。整数在内存中都是以补码形式存在的,因而对负数的运算必须先求其补码,然后按指定的格式输出,如1(长度2 B,16 bit,即16位)。提示
8、:原码:最高位为符号位,1表示负,0表示正。正数的原码、反码、补码一致。反码:保持最高位不变,其余按位取反。补码:在反码的基础上加1,即反码+1(二进制1)。3.2变量3.2.1整型变量2.无符号整型(unsigned int)和无符号短整型(unsigned short)例如:unsigned int x_3=16;unsigned short x_4;(1)内存空间长度:2 B(16 bit)。(2)所表数的范围:065 535(0216-1)。(3)对应格式声明:%d、%u、%o、%x。unsigned的数据范围是065 535,-1按%u输出时为65 535,即65 536-1。由此可
9、知:-2按%u输出对应65 536-265 534;-3按%u输出对应65 536-365 533;以此类推。3.2变量3.2.1整型变量3.长整型(long)例如:long x_5;(1)内存空间长度:4 B(32 bit)。(2)所表数的范围:-2 147 483 6482 147 483 647(-231231-1)。(3)对应格式声明:%ld、%lu。4.无符号长整型(unsigned long)例如:unsigned long x_5;(1)内存空间长度:4 B(32 bit)。(2)所表数的范围:04 294 967 295(0232-1)。(3)对应格式声明:%ld、%lu。3.
10、2变量3.2.2实型变量例如:float y_1=3.14;声明一个名为y_1的单精度浮点型变量并初始化其值为3.14。(1)内存空间长度:4 B(32 bit)。(2)所表数的范围:10-371038。有效数字:67位。(3)对应格式声明:%f:单精度浮点数,默认保留6位小数。%e:指数形式。%g:浮点数形式,输出时省略无意义的0。1.单精度浮点型(float)3.2变量3.2.2实型变量2.双精度浮点型(double)例如:double y_2;(1)内存空间长度:8 B(64 bit)。(2)所表数的范围:10-30710308。有效数字:1516位。(3)对应格式声明:%f、%e、%g
11、。3.长双精度浮点数(long double)例如:long double y_3;(1)内存空间长度:16 B(128 bit)。(2)所表数的范围:10-4 931104 932。有效数字1819位。(3)对应格式声明:%lf、%le、%lg。3.2变量3.2.3字符变量例如:char c=A;声明一个名为c 的字符变量并初始化其值为字符A。(1)内存长度:1 B(8 bit)。(2)格式声明:%c:单个字符。%d:该字符的ASCII码值。1.字符型(char)3.2变量3.2.3字符变量“char ch=How are you;”声明一个字符数组ch并初始化其值为字符串How are y
12、ou,“char*p=Welcome to China!;”定义一个字符指针变量并初始化其值为字符串Welcome to China!的首地址。例如:char ch=How are you;char*p=Welcome to China!;printf(%sn,ch);/*输出字符串How are you*/printf(%sn,p);/*输出字符串Welcome to China!*/关于字符指针变量和字符数组,以后再讲。2.字符串只能赋给字符数组或对字符指针变量初始化 例如:printf(%-10d,12);10为输出宽度,不足部分补空格。此处输出时为:左对齐,右补8个空格,即12uuuu
13、uuuu(12占两个字符,u表示空格);“%10d”则为右对齐,左补空格,即uuuuuuuu12。(1)例如:printf(%#x,37);#x表示输出时加前缀0 x,输出0 x25;用于标注数字为十六进制。(2)例如:printf(%#o,37);#o表示输出时加前缀0,输出045;用于标注数字为八进制。(3)例如:printf(%10.3s,chinese);表示右对齐,位宽10,从左往右取前3个字符,输出chi,左边补7个空格。(4)3.3格式声明补充说明“-”为左对齐;无“-”则为右对齐。例如:printf(%10.3f,1234.67890);表示右对齐,位宽10,四舍五入保留3位小
14、数,输出1234.679,左边再补2个空格,即输出uu1234.679。(5)例如:printf(%3d,1234);指定了位宽,在位宽不足时按实际长度输出,输出1234。(6)例如:float x;printf(%d,x);在进行输入/输出时,最常见的错误就是格式声明和所定义的变量类型不一致,如“%d”格式不是float类型的格式,出错。(7)例如:printf(%.2f,3.145678);输出%3.15。(8)3.3格式声明补充说明3.4附表常量的类型见表3-1,变量的数据类型见表3-2。表3-1常量的类型3.4附表表3-2变量的数据类型3.4附表表3-2变量的数据类型续表表3.5自 我
15、 测 试1.下列变量定义及初始化正确的是()。A.short a_1=2.8;B.long enum=31415;C.float jg=5;D.char xm=Jack;2.下列定义的变量中,在内存中所占空间最大的是()。A.long x_1B.float x_2C.double x_3D.unsigned long x_43.字符串a10123x66a所占的内存空间是()B。A.8B.9C.10D.114.下列各数中最大的是()。A.0 x80B.0174C.11111011BD.125D5.有变量声明“char come=g;”,则“printf(%s,come);”的输出结果是()。A.
16、103B.gC.comeD.s一、选择题3.5自 我 测 试该段程序的功能是:根据Lucy输入的x_1变量值来计算圆的面积,输入数大于或等于5,就取变量x_2为半径,否则就取变量x_3为半径计算圆的面积,最后输出:Lucys result is:圆的面积。二、根据前面所学的关于变量定义和格式控制等的相关知识,指出下面程序的错误,修改后上机调试7.scanf(%d,x_1);8.if(x_1=5)s=N*x_2*x_2;9.else s=N*x_3*x_3;10.printf(%cs result is:,name);11.printf(x_1=%f,s=%fn,x_1,s);12.1.incl
17、ude 2.define N 3.14 3.int main()4.char name=Lucy;5.int x_1,float x_2=3,x_3=4;short s;6.printf(Please input x_1n);3.5自 我 测 试三、指出下列printf()函数的输出结果printf(%u,%d,-1,-1);printf(%o,10);printf(%x,10);printf(%x,10.00);printf(%x,-1);printf(%f,2.1);printf(%e,2.8);printf(%g,2.8000);printf(%c,c);printf(%d,A);printf(%c,97);printf(%s,abcd);printf(123164165x64x65x6e164);int a=21;printf(%#x,a);int b=21;printf(%#o,b);char ch15=goodluck;printf(%.4s,ch);float P=3.1415926;printf(%5.4f,p);LOGO
限制150内