3、基本语句与顺序结构程序设计.ppt
第三章 基本语句与顺序结构程序设计,3.1 C语言程序的基本语句3.2 赋值语句3.3 数据的输入输出,下一章,上一章,目 录,习题,3.1 C语言程序的基本语句,C语言语句有五类:表达式语句、函数调用语句、控制语句、复合语句、空语句。“;”是C语句结束标志。,表达式语句:x=x+1,z+x;j=j+3(是表达式,不是语句)j=j+3;(是语句)+i;/自增运算表达式加分号 n+=10;/复合赋值表达式加分号,函数调用语句:printf(“Goodn”);控制语句:if语句,while语句,return语句等。复合语句:用 括起来组成的一个语句,if(ab)c=a;a=b;b=c;,空语句:仅由一个“;”构成的语句,3.2 赋值语句,是由赋值表达式加上分号构成的表达式语句。格式:,注意:在赋值符“=”右边的表达式又可以是一个赋值表达式。如:a=b=c=d=5;右结合,变量=表达式;,赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。如:if(a=b)0)c=a;if(a=b;)0)c=a;printf(“%dn”,z=(x%y,x/y);,赋值表达式和赋值语句的区别是:,3.3 数据的输入输出,C语言中数据的输入、输出是由函数来实现的。3.3.1 格式输入输出函数 printf()和 scanf()3.3.2 字符输入输出函数 putchar()和getchar(),1.格式输出函数:printf()函数,格式:printf(“格式控制字符串”,输出表列);功能:按格式控制字符串规定的格式,向标准输出设备(一般为显示器)输出输出表列中各输出项的值。,printf(“格式控制”,输出表列);,格式控制:由双引号括起来的字符串,用于指定输出格式。普通字符:按原样输出的字符格式说明:用来指定需输出数据的输出格式 形式:%修饰符 格式字符 输出表列:需要输出的数据列表,彼此间用逗号分隔,可以是任意合法的表达式。,printf(“a=%dtb=%f”,a,b);,格式说明,输出表列,若此例中 int a=5;float b=20.5;输出结果:a=5 b=20.500000,继 续,表3.1 用于输出的修饰符,返 回,表3.2 用于输出的格式字符,返 回,例:格式输出:printf()函数,printf(“a+b=%5.2 f”,c);,1)d 格式符,作用:输出一个带符号的十进制整数(正数不输出符号)格式:%d%md%ld 其中:%d按整型数据的实际长度输出;m字段宽度;%ld输出长整型数据%hd输出短整型数据,作用:输出一个无符号的八进制、十六进制或十进制整数。例:long a=10;short b=-1;unsigned int c=65535;printf(“%5d,%o,%xn”,a,a,a);printf(“%hd,%#ho,%#hx,%hX,%hun”,b,b,b,b,b);printf(“%d,%o,%x,%un”,c,c,c,c);,-1原=1000000000000001-1补=1111111111111111,2)o、x和u格式符,输出结果:10,12,a-1,0177777,0 xffff,FFFF,6553565535,177777,ffff,65535,作用:用来输出一个字符例:char ch=a;int a=65;printf(“%c,%d,%3cn”,ch,ch,ch);printf(“%ctb%3dn”,a,a);,3)c 格式符,输出结果:a,97,a A65,一个整数,如果在0127之间,也可用字符形式输出,系统会将该整数转换成对应的ASCII码字符。,4)s 格式符,作用:用来输出一个字符串格式:%s%ms%m.ns 其中:m输出的字符串占m列;n输出字符串中左端n个字符,#include void main()printf(“%sn”,“computer”);printf(“computern”);printf(“%3sn,%8.2sn”,“computer”,“computer”);,例:,输出结果:computer computercomputercom,co,作用:以小数形式输出单、双精度实数。格式:%f%m.nf 其中:%f整数部分全部输出,隐含输出6位小数。m字段宽度(整数、小数位数、数符、小数点)n 小数位数的个数,如:%12.4f,5)f 格式符,例:,#include void main()float x=123.456;double y=321.654321;printf(“%f,%-7.2f,%10.4fn”,x,x,x);printf(“%5.3fn%.0fn”,y,y);,输出结果:123.456001,123.46,123.4560 321.654 322,作用:以标准化的指数形式输出实数(小数点前必须有而且只能有一位为非0数字)。格式:%e%m.ne其中:%e 默认输出6位小数 m字段宽度(指数部分占5列)n 小数部分的位数,6)e 格式符,例:,#include void main()float f=123.456;printf(“%en%-10.2en%10En”,f,f,f);,输出结果:1.234560e+002 1.23e+002 1.234560E+002,输出表列中各输出项与各格式说明必须按照从左到右的顺序在类型上一一匹配。如果实型数据用%d输出,结果出错;整型数据用%f 输出,结果为0。,注意:,输出表列可以是变量、常数、数组元素,函数引用及带运算符的表达式。例:printf(“%f%d%d%f”,3.14,a+b,x,cos(y);,当格式说明个数输出项时,输出不定值。,注意:,输出表列的求值顺序:VC是从右到左顺序求值的,输出仍从左至右。void main()int i=8;printf(“%d%d%d%dn”,i,i+,-+i,-i);,除 X,E,G 格式符外,其他格式符必须用小写字母。,输出结果:8 8-8 7,2.格式输入函数 scanf(),格式:scanf(“格式控制”,地址表列);功能:按格式控制所规定的格式,从指定的输入设备(一般为键盘)上把数据输入到指定的变量中。,格式控制:普通字符:需原样输入的字符,通常不使用。格式说明:用于指定需输入数据的输入格式 形式:%修饰符 格式字符 地址表列:给出各变量的地址“地址是由“”运算得到的“”是取地址运算符,得到变量在内存中的地址。单目运算符,右结合性。,scanf(“%d,%d”,格式说明,地址表列,继 续,表3.3 用于输入的修饰符,返 回,表3.4 用于输入的格式字符,返 回,格式输入的使用与注意:,1)输入数据时采用的分隔符应与格式控制中的分隔符一致。格式控制中无普通字符时,输入数值型数据可用空格、Tab键、回车键作分隔符。例:int a,b;float f,e;scanf(“%d%d”,输入:23 456 23(Tab)456,2345623.67,612.9a=12,b=24,scanf(“a=%d,b=%d”,注意:,2)输入数据时不可规定精度,但可指定宽度。例:scanf(“%7.2f”,输入:12346abc,a,b,ch,3)输入格式符带有*,表示该数据不赋值。例:scanf(“%d%*d%d”,输入:1234567 则 a=12,c=567,34 被跳过。,4)无符号数可用%d、%o、%x 格式输入。,注意:,5)用C格式符输入字符时,空格、转义字符均为有效字符。例:scanf(“%c%c%c”,若键入 ABC 则 a=A,b=B,c=C 若键入 ABC 则 a=A,b=,c=B 若键入 AB 则 C未送,结果已出为:a=A,b=,c=B,6)在下列情况下可认为数据输入结束:遇空格、回车、Tab键;遇宽度结束;非法输入。,【例3.1】,#include void main()int a;float b;char c;scanf(“%d%f%c”,运行:234.5ya=23,b=4.500000,c=y23,4.5,ya=23,b=4.500000,c=y按格式%6d%6f%c送数:234.5y a=23,b=4.500000,c=y,3.3.2 字符输入、输出函数,1.字符输出函数 putchar()格式:putchar(c);功能:向终端输出一个字符说明:C为参数,可以是字符型变量、整型变量、字符型常量、表达式或转义字符,但只能是单个字符而不能是字符串。,【例3.2】putchar函数的应用,#include void main()char a=O;int b=75;putchar(a);putchar(b);,putchar(n);,输出结果:OK,OK,2.字符输入函数 getchar(),格式:getchar();功能:从键盘读入一个字符 char ch=getchar();说明:只能读取一个字符该字符可赋给字符变量、整型变量或作为表达式的一部分。,【例3.3】getchar函数的应用,#include void main()char c;c=getchar();putchar(c);,/从键盘读入一个字符/在屏幕上输出所输入的字符,putchar(getchar();或 printf(“%cn”,getchar();,aa,abca,989,1,2,3,putchar(c=A,Dd,4,#include void main()int m=407,i1,i2,i3;i1=m%8;/*i1为个位*/i2=m/8%8;/*i2为十位*/i3=m/8/8%8;/*i3为百位*/printf(“407=0%d%d%dn”,i3,i2,i1);,输出结果:407=0627,printf(“407=%#on”,407);,【例3.4】编程将十进制数407转换成八进制数,顺序结构程序主要用于进行确定的显式计算一般结构:由四部分组成说明部分(说明变量的类型)赋初值部分(赋值语句,变量初始化,scanf函数)计算部分(数学公式算术表达式)输出部分(printf函数),第三章 总结,习题,1.若k为int型变量,则以下语句:k=8567;printf(“|%-06d|n”,k);a)输出格式描述符不合法 b)输出为|008567|c)输出为|8567|d)输出为|-08567|,2.若 x 为 float 型变量,则以下语句:,x=213.82631;printf(“%-4.2 f n”,x);a)输出格式描述符的域宽不够,不能输出。b)输出为 213.83 c)输出为 213.82 d)输出为-213.82,0,214,习题,3.若k为int型变量,则以下语句:k=-8567;printf(“|%06D|n”,k);a)输出为|%06D|b)输出为|0-8567|c)格式描述符不合法,输出无定值 d)输出为|-8567|,除X,E,G格式符外,其他格式字符必须用小写字母。,4.已知字母a的ASC十进制代码为97,则执行下列语句后的输出为:,a)b,c b)a-运算不合法,有语法错。c)98,c d)格式描述和输出项不匹配,输出无定值。char a=a;a-;printf(“%d,%cn”,a+2-0,a+3-0);,习题,5.#include void main()int a=4,b=7;printf(“%dn”,(a=a+1,b+a,b+1);a=1;b=2;printf(“%dn”,a=a+1,b+a,b+1);,程序运行结果:8 2,习题,6.若a是float型变量,b是unsigned型变量,以下输入语句中合法的是 a)scanf(“%6.2f%d”,习题,7.void main()printf(“%dn”,B);printf(“%cn”,B);printf(“%cn”,66);printf(“%cn”,B+32);printf(“%d,%c,%d,%s,%s,%sn”,n,0,0,”A”,”,”ABC”);,程序运行结果:66BBb10,0,A,ABC,