《第2章 C语言程序设计基础2017年3月(第4周).ppt》由会员分享,可在线阅读,更多相关《第2章 C语言程序设计基础2017年3月(第4周).ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、12022-7-16第第2 2章章 C C语言程序设计基础语言程序设计基础主要内容主要内容n2.1 2.1 数据类型数据类型n2.2 2.2 常量和变量常量和变量n2.3 2.3 常用函数常用函数n2.4 2.4 算术运算符和算术表达式算术运算符和算术表达式n2.5 2.5 赋值运算赋值运算n2.6 2.6 逗号表达式逗号表达式n2.7 2.7 数据类型转换数据类型转换n2.8 2.8 数据的输入、输出数据的输入、输出n例例: :已知圆的半径已知圆的半径, ,求面积求面积#include int main( ) float r,s; scanf(“%f”, &r); s=3.1415*r*r;
2、 printf(“面积是:面积是:%f n”,s); return 0; 本课程任务:本课程任务:C C语言程序设计语言程序设计本章任务:本章任务:C C语言程序设计语言程序设计基础基础2.1数据类型2.2常量和变量2.3常用函数2.52.5赋值表达式赋值表达式2.42.4算术表达式算术表达式2.82.8输入输出输入输出32022-7-16n根据数据的根据数据的表示范围表示范围分为:分为:整型整型、实型实型、字符型字符型 等等n根据在程序运行过程中根据在程序运行过程中数值能否改变数值能否改变分为:分为:常量常量、变量变量n整型常量和整型变量整型常量和整型变量 123、-7 int a ; n实
3、型常量和实型变量实型常量和实型变量 -3.15 1.0 float a ; n字符常量和字符变量字符常量和字符变量 A 、n char ch ;n字符串常量字符串常量CHINA 、A n常用函数:常用函数:标准函数、自定义函数标准函数、自定义函数n算术运算符:算术运算符:+ - * / % - + -上次课内容提要上次课内容提要4n+ - (自增、自减自增、自减) 运算运算 n后置后置 i+ , ( (先使用先使用i 值值, , 再执行再执行i+1)n前置前置 +I , ( (先执行先执行i+1, , 再使用再使用i值)值) 52022-7-162.4.2 算术表达式算术表达式n定义定义n用用
4、算术运算符和括号算术运算符和括号将将操作数操作数连接起来符合连接起来符合C C语言语法规定的式子语言语法规定的式子n操作数操作数: :常量、变量、函数常量、变量、函数n优先级:优先级:- + - * / % + -高高(14)(14) (13) (13) (12)(12)低低n结合性:结合性: 由左至右由左至右 参考参考P315P315n有括号或函数的优先(有括号或函数的优先(1515级)级)n不同类型间的转换不同类型间的转换n若表达式中有浮点数参与运算,则按双精度进行计算若表达式中有浮点数参与运算,则按双精度进行计算。如:如: -4.0/8 的结果是的结果是 -0.5(double型)型)n
5、若表达式中最高精度是若表达式中最高精度是long型整数,运算时按型整数,运算时按long型进行运算型进行运算如:如:int m;long n;那么那么 m+n 时,系统中时,系统中 m 和和 n 都被看作是都被看作是 long 型的运算型的运算n若表达式中最高精度不高于若表达式中最高精度不高于int 型,运算时按型,运算时按int型算型算n如:如: 4/8 4/8 的结果不是的结果不是 0.5 0.5 ,而是,而是 0 0能记住吗?能记住吗?6 char ch; int i; float f; double d; ch/i + f*d - (f+i)intintdoubledoubledoub
6、ledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例例2 int i; float f; double d; long l;例例1 1doublefloatlongunsignedintchar,short低低高高72022-7-162.5 赋值运算赋值运算n赋值运算符赋值运算符n简单赋值运算符简单赋值运算符n符号:符号: = =n格式:格式:变量变量= =表达式表达式n作用:首先计算作用:首先计算右边的表达式,右边的表达式,再赋给再赋给左边的变量左边的变量n赋值表达式赋值表达式n定义:用赋
7、值运算符连接起来符合定义:用赋值运算符连接起来符合C C语言法则的式子语言法则的式子例例 a=3; b=a+2; c=max(a,b );a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3n复合赋值运算符复合赋值运算符n种类:种类:+= -= *= /= %=82022-7-16n说明说明n左侧左侧必须是变量必须是变量,不能是常量或表达式,不能是常量或表达式n运算优先级运算优先级: 2 ( (最低最低1 1 , ) )n结合方向:结合方向: 自右向左自右向左 例例 a=b=1; / 等价于等价于 a=(b=1);n类型转换规则类型转换规则: 运行时运行时赋值号右边表达式值的类型
8、赋值号右边表达式值的类型 自动转换成自动转换成其左边变量的类型其左边变量的类型例例 3=x-2*y; a+b=3; 例例 float f; int i; i=10; f=i; 例例 int i; i=2.56; / 结果结果 f=10.0/ 结果结果 i=292022-7-16n赋值运算表达式的值赋值运算表达式的值被规定为表达式左操作数的被规定为表达式左操作数的值值, ,且可嵌套且可嵌套例例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) /表达式值为表达式值为 5,a,b,c值为值为5 5 /表达式值为表达式值为 5, b=5;
9、a=5 /表达式值为表达式值为 11,c=6,a=11 /表达式值为表达式值为 10,a=10,b=4,c=6 /表达式值为表达式值为 5,a=5,b=10,c=2例例: int a=12; a+=a-=a*a/ a=-264 等价于等价于a=a+(a=a-(a*a)例例: int a=2; a%=4-1; a+=a*=a-=a*=3; / a=0 等价于等价于a=a+(a=a*(a=a-(a=a*3)/ a=2 等价于等价于a=a%(4-1)102022-7-16n赋值语句赋值语句n构成方式:构成方式:由赋值表达式加分号构成由赋值表达式加分号构成n例:例:a=3 ;b=a*3+5 ;n赋值表
10、达式赋值表达式与与赋值语句赋值语句的区别的区别1 1、C C语言中赋值号语言中赋值号“=” ” 是一个是一个运算符运算符2 2、赋值表达式赋值表达式加加“;”就成了就成了赋值语句赋值语句3 3、赋值表达式赋值表达式可以包括在其他表达式中可以包括在其他表达式中, ,相当于一个变量相当于一个变量n例:例:if (a=b)0) t=a;if (a=b;)0) t=a; 先把先把 b b 赋给赋给 a a,再用再用 a a 接着运算接着运算不可以的!不可以的!112022-7-162.6 逗号表达式逗号表达式n形式:形式:表达式表达式1 1,表达式表达式2,表达式表达式n nn结合性结合性:从左向右从
11、左向右n优先级优先级: : 1 (1 (最低最低) )n逗号表达式的值:逗号表达式的值:等于等于表达式表达式n n的值的值n运算规则:从左到右,依次计算各个表达式的值,运算规则:从左到右,依次计算各个表达式的值, 并以并以最后一个表达式的值最后一个表达式的值作为逗号表达式的值作为逗号表达式的值n例如:例如:x=3, y=x+2; 先计算赋值表达式先计算赋值表达式 x=3 的值为的值为 3, 再计算赋值表达式再计算赋值表达式 y=x+2 的值为的值为 5, 因此因此 整个逗号表达式整个逗号表达式 的值就是的值就是 5。n用途:常用于循环用途:常用于循环forfor语句中语句中 (第(第4 4章详
12、解)章详解)122022-7-16例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3) x=a=3,6*a例例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /逗号表达式逗号表达式, , 表达式值表达式值60, a=15/逗号表达式逗号表达式, ,表达式值表达式值20, a=15/赋值表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式, , 表达式值表达式值18, x=3/1,2,3/3,2,3132022-7-16例例:#include int m
13、ain( ) int x, y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x); return 0;运行结果:运行结果:x=3142022-7-162.7 数据类型转换数据类型转换n隐式转换隐式转换( (自动转换自动转换) )n什么情况下发生什么情况下发生? ?n运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时n赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时n输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式n函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时
14、转换( (第第5 5章章) )n运算转换规则运算转换规则n不同类型数据运算时不同类型数据运算时先自动转换成同一类型先自动转换成同一类型15doublefloatlongunsignedintchar,short低低高高16 一般一般形式形式: (类型名类型名)(表达式表达式) 例例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:说明:强制转换得到所需类型的中间变量,强制转换得到所需类型的中间变量,原变量类型不变原变量类型不变 例例 #include int main() float x; int i; x=3.6; i=(int)x; print
15、f(“x=%f,i=%d”,x,i); return 0; 注意:注意:较高类型向较低类型转较高类型向较低类型转换时可能发生换时可能发生精度损失问题精度损失问题n显式转换(显式转换(强制转换强制转换)运行结果运行结果:x=3.600000,i=3172022-7-162.8 数据的输入、输出数据的输入、输出n input 、 outputn由输入、输出函数实现由输入、输出函数实现n输出函数输出函数 printf 、putchar 等等n输入函数输入函数 scanf 、getchar 等等n 使用前必须包含头文件使用前必须包含头文件 #include 作用作用: : 向向终端(终端(系统系统默认
16、为默认为显示器显示器)输出一个字符。输出一个字符。例例: :#include int main() char ch1B,ch2=O,ch3=Y; putchar(); /*输出双引号输出双引号*/ putchar(ch1); putchar(ch2); putchar(ch3); /*输出输出BOY*/ putchar(); /*输出双引号输出双引号*/ return 0; n单个字符的输出单个字符的输出putchar函数函数格式格式: :运行结果:运行结果:BOYputchar(ch);注注: : ch 可以是可以是一个字符型(整型)一个字符型(整型)变量变量、常量常量或或表达式表达式; ;
17、 也可以是一个也可以是一个转义字符转义字符,如,如 putchar(n)、putchar(101)。putchar(B); 例例:putchar ( a ); / 输出字符输出字符aa char a=b; putchar (a); / a a是字符变量,输出是字符变量,输出a a表示的字符表示的字符bb作用:作用:从从终端终端(系统默认(系统默认为键盘为键盘)输入一个字符输入一个字符。例例#include int main() char c1,c2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); return 0;输入输入:a n单
18、个字符的输入单个字符的输入getchar函数函数输出输出格式:格式: 注:注:getchar函数没有参数,所接受的字符可以赋给字符型或整函数没有参数,所接受的字符可以赋给字符型或整型变量,也可以作为表达式的一部分。输入完毕,必须按回车键。型变量,也可以作为表达式的一部分。输入完毕,必须按回车键。aPress any key to continue 输入输入:a b 输出输出abPress any key to continue getchar( );202022-7-16n格式输出函数格式输出函数printf函数函数n格式格式:printf (格式控制字符串格式控制字符串, 输出值列表输出值列
19、表)n功能:是功能:是按指定的输出格式按指定的输出格式把相应的参数值把相应的参数值在标准输出设备在标准输出设备(通常是终端)(通常是终端)上显示出来。上显示出来。n例:例:int a=12;float b=12.3;printf (“%d”,a); /输出输出 12printf (“%f”,b);/输出输出 12.3printf (“a=%d, b=%fn”, a, b); /输出输出 a=12, b=12.3,并回车换行并回车换行n说明:说明:n格式控制字符串格式控制字符串:普通字符、:普通字符、 转义字符、转义字符、%格式声明符格式声明符n输出值列表:输出值列表:列出列出%格式声明符格式声
20、明符中所对应的需要输出的值中所对应的需要输出的值原样输出原样输出输出输出输出值列输出值列表表中对应的值中对应的值原样输出原样输出212022-7-16%格式声明符格式声明符 结构图结构图 P38 P38%修饰修饰宽度宽度(m) 精度精度(.n) 长度修正长度修正 格式码格式码 a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,% l/L,h,ll,hh,j,z,t. . 一个十进制整数一个十进制整数 一个十进制整数一个十进制整数 -,0,+,空格空格,#主要学习主要学习int a=567; printf ( “%d”,a);int a=255; printf(“%x”,a);
21、int a=65; printf(“%o”,a);int a=567; printf(“%u”,a);char a=65; printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789; printf(“%e”,a);float a=567.789; printf(“%f”,a);float a=567.789; printf(“%g”,a);printf(“%”);567ff101567AABC5.67789e+02567.789000567.789%n 说明说明1.1.格式声明符要用格式声明符要用小写小写2.2.格式声明符格式声明符与与输出值列表输出值
22、列表个数应相同,个数应相同,按先后顺序一一对应按先后顺序一一对应3.3.输出转换输出转换: 输出值输出值与与格式声明符格式声明符类型不一致类型不一致, ,自动按自动按格式声明符格式声明符格式输出格式输出格式码格式码 表表 P39P39.n对实数对实数, ,指定小数点后位数指定小数点后位数( (四舍五入四舍五入) )修饰符修饰符功功 能能m输出数据域宽输出数据域宽, ,数据长度数据长度m,m,左补空格左补空格; ;否则按实际输出否则按实际输出输出数据在域内左对齐(缺省右对齐输出数据在域内左对齐(缺省右对齐) )-指定在有符号数的正数前显示正号指定在有符号数的正数前显示正号(+)(+)+输出数值时
23、指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填 0 00在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导 0 0,0 x0 x#在在d,o,x,u前,指定输出精度为前,指定输出精度为 long 型型在在e,f,g前,前, 指定输出精度为指定输出精度为 double 型型l其他修饰符其他修饰符 P38P38对字符串对字符串, ,指定实际输出位数指定实际输出位数例例 int a=1234; float f=123.456; printf(“%08dn”, a); printf(“%010.2fn”, f); printf(“%0+8dn”, a); printf(“
24、%0+10.2fn”, f); 0 、+例例 int a=123; printf(“%o,%#o,%X,%#Xn”,a,a,a,a); # / 00001234/ 0000123.46/ 000+1234 / 000+123.46/ 173,0173,7B,0X7B252022-7-16n例例2.3 分析以下程序的输出格式分析以下程序的输出格式 参考参考P39P39# include int main ( )int a=123,b=4567;long int c=123456,d=456789;printf (%d%dn,a,b);printf (%5d%2dn,a,b);printf (%-
25、5d%-5dn,a,b);printf (%ld%ldn,c,d);printf (%-8ld%8ldn,c,d); return 0;262022-7-16n例例2.4 分析以下程序的输出格式分析以下程序的输出格式 参考参考P40P40# include int main ( )printf (%10.5fn, 3.141592);printf (%10.5gn, 3.141592);printf (%5.10sn, 1234567890);printf (%10.8dn, 123456);return 0;272022-7-16n格式输入函数格式输入函数-scanf函数函数n格式:格式:s
26、canf ( 格式控制字符串格式控制字符串 , , 变量变量地址地址表表 )n功能:功能:按指定的输入格式按指定的输入格式通过标准输入设备(通常是通过标准输入设备(通常是键盘)键盘)把相应的值把相应的值传递给变量传递给变量n例:例: scanf ( %d%d, &a, &b);n格式控制字符格式控制字符: d, i, o, x, u ,c ,s, f, en变量变量地址地址表表 : 一一列出需要输入值的变量一一列出需要输入值的变量 常用取地址运算符常用取地址运算符 &例例 scanf(“%d”,&a); 输入输入:10 则则 a=10例例 scanf(“%x”,&a); 输入输入:11 则则
27、a=17282022-7-16格式说明格式说明 结构图结构图 P42P42292022-7-16常用的格式常用的格式码码 P42P42格式符格式符用用 法法%d或或%i 输入十进制数输入十进制数%o输入八进制数输入八进制数%x输入十六进制数输入十六进制数%c输入一个字符包括空格、回车、制表符等空字符输入一个字符包括空格、回车、制表符等空字符%s输入字符串,遇到第一个空白字符(空格、回车输入字符串,遇到第一个空白字符(空格、回车、制表符)结束、制表符)结束%f或或%e 输入实数,以小数指数形式都可输入实数,以小数指数形式都可%输入一个百分号输入一个百分号302022-7-16格式修饰符格式修饰符
28、用法用法l修饰格式符修饰格式符d, i, o, x, u,用于输入用于输入long型数据型数据修饰格式符修饰格式符f, ef, e,用于输入用于输入doubledouble型数据型数据L修饰格式符修饰格式符f, e,输入输入long double型数据型数据h修饰格式符修饰格式符d, i, o, x,用于输入用于输入short型数据型数据域宽域宽m指定输入数据的宽度,系统按次截取此宽度数据指定输入数据的宽度,系统按次截取此宽度数据*表示对应的输入项在读入后不赋给相应的变量表示对应的输入项在读入后不赋给相应的变量int a,b;scanf(%d%d,&a,&b);printf(%d,%d,a,b
29、);3 4 3,4int a,b;scanf(%d,%d,&a,&b);printf(%d,%d,a,b);3 , 4 3,4格式输入举例格式输入举例d d 格式符格式符注注意意例例当输入多个数据时,当输入多个数据时,若各个格式说明之间若各个格式说明之间没有没有其他字符,则系统默认使其他字符,则系统默认使用用空格键空格键、回车键回车键和和TabTab键键进行间隔;进行间隔;若格式说明之间若格式说明之间有有其他字符,则其他字符,则必须照原样输入必须照原样输入。3 4 3,4例例float a;scanf(%f, &a);printf(%f, a);输入:输入: 3.2 float a;scanf
30、(%3.2f, &a);printf(%f, a);格式输入举例格式输入举例f f 格式符格式符注注意意例例当输入浮点型数据时,当输入浮点型数据时,不能规定精度不能规定精度。如果指定了精度,编译时不会报错,如果指定了精度,编译时不会报错,但输入的数但输入的数据将不可预知。据将不可预知。3.200000输出:输出:输入输入: 3.218 -107374176.000000输出输出:例例虽然能执行,但是虽然能执行,但是失控了!失控了! char ch1,ch2,ch3;scanf(%c%c%c, &ch1,&ch2,&ch3);printf(ch1=%c,ch2=%c,ch3=%cn,ch1,ch
31、2,ch3);第四章第四章 顺序结构程序设计顺序结构程序设计格式输入举例格式输入举例c c 格式符格式符注注意意例例使用格式说明符使用格式说明符%c%c输入单个字符时,输入单个字符时,空格和转义字符均作为有效字符被输入空格和转义字符均作为有效字符被输入。输入输入: a b c ch1=a,ch2= ,ch3=b输出输出:其中:其中:ch2的值为空格。的值为空格。342022-7-16(1) scanf (%f%f, &x,&y); 参数地址参数地址正确:正确: scanf (%f%f, &x,&y); 参数地址错误:参数地址错误: scanf (“%f%f”, x, y ); (2) scan
32、f (x=%d,y=%d,&x,&y);想要使得想要使得x x和和y y的值分别为:的值分别为: 1、2正确输入正确输入: x=1,y=2 错误错误输入输入: 1,2 特别注意特别注意: 352022-7-16n例例2.6 输入多个字符并输出结果输入多个字符并输出结果 参考参考P43P43# include int main ( )char ch1,ch2;int a;printf (输入输入3个字符个字符);ch1=getchar ( );printf (ch1=%c,ch1); a=getchar ();printf (“a=%d”,a); / 得到的是字符的值得到的是字符的值printf
33、 (ch2=%cn, ch2=getchar( ); /getchar 作为函数参数作为函数参数return 0;例例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c); 输入:输入: 123 123 123 输出:输出: a=123,b=83,c=291例例 scanf(“%d:%d:%d”,&h,&m,&s); 输入:输入: 12:30:45 则则: 12 h, 30 m, 45 s例例 scanf(“%d,%d”,&a,&b) 输入:输入: 3,4 则:则: 3a, 4 b例例 scanf(“a=%d,b=%d,c=%d”
34、,&a,&b,&c); 输入:输入: a=12,b=24,c=36 则则: 12 a, 24 b, 36 c注意:注意:输入数据时遇以下情况该输入数据时遇以下情况该数据输入自动结束数据输入自动结束1. 1. 遇空格、遇空格、TABTAB、或回车、或回车2. 2. 遇宽度结束遇宽度结束3. 3. 遇非法输入遇非法输入例例 scanf(“%d%c%f”,&a,&b,&c);若输入:若输入: 1234a123o.26 则:则: 1234 a, a b, 123 c 注意:注意: 输入函数留下的输入函数留下的“垃圾垃圾”:例例 int x; char ch; scanf(“%d”,&x); ch=ge
35、tchar(); scanf(“%c”,&ch); printf(“x=%d,ch=%dn”,x,ch);执行执行:123 a 输出输出:x=123,ch=97例例 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%dn”,x,ch);执行执行: 123 a 输出输出: x=123,ch=10解决方法:解决方法: (1 1)用)用getchar()清除清除 (2) (2) 用格式串中空格来用格式串中空格来“吃掉吃掉”#include #include int main( ) float a,b,c,s,area;
36、 scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area); return 0;输入输入:3,4,6 输出:输出:a= 3.00, b= 4.00, c= 6.00, s= 6.50 area= 5.33)()()()(21csbsassareacbas文件包含预处理命令文件包含预处理命令变量定义变量定义输入数据输入数据输出数据输出数据例例 输入三角形
37、边长,求面积输入三角形边长,求面积#include int main( ) char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2); return 0;输入输入:A 输出输出:A,65 a,97例例 从键盘输入大写字母,用小写字母输出从键盘输入大写字母,用小写字母输出412022-7-16本章小结本章小结n数据类型数据类型n常量和变量常量和变量n常用函数常用函数n算术运算符和算术表达式算术运算符和算术表达式n赋值运算赋值运算n逗号表达式逗号表达式n数据类型转换数据类型转换n数据的输入、输出数据的输入、输出n综合举例综合举例