《第4讲--顺序结构和常用语句.课件》由会员分享,可在线阅读,更多相关《第4讲--顺序结构和常用语句.课件(29页珍藏版)》请在金锄头文库上搜索。
1、第第4讲讲 顺序结构和常用语句顺序结构和常用语句一、一、C语言语句语言语句二、格式输入输出二、格式输入输出 1、格式输出:、格式输出:printf( )函数函数 2、格式输入:、格式输入:scanf( )函数函数三、字符输入输出三、字符输入输出 1、字符输出:、字符输出:putchar( )函数函数 2、字符输入:、字符输入:getchar( )函数函数 结构化程序设计的基本结构三种结构化程序设计的基本结构三种:顺序结构顺序结构程序中的语句按照书写的顺序执行。程序中的语句按照书写的顺序执行。分支分支(选择选择)结构结构程序中的语句根据某个逻辑值有选择地执行。程序中的语句根据某个逻辑值有选择地执
2、行。循环循环(重复重复)结构结构程序中的语句根据某个逻辑值有条件地重复程序中的语句根据某个逻辑值有条件地重复执行。执行。一、程序的基本结构:一、程序的基本结构:( (补充补充) ) C程序的语句有如下五种程序的语句有如下五种:表达式语句:表达式语句:任何表达式加上分号构成。任何表达式加上分号构成。 如如:x=1; y=x+y; - -x; y+1;函数调用语句:函数调用语句:由一次函数调用加上分号构成由一次函数调用加上分号构成 如如:printf( Very Good!n);复合语句复合语句: 用用 括起来组成的一个语句。括起来组成的一个语句。 如如:if (ab) x=0;b=b+1;x=a
3、;空语句:空语句:仅由一个分号构成的语句。仅由一个分号构成的语句。控制语句:控制语句:控制程序的流程控制程序的流程 。 如:如:ifelse语句,语句,while语句,语句,return语句。语句。二、二、C语言语句语言语句(P54) C语言对数据的输入、数据的输出是语言对数据的输入、数据的输出是通过函数通过函数实实现的。其中最基本的有:格式输出函数现的。其中最基本的有:格式输出函数printf( ),格格式输入函数式输入函数scanf( ),字符输出函数字符输出函数putchar( ),字字符输入符输入getchar( )。注意:在调用注意:在调用putchar( ),字符输入字符输入get
4、char( ) 函函数时,应在程序开始处使用文件包含命令,即:数时,应在程序开始处使用文件包含命令,即: #include 顺序结构程序中的语句一般按照三步编写:输入顺序结构程序中的语句一般按照三步编写:输入参数、根据参数计算、输出计算结果。参数、根据参数计算、输出计算结果。三、顺序结构(补充)三、顺序结构(补充)1、字符输出:、字符输出:putchar( )函数函数格式:格式: putchar (c );功能:向终端功能:向终端(屏幕屏幕)输出一个字符输出一个字符c。 说明:说明: 1) c为参数,它可以是字符型变量、字符型常为参数,它可以是字符型变量、字符型常量或转义字符。量或转义字符。
5、2) 程序中需要增加包含命令:程序中需要增加包含命令:#include 或者:或者:#include stdio.h四、字符输入输出四、字符输入输出 ( P65 )#include stdio.hmain( ) char a ; int b ; a=b; b = 111; putchar( a ); putchar( b ); putchar(y); putchar(n); 例:例:putchar( )函数例题函数例题 (写出执行结果写出执行结果)程序运行结果:程序运行结果:boy说明:说明:o的的ASCII码为码为111。2、字符输入函数、字符输入函数getchar( ) (P68)格式:格
6、式: getchar ( );功能:从终端功能:从终端(键盘键盘)接收接收(读入读入)一个字符。一个字符。说明:说明:getchar()只能接收一个字符,该字符可赋只能接收一个字符,该字符可赋给字符变量。给字符变量。#include void main( ) char c ; c=getchar(); putchar(c); 功能:输入一个字符,功能:输入一个字符,再将该字符输出。再将该字符输出。功能:功能:通过标准输出设备通过标准输出设备(如显示器如显示器)输出一组数据。输出一组数据。输出形式由输出形式由格式控制格式控制字符串规定。字符串规定。1、格式输出:、格式输出:printf( )函数
7、函数格式:格式:printf(格式控制格式控制,输出表列输出表列);格式控制格式控制:由由双引号双引号括起来的字符串,用于指定要括起来的字符串,用于指定要输出的数据的格式。输出的数据的格式。输出列表输出列表:需要输出的数据表列,彼此间用需要输出的数据表列,彼此间用逗号逗号分分隔。它可是任意合法的表达式。隔。它可是任意合法的表达式。五、格式输入输出函数五、格式输入输出函数 (P57)格式符功 能形 式d输出十进制整数%d、%md 、%ld、%mldo以八进制形式输出整数%o、%mo 、%lox以十六进制形式输出整数%x、%mx 、%lxu以十进制形式输出一个无符号的数%uc输出一个字符% cs输
8、出一个字符串%s、 %ms、 %m.nsf以小数的形式输出实数%f、%m.nf、%lfe以标准指数的形式输出实数%e、 %m.neg根据实数的大小自动按f或e的形式选择输出格式% g用于用于输出输出的格的格式式字符字符 (P58)(P58) printf( a+b = %5.2 f , c );附加附加格式符格式符格式符格式符输出表列输出表列普通字符普通字符格式说明符格式说明符格式控制格式控制输出结果:输出结果:普通字符原样输出,输出表列根据格式普通字符原样输出,输出表列根据格式控制符号来输出,即格式控制符控制输出表列的输控制符号来输出,即格式控制符控制输出表列的输出结果。出结果。格格式式输出
9、输出函数函数printfprintf()()的格式说明:的格式说明:格式字符说明:格式字符说明:1) d格式字符。格式字符。 %d:按整型数据的实际长度输出。按整型数据的实际长度输出。 %md:m为指定的输出长度。如果数据位小于为指定的输出长度。如果数据位小于m,则左端补以空格则左端补以空格;大于大于m,则按实际位输出。则按实际位输出。例:例:printf(%4d,%4d,a,b); 若若a=12, b=12345则输出为:则输出为: 12,12345 %ld:输出长整型数据。输出长整型数据。TC 2.0中的中的%d的输出范围为的输出范围为-3276832767,输,输出超过该范围的整型数就会
10、出错,此时用出超过该范围的整型数就会出错,此时用%ld输出。输出。其输出格式和功能与其输出格式和功能与%d相同,如:相同,如:%8ld。2) o格式字符格式字符以八进制数形式输出整数以八进制数形式输出整数,且不带符号。且不带符号。对于对于长整数可用长整数可用%lo%lo输出。功能同十进制输出。输出。功能同十进制输出。3) x格式字符格式字符以十六进制数形式输出整数,且不带符号。对以十六进制数形式输出整数,且不带符号。对于长整数可用于长整数可用%lx输出。功能同十进制输出。输出。功能同十进制输出。4) u格式字符格式字符用来输出用来输出unsignedint 数据,即无符号整数,数据,即无符号整
11、数,输出十进制数。输出十进制数。#include main() int a ; a=20; printf(a=%dn, a);printf(a=%on, a);printf(a=%xn, a);例:写出下面程序的执行结果。例:写出下面程序的执行结果。执行结果:执行结果: a=20 a=24 a=14#include main( ) int a, b, c; a=20; b=020; c=0x20; printf(a=%d,b=%d,c=%dn, a,b,c);printf(a=%o,b=%o,c=%on, a,b,c);printf(a=%x,b=%x,c=%xn, a,b,c);例:写出下面
12、程序的执行结果。例:写出下面程序的执行结果。程序的执行结果:程序的执行结果: a=20, b=16, c=32 a=24, b=20, c=40 a=14, b=10, c=20#include main( ) short int a, b;a=-1; b=65535; printf(a=%d,b=%dn, a,b);a=-2; b=65534; printf(a=%d,b=%dn, a,b); a=-9; b=65527; printf(a=%d,b=%dn, a,b);例:写出下面程序的执行结果。例:写出下面程序的执行结果。执行结果:执行结果: a=-1, b=-1 a=-2, b=-2
13、a=-9, b=-9 思考:思考:如果如果 a=32768; b=-32768 程序的执行结果程序的执行结果 ?#include main( ) int a;a=-1; printf(a=%d,a=%o,a=%x,a=%un, a,a,a,a);例:写出下面程序的执行结果。例:写出下面程序的执行结果。在在Vc+ 6.0下,程序的执行结果为:下,程序的执行结果为: a=-1, a=37777777777, a=ffffffff,a=4294967295在在Turbo c 2.0下,程序的执行结果为:下,程序的执行结果为: a=-1, a=17777, a=ffff,a=65535思考:思考:为什
14、么会出现上述两种不同的执行结果为什么会出现上述两种不同的执行结果 ?5) c格式字符格式字符 说明:一个整数,如果在说明:一个整数,如果在0255之间,也可用字之间,也可用字符形式输出,系统会将该整数转换成相对应的符形式输出,系统会将该整数转换成相对应的ASCII码字符;同时,一字符也可以用整数形式输出。码字符;同时,一字符也可以用整数形式输出。作用:用来输出一个字符。作用:用来输出一个字符。int x=65;printf (%c,x); int x=A;printf (%d,x); 输出输出: A输出输出: 65如如:printf(%3c,c),则输出为:则输出为:c格式字符也可以指定输出字
15、数宽度格式字符也可以指定输出字数宽度 A6) s格式字符格式字符用来输出一个字符串。用来输出一个字符串。例:例:printf(%s,Hello!); 输出为:输出为:Hello。%ms:输出的字符串占输出的字符串占m列。如果字符串长度小于列。如果字符串长度小于m,则左端补以空格;否则输出整个字符串。则左端补以空格;否则输出整个字符串。%-ms:如果串长小于如果串长小于m,则字符串向左靠,右补则字符串向左靠,右补空格,其余同上。空格,其余同上。%m.ns:输出的字符串占输出的字符串占m列列,但只取字符串中左但只取字符串中左端端n个字符,字符输出在个字符,字符输出在m列的右侧,左端补空格。列的右侧
16、,左端补空格。%-m.ns:- 是左对齐,即右补空格。是左对齐,即右补空格。#include main( ) char str1 =abcdefg;printf(1234567890n);printf(%sn, str1);printf(%10sn, str1);printf(%5sn, str1);printf(%10.5sn, str1);printf(%-10.5sn, str1);例:写出下面程序的执行结果。例:写出下面程序的执行结果。执行结果为:执行结果为:1234567890abcdefg abcdefgabcdefg abcdeabcde 7) f格式字符格式字符%f:不指定字段
17、宽度,整数部分全部输出,小数不指定字段宽度,整数部分全部输出,小数部分输出部分输出6位。位。%m.nf:指定输出数据占指定输出数据占m列,其中有列,其中有n位小数。位小数。若数值长度小于若数值长度小于m,则左端补以空格。则左端补以空格。%-m.nf:功能同上,右端补以空格。功能同上,右端补以空格。8) e格式字符格式字符%e:不指定字段宽度,系统自动给出不指定字段宽度,系统自动给出6位小数,位小数,指数部分占指数部分占4位。其中位。其中e占占1位,指数符号占位,指数符号占1位,指位,指数占数占2位。位。#include main( ) float x=123.456; printf(12345
18、67890n); printf(%fn, x); printf(%en, x); printf(%10.3fn, x); printf(%-10.3fn, x); 例:写出下面程序的执行结果。例:写出下面程序的执行结果。执行结果为:执行结果为:1234567890123.4560001. 234560e+002 123.456123.456 #includeint main()int v=10; printf(%d,%d,%dn,v+,v+,v+);例:写出下面程序的执行结果。例:写出下面程序的执行结果。在在Vc+ 6.0下,程序的执行结果为:下,程序的执行结果为: 10,10,10在在Dev
19、 C+下,程序的执行结果为:下,程序的执行结果为: 12,11,10思考:思考:为什么会出现上述两种不同的执行结果为什么会出现上述两种不同的执行结果 ?9) 9) 函数中的输出项按照从右向左的顺序输出(函数中的输出项按照从右向左的顺序输出(P65P65)2、格式输入函数、格式输入函数scanf ( P66)函数功能:函数功能:从终端输入任何类型的多个数据从终端输入任何类型的多个数据 函数格式:函数格式: scanf(格式控制格式控制,地址表列,地址表列);格式控制格式控制:与与printf相同,但普通字符按原样输入。相同,但普通字符按原样输入。地址地址表列表列:由若干个变量地址组成的表列。由若
20、干个变量地址组成的表列。 地址是地址是由由运算得到的。运算得到的。 是取址运算符,单目运算是取址运算符,单目运算符,右结合性。符,右结合性。例如:例如:&a, &chr分别表示变量分别表示变量a, chr, i的地址,该地的地址,该地址是在编译连接时系统分配给变量址是在编译连接时系统分配给变量a, chr的地址。的地址。例例1: scanf(%d%d, &a, &b); 可以采用格式:可以采用格式:12678 例例2: scanf(%d,%d, &a, &b); 必须采用格式:必须采用格式:12,678 例例3: scanf(a=%d, b=%d, &a, &b); 必须采用格式:必须采用格式
21、: a=12, b=678 如果要使如果要使a、b的值为的值为12和和678,则:,则: 1) 普通字符应该原样输入,格式符中无普通字普通字符应该原样输入,格式符中无普通字符时,可用符时,可用空格、空格、Tab键、回车键键、回车键作分隔符。作分隔符。 2) 无符号数可用无符号数可用 %d、%o、%x 格式输入。格式输入。 3) 输入格式符带有输入格式符带有 * :表示该数据不赋值。:表示该数据不赋值。 例:例:scanf(%d%*d%d, &a, &c); 键入键入: 12 34 567 则则 a=12, c=567, 34未赋值。未赋值。5) 数据输入时不可规定精度,但可确定宽度。数据输入时
22、不可规定精度,但可确定宽度。 例:例:scanf(%3f%3c, &a, &b); 合法。合法。 例:例:scanf(%3.2f%3c, &a, &b); 非法。非法。4) 用用c格式符输入字符时,空格均为有效字符。格式符输入字符时,空格均为有效字符。 例:例: scanf(%c%c%c, &a, &b, &c); 若键入若键入 ABC 则则 a=A,b=B,c=C 若键入若键入 A B C 则则 a=A,b=空格,空格,c=B /*参考程序参考程序*/#include void main() int a,b,temp;scanf(%d,%d,&a,&b); temp=a; a=b; b=te
23、mp; printf(a=%d,b=%dn,a,b);六、顺序结构程序设计例(六、顺序结构程序设计例(P69)例:变量交换。例:变量交换。 输入输入2个整数,交换它们的值并输出。个整数,交换它们的值并输出。分析:分析: 设鸡有设鸡有x只,兔有只,兔有y只。只。则方程:则方程:解得解得:例例2:鸡兔同笼问题。:鸡兔同笼问题。已知鸡兔总头数为已知鸡兔总头数为H,总脚数为,总脚数为F,求鸡兔各有多少只?,求鸡兔各有多少只?/*参考程序参考程序*/#include void main( ) int x, y; /* x为鸡的数量,为鸡的数量,y为兔的数量为兔的数量 */int h, f; printf
24、(请输入鸡兔的总头数总脚数请输入鸡兔的总头数总脚数:n); scanf(%d%d, &h, &f); x=(4*h-f)/2; y=(f - 2*h)/2; printf(笼中有鸡笼中有鸡%d只,有兔只,有兔%d只。只。n, x, y );例例3:输入一个三位数,按反序输出。:输入一个三位数,按反序输出。 例如例如: 输入输入123,输出,输出321。/*参考程序参考程序*/#include void main() int x,a,b,c,y;scanf(%d,&x); a=x/100; / a为百位为百位 b=x/10%10; / b为十位为十位 c=x%10; / c为个位为个位y=c*100+b*10+a;printf(x=%d,y=%dn,x,y);