




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 1 山西农业大学信息学院山西农业大学信息学院 第第2 2章章 基本数据类型和基本数据类型和 表达式表达式 主讲:李主讲:李 鑫鑫 C语言程序设计 2 山西农业大学信息学院山西农业大学信息学院 w数据类型 scanf(“%f”, s=4.0*3.14*r*r; v=4.0/3.0*3.14*r*r*r; printf(“s=%f,v=%fn”,s,v); s=4.0*3.14159*r*r; v=4.0/3.0*3.14159*r*r*r; C语言程序设计 6 山西农业大学信息学院山西农业大学信息学院 例2 符号常量 # define PI 3.14 # include void main( ) float r,s,v; scanf(“%f”, s=4.0*PI*r*r; v=4.0/3.0*PI*r*r*r; printf(“s=%f,v=%fn”,s,v); define PI 3.14159 C语言程序设计 7 山西农业大学信息学院山西农业大学信息学院 2.1.2 变量 C语言中的量 常量(常数):数据 符号常量:用标识符表示的常量数据 在程序的运行过程中,其值不能被改变 变量:存放数据的工作单元 在程序的运行过程中,其值可以改变 C语言程序设计 8 山西农业大学信息学院山西农业大学信息学院 变量的定义 变量定义的一般形式 类型名 变量表(多个变量名); 变量名:小写字母,见名知义 类型名: 整型int 实型(浮点型)float double 字符型char C语言程序设计 9 山西农业大学信息学院山西农业大学信息学院 int i,j,k; (定义i,j,k 为整型变量) char c; (定义c 为字符型变量) float x,y; double area,length; 变量名代表内存中的一个存储单元 用于存放该变量的值 该存储单元的大小由变量的数据类型决定 C语言程序设计 10 山西农业大学信息学院山西农业大学信息学院 变量的定义与使用 变量必须 先定义,后使用。(硬要求) # include void main( ) int x,y; x=3; y=x*x; printf(“%d”,y); 一个变量名只能定义一次。一个变量名只能定义一次。 变量一般都定义在程序的头上,变量一般都定义在程序的头上, 不能定义在程序的中间或后面。不能定义在程序的中间或后面。 C语言程序设计 11 山西农业大学信息学院山西农业大学信息学院 变量的使用 变量必须 先定义,后使用。 先赋值,后引用 # include void main( ) int x,y; x=3; y=x*x; printf(“%d”,y); 若不先赋值,后引用 (不影响程序本身,但出现随机值) C语言程序设计 12 山西农业大学信息学院山西农业大学信息学院 变量的赋值 w赋初值:在定义变量时对它赋值 int a=5,b=3; w赋值表达式: int a,b; a=5; w输入函数: scanf(“%d%d”, 已经学过两种方法?(“”和输入) 只能使用一次,不能在其后定义为 int a=15,b=13; int a=5,b=3; a=15;b=13; C语言程序设计 13 山西农业大学信息学院山西农业大学信息学院 2.2 整数类型 2.2.1 整型常量(整数) 三种表现形式 w十进制整数:正、负号,首位不是 例:10,123 w八进制整数:正、负号,首位是 例:010,0123 w十六进制整数:正、负号,a f,A F,前 缀是0x,0X 例:0x10,0X123 C语言程序设计 14 山西农业大学信息学院山西农业大学信息学院 下列各式中a的含义分别是什么? a=10 x=a y=0xa C语言程序设计 15 山西农业大学信息学院山西农业大学信息学院 123=1111011(B) 二进制 =0173 八进制 =0x7B 十六进制 int i=0173; int j=0x7b; int k=123; 例:16 020 0x10 10 012 0XA C语言程序设计 16 山西农业大学信息学院山西农业大学信息学院 2.2.2 整型变量 int ai,bi,ci,di=0; ai=1; bi=-27; ci=012; 整型变量的值是整数,他的取值范围有限 最小取值范围-32768,32767 C语言程序设计 17 山西农业大学信息学院山西农业大学信息学院 2.2.3 整型数据的输入输出 printf(格式控制,输出参数, ,输出参数n); scanf(格式控制,输出参数, ,输出参数n); 控制说明 % %d:以十进制形式输入、输出整数 %o:以八进制形式输入、输出整数 %x:以十六进制形式输入、输出整数 C语言程序设计 18 山西农业大学信息学院山西农业大学信息学院 例 # include void main( ) printf(“%d,%o,%xn”,10,10,10); printf(“%d,%d,%dn”,10,010,0x10); printf(“%d,%xn”,012,012); 001010001010 运行结果为运行结果为: : 10,12,a 10,12,a 10,8,16 10,8,16 10,a 10,a C语言程序设计 19 山西农业大学信息学院山西农业大学信息学院 例4 # include void main( ) int a,b; scanf(“%o%d”, printf(“%d%5dn”,a,b); printf(“%x,%dn”,a,b); 输入:输入: 17 17 1717 运行结果:运行结果: 15 1715 17 f,17f,17 如果实际宽度比规定宽度大,按实际宽度输出如果实际宽度比规定宽度大,按实际宽度输出 C语言程序设计 20 山西农业大学信息学院山西农业大学信息学院 2.3 实型数据 2.3.1 实型常量(实数) 浮点表示法:0.123 123.4 1. 科学计数法:123e4 0.2e-1 2.3.2 实型变量 单精度浮点型: float x,y,z; 双精度浮点型: double u,v,w; 4 4字节存储字节存储 8 8字节存储字节存储 C语言程序设计 21 山西农业大学信息学院山西农业大学信息学院 数据精度和取值范围 数据精度 取值范围 单精度 七位有效数字 (10-381038) 双精度 十六位有效数字 (10-30810308) C语言程序设计 22 山西农业大学信息学院山西农业大学信息学院 w数据精度与取值范围是两个不同的概念: float x=1.23456789; float y=123456789; 虽在数据表示范围内,但无法精确表达 float z=1.2e55; z的精度要求不高,但数据表示范围超出 w并不是所有的实数都能在计算机中精确表示 w实型常量的类型都是double x=1.234568x=1.234568 y=1.234567e8y=1.234567e8 无限循环无限循环 C语言程序设计 23 山西农业大学信息学院山西农业大学信息学院 2.3.3 实型数据的输入和输出 w输出 printf( ) float和double使用相同的格式控制说明 %f:以小数形式输出浮点数,保留6位小 数 %e:以指数形式输出 1位整数.6位小数e 3位指数 C语言程序设计 24 山西农业大学信息学院山西农业大学信息学院 例5 实型数据的输出 # include void main( ) float f=123.45; double d=3.1415926; printf(“%f,%en”,f,f); printf(“%f,%en”,d,d); printf(“%5.3f,%5.2f,%.2fn”,d,d,d); 一共5位,小数3位,小数点1位 运行结果为:运行结果为: 123.450000,123.450000,1 1.234500e+02.234500e+02 3.141593,3.141593e+003.141593,3.141593e+00 3.142, 3.14,3.143.142, 3.14,3.14 C语言程序设计 25 山西农业大学信息学院山西农业大学信息学院 例6 假定float的精度为7位,double的精度为16位 # include void main( ) float f; double d1,d2; f=1234567890123.123456; d1=1234567890123.123456; d2=1234567890123.12; printf(“f=%fn d1 =%fn d2=%fn ”,f,d1,d2); 运行结果为:运行结果为: f=1234567f=1234567954432.000000954432.000000 d1=1234567890123.123d1=1234567890123.123540540 d2=1234567890123.120120d2=1234567890123.120120 随机数随机数 C语言程序设计 26 山西农业大学信息学院山西农业大学信息学院 实型数据的输入 scanf( ) float和double使用不同的格式控制说明 %f和%e相同 %f:以小数或指数形式输入一个单精度浮 点数 %e %lf:以小数或指数形式输入一个双精度浮 点数 %le C语言程序设计 27 山西农业大学信息学院山西农业大学信息学院 例7 # include void main( ) float f1; double d1; scanf (“%f%lf”, printf(“f1=%fn d1=%fn”,f1,d1); 输入:输入: 12 1234567.1234512 1234567.12345 运行结果:运行结果: f1=12.000000f1=12.000000 d1=1234567.123450d1=1234567.123450 C语言程序设计 28 山西农业大学信息学院山西农业大学信息学院 2.4 字符类型 2.4.1 字符常量 a A 9 + $ ASC字符集:列出所有可用的字符 每个字符:惟一的次序值( ASC码 ) 0 9 A Z a z C语言程序设计 29 山西农业大学信息学院山西农业大学信息学院 C语言程序设计 30 山西农业大学信息学院山西农业大学信息学院 C语言程序设计 31 山西农业大学信息学院山西农业大学信息学院 w字符的存储 在内存中,每个字符占用一个字节,存储该字 符的ASC码 字符 ASC码 内存 A 65 0100 0001 B 66 0100 0010 w字符的数值特征 字符可以当整数用, ASC码 A+1=? 倒过来看是否倒过来看是否 依然对应?依然对应? 6666BB C语言程序设计 32 山西农业大学信息学院山西农业大学信息学院 2.4.2 字符变量 char c1,c2,c3; c1=2; c2=#; c3=A; 或 (?) c3=65; intint i; i; i=65; i=65; 或 (?) i=A; 整型变量和字符变量的定义和赋值可整型变量和字符变量的定义和赋值可 以互换以互换( (ASC码的范围之内的范围之内 ) ) C语言程序设计 33 山西农业大学信息学院山西农业大学信息学院 2.4.3 字符型数据的输入输出 wscanf( ) 和printf( ) %c char ch; scanf(“%c”, printf(“%c”,ch); wgetchar( ) 和putchar( ) char ch; ch= getchar( ) ;(没有参数) putchar(ch); 输入输出一个字符 不能读取整数不能读取整数 C语言程序设计 34 山西农业大学信息学院山西农业大学信息学院 例8 # include void main( ) char ch1,ch2; ch1=getchar( ); ch2=getchar( ); putchar(ch1); putchar(#); putchar(ch2); 输入:输入: AbAb 运行结果:运行结果: A#bA#b 用用scanfscanf和和printfprintf函数怎么做?函数怎么做? C语言程序设计 35 山西农业大学信息学院山西农业大学信息学院 scanf(“%d%d%d”, 例 # include void main( ) char ch1,ch2,ch3; scanf(“%c%c%c”, printf(“%c%c%c%c%c”,ch1,#,ch2,#,ch3); 输入输入1 1: AbCAbC 运行结果运行结果1 1: A#b#CA#b#C 输入输入2 2: A A bCbC 运行结果运行结果1212: A# #bA# #b C语言程序设计 36 山西农业大学信息学院山西农业大学信息学院 输入数据包括字符和数值的混合 # include void main( ) int i; char c; float x; scanf(“%d%c%f”, printf(“%d %c %f”,i,c,x); 输入:输入:3a1.23a1.2输出:输出:3 a 1.2000003 a 1.200000 数据之间不能用空格等数据之间不能用空格等 间隔,也不需要单引号间隔,也不需要单引号 C语言程序设计 37 山西农业大学信息学院山西农业大学信息学院 例10 已知:b的ASC码为为9898 # include void main( ) printf(“%c,%dn”,b,b); printf(“%c,%dn”,98,98); printf(“%c,%dn”,97,b-1); 0110 00100110 0010 bb 9898 bb 9898 运行结果:运行结果: b,98b,98 b,98b,98 a,97a,97 C语言程序设计 38 山西农业大学信息学院山西农业大学信息学院 # include void main( ) char ch=b; printf(“%c,%dn”,ch,ch); bb 0110 00100110 0010 bb 989898 98 01420142 142142 0x620x62 6262 C语言程序设计 39 山西农业大学信息学院山西农业大学信息学院 2.5 表达式 2.5.1 算术表达式 w算术运算符 单目 + - + - 双目 + - * / % 注意! % 模(求余)整型数据 5%6=5, 9%4=1, 100%4=0 / 整数除整数,得整数 1/2=0, 9/4=2 双目运算符两侧操作数的类型要相同 C语言程序设计 40 山西农业大学信息学院山西农业大学信息学院 算术运算符的优先级和结合性 单目 + - + - (从右向左从右向左) 双目 * / % 双目 + - -5+3%2=(-5)+(3%2)=-4 3*5%3=(3*5)%3=0 -i+ 高高 低低 -(i+)-(i+) C语言程序设计 41 山西农业大学信息学院山西农业大学信息学院 算术表达式 例11 数学式 C语言表达式 s(s-a)(s-b)(s-c) (x+2)e2x s*(s-a)*(s-b)*(s-c) (x+2)*exp(2*x) exp为库函数 C语言程序设计 42 山西农业大学信息学院山西农业大学信息学院 2.5.2 赋值表达式 w赋值运算符 = w赋值表达式 变量=表达式 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的 变量 将赋值运算符左侧的变量的值作为赋值表 达式的值 n=2; n=n+1; w赋值运算符的优先级和结合性 优先级较低,由右向左 x=y=3; x=(y=3) C语言程序设计 43 山西农业大学信息学院山西农业大学信息学院 例12 输入一个小写字母,输出对应的大写字母 # include void main( ) char ch; scanf(“%c”, ch=ch-a+A; printf(“%cn”,ch); C语言程序设计 44 山西农业大学信息学院山西农业大学信息学院 2.5.3 逗号表达式 w表达式1,表达式2, ,表达式n 先计算表达式1,再计算表达式2, ,最后计算 表达式n的值,并将表达式n的值作为逗号表达式 的值 y=(x=3,y=4,z=5); y=(x=3,y=4,z=x+y); w逗号运算符的优先级最低,从左向右 a=(3+5,4*6); a= 3+5,4*6; 判断表达式的类型?判断表达式的类型? 看优先级看优先级 a=24a=24 a=8a=8 赋值表达式赋值表达式 逗号表达式逗号表达式 C语言程序设计 45 山西农业大学信息学院山西农业大学信息学院 自增运算符和自减运算符 w自增运算符+和自减运算符- int n, n+ +n n- -n (只适合变量运算) 功能:1.使变量的值增1或减1 +n n+ n=n+1 -n n- n=n-1 2.取变量的值作为表达式的值 +n: n=n+1;取n值作为表达式+n 的值 n+: 取n值作为表达式n + 的值; n=n+1 C语言程序设计 46 山西农业大学信息学院山西农业大学信息学院 例13 int i,k; i=2; k=+i; i=2; k=i+; i=3i=3k=3k=3 i=3i=3k=2k=2 i=i+1i=i+1 k=ik=i k=ik=i i=i+1i=i+1 C语言程序设计 47 山西农业大学信息学院山西农业大学信息学院 例14 # include void main( ) int a,b,c; b=5;c=5; a=+b+c-; printf(“%d,%d,%dn”,a,b,c); a=b-c; printf(“%d,%d,%dn”,a,b,c); a=-b+c; printf(“%d,%d,%dn”,a,b,c); b=b+1;a=b+c;c=c-1b=b+1;a=b+c;c=c-1 a=(b-)-ca=(b-)-ca=b-c;b=b-1a=b-c;b=b-1 a=-(b+)+ca=-(b+)+ca=-b+c;b=b+1a=-b+c;b=b+1 从左到右,尽可能多的运算符结合在一起从左到右,尽可能多的运算符结合在一起 C语言程序设计 48 山西农业大学信息学院山西农业大学信息学院 复合算术赋值运算符 w赋值运算符 简单赋值运算符 = 复合(算术)赋值运算符 += -= *= /= %= w赋值表达式 变量 赋值运算符 表达式 x+=exp x=x+(exp)x=x+(exp) C语言程序设计 49 山西农业大学信息学院山西农业大学信息学院 例15 # include void main( ) int x,y,z; z=(x=7)+(y=3); printf(“%d,%d,%dn”,x,y,z); x=y=z=x+2; printf(“%d,%d,%dn”,x,y,z); x*=y-3; printf(“%d,%d,%dn”,x,y,z); x=7,y=3,z=x+yx=7,y=3,z=x+y z=x+2,y=z,x=zz=x+2,y=z,x=z x=x*(y-3)x=x*(y-3) C语言程序设计 50 山西农业大学信息学院山西农业大学信息学院 2.6 数据的储存和类型转换 2.6.1 数据的存储 w整型数据的存储 设整数占2个字节 1 000 0001 1000 0001 0 000 0001 1000 0001 符号位符号位 1:1:负数负数 0:0:正数正数 C语言程序设计 51 山西农业大学信息学院山西农业大学信息学院 原码 反码 补码 w正数的原码反码和补码相同 1的补码 0 000 0000 0000 0001 32767的补码 0 111 1111 1111 1111 (215-1) w负数 -1 原码 1 000 0000 0000 0001 反码 1 111 1111 1111 1110 补码 1 111 1111 1111 1111 原码取反,符号位不变原码取反,符号位不变 反码反码+1+1,符号位不变,符号位不变 在计算机中使用的都是补码在计算机中使用的都是补码 C语言程序设计 52 山西农业大学信息学院山西农业大学信息学院 32767 w补码 0 111 1111 1111 1111 -32767 w原码 1 111 1111 1111 1111 w反码 1 000 0000 0000 0000 w补码 1 000 0000 0000 0001 -32768=-32767-1 w补码 1 000 0000 0000 0000 原码取反原码取反 反码反码+1+1 在原码和反码中代表在原码和反码中代表-0-0 在补码中代表最小的负数在补码中代表最小的负数 C语言程序设计 53 山西农业大学信息学院山西农业大学信息学院 -32768-327683276732767-1-1 0 0 1 1 3276732767 0111 1111 0111 1111 11111111 11111111 1 1 0000 0000 00000000 00000000 0001 0001 0 0 0000 0000 00000000 00000000 00000000 -1 -1 1111 1111 11111111 11111111 11111111 -2 -2 1111 1111 11111111 11111111 1110 1110 -32767 -32767 1000 0000 1000 0000 00000000 0001 0001 -32768-32768 1000 0000 1000 0000 00000000 00000000 32768=32767+132768=32767+1 1000 0000 1000 0000 00000000 00000000 =-32768=-32768 -32769=-32768-1-32769=-32768-1 0111 1111 0111 1111 11111111 11111111 =32767=32767 1-1=1+(-1)1-1=1+(-1) C语言程序设计 54 山西农业大学信息学院山西农业大学信息学院 实型和字符型数据的储存 w实型数据的存储 -1.2345e+02 符号位 阶码 尾数 w字符型数据的存储 一个字节存储ASC码 C语言程序设计 55 山西农业大学信息学院山西农业大学信息学院 2.6.2 整数类型的扩展 有符号 无符号 数据长度 int unsigned int 16或32 short int unsigned short int 16 long int unsigned long int 32 无符号 unsigned 设整数占个字节 0000 0000 0000 0000 0(最小) 1111 1111 1111 1111 65535 (216-1)(最大) unsigned与int取值的个数没有变化 C语言程序设计 56 山西农业大学信息学院山西农业大学信息学院 整数类型的最小取值范围 int -3276832767 (-215215-1) short int long int -21474836482147483647 (-231231-1) unsigned int 065535 (0216-1) unsigned short int unsigned long int 04294967295 (0232-1) C语言程序设计 57 山西农业大学信息学院山西农业大学信息学院 整型常量的表示 w不能超出整型数据的取值范围 w比长整型数还大的数只能用实数表示 w整型常量的类型 整数后的字母后缀 w123L long w123U unsigned w123LU unsigned long 数值 定义时:定义时: long along a unsigned b unsigned long c %ld%ld %u%u %lulu C语言程序设计 58 山西农业大学信息学院山西农业大学信息学院 整型数据的输入输出 printf(格式控制,输出参数, ,输出参数n); scanf(格式控制,输出参数, ,输出参数n); 格式控制说明% 十进制 八进制 十六进制 int %d %o %x long %ld %lo %lx unsigned %u %o %x unsigned long %lu %lo %lx 1111 1111 1111 1111代表什么? C语言程序设计 59 山西农业大学信息学院山西农业大学信息学院 例16 # include void main( ) int ai;long cl; unsigned bu;unsigned long dul; ai=32767;bu=65535U; cl=-2147483648L;dul=4294967295LU; printf(“%d,%u,%ld,%lun”,ai,bu,cl,dul); printf(“%x,%x,%lx,%lxn”, ai,bu,cl,dul); 7fff,ffff,80000000,ffffffff7fff,ffff,80000000,ffffffff 越界问题:越界问题:1-11-10 0 1+65535=0 1+65535=0 ? 1+91+91010 1-1=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版铁塔基站租赁与广告位合作合同范本
- 2025版桥架安装与防雷接地工程承包合同样本
- 2025年建筑材料供货与绿色建筑认证服务合同
- 2025年二手房买卖合同:针对老旧房屋改造的特别约定条款
- 2025年度高效节水农业种植技术服务合同范本
- 2025年跨境矿山资源承包与国际贸易合同
- 2025版文化旅游区建筑承包合同范本
- 2025年数字经济法律咨询项目评标保密与委托合同
- 2025版石料矿山安全生产责任协议
- 2025年度旅游行程变更免责协议及游客须知
- XXX有限公司报销审核制度
- WS/T 427-2013临床营养风险筛查
- GA/T 1047-2013道路交通信息监测记录设备设置规范
- GJB9001C内审员培训讲学课件
- 五牌一图(完整版)
- 幼儿园绘本故事:《十二生肖》 课件
- DDI定向井难度系数
- 激光跟踪仪使用手册
- 新媒体运营知识考核试题与答案
- 金属材料的主要性能ppt课件(完整版)
- 丽声北极星自然拼读绘本第二级 Fat Cat 课件
评论
0/150
提交评论