您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计基础 2基本数据类型和表达式.
Chap2基本数据类型和表达式数据类型–基本数据类型整型int实型(浮点型)floatdouble字符型char–构造数据类型数组、结构、联合、枚举–指针类型–空类型对数据的操作-运算运算符和表达式Chap2基本数据类型和表达式常量和变量整数类型实数类型字符类型表达式数据的存储和类型转换2.1常量和变量2.1.1常量常量(常数):数据123(整型)4.56(实型)’A’(字符型)符号常量:用标识符表示的常量数据:PI:EPS通常用大写字母例2-1求球的表面积和体积#includestdio.hvoidmain(){floatr,s,v;scanf(%f,&r);s=4.0*3.14*r*r;v=4.0/3.0*3.14*r*r*r;printf(s=%f,v=%f\n,s,v);}s=4.0*3.14159*r*r;v=4.0/3.0*3.14159*r*r*r;例2-2符号常量#definePI3.14#includestdio.hvoidmain(){floatr,s,v;scanf(%f,&r);s=4.0*PI*r*r;v=4.0/3.0*PI*r*r*r;printf(s=%f,v=%f\n,s,v);}#definePI3.141592.1.2变量C语言中的量常量(常数):数据符号常量:用标识符表示的常量数据在程序的运行过程中,其值不能被改变变量:存放数据的工作单元在程序的运行过程中,其值可以改变变量的定义变量定义的一般形式类型名变量表;变量名:小写字母,见名知义类型名:整型int实型(浮点型)floatdouble字符型char变量的定义inti,j,k;(定义i,j,k为整型变量)charc;(定义c为字符型变量)floatx,y;doublearea,length;变量名代表内存中的一个存储单元用于存放该变量的值该存储单元的大小由变量的数据类型决定变量的定义与使用变量必须先定义,后使用。#includestdio.hvoidmain(){intx,y;x=3;y=x*x;printf(“%d”,y);}一个变量名只能定义一次。变量一般都定义在程序的头上,不能定义在程序的中间或后面。变量的使用变量:先定义,后使用先赋值,后引用#includestdio.hvoidmain(){intx,y;x=3;y=x*x;printf(“%d”,y);}变量的赋值赋初值:在定义变量时对它赋值inta=5,b=3;赋值表达式:inta,b;a=5;b=3;输入函数:scanf(“%d%d”,&a,&b);2.2整数类型2.2.1整型常量(整数)三种表现形式十进制整数:正、负号,0-9,首位不是0例:10,123八进制整数:正、负号,0-7,首位是0例:010,012316进制整数:正、负号,0-9,a-f,A-F,前缀是0x,0X例:0x10,0x123123=1111011(B)二进制=173(O)八进制=7B(X)十六进制inti=0173;intj=0x7b;intk=123;例:160200x10100120XA2.2.2整型变量intai,bi,ci,di=0;ai=1;bi=-27;ci=012;整型变量的值是整数,它的取值范围有限最小取值范围[-32768,32767]2.2.3整型数据的输入输出printf(格式控制,输出参数1,...,输出参数n);scanf(格式控制,输入参数1,...,输入参数n);格式控制说明%…%d:以十进制形式输入、输出整数%o:以八进制形式输入、输出整数%x:以十六进制形式输入、输出整数例2-3#includestdio.hvoidmain(){printf(%d,%o,%x\n,10,10,10);printf(%d,%d,%d\n,10,010,0x10);printf(%d,%x\n,012,012);}运行结果为:10,12,a10,8,1610,a0……01010例2-4#includestdio.hvoidmain(){inta,b;scanf(%o%d,&a,&b);printf(%d%5d\n,a,b);printf(%x,%d\n,a,b);}输入:1717运行结果为:1517f,172.3实型数据2.3.1实型常量(实数)–浮点表示:0.123123.41.–科学计数法:123e40.2e-12.3.2实型变量–单精度浮点型floatx,y,z;–双精度浮点型doubleu,v,w;4字节存储8字节存储数据精度和取值范围数据精度取值范围单精度七位有效数字±(10-38-1038)双精度十六位有效数字±(10308-10308)数据精度与取值范围是两个不同的概念:floatx=1.23456789;floaty=123456789;虽在数据表示范围内,但无法精确表达。floatz=1.2e55z的精度要求不高,但数据表示范围超出。并不是所有的实数都能在计算机中精确表示。实型常量的类型都是doublex=1.234568y=1.234567e82.3.3实型数据的输入和输出输出printf()float和double使用相同的格式控制说明–%f:以小数形式输出浮点数,保留6位小数。–%e:以指数形式输出1位整数.5位小数e3位指数例2-5实型数据的输出#includestdio.hvoidmain(){floatf=123.45;doubled=3.1415926;printf(%f,%e\n,f,f);printf(%f,%e\n,d,d);printf(%5.3f,%5.2f,%.2f\n,d,d,d);}一共5位,小数3位,小数点一位运行结果为:123.450000,1.23450e+023.141593,3.14159e+003.142,3.14,3.14例2-6假定float的精度为7位,double的精度为16位#includestdio.hvoidmain(){floatf;doubled1,d2;f=1234567890123.123456;d1=1234567890123.123456;d2=1234567890123.12;printf(f=%f\nd1=%f\nd2=%f\n,f,d1,d2);}运行结果为:f=1234567954432.000000d1=1234567890123.123540d2=1234567890123.120120实型数据的输入scanf()–float和double使用不同的格式控制说明–%f和%e相同–%f:以小数或指数形式输入一个单精度浮点数–%e–%lf:以小数或指数形式输入一个双精度浮点数–%le例2-7#includestdio.hvoidmain(){floatf1;doubled1;scanf(%f%lf,&f1,&d1);printf(f1=%f\nd1=%f\n,f1,d1);}输入:121234567.12345运行结果为:f1=12.000000d1=1234567.1234502.4字符类型2.4.1字符常量’a’’A’’9’’+’’$'ASCII字符集:列出所有可用的字符每个字符:惟一的次序值(ASCII码)'0'-'9''A'-'Z''a'-'z'2.4.1字符常量–字符的存储在内存中,每个字符占用一个字节,存储该字符的ASCII码字符ASCII码内存'A'6501000001'B'6601000010–字符的数值特征字符可以当整数用,ASCII码'A'+1=?2.4.2字符变量charc1,c2,c3;c1='2';c2='#';c3='A';或c3=65;inti;i=65;或i='A';整型变量和字符变量的定义和赋值可以互换【ASCII码范围】2.4.3字符型数据输入输出scanf()和printf()%ccharch;scanf(%c,&ch);printf(%c,ch);getchar()和putchar()charch;ch=getchar();putchar(ch);输入输出一个字符例2-9#includestdio.hvoidmain(){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar('#');putchar(ch2);}运行结果为:A#b输入:Ab例2-10#includestdio.hvoidmain(){charch1,ch2,ch3;scanf(%c%c%c,&ch1,&ch2,&ch3);printf(%c%c%c%c%c,ch1,'#',ch2,'#',ch3);}运行结果1为:A#b#C输入1:AbC运行结果2为:A##b输入2:AbC输入数据包括字符和数值的混合#includestdio.hvoidmain(){inti;charc;floatx;scanf(%d%c%f,&i,&c,&x);printf(%d%c%f,i,c,x);}输入:3a1.2输出:3a1.200000数据之间不能用空格等间隔,也不需要单引号例2-11已知:'b'的ASCII码98#includestdio.hvoidmain(){printf(%c,%d\n,'b','b');printf(%c,%d\n,98,98);printf(%c,%d\n,97,'b'-1);}运行结果为:b,98b,98a,9701100010'b'98'b'98#includestdio.hvoidmain(){charch='b';printf(%c,%d\n,ch,ch);}01100010'b'9814262'b'9801420x62printf'b'%cputchar98%d142%o62%xscanf'b'%cgetchar98%d142%o62%xscanf(%c,&ch);字符运算大小写英文字母转换'b'-'a'='B'-'A'……'z'-'a'='Z'-'A''m''M'数字字符和数字9-0='9'-'0''9'=9+'0''8'8'a'-'A''A'-'a''0''m'-'a'+'A'='M''M'-'A'+'a'='m''8'-'0'=88+'0'='8'2.4.4转义字符反斜杠后跟一个字符或数字字符常量,代表一个字符'\n''\101''\x41''A'所有字符都可以用转义字符表示2.5表达式2.5.1算术表达式算术运算符–单目+-++--–双目+-*/%注意!%模(求余)整型数据5%6=5,9%4=1,100%4=0/整数除整数,得整数1/2=0,9/4=2双目运算符两侧操作数的类型要相同算术运算符的优先级和结合性单目+-++--双目*/%双目+-高低从右向左-5+3%2=(-5)+(3%2)=-43*5%3=(3*5)%3=0-i++-(i++)算术表达式例2-15数学式--C表达式s(s-a)(s-b)(s-c)(x+2)e2xs*(s-a)*(s-b)*(s-c)(x+2)*exp(2*x)2.5.2赋值表达式赋值运算符=赋值表达式变量=表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符左侧的变量的值作为表达式的值n=2;n=n+1;赋值运算符的优先级和结合性优先级较低,从右向左x=y=3;x=(y=3)例大小写字母转换输入一个小写字母,输出对应的大写字母。#includestdio.hvoidmain(){charch;scanf(%c,&ch);ch=ch-'a'+'A';printf(%c\n,ch);}2.5.3逗号表达式表达式1,表达式2,……,表达式n先计算表达式1,然后计算表达式2,……,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值.逗号运算符的优先级最低,从左向右a=(3+5,4*6)a=3+5,4*6a=24a=8自增运算符和自减运算
本文标题:C语言程序设计基础 2基本数据类型和表达式.
链接地址:https://www.777doc.com/doc-3969028 .html