第三章 顺序结构程序设计 主讲教师 贾月乐 电话:13402866690
第三章 数据输入输出及顺序结构 C数据输入与输出的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计 3.1 3.2 3.2 3.3 第三章 数据输入输出及顺序结构 3.1 C数据输入与输出的实现 3.2 3.2 字符数据的输入输出 3.3 格式输入与输出 3.4 顺序结构程序设计 C语言程序设计——第一章 C语言概述 SCS-SWPU
3.1 C数据输入与输出的实现 (一)所谓输入输出是以计算机主机为主体而言的 输出:从计算机向外部输出设备(显示器,打印机) 输出数据。 输入:从输入设备(键盘,鼠标,扫描仪)向计算机 输入数据。 C语言程序设计——算法的描述 SCS-SWPU
3.1 C数据输入与输出的实现 (二)C语言本身不提供输入输出语句,输入和输出操 作是由C函数库中的函数来实现的 例如: 字符输入函数: getchar 字符输出函数: putchar 格式输入函数: scanf 格式输出函数: printf 字符串输入函数:gets 字符串输出函数:puts C语言程序设计——算法的描述 SCS-SWPU
3.1 C数据输入与输出的实现 (三)在使用系统库函数时,要用预编译命令 “#include”将有关的“头文件”包括到用户源 文件中 例如:在调用标准输入输出库函数时,应该有: #include “stdio.h” 或: #include <stdio.h> C语言程序设计——算法的描述 SCS-SWPU
第三章 数据输入输出及顺序结构 C数据输入与输出的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计 3.1 3.1 3.2 3.2 第三章 数据输入输出及顺序结构 3.1 3.1 C数据输入与输出的实现 3.2 3.2 字符数据的输入输出 3.3 格式输入与输出 3.4 顺序结构程序设计 C语言程序设计——第一章 C语言概述 SCS-SWPU
3.2 字符数据的输入输出 1 、putchar()函数的用法 putchar()是向标准输入输出设备上输出一个字符, 一般是显示器。 3.2 字符数据的输入输出 1 、putchar()函数的用法 putchar()是向标准输入输出设备上输出一个字符, 一般是显示器。 使用格式: putchar ( ch ) ; 已定义: int c ; c=‘A'; 若想输出字符a,可以用几种方式? putchar( c); 或 putchar(‘A’); 或 putchar(65); C语言程序设计——算法的描述 SCS-SWPU
3.2 字符数据的输入输出 例 输出单个字符。 #include<stdio.h> void main() { char a,b,c; a=‘B’;b=‘O’;c=‘Y’; putchar(a);putchar(b);putchar(c);putchar(‘\n’); } 运行结果:B O Y putchar(a);putchar(‘\n’);putchar(b);putchar(‘\n’);putchar(c);putchar(‘\n’); 运行结果:BOY C语言程序设计——算法的描述 SCS-SWPU
3.2 字符数据的输入输出 2、getchar( )函数的用法 从标准输入输出设备上输入一个字符,一般是键盘 3.2 字符数据的输入输出 2、getchar( )函数的用法 从标准输入输出设备上输入一个字符,一般是键盘 使用格式:ch=getchar( ); 键盘上输入的 数字、空格、回车、逗号等 都将作为一个字符输入 例 #include <stdio.h> void main() { char c; c= getchar(); putchar(c); } #include <stdio.h> void main() { putchar( getchar( ) ); } C语言程序设计——算法的描述 SCS-SWPU
第三章 数据输入输出及顺序结构 C数据输入与输出的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计 3.1 3.1 3.2 3.2 第三章 数据输入输出及顺序结构 3.1 3.1 C数据输入与输出的实现 3.2 3.2 字符数据的输入输出 3.3 格式输入与输出 3.4 顺序结构程序设计 C语言程序设计——第一章 C语言概述 SCS-SWPU
3.3 格式输出函数——printf 例如: printf(“a=%d,b=%f", a, b); 调用格式: 格式控制:格式说明(%格式字符)+普通字符 输出表列:即需要输出的数据,可以是表达式 例如: printf(“a=%d,b=%f", a, b); 普通字符 格式说明: %格式说明符 输 出 表 列 函数名 C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数—printf的格式字符 %s 输出字符串 %d 十进制有符号整数 %u 输出无符号十进制整数 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号 作用 ───────────────────────────────────────────────── %c 单个字符 %s 输出字符串 %d 十进制有符号整数 %u 输出无符号十进制整数 %o 无输出无符号八进制整数(不输出前缀0) %x, %X 输出无符号十六进制整数 (不输出前缀0x) %f 输出十进制float数,不带域宽时,保留6位小数 %lf 输出十进制double数,不带域宽时,保留6位小数 %le 以“科学记数法”的形式输出double数 如2.4e+02 %e 以“科学记数法”的形式输出float数 如2.4e+02 %g 选用e或f格式中较短的一个输出浮点数,不输出无效零 %p 指针的值 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——printf d格式符——按十进制整数的实际长度输出数据 #include "stdio.h" /*包含头文件*/ main ( ) /*主函数*/ { int x,y,z; /*定义变量*/ x=3; y=1; /* 给变量赋值 */ z=x+y; /* 求a与b的和 */ printf (“%d+ %d=%d\n”,x,y,z); /* 输出结果 */ } C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——printf m: 域宽,即输出项在输出设备上所占的宽度 n: 精度 若实际位数多于定义的宽度:则按实际位数输出。 若实际位数少于定义的宽度:默认右对齐,有负号左对齐 n: 精度 输出实型数据,n指定实型数据所占的小数位数 输出字符串,n指定最多输出的字符个数 C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——格式字符的修饰 标志:-、+、#、空格、0的意义如下所示: + 输出符号(正号或负号)(只对十进制数) 3.3 格式输出函数——格式字符的修饰 标志:-、+、#、空格、0的意义如下所示: - 结果左对齐,右边填空格 + 输出符号(正号或负号)(只对十进制数) 空格 输出值为正时冠以空格,为负时冠以负号 # 对c,s,d,u类无影响;对o类,在输出时加前缀 0;对x类,在输出时加前缀0x;对e,g,f 类,确保出现小数点,即使无小数位时亦如此 0 右对齐输出数据时,不够宽度补0 C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——printf 在输出的数字中并非全部数字都是有效数字 #include "stdio.h" void main() { float f,g; f = 1.27; g = 23.2; printf("%f + %f = %f\n",f,g,f + g); } 在输出的数字中并非全部数字都是有效数字 单精度实数的有效位数一般为7位; 双精度实数的有效位数一般为16位 printf("%2.2f + %2.2f = %4.2f\n",f,g,f + g); C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——printf 例1: printf(“%d,%4d,%-4d,%4d”,a,a,a,b); 则输出结果是:123,□123,123□,12345 例2: printf("%lf, %8.2lf\n",b,b); 若b=123.4567 则输出结果是:123.456700, □□123.46 例3: printf(“%s, %8s,%8.3s”, “china” , “china” , “china” ); 则输出结果是:china, □□□china, □□□□□chi C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——printf printf 函数的注意事项 格式控制必须与输出项匹配,否则不能正确输出 请判断下列输出是否正确: main() { int a=65; printf("%d\n",a); } main() { int a=65; printf("%f",a); } main() { int a=65; printf("%c",a); } C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输出函数——printf C语言规定,在格式控制字符串中若连续出现两个“%”,系统视为一个“%”字符输出。 例如: main() { int x,y; x=11/3;y=5; printf("%%d,%%%d\n",x, y); } 程序的运行结果为: %d,%3 C语言程序设计——算法的描述 SCS-SWPU
scanf("%d,%f”, &a,&b); 3.3 格式输入函数——scanf 格式输入函数 scanf (格式控制字符串, 地址表列); “格式控制”的含义同printf函数; “地址表列”是由若干个地址组成的表列 scanf("%d,%f”, &a,&b); 地址表列 格式说明 C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输入函数——scanf 符号 作用 %s 输入字符串 %d 输入十进制有符号整数 %u 输入无符号十进制整数 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号 作用 ──────────────────────── ───────────────────── %c 输入单个字符 %s 输入字符串 %d 输入十进制有符号整数 %u 输入无符号十进制整数 %o 无输入无符号八进制整数(不输出前缀0) %x, %X 输入无符号十六进制整数 (不输出前缀0x) %f,%e 以小数或指数形式输入float型数据 %lf,%le 以小数或指数形式输入double型数据 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ C语言程序设计——算法的描述 SCS-SWPU
3.3 格式输入函数——scanf 例 用scanf函数输入数据。 #include<stdio.h> void main() { int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%d\n”,a,b,c); } a在内存中的地址 &是地址运算符 C语言程序设计——算法的描述 SCS-SWPU
使用scanf函数的注意事项 (1)scanf( )函数可以设置输入宽度,不能设置精度 float a; scanf(“%4f”,&a); 正确 scanf(“%4.2f”,&a);是非法的 (2)scanf()函数中一定给出变量地址,不可是变量名,否则出错。 如: scanf(“%d”,a); 错 scanf(“%d”,&a); 对 (3)输入多个数据时,格式控制串中没有非格式字符,则输入时数据间的分隔符可用空格、TAB键、回车键。 如: scanf(“%d%d%f”,&a,&b,&c); C语言程序设计——算法的描述 SCS-SWPU
使用scanf函数的注意事项 (4)用连续%c输入字符数据时,任意字符都有效 scanf(“%c%c%c”,&a,&b,&c); printf(“a=%c,b=%c,c=%c”,a,b,c); 输入:A,B,C 输出:a=A,b=,,c=B (5)如果格式控制字符串中有非格式字符,则输入时也要输入非格式字符。 scanf(“%d,%d,%d”,&a,&b,&c); 输入应为:5,6,7 若为:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 输入应为:a=5,b=6,c=7 C语言程序设计——算法的描述 SCS-SWPU
使用scanf函数的注意事项 (6) 输入输出格式控制符必须匹配,否则不能正确输出 main() { int a; float b; (6) 输入输出格式控制符必须匹配,否则不能正确输出 设:从键盘输入:10 20.5<CR> ,分析各程序的输出 main() { int a; float b; scanf("%d%f",&a,&b); printf("%d,%f\n",a,b); } main() { int a; float b; scanf("%d%d",&a,&b); printf("%d,%f",a,b); } main() { int a; float b; scanf("%d%d",&a,&b); printf("%d,%d",a,b); } C语言程序设计——算法的描述 SCS-SWPU
使用scanf函数的注意事项 (7)遇到宽度设置,认为数据输入结束 void main() 123.000000,456 { int x; double m; scanf("%4lf%d",&m,&x); printf("%lf,%d\n",m,x); } 若输入123.456 □ 23,则输出结果是? 123.000000,456 C语言程序设计——算法的描述 SCS-SWPU
3.3 输入输出函数——练习 scanf("%d %d", &a, &b); #include <stdio.h> main() { int a, b; scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b); } scanf(“%2d%2d”, &a, &b); scanf(“a = %d, b = %d”, &a, &b); 问题2:语句scanf("%d %d", &a, &b); 修改为scanf(“a = %d, b = %d”, &a, &b);时, 用户应该如何输入数据? 问题3:限定用户输入数据为以下格式为 1234↙ 同时要求程序输出结果为a = 12, b = 34 问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据? C语言程序设计——算法的描述 SCS-SWPU
第三章 数据输入输出及顺序结构 C数据输入与输出的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计 3.1 3.1 3.2 3.2 第三章 数据输入输出及顺序结构 3.1 3.1 C数据输入与输出的实现 3.2 3.2 字符数据的输入输出 3.3 格式输入与输出 3.4 顺序结构程序设计 C语言程序设计——第一章 C语言概述 SCS-SWPU
3.4 顺序结构程序设计 例、输入三角形的三边长,求三角形面积。 假设:三个边长a,b,c能构成三角形。 已知面积公式: 3.4 顺序结构程序设计 例、输入三角形的三边长,求三角形面积。 假设:三个边长a,b,c能构成三角形。 已知面积公式: s=(a+b+c)*0.5 area= 开始 输入三边长 计算s 计算面积 结束 C语言程序设计——算法的描述 SCS-SWPU
3.4 顺序结构程序设计 #include<stdio.h> #include<math.h> void 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.2f\n″,a,b,c,s); printf(″area=%7.2f\n″,area); } 数学函数库 因为要用到其中的sqrt函数 C语言程序设计——算法的描述 SCS-SWPU
本章小结 格式输入输入函数 字符输入输出函数 顺序结构程序设计 标准输出函数printf 标准输入函数scanf 字符输出函数putchar 字符输入函数getchar 顺序结构程序设计 C语言程序设计——算法的描述 SCS-SWPU
作业 完成P56 课后习题4.1-4.3 C语言程序设计——算法的描述 SCS-SWPU
本章相关英语词汇学习 C语言程序设计——算法的描述 SCS-SWPU
Thank You !