资源描述
第3章顺序结构程序设计1第3章顺序结构程序设计1主要内容结构化程序设计的基本思想是:任何程序都可以采用三种基本结构来构造,这三种基本结构是:顺序结构、分支结构和循环结构。顺序结构是最简单也是最基本的程序结构,它按照语句出现的先后顺序依次执行程序。lC语言中的语句l数据的输入输出2主要内容结构化程序设计的基本思想是:任何程序都3.1语言中的语句C语句大致可分为以下五类:表达式语句函数调用语句控制语句复合语句空语句33.1语言中的语句C语句大致可分为以下五类:33.1.1表达式语句表达式语句由表达式加上分号“;”组成。l其一般形式为:表达式;l执行表达式语句就是计算表达式的值。例如:x=y+z;/*赋值语句*/y+z;/*加法运算语句,但计算结果不能保留,无实际意义*/i+;/*自增1语句,i值增1*/43.1.1表达式语句表达式语句由表达式加上分把多个语句用括号括起来组成的一个语句称复合语句。l其一般形式为:语句说明;可执行语句;l在程序中应把复合语句看成是单条语句,而不是多条语句。例如:x=y+z;a=b+c;printf(“%d%d”,x,a);l复合语句内的各条语句都必须以分号“;”结尾,在括号“”外不要加分号。复合语句可嵌套。3.1.2复合语句一条语句5把多个语句用括号括起来组成的一个语句称复控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。语言有九种控制语句。可分成以下三类:l条件判断语句:if语句、switch语句l循环执行语句:while语句、dowhile语句、for语句l转向语句:break语句、continue语句、goto语句、return语句3.1.3控制语句6控制语句用于控制程序的流程,以实现程序的各种调用函数的语句,由函数名、实际参数加上分号“;”组成。l其一般形式为:函数名(实际参数表);例如:printf(“Howdoyoudo?”);/*调用库函数,输出字符串How do you do?*/3.1.4函数调用语句7调用函数的语句,由函数名、实际参数加上分号“;仅有一个分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体等。例如:while(getchar()!=n);l顺序结构:结构中的语句按它们在程序中出现的顺序逐条执行,这种程序结构称为顺序结构。3.1.5空语句8仅有一个分号“;”组成的语句称为空语句。空语句l3.2.1数据输入输出概念输入:计算机通过键盘、扫描仪、磁盘、光盘等把数据送入计算机内部称之为“输入”输出:计算机通过显示器、打印机等外设将数据显示、打印或存放在磁盘上称之为“输出”C语言无输入输出语句,I/O操作由函数实现#include或#include“stdio.h”注:C语言编译系统提供的标准库函数存放在不同的头文件(也称标题文件)中。使用时必须在程序的开头用预编译命令“#include”将头文件包含到用户程序中去。形式为:#include或#include“头文件”输入输出函数存放在标准输入输出头文件stdio.h中。3.2数据的输入输出93.2.1数据输入输出概念3.2数据的输入输出9l字符输入函数格式:getchar()功能:从标准输入设备(键盘)读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1)注意:函数没有参数,因此本身不能提供有效存放所读字符的变量,该函数一般作为表达式的一部分使用。#include main()int c;printf(Enter a character:);c=getchar();printf(%c-hex%xn,c,c);运行结果:3.2.2字符数据的输入输出Enter a character:AA-hex4110字符输入函数#include运行结果:3l字符输出函数格式:putchar(c)参数:c为字符常量、变量或表达式功能:把一个字符c输出到标准输出设备(显示器)上返值:正常,为显示的代码值;出错,为EOF(-1)#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);运行结果:AB3.2.2字符数据的输入输出(续)11字符输出函数#include运行结果:A3.2.2字符数据的输入输出(续)#includevoidmain(void)inta1,a2;/*定义两个整型变量*/charc1,c2;/*定义两个字符变量*/a1=97;a2=65;c1=a;c2=A;putchar(a1);putchar(a2);putchar(c1);putchar(c2);putchar(n);/*输出字符及换行符*/a1=getchar();c1=getchar();/*从键盘输入字符*/putchar(a1);putchar(t);putchar(c1);/*输出字符及制表符*/运行结果:输出:aAaA输入:97输出:97/*调用系统函数getchar()和putchar()*/123.2.2字符数据的输入输出(续)#includestl格式输出函数格式:printf(“格式控制字符串”,输出表列);功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)l输出表列:要输出的数据(常量、变量和表达式。可以没有,多个时以“,”分隔)l格式控制字符串:包含3种信息格式说明:%修饰符格式字符用于指定输出格式转义字符:输出转义字符所代表的控制代码或特殊字符普通字符:原样输出3.2.3格式输入与输出13格式输出函数3.2.3格式输入与输出133.2.3格式输入与输出(续)字符说明举例显示d,ix,Xoucse,Efg%十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身printf()格式说明字符: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(“%”);567ff101567AABC5.677890e+02567.789000567.789%G说明:F格式字符要用小写F格式字符与输出项个数应相同,按先后顺序一一对应F输出转换:格式字符与输出项类型不一致,自动按指定格式输出例:main()unsigned int u=65535;printf(”u=%dn,u);例:int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=4111111111111111165535输出结果:u=-1143.2.3格式输入与输出(续)字符说printf()函数附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0 x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l15printf()函数附加格式说明符(修饰符).n对实数,指定3.2.3格式输入与输出(续)例: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);运行结果:例:static char a=“Hello,world!”printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);运行结果:修饰符m.n举例1234,1234123.456000,123.456000,123.5,123.46,1.23e+02 aHello,world!Hello,world!HelloHelloHel 163.2.3格式输入与输出(续)例:inta=1234;例: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,1234123.46,123.5Hello,Hel3.2.3格式输入与输出(续)17例:inta=1234;运行结果:修1234,12343.2.3格式输入与输出(续)例: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);修饰符l举例0000000000000001 0000000000000000/*00001234*/*0000123.46*/*000+1234*/*000+123.56*/*173,0173,7B,0X7B*/*0,65536*/183.2.3格式输入与输出(续)例:inta=1234;3.2.3格式输入与输出(续)例:格式输出函数的用法。#include void main(void)int a=12;float b=123.12345678;double c=12345678.1234567;char d=p;printf(a=%d,%5d,%o,%xn,a,a,a,a);printf(b=%f,%lf,%5.4lf,%en,b,b,b,b);printf(c=%lf;%f,%8.4lfn,c,c,c);printf(d=%c,%8cn,d,d);程序运行结果:a=12,12,14,cb=123.123459,123.123459,123.1235,1.23123e+02c=12345678.123457,12345678.123457,12345678.1235d=p,p193.2.3格式输入与输出(续)例:格式输出函数的用法。#3.2.3格式输入与输出(续)例:阅读下面程序,写出程序运行结果。#includ evoid main()int a=-1;long b=-1;float f=123.456;char c=a;printf(a=%d,a=%o,a=%x,a=%un,a,a,a,a);printf(b=%ld,b=%lo,b=%lx,b=%lun,b,b,b,b);printf(f=%f,f=%7.2f,f=%-7.2fnf=%e,f=%gn,f,f,f,f,f);printf(c=%c,c=%3c,c=%-3c,c=%d,c=%cn,c,c,c,a,65);printf(s1=%s,s2=%7.3s,s3=%-7.3sn,12345,ABCD,12345);运行结果:a=-1,a=177777,a=ffff,a=65535b=-1,b1=37777777777,b=ffffffff,b=4294967295f=123.456001,f=123.46,f=123.46f=1.23456e+02,f=123.456c=a,c=a,c=a,c=97,c=As1=12345,s2=ABC,s3=123203.2.3格式输入与输出(续)例:阅读下面程序,写出程序3.2.3格式输入与输出(续)l格式输入函数格式:scanf(“格式控制字符串”,地址表列);功能:按指定格式从键盘读入数据,存入地址表列指定的存储单元中,并按回车键结束返值:正常,返回输入数据个数,出错,返回0l地址列表:由若干个等待输入的数据所对应的内存单元地址组成。地址表之间用逗号分隔,若是变量的地址,常在变量前加&(取地址运算符)l格式控制字符串与printf()函数中的含义相似l格式字符:d,i,o,x,u,c,s,f,e例:scanf(“%d”,&a);输入:10 则 a=10例:scanf(“%x”,&a);输入:11 则 a=17213.2.3格式输入与输出(续)格式输入函数例:scanf例:scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入 19991015 则1999yy,10 mm,15 ddl修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例:scanf(“%3c%2c”,&c1,&c2);输入 abcde 则ac1,d c2例:scanf(“%2d%*3d%2d”,&a,&b);输入 1234567 则12a,67b例:scanf(“%3d%*4d%f”,&k,&f);输入 12345678765.43 则123k,8765.43fscanf()函数附加格式说明符(修饰符)22例:scanf(“%4d%2d%2d”,&yy,&mm,&d输入分隔符的指定l一般以空格、TAB或回车键作为分隔符l其它字符做分隔符:格式串中两个格式符间字符例:scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);输入 123 123 123 输出 a=123,b=83,c=291例:scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 b例:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入 a=12,b=24,c=36 例:scanf(“%d:%d:%d”,&h,&m,&s);输入 12:30:45 则12 h,30 m,45 s3.2.3格式输入与输出(续)23输入分隔符的指定例:scanf(“%d%o%x”,&a,&bG格式控制字符串中的普通字符,在输入时要在相应位置输入相同的字符G输入数据时,遇以下情况认为该数据结束:F遇空格、TAB、或回车F遇宽度结束F遇非法输入说明:l用“%c”格式符时,空格和转义字符作为有效字符输入如:scanf(“%c%c%c”,&c1,&c2,&c3);若输入abc 则ac1,c2,b c3如:scanf(“%d%c%f”,&a,&b,&c);若输入1234a123o.26 则 1234 a,a b,123 c例:scanf(%d,%d,&a,&b);/*应输入3,4*/scanf(a=%d,b=%d,&a,&b);/*应输入a=3,b=4形式*/3.2.3格式输入与输出(续)24格式控制字符串中的普通字符,在输入时要在相应位置输入相同的字#include void main()char c1,c2;int n1,n2;c1=getchar();c2=getchar();n1=c1-0;n2=n1*10+(c2-0);printf(“%dn”,n2);例:有以下程序,运行时输入:23,则输出结果为。233.3例题精解25#include例:有以下程序,运行时输#include#include main()float a,b,c,s,area;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,s=%7.2fn,a,b,c,s);printf(area=%7.2fn,area);例:输入三角形边长,求面积输入:3,4,6 输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.33变量定义输入数据文件包含预处理命令输出数据3.3例题精解26#include例:输入三角形边长,求面积#include#include main()float a,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%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(nnx1=%5.2fnx2=%5.2fn,x1,x2);输入:a=1,b=3,c=2 输出:x1=-1.00 x2=-2.0004022-=+acbcbxax方程的根,设例:求27#include输入:a=1,b=3,c例:从键盘输入小写字母,用大写字母输出。#include stdio.hmain()char c;c=getchar();printf(%c,%dn,c,c);c=c-32;printf(%c,%dn,c,c);输入:b 输出:b,98 B,6628例:从键盘输入小写字母,用大写字母输出。#include
展开阅读全文