第2章 C语言程序设计基础2019年3月(第4周).ppt
n例例:已知圆的半径已知圆的半径,求面积求面积#include int main()float r,s;scanf(“%f”,&r);s=3.1415*r*r;printf(“面积是:面积是:%f n”,s);return 0;本章任务:本章任务:C C语言程序设计语言程序设计基础基础2.12.1数据类型数据类型2.22.2常量和变量常量和变量2.32.3常用函数常用函数2.52.5赋值表达式赋值表达式2.42.4算术表达式算术表达式2.82.8输入输出输入输出上次课内容提要上次课内容提要2.72.7数据类型转换数据类型转换2.62.6逗号表达式逗号表达式22022/10/25n input、outputn由输入、输出函数实现由输入、输出函数实现 简单精准、合理人性化简单精准、合理人性化n输出函数输出函数 printf、putchar 等等n输入函数输入函数 scanf、getchar 等等n 使用前必须包含头文件使用前必须包含头文件#include 2.8 数据的输入、输出数据的输入、输出P39P39作用作用:向向显示器显示器输出一个字符。输出一个字符。n单个字符的输出单个字符的输出putchar函数函数P39P39格式格式:putchar(ch);n单个字符的输入单个字符的输入getchar函数函数P40P40作用:作用:从从键盘键盘输入一个字符输入一个字符。格式:格式:getchar();42022/10/25n格式输出函数格式输出函数printf函数函数P41P41n格式格式:printf(格式控制字符串格式控制字符串,输出值列表输出值列表)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输出值列表:输出值列表:列出列出%格式声明符格式声明符中所对应的需要输出的值中所对应的需要输出的值原样输出原样输出输出输出输出值列输出值列表表中对应的值中对应的值原样输出原样输出52022/10/25%格式声明符格式声明符 结构图结构图P42P42%修饰修饰宽度宽度(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);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.格式声明符格式声明符与与输出值列表输出值列表个数应相同,个数应相同,按先后顺序一一对应按先后顺序一一对应 P43P433.3.输出转换输出转换:输出值输出值与与格式声明符格式声明符类型不一致类型不一致,自动按自动按格式声明符格式声明符格式输出格式输出格式码格式码 表表.n对实数对实数,指定小数点后位数指定小数点后位数(四舍五入四舍五入)修饰符修饰符功功 能能m输出数据域宽输出数据域宽,数据长度数据长度m,m,左补空格左补空格;否则按实际输出否则按实际输出输出数据在域内左对齐(缺省右对齐输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号指定在有符号数的正数前显示正号(+)(+)+输出数值时指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填 0 00在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导 0 0,0 x0 x#在在d,o,x,u前,指定输出精度为前,指定输出精度为 long 型型在在e,f,g前,前,指定输出精度为指定输出精度为 double 型型l其他修饰符其他修饰符对字符串对字符串,指定实际输出位数指定实际输出位数例例 int a=1234;float f=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“%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,0X7B92022/10/25n例例 分析以下程序的输出格式分析以下程序的输出格式#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(%-5d%-5dn,a,b);printf(%ld%ldn,c,d);printf(%-8ld%8ldn,c,d);return 0;102022/10/25n格式输入函数格式输入函数-scanf函数函数P45P45n格式:格式:scanf(格式控制字符串格式控制字符串 ,变量变量地址地址表表 )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 则则 a=17112022/10/25scanf函数函数格式说明格式说明%宽度宽度宽度宽度长度修正长度修正长度修正长度修正格式码格式码格式码格式码a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,%a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,tl/L,h,ll,hh,j,z,t一个十进制整数一个十进制整数一个十进制整数一个十进制整数122022/10/25常用的格式常用的格式码码格式符格式符用用 法法%d或或%i 输入十进制数输入十进制数%o输入八进制数输入八进制数%x输入十六进制数输入十六进制数%c输入一个字符包括空格、回车、制表符等空字符输入一个字符包括空格、回车、制表符等空字符%s输入字符串,遇到第一个空白字符(空格、回车、输入字符串,遇到第一个空白字符(空格、回车、制表符)结束制表符)结束%f或或%e 输入实数,以小数指数形式都可输入实数,以小数指数形式都可%输入一个百分号输入一个百分号132022/10/25常用的格式常用的格式修饰符修饰符格式修饰符格式修饰符用法用法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);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(%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,ch2,ch3);第四章第四章 顺序结构程序设计顺序结构程序设计格式输入举例格式输入举例c c 格式符格式符注注意意例例使用格式说明符使用格式说明符%c%c输入单个字符时,输入单个字符时,空格和转义字符均作为有效字符被输入空格和转义字符均作为有效字符被输入。输入输入:a b c ch1=a,ch2=,ch3=b输出输出:其中:其中:ch2的值为空格。的值为空格。172022/10/25(1)scanf(%f%f,&x,&y);参数地址参数地址正确:正确:scanf(%f%f,&x,&y);参数地址错误:参数地址错误:scanf(“%f%f”,x,y);(2)scanf(x=%d,y=%d,&x,&y);想要使得想要使得x x和和y y的值分别为:的值分别为:1、2正确输入正确输入:x=1,y=2 错误错误输入输入:1,2 特别注意特别注意:P46 182022/10/25n例例 输入多个字符并输出结果输入多个字符并输出结果#include int main()char ch1,ch2;int a;printf(输入输入3个字符个字符);ch1=getchar();printf(ch1=%c,ch1);a=getchar();printf(“a=%d”,a);/得到的是字符的值得到的是字符的值printf(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”,&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=getchar();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;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文件包含预处理命令文件包含预处理命令变量定义变量定义输入数据输入数据输出数据输出数据例例 输入三角形边长,求面积输入三角形边长,求面积#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例例 从键盘输入大写字母,用小写字母输出从键盘输入大写字母,用小写字母输出242022/10/25本章小结本章小结n数据类型数据类型n常量和变量常量和变量n常用函数常用函数n算术运算符和算术表达式算术运算符和算术表达式n赋值运算赋值运算n逗号表达式逗号表达式n数据类型转换数据类型转换n数据的输入、输出数据的输入、输出n综合举例综合举例