第三章 顺序结构程序设计
- 格式:doc
- 大小:84.50 KB
- 文档页数:7
第三章顺序结构程序设计一、输出函数printf的使用使用的格式:printf(“输出格式串”,表达式表); /*printf要小写*/重点掌握输出格式符① 格式符:%d 以普通整型输出(不可以写成%D)%md 以普通整型输出,数据占m位,右对齐%+md 以普通整型输出,数据占m位,右对齐(正数的前面有+号)%-md 以普通整型输出,数据占m位,左对齐%hd 以短整型输出%ld(或%Ld) 以长整型输出%u 以无符号整型输出%o 以八进制形势输出%x(或%X) 以十六进制形势输出%f 以单精度小数形势输出,点后6位小数%lf(或%Lf或%f) 以双精度小数形势输出,%±m.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入%.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入%c 以字符形式输出%s 以字符串形式输出说明:以上的常用格式符必须和后面的变量一一对应,并且后面的变量是什么类型前面就必须用相应的格式符例:int a=-2;unsigned int b=30;float c=3.1456;printf(“%d%u%5.2f”,a,b,c); 问:输出结果是什么?(-230 3.15)②普通字符普通字符原样输出,它不控制变量的输出。
printf(“a=%d,b=%u,c=%5.2f”,a,b,c); 问:输出结果是什么?③转义字符\n 回车且换行\r 回车但不换行\b 退一个字符\t 走一个制表位(8个字符)\\ 转译成\\’转译成’\”转译成”%% 转译成%\ddd 转译成1~3位八进制所对应的ascii码值所代表的字符\xdd 转译成1~2位十六进制所对应的ascii码值所代表的字符二、输入函数scanf的使用格式:scanf(“格式串”,变量地址列表);重点掌握输入格式(有格式符和普通字符,没有转义字符)① 格式符:%d 以普通整型输入%ld(%Ld) 以长整型输入%hd 以短整形输入%md 取整型的m位%u 以无符号型输入%o 以八进制输入%x(%X) 以十六进制输入%f 以单精度小数输入%lf(%Lf) 以双精度小数输入%mf 以单精度小数输入(但是不能规定它的精度。
第三章顺序结构程序设计3.1 基本要求z掌握C语言中使用最多的一种语句——赋值语句的使用方法。
z掌握各种类型数据的输入输出的方法,并能正确使用各种格式转换符。
z掌握文件包含预处理命令#include。
3.2 内容小结本章主要介绍了一些为编写简单程序所必须的语句及基本的输入输出方法。
它们是C语言中5类基本语句:控制语句、函数调用语句、表达式语句、空语句和复合语句。
格式输入输出函数scanf( )和printf( ):在C语言中没有专用的输入输出语句,但可通过调用输入输出函数及C系统提供的9种格式字符,进行各种类型数据、各种格式的输入输出。
单个字符的输入输出函数getchar( )和putchar( )。
文件的包含:函数是C程序的构成单元,C程序中的函数调用可分为两类,本源程序中函数的调用和非本源程序中函数的调用,如是后者需用#include 文件包含预处理命令把该函数所在的源文件包含到本源文件中来。
3.3 典型例题分析z例题1 printf( )函数的功能main( ){ int a , b;a=10;b=25;printf(“a=%d b=%d\n”,a,b);printf(“a+b=%d\na-b=%d\n”,a+b,a-b);}运行结果:a=10 b=2529a+b=35a-b=-15从上例中可以看出,转换说明符不仅规定了输出格式,而且也决定了输出项在整个输出信息中的位置。
此外,从上例也可以看出,输出项还可以是运算表达式,这时输出的是它的运算结果值。
z例题2 scanf( )函数的功能main( ){ int x, y;printf(“Enter integer x:”);scanf(“%d”,&x);printf(“Enter integer y:”);scanf(“%d”,&y);printf(“x+y=%d\n”,x+y);printf(“x-y=%d\n”,x-y);}该程序是以人机对话方式给变量x和y赋值,它的某次运行情况如下所示:Enter integer x:16〈CR〉Enter integer y:25〈CR〉x+y=41x- y=-9其中划有下横线的部分是从键盘打入的字符,其中〈CR〉表示回车键。
第三章顺序结构程序设计一、结构化程序设计:1.程序是命令的有序集合,命令执行的顺序即程序的结构。
2.在结构化程序设计中,把所有程序的逻辑结构归纳为三种:顺序结构、选择结构和循环结构。
3.结构化程序设计概述:结构化程序设计的原则:自顶向下→逐步细化→模块化设计(所谓模块化设计,就是按模块组装的方法编程。
把一个待开发的软件分解成若干个小的简单部分,称为模块。
)→结构化编码(编码俗称编程序)。
二、算法:1. 算法就是一种在有限的步骤内解决问题或完成任务的方法。
2. 计算机程序就是告诉计算机如何去解决问题或完成任务的一组详细的、逐步执行的指令集合。
3. 数据时操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。
4. 算法的流程成图表示法:起止框:输入/输出操作:判断框:流程线:5. 基本算法:累加,累乘,求最大或最小值。
穷举:穷举就是一种重复型算法。
它的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。
迭代:是一个不断用新值取代变量的旧值,由旧值递推出变量的新值过程。
递归:算法自我调用的过程,一种算法是否称为递归,关键取决于该算法定义中是否有它本身。
排序:是在待排序记录中按照一定次序排列数据的过程。
查找:是在数据列表中确定目标所在位置的过程。
(顺序查找:可在任何列表中查找,对半查找:要求列表是有序的)三、C语句概述:1. 表达式语句:在各种表达式后加一个分号构成的语句。
2. 函数调用语句:在函数调用的一半形式后加一个分号构成的语句,其作用是完成特定的功能。
一般形式:函数名(实参表);3. 空语句:只有一个分号的语句称为空语句,其形式如:;空语句在语法上占据一个语句的位置,但是它不具备任何操作功能。
4. 复合语句:用一对花括号“{}”将多条语句括起来构成的语句体。
形式{语句组}5. 控制语句:C程序设计中用来构成分支结构和循环结构并完成一定控制功能的语句。
●条件语句:if …else。
●多分支选择语句:switch●当型循环语句:while,for●直到循环型循环语句:do…while●终止本次循环语句:continue●终止整个循环或跳出switch语句:break●无条件转移语句:goto●函数返回语句:return四、输入/输出语句:1. C语言不提供输入/输出语句,它的输入/输出操作是由输入/输出函数调用语句来实现的。
2. 常用的标准输入/输出函数有两种:●用于格式输入/输出的函数(scanf()/printf())。
●用于字符输入/输出的函数(getchar()/putchar())。
●这里所谓的标准输入/输出是指以系统隐含指定的输入/输出设备作为输入/输出设备的,例如:对于微型计算机,是指键盘和显示器。
3. 格式化输出函数printf()1) Printf()函数:①调用形式:printf(格式字符串,输出项表);②功能:按格式字符串中的格式依次输出输出项表中的各输出项表中的各输出项。
③说明:●字符串是用双引号括起来的一串字符。
●格式字符串用来说明输出项表中各输出项的输出格式。
●输出项表列出要输出的项,各输出项之间要用逗号分开。
●若没有输出项表,且格式字符串不含格式信息,则输出的是格式字符串本身。
2) 格式字符串:●非格式字符:非格式字符(或称普通字符)一律按原样输出。
●格式字符:格式字符的形式:%[附加格式说明符]格式符格式符功能d 输出带符号的十进制整数o 输出无符号的八进制整数x 输出无符号的十六进制整数u 输出无符号的十进制整数c 输出单个字符s 输出一串字符(若字符串长度超过指定的精度则自动突破,不会截断字符串)f 输出实数(默认6位小数)(单精度和双精度)e 以指数形式输出实数(尾数1位整数,默认6位小数,指数至多3位)g 选择f与e格式中输出宽度较小的格式输出,且不输出无意义的0p 输出变量的内存地址% 也就是%%形式,输出一个%附加格式说明符功能m(m为正整数) 数据输出宽度为m,如数据宽度超过m,按实际输出.n(n为正整数) 对实数,n是输出的小数位数,对字符串,n表示输出前n个字符l ld输出long型数据,If和le输出double型数据h用于格式符d、o、u、x或X,表示对应的输出项是短整型- 数据左对齐输出,无-是默认右对齐输出。
3) 每个格式说明都必须用“%”开头,以一个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左左对齐符号“—”、前导零符号“0”等。
4) 注意:●%o不带先导0,例如十进制数15用%o输出为17,%#o加先导0,例如十进制数15用%#o输出为017●同理:%#x或%#X输出带先导0x或0X的十六进制数。
E或e:以指数形式输出浮点数(单精度和双精度),格式是:[—]m.dddddde xx。
小数位数(d的个数)由输出精度决定,隐含的精度是6.若指定的精度为0,则包括小数点在内的小数部分都不输出。
Xxx为指数,保持3位,不足补0.若指数为0,输出指数是0005)长度修饰符:在%和格式字符之间,可以加入长度修饰符,以保证数据输出格式的正确和对齐。
对于长整形即%ld;对于短整型数可以加h,即%hd。
4、输出数据所占的宽度说明:当使用%d,%c,%f…的格式说明时,输出数据所占的宽度(域宽)由系统决定,通常按照数据本身的实际宽度输出,前后不加空格,并采用右对齐的形式。
也可以用以下三种方法人为控制:1) 在%和格式字符之间插入一个整数常数来指定输出的宽度n(%4d,n代表整数4)。
如果指定的宽度n不够,输出时将会自动突破,保证数据完整输出。
如果指定的宽度n超过输出数据的实际宽度,输出时将会右对齐,左边补以空格,达到指定的宽度。
2) 对于float和double类型的实数,可以用“n1,n2”的形式来指定输出宽度(n1和n2分别代表一个正常数),其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,n2也称为精度。
(%12.4f,n1代表整数12,n2代表整数4)。
3) 对于f、e、E,当输出数据的小数位多于n2位时,截取右边多于的小数,并对截取部分的第一位小数做四舍五入处理;当输出数据的小数位少于n2时,在小数的最右边补0,使得输出数据的小数部分宽度为n2.若给出的总宽度n1小于n2加上整数位数和小数点(e或E格式还要加上指数的5位),则自动突破n1的限制;反之,数字右对齐,左边补空格。
4) 也可以用“.n2”格式(%.6f),不指定总宽度,仅指定小数部分的输出位数,由系统自动突破,按照实际宽度输出、如果指定“n1.0”或“.0”格式,则不输出小数点和小数部分。
5) 对于g或G,宽度用来指定输出的有效数字位数。
若宽度超过数字的有效数字位数,则左边自动补0;若宽度不足,则自动突破。
不指定宽度,将自动按照6位有效数字输出,截取右边多余的小数,并对截取部分的第一位小数做四舍五入处理。
6) 对于整型数,若输出格式是“0n1”或“.n2”格式,(%05d或%.5d),则如果指定的宽度超过输出数据的实际宽度,输出时将会右对齐,左边补0、7) 对于float和double类型的实数,若用“0n1.n2”格式输出(%012.4f),如果给出的总宽度n1大于n2加上整数位数和小数点(e或E格式还要加上指数的4位),则数字右对齐,左边补0。
8) 对于字符串,格式“n1”指定字符串的输出宽度,若n1小于字符串的实际长度,则自动突破,输出整个字符串;若n1大于字符串的实际长度,则右对齐,左边补空格。
若用“.n2”格式指定字符串的输出宽度,则若n2小于字符串的实际长度,将只输出字符串的前n2个字符。
9) 输出数据左对齐:由于输出数据都隐含右对齐,如果想左对齐,可以在格式控制中的“%”和宽度之间加一个“—”号来实现。
10) 使输出数据总带+号或—号:通常输出的数据如果是负数,前面有符号“—”,但正数前面的“+”一般都省略了。
如果要每一个数前面都带正负号,可以在“%”和格式字符间加一个“+”号来实现。
11) 符合语句:一个符合语句在语法上视为一条语句,在一对花括号内的语句数量不限。
5、使用printf函数时的注意事项:1) Printf的输出格式为自由格式,是否在两个数之间留逗号、空格或回车、完全取决于格式控制,如果不注意,很容易造成数字连在一起,使得输出结果没有意义。
例如:若K=1234,f=123.456,则printf("%d%d%f\n",k,k,f);语句的输出结果是:12341234123.456,无法分辨其中的数字含义。
而改用printf("%d %d %f\n",k,k,f);其输出结果是:1234 1234 123.456,看起来就一目了然了。
2) 若格式说明与输出项的类型不一一对应匹配,则不能正确输出,而且编译时不会报错。
若格式说明个数少于输出项个数,则多余的输出项不予输出;若格式说明个数多余输出项个数。
则将出现一些毫无意义的数字乱码。
3) Printf函数有返回值,返回值是本次调用输出字符的个数,包括回车等控制符。
4) 尽量不要在输出语句中改变输出变量的值,因为可能会造成输出结果的不确定性。
例如:int k=8,printf("%d,%d\n",k,++k);输出结果不是8,9而是9,9。
这是因为调用函数printf时,其参数是从右至左进行处理的,将先进行++k运算。
5) 输出数据时的域宽可以改变。
若变量m、n、i和f都已正确定义并赋值,则语句printf("%*d",m,i);将按照m指定的域宽输出i的值,并不输出m的值。
而语句printf("%*.*f",m,n,f);将按照m和n指定的域宽输出浮点型变量f的值,并不输出m、n的值。
6、数据输入:●scanf函数的一般调用形式如下:scanf(格式字符串,输入项地址表)●在scanf函数调用之后加上“;”,则构成输入语句。
●功能:按格式字符串中规定的格式,在键盘上输入各输入项的数据,并依次赋给各输入项。
●说明:格式字符串与printf()函数基本相同,但需要特别注意的是:输入项以其地址的形式出现,而不是输入项的名称。
如:scanf("%d,%f",&a,&b);其中&a、&b分别表示变量a,b的地址,&是取地址运算符(优先级及结合性与++相同)。
●格式控制的主要作用是指定输入时的数据转换格式,即格式转换说明。
输入项之间用逗号隔开。
●用于输入的格式字符及其功能:格式字说明符c 输入一个字符d 输入带符号的十进制整型数i 输入整型数,整型数可以是带先导0的八进制数,也可以是带先导0x(或0X)的十六进制数o 以八进制格式输入整型数,可以带先导0,也可以不带x 以十六进制格式输入整型数,可以带先导0X或0x,也可以不带u 以无符号是禁止行使输入整型数f(lf)以带小数点的数学形式或指数形式输入浮点数(单精度数用f,双精度数用lf)e(le) 同上s 输入一个字符串,直到遇到“\0”。