Download presentation
Presentation is loading. Please wait.
Published byDeddy Salim Modified 5年之前
1
目录 3.1结构化程序设计 3.2传统流程图及N-S结构化流程图 3.3C语句概述 3.4赋值语句 3.5数据输入输出函数调用语句
3.6顺序结构程序设计举例 1
2
3.1结构化程序设计 1.结构化程序的特点 2.结构化程序的设计方法 1)只有一个入口; 2)只有一个出口;
3)无死语句(永远也执行不到的语句); 4)无死循环(永远也不结束的循环)。 2.结构化程序的设计方法 1)自顶向下、逐步细化 2)模块化 2
3
3.2 传统流程图及N-S结构化流程图 1.顺序结构 3
4
3.2 传统流程图及N-S结构化流程图 2.选择结构 4
5
3.2 传统流程图及N-S结构化流程图 3.循环结构 (1)先判断后执行的当型循环 (2)先执行后判断的当型循环
1)当型循环(while型循环) (1)先判断后执行的当型循环 (2)先执行后判断的当型循环 2)直到型循环(until型循环) (1)先判断后执行的直到型循环 (2)先执行后判断的直到型循环 5
6
3.2 传统流程图及N-S结构化流程图 3.循环结构 1)当型循环(while型循环) 6
7
3.2 传统流程图及N-S结构化流程图 3.循环结构 2)直到型循环(until型循环) 7
8
3.2 传统流程图及N-S结构化流程图 4.流程图比较
(2)对同一问题循环结果进行处理时,当型循环和直到型循环条件正好相反,也就是说,完全可以将当型循环转换为直到型循环,所以在C程序中仅介绍当型循环。 8
9
3.3 C语句概述 1.表达式语句 表达式语句由表达式加上分号组成。 1)语句格式 表达式; 2)语句功能
执行表达式语句就是计算表达式的值。例如: x=y+z; //赋值语句 i++; //自增1语句,i值增1。 9
10
3.3 C语句概述 2.函数调用语句 由函数名(实参列表)加上分号组成。 1)语句格式 函数名(实参列表); 2)语句功能
执行函数语句就是调用函数体并把实际参数传给函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值(在后面函数章节中详细介绍)。例如: printf("c program"); //调用库函数,输出字符串 10
11
3.3 C语句概述 3.控制语句 控制语句用于控制程序的流程,以实现程序的各种结构。它们由特定的语句定义符组成。C语言有九种控制语句,可分成以下三类: 1)条件判断语句:if语句、switch语句; 2)循环执行语句:do while语句、while语句、for语句; 3)转向语句:goto语句、break语句、continue语句、return语句。 11
12
3.3 C语句概述 4.复合语句 把多个语句用括号{}括起来组成的一个语句称复合语句。
在程序中应把复合语句看成是一个整体,而不是作为多条语句分别看待。例如: { x=y+z; a=b+c; printf(“%d%d”,x,a); } 复合语句内的各条语句都必须以分号结尾 12
13
3.3 C语句概述 5.空语句 只有分号组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:
while(getchar()!='\n'); 这里的循环体为空语句。 本语句的功能是,只要从键盘输入的字符不是回车则重新输入。 13
14
3.4 赋值语句 1.赋值语句的定义及格式 1)定义 赋值语句是由赋值表达式再加上分号构成的表达式语句。 2)格式 变量=表达式; 3)功能
3.4 赋值语句 1.赋值语句的定义及格式 1)定义 赋值语句是由赋值表达式再加上分号构成的表达式语句。 2)格式 变量=表达式; 3)功能 赋值语句的功能和特点都与赋值表达式相同。 14
15
3.4 赋值语句 2.赋值语句使用注意事项 1)在赋值符右边的表达式也可以又是一个赋值表达式 变量=(变量=表达式); 变量=变量=表达式;
3.4 赋值语句 2.赋值语句使用注意事项 1)在赋值符右边的表达式也可以又是一个赋值表达式 变量=(变量=表达式); 变量=变量=表达式; 例如: a=b=5; 按照赋值运算符的右接合性,因此实际上等效于: b=5; a=b; 15
16
3.4 赋值语句 2.赋值语句使用注意事项 2)在变量定义中给变量赋初值和赋值语句的区别
3.4 赋值语句 2.赋值语句使用注意事项 2)在变量定义中给变量赋初值和赋值语句的区别 赋初值后的变量与其后的其它同类变量之间仍必须用逗号分隔,而赋值语句则必须用分号结尾。int a=5,b; 3)在变量定义中,不允许连续给多个变量赋初值;而赋值语句允许连续赋值。 下述变量定义是错误的:int a=b=5; 必须写为int a=5,b=5; 4)注意赋值表达式和赋值语句的区别。 赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方;而赋值语句则不能。 16
17
3.5 数据输入输出调用语句 1.数据输入输出的方法 数据输入输出是由调用库函数完成的。
3.5 数据输入输出调用语句 1.数据输入输出的方法 数据输入输出是由调用库函数完成的。 在使用库函数时,要用预编译命令#include将有关头文件包括到源文件中。使用标准输入输出库函数时要用到stdio.h文件(stdio是standard input&outupt的意思),因此源文件开头应有预编译命令:#include<stdio.h>或#include "stdio.h"。 17
18
3.5 数据输入输出调用语句 2.字符输入输出 1)字符输出函数putchar() (1)函数功能
3.5 数据输入输出调用语句 2.字符输入输出 1)字符输出函数putchar() (1)函数功能 在显示器上输出单个字符。对控制字符则执行控制功能,不在屏幕上显示。 (2)函数调用格式 putchar(字符变量) 例如: putchar('a'); //输出大写字母a putchar('\101'); //也是输出字符a 18
19
3.5 数据输入输出调用语句 2.字符输入输出 1)字符输出函数putchar() 【例3_1】输出单个字符。
3.5 数据输入输出调用语句 2.字符输入输出 1)字符输出函数putchar() 【例3_1】输出单个字符。 #include<stdio.h> void main() { char a='b',b='o',c='k'; putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t'); putchar(a);putchar(b); putchar('\n'); putchar(b);putchar(c); } 19
20
3.5 数据输入输出调用语句 2.字符输入输出 2)键盘输入函数getchar() (1)函数功能
3.5 数据输入输出调用语句 2.字符输入输出 2)键盘输入函数getchar() (1)函数功能 从键盘上输入一个字符。只接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。 (2)函数调用格式 getchar(); 把输入的字符赋给一个字符变量,构成赋值语句。 char c; c=getchar(); 20
21
3.5 数据输入输出调用语句 2.字符输入输出 2)键盘输入函数getchar() 【例3_2】输入单个字符。
3.5 数据输入输出调用语句 2.字符输入输出 2)键盘输入函数getchar() 【例3_2】输入单个字符。 #include<stdio.h> void main() { char c; printf("input a character\n"); c=getchar(); putchar(c); printf("\n"); } 21
22
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (1)函数功能
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (1)函数功能 按用户指定的格式,把指定的数据显示到显示器屏幕上。 (2)printf函数调用格式 printf(“格式控制字符串”,输出表列) 其中,格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种字符串组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:“%d”表示按十进制整型输出;“%c”表示按字符型输出等;非格式字符串在输出时原样照印,在显示中起提示作用。 当需要输出表列中给出了各个输出项时,要求格式字符串和各输出项在数量和类型上一一对应。 22
23
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() 【例3_3】printf函数应用。
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() 【例3_3】printf函数应用。 #include<stdio.h> void main() { int a=88,b=89; printf("%d %d\n",a,b); printf("%d,%d\n",a,b); printf("%c,%c\n",a,b); printf("a=%d,b=%d",a,b); } 23
24
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (3)格式字符串 格式字符串的一般形式为:
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (3)格式字符串 格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 ①标志:标志字符为-、+、#、空格四种 - 结果左对齐,右边填空格 + 输出符号(正号或负号) 空格 输出值为正时冠以空格,为负时冠以负号 # 对c、s、d、u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e、g、f类当结果有小数时才给出小数点 24
25
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (3)格式字符串
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (3)格式字符串 ②输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。 ③精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。 ④长度:长度格式符为h和l两种,其中h表示按短整型量输出,l表示按长整型量输出。 25
26
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (3)格式字符串 ⑤类型:类型字符用以表示输出数据的类型
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (3)格式字符串 ⑤类型:类型字符用以表示输出数据的类型 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数 e,E 以指数形式输出单、双精度实数 g,G 以%f或%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串 26
27
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() 【例3_4】printf函数中格式字符的应用。
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() 【例3_4】printf函数中格式字符的应用。 #include<stdio.h> void main() { int a=15; float b= ; double c= ; char d='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d); } 27
28
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (4)使用printf函数注意事项
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (4)使用printf函数注意事项 在Visual C++6.0中,求值顺序是自右至左,但是输出顺序还是从左至右。 【例3_5】用一个printf语句输出,验证求值顺序。 #include<stdio.h> void main() { int i=8; printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--); } 28
29
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (4)使用printf函数注意事项
3.5 数据输入输出调用语句 3.格式输入输出 1)格式输出函数printf() (4)使用printf函数注意事项 例3_6】用多个printf语句输出。 #include<stdio.h> void main() { int i=8; printf("%d\n",++i); printf("%d\n",--i); printf("%d\n",i++); printf("%d\n",i--); printf("%d\n",-i++); printf("%d\n",-i--); } 29
30
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (1)函数功能
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (1)函数功能 按用户指定的格式从键盘上把数据输入到指定的变量之中。 (2)scanf函数的一般形式 scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串;地址表列中给出各变量的地址,地址由地址运算符“&”后跟变量名组成。 30
31
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() 【例3_7】输入输出函数的应用。
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() 【例3_7】输入输出函数的应用。 #include<stdio.h> void main() { int a,b,c; printf("input a,b,c\n"); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c); } 31
32
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (3)格式字符串
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (3)格式字符串 一般形式为:%[*][输入数据宽度][长度]类型 ①类型:表示输入数据的类型 d 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 u 输入无符号十进制整数 f或e 输入实型数(用小数形式或指数形式) c 输入单个字符 s 输入字符串 32
33
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (3)格式字符串
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (3)格式字符串 ②“*”符:用以表示该输入项,读入后不赋给相应的变量,即跳过该输入值。 scanf("%d %*d %d",&a,&b); 输入: 时,把1赋给a,2被跳过,3赋给b。 ③宽度:用十进制整数指定输入的字符数 scanf("%5d",&a); 输入: 只把12345赋给变量a,其余部分被截去。 ④长度:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf),h表示输入短整型数据。 33
34
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项 ①scanf函数中没有精度控制,如: scanf(“%5.2f”,&a);是非法的。 ②scanf中要求给出变量地址,给出变量名则会出 ③在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的分隔则可用空格,tab或回车作分隔。C编译在遇到空格、tab、回车或非法数据时即认为该数据结束。 ④在输入字符数据时,若格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。 34
35
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项 【例3_8】输入字符数据。 #include<stdio.h> void main() { char a,b; printf("input character a,b\n"); scanf("%c%c",&a,&b); printf("%c%c\n",a,b); } 35
36
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() 【例3_9】输入字符数据。
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项 【例3_9】输入字符数据。 #include<stdio.h> void main() { char a,b; printf("input character a,b\n"); scanf("%c %c",&a,&b); printf("\n%c%c\n",a,b); } 36
37
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数()
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项 ⑤如果格式控制串中有非格式字符则输入时也要输入该非格式字符。例如: scanf("a=%d,b=%d,c=%d",&a,&b,&c); 则输入应为: a=5,b=6,c=7 ⑥如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。 37
38
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项
3.5 数据输入输出调用语句 3.格式输入输出 2)格式输入函数scanf函数() (4)使用scanf函数注意事项 【例3_10】输出各种数据类型的字节长度。 #include<stdio.h> void main() { int a; long b; float f; double d; char c; printf("int:%d\nlong:%d\nfloat:%d\n",sizeof(a),sizeof(b),sizeof(f)); printf("double:%d\nchar:%d\n",sizeof(d),sizeof(c)); } 38
39
3.6 顺序结构程序设计举例 【例3_11】输入三角形的三边长,求三角形面积。 源文件如下: #include<math.h>
3.6 顺序结构程序设计举例 【例3_11】输入三角形的三边长,求三角形面积。 源文件如下: #include<math.h> #include<stdio.h> void main() { float a,b,c,s,area; printf("输入a,b,c:"); 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\n",a,b,c); printf("s=%7.2f,area=%7.2f\n",s,area); } 39
40
3.6 顺序结构程序设计举例 【例3_12】求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac>0。
3.6 顺序结构程序设计举例 【例3_12】求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac>0。 #include<math.h> #include<stdio.h> void main() { float a,b,c,disc,x1,x2,p,q; printf("input a,b,c(保证b*b-4*a*c大于0):"); scanf("%f,%f,%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf("x1=%5.2f\nx2=%5.2f\n",x1,x2); } 40
Similar presentations