您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 第04章-顺序结构程序设计
2020/2/281第4章顺序结构程序设计数据处理的一般过程是:输入→处理→输出。在C语言中,输入输出操作是由编译系统提供的库函数来实现。教学目的:掌握printf()、scanf()函数,以及顺序结构程序设计。2020/2/282教学内容:4.1*格式化输出——printf()函数4.2*格式化输入——scanf()函数4.3顺序结构程序设计本章要点本章作业与上机实践2020/2/2834.1*格式化输出——printf()函数4.1.1printf()函数的一般格式[案例4.1]已知圆半径radius=1.5,求圆周长(2πr)和圆面积(πr2)。2020/2/284#include“stdio.h”#include“conio.h”voidmain(){floatradius=1.5,length,area,pi=3.14;length=2*pi*radius;area=pi*radius*radius;printf(“radius=%f\n”,radius);printf(“length=%7.2f,area=%7.2f\n”,length,area);getch();}radius=1.500000length=9.42,area=7.072020/2/285printf()函数的一般格式:printf(格式字符串[,输出项表]);1.格式字符串(1)格式指示符:%[标志][宽度][.精度][F|N|h|L]类型例如,%7.2f。各类常用指示符,参见表3-1至表3-5。2020/2/286在表3-1中,最常用的标志字符是“-”:左对齐,右端补空格。缺省时为右对齐,左端补空格。在表3-2中,最常用宽度字符“n”:指定输出域的宽度。若超长,则按实际宽度输出;若不足,则补空格。在表3-3中,最常用精度字符“.n”:指定保留的小数位数(实数,超长则4舍5入),或截取左起的前n个字符(字符串)。在表3-4中,最常用的长度字符“l”:长整型。2020/2/287在表3-5中,最常用的数据类型转换字符如下表所示:数据类型类型转换字符功能整数d带符号十进制整数实数f十进制小数形式(默认6位小数)字符c输出1个字符s输出1个字符串2020/2/288(2)转义字符。特点:通常是产生一个控制操作。例如,转义字符'\n',输出时产生一个“换行”操作。(3)普通字符──除格式指示符和转义字符之外的其它字符。特点:原样输出。例如,“radius=”、“length=”、“area=”、“,”。2020/2/2892.输出项表如果不止1个,则相邻2个之间用逗号分开。下面的用法都是合法的:(1)printf(Iamastudent.\n);(2)printf(%d,3+2);(3)printf(a=%fb=%5d\n,a,a+3);2020/2/28103.1.2常用的类型转换字符输出不同类型数据,要使用不同类型转换字符。2020/2/28111.类型转换字符d──以带符号的十进制整数形式输出。[案例3.2]类型转换字符d的使用。#include“stdio.h”#include“conio.h”voidmain(){intnum1=123;longnum2=123456;printf(num1=%d,num1=%5d,num1=%-5d,num1=%2d\n,num1,num1,num1,num1);printf(num2=%ld,num2=%8ld,num2=%5ld\n,num2,num2,num2);printf(num1=%ld\n,num1);getch();}2020/2/2812程序运行结果如下:num1=123,num1=□□123,num1=123□□,num1=123num2=123456,num2=□□123456,num2=123456num1=16908411(1)格式指示符,必须与输出项的数据类型一致,否则会引起输出错误。(2)对于整数,还可用%o(八进制无符号形式)、%x(十六进制无符号形式)、%u(十进制无符号形式)输出。类型匹配错误,输出结果是随机的。2020/2/28132.类型转换字符f──以小数形式输出实数。[案例3.3]类型转换字符f的使用。#include“stdio.h”#include“conio.h”voidmain(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf(%f,%12f,%12.2f,%-12.2f,%.2f\n,f,f,f,f,f);printf(d1+d2=%f\n,d1+d2);getch();}2020/2/2814程序运行结果如下:123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46d1+d2=3333333333333.333010提示:对于实数也可使用%e,以标准指数形式输出;或使用%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。2020/2/28153.类型转换字符c──输出1个字符(占1列宽度)[案例3.4]类型转换字符c的使用。#include“stdio.h”#include“conio.h”voidmain(){charc='A';inti=65;printf(c=%c,%5c,%d\n,c,c,c);printf(i=%d,%c,i,i);getch();}程序运行结果如下:c=A,□□□□A,65I=65,A2020/2/28164.类型转换字符s──输出一个字符串。[案例3.5]类型转换字符s的使用。#include“stdio.h”#include“conio.h”voidmain(){printf(%s,%5s,%-10s,Internet,Internet,Internet);printf(%10.5s,%-10.5s,%4.5s\n,Internet,Internet,Internet);getch();}程序运行结果如下:Internet,Internet,Internet□□,□□□□□Inter,Inter□□□□□,Inter注意:系统输出字符(串),不输出单引号和双引号。2020/2/28173.1.3使用说明1.格式指示符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如,printf(str=%s,f=%d,i=%f\n,Internet,1.0/2,3+5,CHINA);是错误的。2.类型转换字符的紧前字符不是“%”时,将作普通字符处理(原样输出)。例如,“printf(”c=%c,f=%f\n“,c,f);”中的第一个c和f,都是普通字符。2020/2/28183.类型转换字符x、e、g,大小写均可。大写时,输出数据中包含的字母也大写。其它类型转换字符,必须小写。例如,%f不能写成%F。[返回]2020/2/28193.2*格式化输入——scanf()函数3.2.1一般格式[案例3.6]已知圆柱体的底半径radius=1.5,高high=2.0,求其体积(πr2h)。2020/2/2820#include“stdio.h”#include“conio.h”voidmain(){floatradius,high,pi=3.14159,vol;radius=1.5;high=2.0;vol=pi*radius*radius*high;printf(“vol=%7.2f\n”,vol);getch();}思考:使用赋值语句给出初值的方式的局限性?2020/2/2821[案例3.7]已知圆柱体的底半径为radius、高为high,求其体积。#include“stdio.h”#include“conio.h”voidmain(){floatradius,high,vol,pi=3.1415926;printf(Pleaseinputradius&high:);scanf(%f%f,&radius,&high);vol=pi*radius*radius*high;printf(radius=%7.2f,high=%7.2f,vol=%7.2f\n,radius,high,vol);getch();}Pleaseinputradius&high:1.5□2.0↙radius=□□□1.50,high=□□□2.00,vol=□□14.142020/2/2822给计算机提供数据,可以使用:(1)赋值语句。只能解决1个特定的问题。例如,[案例3.6]。(2)输入函数scanf()。能解决1类特定的问题。例如,[案例3.7]。显然,采用scanf()函数,使得程序具有更好的适应性。2020/2/2823scanf()函数的一般格式:scanf(格式字符串,输入项首地址表);(1)格式字符串●格式指示符:与printf()函数的相似;●普通字符:必须原样输入。2020/2/2824(2)输入项首地址表可以是变量首地址、数组名,或者指针变量。变量首地址的表示:&变量名相邻2个输入项首地址,用逗号分开。地址运算符2020/2/28253.2.2数据输入操作(假设num1=12、num2=36)1.默认分隔符——空格、Tab键、回车如果不指定分隔符(例如逗号、冒号),则使用默认分隔符。例如,scanf(%d%d,&num1,&num2);正确的输入操作为:12□36↙或者:12↙36↙2020/2/28262.普通字符——务必原样输入。(1)scanf(%d,%d,&num1,&num2);正确的输入操作为:12,36↙(2)scanf(num1=%d,num2=%d\n,&num1,&num2);正确的输入操作为:num1=12,num2=36\n↙提示:scanf()格式字符串中,没有转义字符概念。比较(1)、(2)两种设计方式的优缺点?2020/2/2827比较(1)、(2)两种设计方式的优缺点?(1)仅输入数据,输入量小,但人机交互性差(用户不知道该输入什么,以及输入给谁)。(2)同时输入说明和数据,人机交互友好性好,但输入量大。思考:如何改进设计,既保持良好的人机交互性,又不增加输入量?2020/2/2828提高人机交互性的设计思路:先用printf()函数输出提示信息,再用scanf()函数进行数据输入。scanf(num1=%d,num2=%d\n,&num1,&num2);printf(num1=);scanf(%d,&num1);printf(num2=);scanf(%d,&num2);2020/2/28293.使用“%c”输入时,空格和转义字符均作为有效字符被输入。例如:scanf(%c%c%c,&ch1,&ch2,&ch3);printf(ch1=%c,ch2=%c,ch3=%c\n,ch1,ch2,ch3);思考:假设输入“A□B□C”,printf()输出的内容是什么?输出结果:ch1=A,ch2=□,ch3=B[返回]2020/2/28303.3顺序结构程序设计顺序结构程序一般包括两部分:1.程序开头的编译预处理命令。如果要在程序中使用标准库函数,则必须使用编译预处理命令#include,将相应的头文件包含进来。2020/2/28312.函数体主要包括:(1)变量定义语句;(2)输入语句;(3)运算语句;(4)输出语句。3.执行流程:各语句是按照物理位置次序,被顺序执行,且每个语句都会被执行到。2020/2/2832[案例]输入3个整数,求它们的和及平均值。#include“stdio.h”#include“conio.h”voidmain(){intnum1,num2,num3,sum;floataver;printf(Pleaseinputthreenumbers:);scanf(%d,%d,%d,&num1,&num2,&num3);sum=num1+num2+num3;/
本文标题:第04章-顺序结构程序设计
链接地址:https://www.777doc.com/doc-4044501 .html