




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章顺序结构程序设计,4.1 语句概述 4.2 格式输出函数 4.3 格式输入函数 4.4 其它输入、输出函数 4.5 算法及其表示方法 4.6 顺序结构程序设计举例,4.1 语句概述,程序的结构:,C语句可分为以下三类: 1.控制语句 2.表达式语句 3.复合语句,程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。,1. 控制语句,控制语句用于控制程序的流程,以实现程序的各种结构方式。可分成以下三类: 1)条件判断语句:if else语句、switch语句; 2)循环执行语句:do while语句、while语句、for语句; 3) 转向语句:break语句、goto语句、continue语句、return语句。,2. 表达式语句,表达式语句由表达式加上分号“;”组成。执行表达式语句表示一个运算或者操作。 其一般形式: 表达式; 常见形式有赋值语句、函数调用语句和空语句 例如: x=y+z; y+z; i+;,赋值语句,加法运算语句,但计算结果不能保留,无实际意义,自增1语句,i值增1,1) 赋值语句,赋值语句是由赋值表达式再加上分号构成的表达式语句。 其一般形式为: 变量=表达式;,赋值语句的功能和特点与赋值表达式相同。是程序中使用最多的语句之一。,在赋值语句的使用中需要注意以下几点:,1、赋值表达式的嵌套: 赋值符右边的表达式又是一个赋值表达式: 变量=(变量=表达式); 展开之后的一般形式为: 变量=变量=表达式; 例如: a=b=c=d=e=5; 按照赋值运算符的右接合性,等效于: e=5; d=e; c=d; b=c; a=b;,2、变量说明中给变量赋初值和赋值语句的区别: 给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。 例如: int a=5,b,c; 3、在变量说明中,不允许连续给多个变量赋初值: 如下述说明是错误的: int a=b=c=5; 而赋值语句允许连续赋值: a=b=c=5;,2) 函数调用语句,函数调用语句由函数名、实际参数加上分号“;”组成。执行函数语句就是调用函数体 (在后面函数中再详细介绍) 。 其一般形式为: 函数名(实际参数表); 例如: printf(“C Program“); 调用库函数,输出字符串。,3) 空语句,空语句只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。 例如 while(getchar()!=n) ;,空语句,本语句的功能是,只要从键盘输入的字符不是回车则重新输入。,3. 复合语句,复合语句把多个语句用括号括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。 例如: x=y+z; a=b+c; printf(“%d%d”,x,a); ,是一条复合语句。,复合语句内的各条语句都必须以分号“;”结尾,在括号“”外不能加分号。,4.2 printf 函数(格式输出函数),1 . printf()功能: 按格式控制所指定的形式(向用户屏)输出输出项的值。,C不提供输入输出语句,只调用printf()函数,例: void main( ) int a,b,sum; a=123;b=456; sum=a+b; printf(”a=%d,b=%d,c=%dn”,a,b,sum); 结果: a=123,b=456,c=579,原样 输出,格式控制符与输出项表列一一对应,2. 格式: printf ( 格式控制,输出项表列) 输出项表列: 由一个或多个输出项组成(若多个、它们之间用逗号隔开),常量、变量、函数、表达式、字符数组名等均可做输出项。 格式控制: 是用双引号括起来的字符串,用来表示格式说明,也称为转换控制字符串。其中字符可由下面3类组成: 普通字符(原样输出) 转义字符(输出所表示的字符或实现其功能) 格式说明:控制对应输出项的输出形式,“ a=“,“ %d “,“ n“,#include void main( ) int k=68;float t=56.3; printf(”%dt%dt%fn”,k,k+123,sqrt(t); 结果:68 191 7.503333,转义字符,跳到下一区,9,17,转义字符,回车,格式控制 符,对应输 出格式,3 .格式说明: 控制对应输出项的输出形式(每个格式说明按先后顺序与输出项一一对应),输出结果中格式说明被对应的输出项值取代。 (1) 格式说明基本形式: %d (或%i) 、%o 、%x (或%X) 、%u 、 %c 对应的输出项类型为字符型和整型。,带符号 十进制,带符号 八进制,带符号 十六进制,无符号 十进制,字 符,例: void main( ) int a=65 ; char c=! ; printf (”%d,%cn”,a,a); printf(”c=%c,Its ASCII code=%dn”,c,c); 结果: 65,A c=!, Its ASCII code=33,main() int a=-1; printf(“%d,%o,%x,%u“,a,a,a,a); /* 假设int占2个字节*/ -1的原码:1000,0000,0000,0001。 -1在内存中的补码表示为: 1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff 输出:-1,177777,ffff,65535 -1是十进制,177777是八进制,ffff是十六进制。,%o 、%x (或%X) 、%u按unsigned型输出,且不带前导符号“o”和“x”, %s对应的输出项为字符串或字符数组 例: void main( ) char name =”Jone ”; printf ( ”%s%s%cn”,”Who is ”,name , ? ); 结果: Who is Jone ?,字符串,字符, %f、%e(或%E) 、%g (或%G) 对应 float 型输出项 %lf、%le(或%E) 、%lg (或%G) 对应 double 型输出项 %f小数形式(6位小数) %e(或%E)标准化指数形式(尾数的小数点前有一位且只有一位非零、6位小数) %g (或%G)让系统自动选取%f(去掉小数点后多余的零)或%e中较短者6位有效 例: main( ) float f ; f=123.46 ; printf (”%f,%e,%gn”,f,f,f ) 结果: 123.459999,1.234600e+002,123.46数字,(2) 在格式说明基本形式中加附加格式说明符 若输出项为long型或unsigned long型,则用下面格式说明控制: %ld、%lx、%lo、%lu 若输出项为short型或unsigned short型,则用下面格式说明控制: %hd、%hx、%ho、%hu 在格式说明%后加一个整数m指定宽度为|m|位: 若实际需要的位数|m|位、则此m失效 若m为无符号整数,则左边填空格 若m为负整数,则右边填空格 若m为带正号整数,则左边填空格且所输出的数据前有正负号,例: void main( ) int a=12;long b=12345678; printf ( ”%6dn”,a); printf ( ”%-6dn”,a); printf ( ”%+6dn”,a); printf ( ”%12ldn”,b); printf ( ”%+8sn”,”book”); ,字符串,负数本身肯定带负符号,带正号必须这样写,在%s中间插入m.n:m含义同,此m可省略、若省略则m=n。n为无符号整数、表示只输出对应字符串中左边n个字符。 例: void main() printf ( ”%8.3sn”,”book”); printf ( ”%.3sn”,”book”); 输出:,宽度就是3,在%f、%e(或%E) 、%g (或%G) 中间插入m.n:m含义同,此m可省略、若省略则m=n。 n为无符号整数、表示n位小数,其余四舍五 例8: printf ( ”a=%+10.3lfn”,123.45678); 输出: 注:若与中m为正整数且m前加0,则输出 的左边空位填0 例9: printf ( ”a=%+010.3lfn”,123.45678); 输出:,四舍五入,在%x、%o、%lx、%lo 的%后加#输出带前导的八进制或十六进制数据 例10:void main( ) int x=7281; printf (”%o,%#on”,x,x); printf (”%x,%#xn”,x,x); 输出: 16161,016161 1c71,0x1c71 注:格式控制中,连续的两个%表示一个%(不是格式说明符),(16161) 8,(1c71) 16,Printf函数输出列表的运算顺序程序示例 main() int i=1,j=2; printf(“%d %d %d“,i+j,+i,i); ,4 2 1,求值顺序自右至左,4.3 scanf 函数(格式输入函数),1 格式 scanf (格式控制,输入项地址表列) 地址: 1)变量名前加&变量在内存中的地址; 2)数组名数组在内存中的首地址。 例如:&a, &b 分别表示变量a和变量b 的地址。这个地址就是 编译系统在内存中给a,b变量分配的地址。,一个或多个地址组成(若多个之间用逗号隔开),变量的地址和变量值的关系如下: 1、在赋值表达式中给变量赋值: 如:a=567 2、scanf函数在本质上也是给变量赋值,但要求写变量的地址: 如:scanf(”%d”, 3、这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。,变量名,不能写地址,变量 的值,变量a的地址,4.6.2 功能:系统切换到用户屏、要求并等待用户按格式控制形式和顺序输入要赋给输入项的常量,按回车键结束,系统立即把所输入的赋给相应输入项。 它是一个标准库函数,与printf函数相同,使用scanf函数之前不必包含stdio.h文件。 4.6.3 注意:格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。,不能是符号常量,不加单撇号或双撇号,直接输入,一定 要有,例: void main( ) int a,b,sum; scanf(”%d,%d”, 执行程序时应输入 123,456,如果要输入 a=123; b=456;,使用scanf函数还必须注意以下几点: 1)scanf函数中没有精度控制,如:scanf(“%5.2f“,是非法的,应改为scnaf(“%d“,&a) 。 3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到这些符号即认为该数据结束。,4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。如: scanf(“%c%c%c“, 输入时数据之间可加空格。,空格,输入多少个无关,5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。 scanf(“%d,%d,%d“, 则输入应为:,非格式符“ , ”作间隔符,“a=“、” ,”、“b=“、 ”c=“为间隔符,6)如输入的数据与输出的类型不一致, scanf(“a=%d,b=%d,c=%d“, 应输入:,scanf(”%d,%dn”, 应输入:,按格式控制符输入,数据分割,多少个无关,scanf(”%d”, 应输入: 或输入:,多少个无关,多少个无关,void main() char a,b; scanf(“%c%c“, 输入: 显示: 输入: 显示:,说明,1.格式控制中不包含附加格式说明符m.n,一般不包含转义字符(n可以)。 2.double型输入项必须使用如下格式说明:%lf 、 %le 、 %lg(输出一样) 3.* 在格式说明%后插入*表示跳过它所指定的列数,如: scanf(”%d%*5%dn”, 输入: 结果:,用%f只能输出6位小数,输出10位用%20 . 10lf,a值:123 b值:456,如果只有%*d则表示本输入项再度入后不赋给相应的变量,void main() int a; scanf(“%d“, 输入:1234567890 显示:1234567890,4、 在格式说明基本形式中加附加格式说明符 l若输出项为long 型或unsigned long型,则必须用下面格式说明控制: %ld、%lx、%lo、%lu h若输出项为short 型或unsigned short型, 则可用下面格式说明控制: %hd、 %hx、%ho、%hu 。,4.4 其它输入、输出函数,1.getchar 函数(字符输入函数) 形式: getchar ( ) 功能: c= getchar ( );同 scanf ( ”%c”, 注意: 需在文件开头加 #include ”stdio.h”,输入一个字符,赋给变量c,例:#include void main( ) char a,b,c; a= getchar ( ); b= getchar ( ); c= getchar ( ); putchar(a); putchar(b); putchar(c); ,a,b,c,a,b,c,换行,使用getchar函数还应注意几个问题:,1)getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。 2)使用本函数前必须包含文件“stdio.h”。 3)在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。,2. putchar 函数(字符输出函数),格式: putchar ( 一个整形或字符型输出项 ) 功能: 同 printf ( ”%c”, 输出项 ),在显示器上 输出单个字符。 例如:putchar(A); (输出大写字母A) putchar(x); (输出字符变量x的值) putchar(101); (也是输出字符A) putchar(n); (换行),对控制字符则执行控制功能,不在屏幕上显示。使用本函数前必须要用文件包含命令:#include 或 #include “stdio.h”,例:,#include void main( ) char c=A ; putchar(66); putchar(53); putchar(c+2); putchar(n); putchar(7); putchar(n); 结果:B+C 7,B,+,C,7,换行,换行,3. puts函数,puts函数(字符串、字符数组中字符串输出函数) 一般形式:puts(char *str); 功能:将字符串或字符数组中存放的字符串输出到显示器上。 例如:putstr(“ChinanBeijingn”);,4. gets函数(字符串输入函数),gets函数(字符串输入函数) 一般形式:gets(char *str); 功能:接收从键盘输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 检验科生物安全防护知识培训试题及答案
- 《急危重症护理学》试题及参考答案
- 2025护理人员岗位职责试题(及答案)
- 2025年主管护师(中级)练习题附参考答案详解
- 稀土熔炼工设备调试考核试卷及答案
- 健身人群运动损伤预防与康复器材市场前景报告
- 健康数据价值挖掘-洞察及研究
- 通信网络管理员三级安全教育(车间级)考核试卷及答案
- 铸铁机工效率提升考核试卷及答案
- 特种炉冶炼工培训考核试卷及答案
- 家政入股分红合同协议书
- 2025年家政服务员工作技能考试试题及答案解析
- 2025年安全生产责任主体考试题及答案
- 2025年全国保密教育知识竞赛题库附答案
- 2025年医疗器械注册与监管考试试题及答案解析
- 秩序维护人员培训课件
- 铁路作业人员安全课件
- 2025年医疗质量管理质控培训考核试题(含答案)
- 【轻质减负】第2课《中国人首次进入自己的空间站》情境化教学课件
- 浮吊安全知识培训课件
- 商业航天行业深度报告:政策技术需求共振商业航天赛道加速
评论
0/150
提交评论