1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第4讲-顺序结构和常用语句.,C程序的语句有如下五种:,表达式语句:,任何表达式加上分号构成。,如,:,x=1;y=x+y;-x;y+1;,函数调用语句:,由一次函数调用加上分号构成,如,:,printf(Very Good!n);,复合语句:,用 括起来组成的一个语句。,如:,if(,ab)x=0;b=b+1;x=a;,空语句:,仅由一个分号构成的语句。,控制语句:,控制程序的流程。,如:,ifelse,语句,,while,语句,,return,语句。,二、C语言语句(P54),C语言对数据的输入、数据的
2、输出是,通过函数,实现的。其中最基本的有:格式输出函数,printf(),,格式输入函数,scanf(),,字符输出函数,putchar(),,字符输入,getchar(),。,注意:在调用,putchar(),,字符输入,getchar(),函数时,应在程序开始处使用文件包含命令,即:,#include ,顺序结构程序中的语句一般按照三步编写:输入参数、根据参数计算、输出计算结果。,三、顺序结构(补充),1、字符输出:,putchar(),函数,格式:,putchar(c);,功能:向终端(屏幕)输出一个字符c。,说明:,1)c为参数,它可以是字符型变量、字符型常量或转义字符。,2)程序中需
3、要增加包含命令:,#include ,或者:,#include,stdio.h,四、字符输入输出 (P65),#include stdio.h,main(),char a;,int b;,a=b;,b=111;,putchar(a);,putchar(b);,putchar(y);,putchar(n);,例:putchar()函数例题,(写出执行结果),程序运行结果:,boy,说明:,o的ASCII码为111。,2、字符输入函数getchar(),(P68),格式:,getchar();,功能:从终端(键盘)接收(读入)一个字符。,说明:,getchar()只能接收一个字符,该字符可赋给字符
4、变量。,#include ,void main(),char c;,c=getchar();,putchar(c);,功能:输入一个字符,再将该字符输出。,功能:,通过标准输出设备(如显示器)输出一组数据。输出形式由格式控制字符串规定。,1、格式输出:,printf(),函数,格式:,printf(,格式控制,,,输出表列,);,格式控制,:,由,双引号,括起来的字符串,用于指定要输出的数据的格式。,输出列表,:,需要输出的数据表列,彼此间用,逗号,分隔。它可是任意合法的表达式。,五、格式输入输出函数 (P57),格式符,功,能,形,式,d,输出十进制整数,%d,、,%md,、,%ld,、,%
5、mld,o,以八进制形式输出整数,%o,、,%mo,、,%lo,x,以十六进制形式输出整数,%x,、,%mx,、,%lx,u,以十进制形式输出一个无符号的数,%u,c,输出一个字符,%c,s,输出一个字符串,%s,、,%,ms,、,%,m.ns,f,以小数的形式输出实数,%f,、,%,m.nf,、,%lf,e,以标准指数的形式输出实数,%e,、,%,m.ne,g,根据实数的大小自动按f或e的形式,选择输出格式,%g,用于,输出,的格,式,字符 (P58),printf(a+b=%5.2 f ,c);,附加,格式符,格式符,输出表列,普通字符,格式说明符,格式控制,输出结果:,普通字符原样输出,
6、输出表列根据格式控制符号来输出,即格式控制符控制输出表列的输出结果。,格,式,输出,函数printf()的格式说明:,格式字符说明:,1)d格式字符。,%d:,按整型数据的实际长度输出。,%md:,m为指定的输出长度。如果数据位小于m,则左端补以空格;大于m,则按实际位输出。,例:printf(%4d,%4d,a,b);若a=12,b=12345则输出为:,12,12345,%ld:,输出长整型数据。,TC 2.0中的%d的输出范围为-3276832767,输出超过该范围的整型数就会出错,此时用%ld输出。其输出格式和功能与%d相同,如:,%8ld。,2)o格式字符,以八进制数形式输出整数,且
7、不带符号。对于长整数可用%lo输出。功能同十进制输出。,3)x格式字符,以十六进制数形式输出整数,且不带符号。对于长整数可用%lx输出。功能同十进制输出。,4)u格式字符,用来输出unsignedint 数据,即无符号整数,输出十进制数。,#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=0 x20;,printf(a=%d,b=%d,
8、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);,例:写出下面程序的执行结果。,程序的执行结果:,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);,例:写出下面程序的执
9、行结果。,执行结果:,a=-1,b=-1,a=-2,b=-2,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,思考:,为什么会出现上述两种不同的执行结果?,5)c格式字符
10、说明:一个整数,如果在0255之间,也可用字符形式输出,系统会将该整数转换成相对应的ASCII码字符;同时,一字符也可以用整数形式输出。,作用:用来输出一个字符。,int x=65;,printf(%c,x);,int x=A;,printf(%d,x);,输出:A,输出:65,如:,printf(%3c,c),则输出为:,c格式字符也可以指定输出字数宽度,A,6)s格式字符,用来输出一个字符串。,例:,printf(%s,Hello!);,输出为:Hello。,%ms,:输出的字符串占m列。如果字符串长度小于m,则左端补以空格;否则输出整个字符串。,%-ms,:如果串长小于m,则字符串向左
11、靠,右补空格,其余同上。,%m.ns,:输出的字符串占m列,但只取字符串中左端n个字符,字符输出在m列的右侧,左端补空格。,%-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);,例:写出下面程序的执行结果。,执行结果为:,1234567890,abcdefg,abcdefg,abcdefg,ab
12、cde,abcde,7)f格式字符,%f,:不指定字段宽度,整数部分全部输出,小数部分输出6位。,%m.nf,:指定输出数据占m列,其中有n位小数。若数值长度小于m,则左端补以空格。,%-m.nf,:功能同上,右端补以空格。,8)e格式字符,%e,:不指定字段宽度,系统自动给出6位小数,指数部分占4位。其中e占1位,指数符号占1位,指数占2位。,#include,main(),float x=123.456;,printf(1234567890n);,printf(%fn,x);,printf(%en,x);,printf(%10.3fn,x);,printf(%-10.3fn,x);,例:写
13、出下面程序的执行结果。,执行结果为:,1234567890,123.456000,1.234560e+002,123.456,123.456,#include,int main(),int v=10;,printf(%d,%d,%dn,v+,v+,v+,);,例:写出下面程序的执行结果。,在Vc+6.0下,程序的执行结果为:,10,10,10,在Dev C+下,程序的执行结果为:,12,11,10,思考:,为什么会出现上述两种不同的执行结果?,9)函数中的输出项按照从右向左的顺序输出(P65),2、格式输入函数scanf,(P66),函数功能:,从终端输入任何类型的多个数据,函数格式:,sca
14、nf(,格式控制,地址表列,);,格式控制,:,与printf相同,但普通字符按原样输入。,地址,表列,:,由若干个变量地址组成的表列。地址是由运算得到的。是取址运算符,单目运算符,右结合性。,例如:,&a,&chr分别表示变量a,chr,i的地址,该地址是在编译连接时系统分配给变量a,chr的地址。,例1:,scanf(%d%d,可以采用格式:12678,例2:,scanf(%d,%d,必须采用格式:12,678,例3:,scanf(a=%d,b=%d,必须采用格式:,a=,12,b=,678,如果要使a、b的值为12和678,则:,1)普通字符应该原样输入,格式符中无普通字符时,可用,空格
15、Tab键、回车键,作分隔符。,2)无符号数可用,%d、%o、%x,格式输入。,3)输入格式符带有,*,:表示该数据不赋值。,例:,scanf(%d%*d%d,键入:12 34 567,则 a=12,c=567,34未赋值。,5)数据输入时不可规定精度,但可确定宽度。,例:scanf(%3f%3c,合法。,例:scanf(%3.2f%3c,非法。,4)用c格式符输入字符时,空格均为有效字符。,例:,scanf(%c%c%c,若键入 ABC,则 a=A,b=B,c=C,若键入 A B C,则 a=A,b=空格,c=B,/*参考程序*/,#include ,void main(),int a,b,
16、temp;,scanf(%d,%d,temp=a;,a=b;,b=temp;,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(请输入鸡兔的总头数总脚数:n);,scanf(%d%d,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,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);,此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢,






