c3第三章顺序结构程序设计.ppt

上传人:max****ui 文档编号:2015933 上传时间:2019-11-13 格式:PPT 页数:39 大小:367.50KB
返回 下载 相关 举报
c3第三章顺序结构程序设计.ppt_第1页
第1页 / 共39页
c3第三章顺序结构程序设计.ppt_第2页
第2页 / 共39页
c3第三章顺序结构程序设计.ppt_第3页
第3页 / 共39页
点击查看更多>>
资源描述
第三章,顺序结构程序设计,How many classromm.C,3.1 基本语句,(1)空语句:即只有一个分号的语句。 ; (2)表达式语句:表达式后加一个分号。 如:m=0; x+y-10%2+2*x,10/2;无具体意义 (3)函数调用语句:函数调用加一个分号。 如:printf(“this is a example. n”) ; (4)控制语句: 是C语言中完成一定控制功能的语句, 如表3.1所示。,(5)复合语句。将一组语句用花括号 括起来就形成了复合语句,又称其为分程序。 如: m=10; printf(“m=%dn”,m); ,3.2 赋值语句,赋值表达式后加上一个分号 。 例:利用赋值语句交换两变量的值。 设有定义:int a=12, b=5, t; 则可以用如下两种方式交换变量a和b的值: t=a; a=b; b=t; 第三者插足法 a=a+b; b=a-b; a=a-b;,3.3 数据的输入输出,C语言无I/O语句,I/O操作由函数实现 #include ,格式:printf(“格式控制串“,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字符数;出错,返回EOF(-1),一、格式输出函数,输出表:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息 1. 格式说明:%修饰符格式字符 ,用于指定输出格式 2. 普通字符或转义序列:原样输出格式字符,例 main() short x=65535; printf(“x=%dn“,x); getch(); 输出结果:x=-1,例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b); 输出结果: 3 4 a=3, b=4,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(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,说明:格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应 输出转换:格式字符与输出项类型不一致,自动按指定格式输出,附加格式说明符(修饰符),100,2,(补充) 场宽m.n可以是变量,scanf()中的字符宽度可以由一个”*”号而不是整数来指定。”*”号表示这个数取自输入列表。 例如下边这个例子,通过输入m,n来控制输出值的显示精度: #include main() float a=123.45678; int m,n; printf(“m=“); scanf(“%d“, ,例 int a=1234; float f=123.456; static char c=“Hello,world!”; printf(“%8d,%-8dn”,a,a); printf(“%10.2f,%-10.1fn”,f,f); printf(“%10.5s,%-10.3sn”,c,c);,运行结果:1234,1234 123.46,123.5 Hello,Hel,格式说明符例子,例 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);,例: #,例 long a=65536; printf(“%d,%8ldn”,a, a);,例,00001234,0000123.46,000+1234,000+123.56,173,0173,7B,0X7B,0, 65536,例 int a=1234; float f=123.456; char ch=a; printf(“%8d,%2dn”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f); printf(“%3cn”,ch);,运行 1234,1234 结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a,例 static char a=“Hello,world!” printf(“%sn%15sn%10.5sn%2.5sn%.2sn”,a,a,a,a,a);,运行结果:Hello,world! Hello,world! Hello Hello He,附加格式说明符 m.n 的例子,printf()函数返回一个int值,表示被显示的字符数:,main() int x; x=printf(“%dn“,123); printf(“x=%d“,x); getch(); ,输出: 123 x=4_,实践中,可以用来检验输出结果。,二、格式输入函数,格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符& 格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”, 输入:10 则 a=10,例 scanf(“%x”, 输入:11 则 a=17,常用的输入函数用法,以 int x; 为例 printf(“x=“); scanf(“%d“, sccanf()中不要出现转义字符(例如n)。,scanf()函数返回成功获得数据的个数,输入非法时其值当然为0,main() int x,y; printf(“x=“); y=scanf(“%d“, ,输入123时 输出 x=123 y=1 表示输入了1个数字 输入a时 输出 x=-858993460 y=0 表示输入了0个数字,实际应用中,常用对scanf()值的判断来确定用户输入的合法性,main() int x,y,z; printf(“x y=“); z=scanf(“%d%d“, ,输入12 23时 输出 x=12 y=23 z=2 表示正确输入了2个数字 输入12 a时 输出 x=12 y=-858993460 z=1 表示只正确输入了1个数字,scanf()中的附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”, 输入 19991015 则1999yy, 10 mm, 15 dd,例 scanf(“%3d%*4d%f”, 输入 12345678765.43 则123k, 8765.43f,例 scanf(“%2d%*3d%2d”, 输入 1234567 则12a, 67b,例 scanf(“%3c%2c”, 输入 abcde 则ac1, d c2,输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d:%d:%d”, 输入 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=12,b=24,c=36 ,例 scanf(“%d%o%x”, 输入 123123123 输出 a=123,b=83,c=291,说明: 用“%c”格式符时,空格和转义字符作为有效字符输入,如 scanf(“%c%c%c”, 若输入abc 则ac1, c2, b c3,输入数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇宽度结束 遇非法输入,如 scanf(“%d%c%f”, 若输入1234a123o.26 则 1234 a, a b, 123 c,输入函数留下的“垃圾”:,例 int x; char ch; scanf(“%d”, 执行:123 输出:x=123,ch=10 (换行符LF),例 int x; char ch; scanf(“%d”, 执行:123 输出:x=123,ch=10 (换行符LF),解决方法: (1)用格式串中的空格或“%*c”来“吃掉” (2)用getchar()清除 (3) 用函数fflush(stdin)清除全部剩余内容,例 int x; char ch; scanf(“%d”,(1)格式:getch() 功能:从键盘无回显读入一字符 (不需要回车确认) (2)格式:getchar() 功能:从键盘读入一字符(需要回车确认),三、字符输入输出函数 1. 字符输入函数,例,#include main() int c; printf(“Enter a character:“); c=getch(); printf(“%c-hex%xn“,c,c); getch(); 运行输入A ,运行结果: Enter a character:A A-hex41,格式: putchar(c) 参数: c为字符常量、变量或表达式,或0-255的整数。 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1),#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); getch(): ,运行结果:A B,例,2. 字符输出函数,除了putchar(),putch()也实现把字符输出到显示器上。 根据TC的解释,putchar()是输出到STDOUT(标准输出设备),而putch()是输出到screen。 在一般应用中,这两者没有区别。,注:ANCI规定: 使用getchar()和putchar()须编译预处理 #include ,warning C4013: getch undefined; assuming extern returning int 警告信息的解决,添加conio.h头文件: #include conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()、putch()函数等等。,3.4 程序举例,#include main() float a,b,c,s,area; printf(“Side a : “); scanf(“%f“, ,例 输入三角形边长,求面积,输入:3,4,6 输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33,例 从键盘输入大写字母,输出对应的小写字母和ASCII码,#include main() char c1,c2; printf(“char=“); c1=getchar(); printf(“%c,%dn“,c1,c1); c2=c1+32; printf(“%c,%dn“,c2,c2); getch(); ,输入:A 输出:A,65 a,97,#include main() float a,b,c,disc,x1,x2,p,q; printf(“a=“); scanf(“%f“, getch(): ,提示:a= _ 输入:1 提示:b= _ 输入:3 提示:c= _ 输入:2 输出:x1=-1.00 x2=-2.00,Programming Style 编程风格,It is best just now if you simply adopt the styles presented by tutor, when you are a seasoned programmer, you can develop your own style.,Programming Style 编程风格,Programs can be highly readable and understandable or they can be intelligible(清晰易懂的). Good style 优雅的编程风格 Meaningful names. 有意义的变量名 White space to separate parts of statements. 语句间留白 Consistent habits regarding indentation. 养成阶梯状编程格式的习惯 Indentation conveys controlling statements in control flow.,Some common coding errors 常见的程序代码错误,Quoting problems: 引号不配对 unmatched quotes, mismatched quotes, incorrect quotes Unending comments 注释没收尾 Forgetting semicolons (;) 行尾没分号 Unmatched or mismatched braces or parentheses 括号不配对 Control strings not matching the arguments in printf(), scanf(), and other similar functions I/O函数中的格式与I/O项不一致 Forgetting & in arguments to scanf(). scanf()中忘了& Loss of fractions due to use of int instead of float. 用int导致缺数 Inconsistent lengths (e.g. double vs. float) between formats and arguments in scanf() and printf(). I/O函数中格式类型不一致,常见的四类编程错误,语法错误(syntax error) 由于一个语法错会导致许多错误信息,所以出错处往往在编译器所指出错行之前。 运行时错误(runtime error) 程序执行过程中试图执行非法操作 逻辑错误(logic error) 由不正确算法导致的错误。 未检测到的错误(unchecked error) 导致不正确结果的程序执行错。 以下以一个例子来分别加以说明:,1:语法错误(syntax error),DEMO.C(3) : error C2146: syntax error : missing ; before identifier printf DEMO.C(3) : warning C4013: printf undefined; assuming extern returning int DEMO.C(3) : error C2001: newline in constant DEMO.C(3) : error C2065: d : undeclared identifier DEMO.C(3) : error C2296: % : illegal, left operand has type char 11 DEMO.C(3) : error C2143: syntax error : missing ) before string DEMO.C(4) : warning C4013: scanf undefined; assuming extern returning int DEMO.C(8) : warning C4013: getch undefined; assuming extern returning int,/换算后仍输出x原值 main() int x,y,t printf(“x=);scanf(“%d“, ,/换算后输出y的原值 main() int x,y,t; printf(“x=“);scanf(“%d“, ,2:运行时错误(runtime error),x=3 y=4,/换算后输出y的原值 main() int x,y,t; printf(“x=“);scanf(“%d“, ,3:逻辑错误(logic error),x=4 y=3 x=3,/换算后输出y的原值 main() int x,y,t; printf(“x=“);scanf(“%d“, ,4:未检测到的错误(unchecked error),x=4 y=3 x=3,/换算后输出y的原值 main() int x,y,t; printf(“x=“);scanf(“%d“,x); printf(“y=“);scanf(“%d“, ,非法访问,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!