收藏 分享(赏)

第一章 C语言基础(自考).ppt

上传人:hwpkd79526 文档编号:8129742 上传时间:2019-06-10 格式:PPT 页数:184 大小:1.09MB
下载 相关 举报
第一章    C语言基础(自考).ppt_第1页
第1页 / 共184页
第一章    C语言基础(自考).ppt_第2页
第2页 / 共184页
第一章    C语言基础(自考).ppt_第3页
第3页 / 共184页
第一章    C语言基础(自考).ppt_第4页
第4页 / 共184页
第一章    C语言基础(自考).ppt_第5页
第5页 / 共184页
点击查看更多>>
资源描述

1、第一章 C语言基础,图一: 图二:,先介绍几个简单的C程序,然后从中分析程序的特性。例1.1 main ( )printf(“This is a c program.n”); 其中main表示“主函数”。每一个C程序都必须有一个main函数。函数体由大括弧 括起来。本例中主函数内只有一个输出语句,printf是C语言中的输出函数。双引号内的字符串按原样输出,“n”是换行符,即在输出“This is a c program.”后回车换行,语句最后有一分号。,例1.2 main ( )int a,b,sum; /*定义变量*/ a=112,b=234;sum=a+b;printf(“sum is

2、%dn”,sum); ,/* */表示注释部分,注释可用汉字、英语或拼音来进行描述。注释只是给人看的,作用是方便人来读懂这个程序,对编译和运行不起作用。注释可加在程序的任何位置。 第3行是声明部分,定义变量a和b,指定a和b为整型(int)变量。 第4行是两个赋值语句,使a和b的值分别为112和234。 第五行使sum的值为a+b。 第6行中“%d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式,“%d”表示“十进制整数类型”,在执行输出时,此位置上代以一个十进制整数型。,例1.3 main ( ) /*主函数*/ int a,b,c; /*定义变量*/ scanf(“%d,%

3、d”, /*将z的值返回,通过max带回调用处*/,本程序包含两个函数:主函数main和被调用的函数max。max函数的作用是将x和y中较大者的值赋给变量z。return语句将z的值返回给主调函数main。返回值是通过函数名max带回到main函数的调用处。main函数中的scanf是“输入函数”的名字。程序中的&a和&b中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。,main函数中第4行为调用max函数,在调用时将实际参数a和b的值分别传送给max函数中的形式参数x和y。经过执行max函数得到一个返回值(即m

4、ax函数中变量z的值),把这个值赋给变量c。然后输出c的值。printf函数中双引号内的“max= %d”,在输出时,其中“%d”将由c的值取代之,“max= ”原样输出。,a) C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。因此,函数是C程序的基本单位。(被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数。) 可以说C是函数式的语言,程序中的全部工作都是由各个函数分别完成的。编写C程序就是编写一个个函数。C的这种特点使得容易实现程序的模块化。,b) 一个函数由两部分组成:函数的首部,即函数的第一行。包括函数名、

5、函数类型、函数属性、函数参数(形参)名、参数类型。例如,例1.3中的max函数的首部为int max (int x, int y)函数类 函数 函数参数 函数参数 函数参 函数参数型 名 类型 名 类型 名一个函数名后面必须跟一对圆括号,函数参数可以没有,如main()。 函数体,即函数首部下面的大括号内的部分。如果一个函数内有多个大括号,则最外层的一对为函数体的范围。 函数体一般包括: 声明部分:在这部分中定义所用到的变量,如例1.3中main函数中的“int a, b,c”。 执行部分:由若干个语句组成。,c) 一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如

6、何。 d) C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。 每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。 e) C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。 f) 可以用/*/对C程序中的任何部分作注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。,C语言中的数据有常量和变量之分。 一、常量:整型、实型、字符型 1、整型有三种表示形式: a.十进制整型:非0开头,允许出现0-9共十个数字; b.八进制整型:以0开头,允许出现0-7共八个数字; c

7、.十六进制整型:以0x开头,允许出现0-f共十六个数字。 不论那种形式,整型一般在微机中占用2个字节,数值的表示范围:-3276832767。,数据,2、实型有两种表示形式: a.十进制:由0-9和小数点组成,必须包含小数点,小数点的两边不一定要求都有数字。 b.指数:类似数学中的指数表示法。5.1e-27。e的前后必须有数字,e后面的指数必须为整数,尾数可以是整数也可以是小数。 不论那种形式,实型一般在微机中占用4个字节,数值的表示范围:-10(38)10(38),有效位数7位。 3、字符型 用单引号括起来的单个字符;转义字符。字符型一般在微机中占用1个字节。,下列哪些可以作为C语言的常量:

8、 0xA5, 2.5e-2, 3e2, 0582, t, ”n”, 275, 02, 038,0, 0xAL, 5e2.0, e-3, 2e0, 1.3e 10110B,0xffa,x2a2,二、变量 1、标识符:即变量名 命名规则:只能由字母、数字、下划线三种字符组成,且第1个字符必须为字母或下划线;区分字母大小写;标识符的命名不得为C语言中的关键字。 char,int,float,double,signed,unsigned,short,long,void,struct,union,typedef,enum,sizeof auto,extern,register,static do,whi

9、le,for,if,else,switch,case,default,goto,continue,break,return include,define,ifdef,ifndef,undef,endif,elif,可以作为用户标识符的是哪些: default,cher,swicth,Case,t0,_if,2、变量的定义 C语言规定变量在使用之前必须先定义。 一般形式:类型说明符 变量1,变量2,变量n; int,long,float,double,char,运算符,常用运算符: a.圆括号运算符:() b.算术运算符:+、-、*、/、% c.赋值运算符:= d.关系运算符:、=、!= e.逻

10、辑运算符:&、|、! f.强制类型转换运算符:(类型),高 double floatlongunsigned低 int char,已知:char w;int x;float y;double z;,则表达式w*x+z-y结果的类型是,赋值运算符:= 注意: 运算规则:右结合 定义时不能连续给变量赋初值 int x=5; (正确) int x=y=5; (错误) int x=5,y=5; (正确) 复合的赋值运算符(+=、- =、*=、/=、%=) a+=b 等价于a=a+b 例如,有表达式x+=x+=x*=x-2,假设x=5,逻辑运算符:&、|、! 逻辑表达式的结果是逻辑值,用0(逻辑假)、1

11、(逻辑真)表示 逻辑运算符的运算规则:,() 高!、+、-*、/、%+、-、=、!=&|= 低,函数,putchar(输出字符) getchar(输入字符)printf(格式输出) scanf(格式输入)puts(输出字符串) gets(输入字符串) 在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户到源文件中。在头文件中包含了与用到的函数有关的信息。例如使用标准输入输出库函数时,要用到“stdio.h”文件。文件后缀“h”是head的缩写,#include命令都是放在程序的开头,因此这类文件被称为“头文件”。在调用标准输入输出库函数时,文件开头应有以下预编译

12、命令:#include或 #include”stdio.h”stdio.h是standard intput&output的缩写,它包含了与标准I/O库有关的变量定义和宏定义。考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加#include 命令。,一、printf函数的一般格式 printf(格式控制,输出表列); printf(“a=%d, b=%d”,a,b); 括号内包括两部分: (1)“格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息: 格式说明,由“%”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格

13、式说明总是由“%”字符开始的。 普通字符,即需要原样输出的字符。例如上面printf函数中双引号内的逗号、空格、a=和b=。 (2)“输出表列”是需要输出的一些数据,可以是表达式。,对不同类型的数据用不同的格式字符。常用的有以下几种格式字符: d格式符。用来输出十进制整数。有以下几种用法: %d,按整型数据的实际长度输出。 %md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 %ld,输出长整型数据。如:long a=135790;printf (“%ld”,a);如果用%d输出,就会发生错误,因为整型数据的范围为3276832767。对long

14、型数据应当用%ld格式输出。对长整型数据也可以指定字段宽度,如将上面printf函数中的“%ld”改为”%8ld”,则输出为:135790 一个int型数据可以用%d或%ld格式输出。,c格式符用来输出一个字符。 s格式符用来输出一个字符串。有几种用法:%s,输出一个字符串%ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns,其中m、n含义同上,n个字符输出在m列范围的

15、左侧,右补空格。如果nm,则m自动取n值,即保证n个字符正常输出。,main( )printf(“%3s,%7.2s,% .4s,%-5.3sn”,”CHINA”, ”CHINA”, ”CHINA”, ”CHINA”); 输出如下:CHINA,凵凵凵凵凵CH,CHIN,CHI凵凵,o格式符以八进制数形式输出整数。由于是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。 x格式符以十六进制数形式输出整数。同八进制相似,同样不会出现负的十六进制数。,main( ) int b=-2;printf(“b=%d,%o,%xn”,b,b,

16、b); ,f格式符用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法: %f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。应当注意,并非全部数字都是有效数字。单精度实数的有效位数一般为7位。 %m.nf指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。 %-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。,main( ) float f=123.456;printf(“%f凵凵%10f凵凵%10.2f凵凵% .2f凵凵%-10.2fn”,f,f,f,f,f); 输出结果如下:123456001凵凵123.456

17、001凵凵凵凵凵凵123.46凵凵123.46凵凵123.46凵凵凵凵,二、scanf函数的一般格式scanf(格式控制,地址表列)“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。scanf(“%d”,如果从键盘连续输入3个字符abc,由于ch只能容纳一个字符,系统就把第一个字符a赋给ch。,(2)输入数据时不能规定精度,例如, scanf(“%7.2f”, 输入时两个数据间应空2个或更多的空格字符。如:10凵凵34或10凵凵凵34,如果是:scanf(“%d:%d”,输入应为以下形式:a=12,b=34,putchar函数(字符

18、输出函数)的作用是向终端输出一个字符。例如: putchar(c);它输出字符变量c的值。c可以是字符型变量或整型变量。 getchar函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,其一般形式为 getchar( )函数的值就是从输入设备得到的字符。putchar和getchar可以用一行表示:putchar(getchar();如getchar( )的值为a,因此putchar函数输出a。也可以用printf函数输出:printf(“%c”,getchar();,如果在一个函数中(现为main函数)要调用getchar函数,应该在该函数的前面(或本文

19、件开头)加上“包含命令”: #include,例4: 输入三角形的三边长,求三角形面积为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为area= ,其中s=(a+b+c)/2 据此编写程序为: #include main() float a,b,c,s,area;scanf(“%f,%f,%f”, ,例5:从键盘输入一个大写字母,要求改用小写字母输出如何将一个大写字母转换成小写字母?我们通过码的形式来进行转换。includestdio.hmain( ) char c1,c2;c1=getchar( );printf(“%c,%dn”,c1,c1);c2=c1

20、+32;printf(“%c,%dn”,c2,c2);,结构化程序设计采用三种基本控制语句:顺序结构、选择结构、循环结构。 一、if语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。 1、if语句的三种形式 a. if(表达式) 语句例如:if(xy)printf(“%d”,x);这种if语句的执行过程见右图,if(表达式)语句1 else 语句2例如:if(xy)printf(“%d”,x);else printf(“%d”,y);执行过程见图二。,c. if(表达式1) 语句1else if(表达式2) 语句2else if(表达式3) 语句

21、3else if(表达式m) 语句melse 语句n,例6 输入两个实数,按代数值由小到大的次序输出这两个数。main( ) float a,b,t;scanf(“%f,%f”, 运行情况如下: 3.6,-3.2 -3.20,3.60,例7 输入3个数a、b、c,要求按由小到大的顺序输出。 main( ) float a,b,c,t;scanf(“%f,%f,%f”, ,2、if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:if ( )if ( ) 语句1 内嵌ifelse 语句2elseif ( ) 语句3 内嵌ifelse 语句4 应当注意if与else

22、的配对关系。else总是与它上面的最近的if配对。 如果if与else的数目不一样,为实现程序设计者的要求,可以加花括号来确定配对关系。例如:if ( ) if ( ) 语句1 (内嵌if)else 语句2 这时 限定了内嵌if语句的范围,因此else与第一个if配对。,例8 有一函数:-1 (x0) y= 0 (x=0)1 (x0) 编一程序,输入一个x的值,输出y值,此题有多种解法,在此列出其中两种: 程序1: main( ) int x,y;scanf(“%d”, ,程序2: main( ) int x,y;scanf(“%d”, ,3、条件运算符 若if语句中,在表达式为“真”和“假”

23、时,且都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。例如,若有以下if语句:if (ab) max=a;else max=b;可以用下面的条件运算符来处理:max=(ab)? a : b ;其中“max=(ab)? a : b”是一个“条件表达式”。它是这样执行的:如果(ab)条件为真,则条件表达式取值a,否则取值b。条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的一个三目运算符。条件表达式的一般形式为表达式1?表达式2 :表达式3,说明: (1)条件运算符的执行顺序:先求表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的

24、值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件 表达式的值。 (2)条件运算符优先于赋值运算符。低于关系运算符和算术运算符。 (3)条件运算符的结合方向为“自右至左”。如果有以下条件表达式:ab ? a : cd ? c : d相当于ab ? a : (cd ? c : d)如果a=1,b=2,c=3,d=4,则条件表达式的值等于4,例9 输入一个字符,判断它是否为大写字母,若是则变成小写字母,若不是则不作处理。最后输出这个字符。 main() char ch;scanf(“%c”, ,二、switch语句 switch语句是多分支选择语句。if语句只有两个分支可供选择

25、,而实际问题中常常需要用到多分支的选择。多分支选择问题也可以用嵌套的if 语句来处理,但如果分支较多,则嵌套的if语句层次多,程序冗长且可读性降低。而switch语句就可以很好的解决这个问题。它的一般形式如下:switch(表达式) case 常量表达式1:语句1case 常量表达式2:语句2case 常量表达式n:语句ndefault:语句n+1,例如,要求按照考试成绩的等级打印出百分制分数段,可以用switch语句实现switch(grade) case A:printf(“85100n”);case B:printf(“7084n”);case C:printf(“6069n”);cas

26、e D:printf(“60n”);default:printf(“errorn”);,执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是其语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。例如,上面的例子中,若grade的值等于A,则将连续输出:851007084606960 error因此,应该在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。将上面的switch语句改写

27、:,switch(grade) case A:printf(“85100n”);break;case B:printf(“7084n”); break;case C:printf(“6069n”); break; case D:printf(“60n”); break; default:printf(“errorn”); 最后一个分支(default)可以不加break语句,如果grade的值为B,则只输出“7084”,多个case可以共用一组执行语句。如:case A:caseB:case C:printf(“60n”); break;grade的值为A、B或C时都执行同一组语句。,例10

28、运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:s250km 没有折扣250s500 2折扣500s1000 5折扣1000s2000 8折扣2000s3000 10折扣300s 15折扣设每公里每吨货物的基本运费为p(price的缩写),货物重为w(weight的缩写),距离为s,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为:f=p*w*s*(1-d),分析此问题,折扣的变化是有规律的。可以看出,折扣的“变化点”都是250的倍数。利用这一特点,可以在路程上加上坐标c,c的值为s/250。c代表250的倍数。当 c1时,表示s250,无折

29、扣; 1c2时,表示250s500,折扣d=2; 2c4时,折扣d=5; 4c8时,折扣d=8; 8c12时,折扣d=10; c12时,折扣d=15.,main( ) int c,s;float p,w,d,f;scanf(“%f,%f,%d”,case 8: case 9: case 10: case 11: d=10; break;case 12: d=15; break;f=p*w*s*(1-d/100.0); printf(“freight=%15.4f”,f); ,三、while语句 while语句用来实现“当型”循环结构。其一般形式如下:while (表达式) 语句当表达式为非0值

30、时,执行while语句中的内嵌语句。其流程下图。其特点是:先判断表达式,后执行语句。,例11 求,main ( ) int i,sum=0;i=1; while (i=100) sum=sum+i;i+ +; printf(“%d”,sum);,四、do-while 语句 do-while语句的特点是先执行循环体,然后判断循环条件是否成立。其一般形式为do循环体while (表达式);它是这样执行的:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。,例12 用do-while 语句求,main

31、 ( ) int i,sum=0; i=1; do sum=sum+i; i+ +; while (i=100); printf(“%d”,sum);,五、while语句和do-while语句的区别与联系,在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。如例11和例12程序中的循环体是相同的,得到结果也相同。但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。,main ( ) int i,sum=0;scanf(“%d”, 运行情况如下: 1 sum=55 再运行一次: 11 sum=0,main

32、( ) int i,sum=0;scanf(“%d”, 运行情况如下: 1 sum=55 再运行一次: 11 sum=11,六、for语句 C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。for语句的一般形式为:for (表达式1;表达式2;表达式3) 语句,for语句最简单的应用形式也就是最易理解的如下形式: for (循环变量赋初值;循环条件;循环变量增值) 语句 例如:for(i=1;i=100;i+ +) sum=sum+i; 可以看到它相当于一下语句:i=1;while(i=10

33、0) sum=sum+i;i+ +; 对于以上for语句的一般形式也可以改写为while循环的形式: 表达式1;while (表达式2) 语句表达式3;,1、for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如for(;i=100;i+) sum=sum+i ;执行时,跳过“求解表达式1”这一步,其他不变。 2、如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。例如:for(i=1; ;i+ +) sum=sum+i ;表达式1是一个赋值表达式,表达式2空缺。它相当于:i=1;whi

34、le (1) sum=sum+1;i+ +;,3、表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。如:for(i=1;i=100;) sum=sum+1;i+ +;在上面的for语句中只有表达式1和表达式2,而没有表达式3。i+ +的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。,4、可以省略表达式1和表达式3,只有表达式2,即只给循环条件。如:for( ;i=100;) sum=sum+i;i+ +;相当于while( i=100) sum=sum+i;i+ +;在这种情况下,完全等同于while语句。可见for语句比whi

35、le语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值。,5、3个表达式都可省略。如:for( ; ; ) 语句相当于while(1) 语句即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止的执行循环体。,6、表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。如:for(sum=0;i=100;i+ +) sum=sum+i;表达式3也可以是与循环控制无关的任意表达式。表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号隔开。如:for(sum=0, i=1;i=100;i+) s

36、um=sum+i ;或for(i=0,j=100;i=j;i+ +,j- -) k=i+j ;表达式1和表达式3都是逗号表达式,各包含两个赋值表达式,即同时设两个初值,使两个变量增值。,在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。如:for(i=1;i=100;i+ + ,i+ +) sum=sum+i ;相当于for(i=1;i=100;i=i+ 2) sum=sum+i ;,表达式一般是关系表达式(如i=100)或逻辑表达式(如ab在表达式2中先从终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于n(换行符),如果不等于n,就执行循环体。此for语

37、句的执行过程,它的作用是不断输入字符,将它们的ASC码相加,直到输入一个“换行”符为止。注意:此for语句的循环体为空语句,把本来要在循环体内处理的内容放在表达式3中,作用是一样的。可见for语句功能强,可以在表达式中完成本来应在循环体内完成的操作。, for( ;(c=getchar( )!=n;)printf(“%c”,c);只有表达式2,没有表达式1和表达式3。其作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。,七、循环嵌套 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。 三种循环(while循环、do-while循环

38、和for循环)可以互相嵌套。例如,下面几种都是合法的形式:(1 )while( ) (2) do while( ) do while( );while( );,(3)for( ; ; ) (4)for( ; ; ) for( ; ; ) while( ) (5)while( ) (6)do do for( ; ; ) while ( ); while( ); while( );,例13 写出以下程序的输出结果 main() int i,j,k; printf(“i j kn”); for(i=0;i2;i+)for(j=0;j2;j+)for(k=0;k2;k+)printf(“%d %d %

39、dn”,i,j,k); ,i j k 0 0 0 0 0 1 0 1 0 0 1 10 0 1 0 11 0 1 1 1,八、 break语句 前面已经介绍过用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。实际上,break语句还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。如:for(r=1;r100) break;printf(“%f”,area);计算r=1到r=10时的圆面积,直到面积area大于100为止。从上面的for循环可以看到:当area100时,执行break语句,提前结束循环,即不再继续执行其余的几次循环。,b

40、reak语句的一般形式为:break;break语句不能用于循环语句和switch语句之外的任何其他语句中。,九、 continue语句 一般形式为:continue ;其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。,例14 把100200之间的不能被3整除的数输出。 main( ) int n;for(n=100;n=200;n+ +) if (n%3=0)continue

41、;printf(“%d”,n); 当n能被3整除时,执行continue语句,结束本次循环(即跳过printf函数语句),只有n不能被3整除时才执行printf函数。 当然,本例中循环体也可以改用一个语句处理:if(n%3!=0) printf (“%d”,n);,例15 main()int i=1,sum=0;doif(sum4) break;sum+=2;i+;while(i=5);printf(“the sum is %d,i=%d”,sum,i);,数组 数组是有序数据的集合,数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一的确定数组中的元素。 常用类型:一维数组

42、、二维数组、字符数组,一、一维数组 一维数组的定义方式为:类型说明符 数组名常量表达式;例如:int a10;它表示数组名为a ,此数组有10个元素。 说明: a.数组名定名规则和变量名相同,遵循标识符命名规则。 b.数组名后是用方括号括起来的常量表达式,不能用其他符号。 c.常量表达式表示元素的个数,即数组长度。如a3中,3表示a数组中有3个元素,下标从0开始,这3个元素是:a0、a1、a2,注意不能使用数组元素a3。 常量表达式中可以包括常量和符号常量,不能包括变量。,数组必须先定义后使用。C语言规定只能逐个引用数组元素而不能一次引用整个数组。 数组元素的表示形式为:数组名 下标 下标可以

43、是整型变量或整型表达式。例如:a0=a5+a7-a2*3 例 数组元素的引用main( ) int i ,a10 ;for(i=0;i0;i- -) 程序使a0到a9的值为09,然printf(“%d”,ai); 后按逆序输出。,对数组元素的初始化可以用以下方法实现: (1)在定义数组时对数组元素赋以初值。例如:int a10=0,1,2,3,4,5,6,7,8,9;将数组元素的初值依次放在一对花括号内。经过上面的定义和初始化之后,a0=0, a1=1, a2=2, a3=3, a4=4, a5=5, a6=6, a7=7, a8=8, a9=9. (2)可以只给一部分元素赋值。例如:int

44、a10=0,1,2,3,4;定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。,(3)如果想使一个数组中全部元素值为0,可以写成: int a10=0,0,0,0,0,0,0,0,0,0;不能写成: int a10=0*10; (4)在对全部数组元素赋初值时,可以不指定数组长度。例如:int a5=0,1,2,3,4;可以写成: int a =0,1,2,3,4;在第二种写法中,花括号中有5个数,系统就会据此自动定义a数组的长度为5。但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。如想定义数组长度为10,就不能省略数组长度的定义,

45、必须写成:int a 10=0,1,2,3,4;只初始化前5个元素,后5个元素为0。,二、二维数组 二维数组定义的一般形式为 类型说明符 数组名常量表达式常量表达式 例如: a34,b56;定义a为34(3行4列)的数组,b为56(5行6列)的数组,注意不能写成 float a3,4,b5,6;,二维数组的元素的表示形式为数组名 下标下标 如a23。下标可以是整型表达式,如a2-12*2-1. 数组元素可以出现在表达式中,也可以被赋值。 例如:b12=a23/2在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。常出现的错误是:int a34;a34=3; 定义a为34的数组,它可用

46、的行下标值最大为2,列下标值最大为3。用a34超过了数组的范围。,可以用下面的方法对二维数组初始化: (1)分行给二维数组赋初值。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;这种赋初值方法为按行赋初值。 (2)可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;此种方法易遗漏数据,不可取。,(3)可以对部分元素赋初值。int a34=1,5,9;它的作用是只对各行第1列的元素赋初值,其余元素值自动为0。赋初值后 数组各元素为1 0 0 05 0 0 09 0 0 0 也可以对各行中的某一元素赋初值: int a34=1,0,6,0,0,11; 初始化后的数组元素如下:1 0 0 00 6 0 00 0 11 0 这种方法对非0元素少时比较方便,不必将所有的0都写出来,只需输入少量数据。,(4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 与下面的定义等价: int a 4=1,2,3,4,5,6,7,8,9,10,11,12; 系统会根据数据总个数分配存储空间,一共12个数据,每行4列,当然可确定为3行。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报