C语言控制结构_第1页
C语言控制结构_第2页
C语言控制结构_第3页
C语言控制结构_第4页
C语言控制结构_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章控制结构第三章控制结构内容提要三种基本结构介绍顺序语句选择语句循环语句程序的灵魂——算法算法:为解决一个问题而采取的方法和步骤,就称为算法。NikiklausWirth提出:程序=算法+数据结构。计算机算法分类数值算法求方程的根求函数的定积分非数值算法图书检索人事管理算法的特性:有穷性、确定性、有效性等常用的算法描述方法:1.带序号的自然语言描述(易懂却不直观)2.流程图:灵活、自由、形象、直观,可表示任何算法输入输出处理

判断起止连接点流程线4.伪代码:用介于自然语言与计算机语言之间的文字及符号来描述算法(方便、易懂、便于向计算机语言过渡)3.N-S图(盒图):特点:完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框(表示简单、符合结构化思想)A当P为真

A

A

直到P为真处理判断循环PTFBA【例1-3】输入三个数,然后输出其中最大的数。算法可以表示如下:1)输入A、B、C。(A、B、C中为输入的数)2)A与B中大的一个放入MAX中。(MAX中装最大数)3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。 其中的2)、3)两步仍不明确,无法直接转化为程序语句,可以继续细化:2)可细化为:把A与B中大的一个放入MAX中,若A>B,则MAX←A;否则MAX←B。3)可细化为:把C与MAX中大的一个放入MAX中,若C>MAX,则MAX←C。于是算法最后可以写成:1)输入A,B,C。2)若A>B,则MAX←A;否则MAX←B。3)若C>MAX,则MAX←C。4)输出MAX,MAX即为最大数。这样的算法已经可以很方便地转化为相应的程序语句了。【例1-4】计算1到100的累加和,写出其算法自然语言描述1.定义两个变量S和n2.0S单元3.1n单元4.S+nS5.n+1n6.判断n≤100?是转4否则转77.输出S的值【例1-4】计算1到100的累加和,写出其算法流程图描述FT开始0S1nS+nSn+1nn<=100?输出S结束【例1-4】计算1到100的累加和,写出其算法

N-S图描述

伪代码描述

0S1nn≤100?S+nSn+1n输出S的值0S1nIfn≤100S+nSn+1nprintS结构化程序设计方法结构化程序的三种基本结构1966年提出三种基本结构,用这三种基本结构作为表示一种良好算法的基本单元:顺序、选择、循环 任何复杂的算法都是由这三种基本的结构按一定的规律组成。①顺序结构AB操作步骤按书写的顺序执行②选择结构A=3;B=4;C=A+B;TABPFIf(x!=0)y=sin(x)/x;elsey=1;

当P为真

A

A

直到P为真③循环结构先判断,后执行先执行,后判断S=0;n=1;While(n<=100){S=S+n;n++;}S=0;n=1;do{S=S+n;n++;}while(n<=100);三种基本结构的共同特点1.单入口单出口2.结构内的每一部分都有机会被执行3.不存在“死循环”结构化程序设计过程1.确定算法:分析问题,(建立数学模型,选择公式),写出算法描述2.编写程序:用计算机语言写出实现算法的程序3.上机调试:输入程序→编译、链接、执行程序→输出结果

3.1

概述

1、结构化程序设计思想:2、C语句分类:

C语言通过语句来实现三种结构,这些语句可以归纳为五类,分别是表达式语句、函数调用语句、空语句、复合语句和程序流程控制语句。1)表达式语句:表达式+“;”例:“count=0;”2)函数调用语句:例:“printf(“hello!”);”3)空语句:例如:while(getchar()!=’\n’){ ;}4)复合语句:例:{

语句1 …

语句n}5)程序流程控制语句 为了实现三种基本结构中的选择结构与循环结构及有关的辅助功能,C语言提供了四种流程控制语句。(1)选择控制语句:if、switch(2)循环控制语句:for、while、do-while(3)转移控制语句:break、continue、goto(4)函数返回语句:return

C语言中的程序都不会是简单的顺序结构,而是顺序、选择、循环三种结构的复杂组合。在C语言中,有一组相关的控制语句,用以实现选择结构与循环结构:选择控制语句:if;switch、case

循环控制语句:for、while、dowhile

转移控制语句:break、continue、goto3.2

顺序结构程序设计

3.2.1

赋值语句赋值表达式加上一个分号就构成了赋值语句。语句格式:变量=表达式;赋值语句的功能和特点都与赋值表达式相同,它是程序中使用最多的语句之一。例:A=3;B=4;

关于赋值语句的几点说明由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式:“变量=(变量=表达式);”是成立的,从而形成嵌套的情形。注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。

注意赋值表达式和赋值语句的区别。 赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。如:if((x=y+5)>0){z=x;}合法if((x=y+5;)>0){z=x;}非法4.如果赋值运算符“=”两边的数据类型不相同,在赋值的时候要进行类型转换。关于输入输出

C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在c标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数。在使用它们时,千万不要误认为它们是C语言提供的“输入输出语句”。

C语言函数库中有一批“标准输入输出函数”,其中有:

putchar(输出字符)getchar(输入字符)printf(格式输出)scanf(格式输入)puts(输出字符串)gets(输入字符串)。

若要使用C语言中的函数库,必须在程序的开头位置用预编译命令“#include”将有关的“头文件”(函数库文件)包括到用户源文件中。在头文件中包含了与用到的函数有关的信息。例如使用标准输入输出库函数时,要用到“stdio.h”文件。因此,在调用标准输入输出库函数时,程序的开头应有以下预编译命令:

#include<stdio.h>3.2.2字符输入输出函数1、putchar()函数

putchar函数的作用是向终端输出一个字符:例如putchar(c);它输出字符变量c的值。c可以是字符型变量或整型变量。例3-1:#include<stdio.h>intmain(){putchar(’\101’);putchar(’*’);putchat(’A’);putchar(’*’);putchar(65);return0;}运行结果如下:A*A*A2、getchar()函数

此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,其一般形式为:getchar()。函数的值就是从输入设备得到的字符。例3-2:#include<stdio.h>voidmain(){

charc;

c=getchar();

putchar(c);}1、格式输入输出函数printf() 它的作用是向终端输出若干个任意类型的数据。printf函数的一般格式为printf(格式控制,输出表列);如:printf("%d,%c\n",i,c);

3.2.3格式输入输出函数括弧内包括两部分:

(1)“格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:

①格式说明,由“%”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。②普通字符,即需要原样输出的字符。例如上面printf函数中双引号内的逗号、空格和换行符。

(2)“输出列表”是需要输出的一些数据,可以是表达式。输出格式说明对不同类型的数据用不同的格式字符。常用的有以下几种格式字符:

(1)d格式符。用来输出十进制整数。有以下几种用法:①%d,按整型数据的实际长度输出。②%md,m为指定的输出字段的宽度。③%ld,输出长整型数据。

(2)O格式符,以八进制数形式输出整数。由于是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。(3)x格式符,以十六进制数形式输出整数。同样不会出现负的十六进制数。(4)u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。(5)c格式符,用来输出一个字符。

一个整数,只要它的值在0—255范围内,也可以用字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;反之,一个字符数据也可以用整数形式输出。例3-3:使用基本格式说明%d、%o、%x输出整型数据。#include<stdio.h>intmain(){inta=15;printf(”%d,%o,%x\n”,a,a,a);printf(”%5d”,a);return0;}运行结果如下:15,17,f15例3-4输出实型数据,注意数据的有效位数。#include<stdio.h>intmain(){floatx,y,z;x=12345.111111;y=22222.222222;

z=x+y;

printf(”%f”,z);return0;}运行结果如下:34567.335938例3-5:使用%c格式说明输出数据。程序:#include<stdio.h>intmain(){inta=65,b=97;printf(”%d%d\n”,a,b);printf(”%d,%d\n”,a,b);printf(”%c,%c\n”,a,b);printf(”a=%d,b=%d\n”,a,b);return0;}运行结果如下:659765,97A,aa=65,b=97(6)s格式符,用来输出一个字符串。有几种用法:①%s,输出字符串。②%ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。③%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。④%m.ns,输出占m列,但从字符串左端取n个字符。这n个字符输出在m列的右侧,左补空格。⑤%-m.ns,其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。

注意:如果n>m,则m自动取n值,即保证n个字符正常输出。例3-6使用%s格式说明输出数据。include<stdio.h>intmain(){printf(”%s”,”WelcometoChina!”);return0;}运行结果如下:WelcometoChina!

(7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:①%f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。②%m.nf指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。③%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。例3-7:#include<stdio.h>voidmain(){

floatf=123.456;

printf(“%f%10f%10.2f%.2f%-10.2f\n”,

f,f,f,f,f);}(8)e格式符,以指数形式输出实数。(9)g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。例如,若f=123.468,则printf(“%f%e%g”,f,f,f);输出如下:

123.4680011.234680e+002123.468在使用printf函数时,还有几点要说明:(1)除了x,e,g外,其他格式字符必须用小写字母,如%d不能写成%D。(2)可以在printf函数中的“格式控制”字符串内包含“转义字符”,如“\n”、“\t”、“\b”、“\r”、“\f”、“\377”等。(3)上面介绍的d、o、x、u、c、s、f、e、g等字符,如用在“%”后面就作为格式符号。(4)如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:

printf(“%f%%”,1.0/3);2、scanf函数(格式输入函数)

它的作用是通过输入终端按格式接受输入的数据信息。scanf的一般形式为scanf(格式控制,地址表列);如:scanf(“%d%d%d”,&a,&b,&c);“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。地址可通过“&”(取地址运算符)获得。例如,&a指a在内存中的地址。输入格式说明(1)对unsigned型变量所需的数据,可以用%u,%d或%o,%x格式输入。(2)可以指定输入数据所占列数,系统自动按它截取所需数据。如,scanf("%3d%3d",&a,&b);输入:123456

系统自动将123赋给a,456赋给b。(3)如果在%后有一个“*”附加说明符,表示跳过它指定的列数。例如,scanf("%2d%*3d%2d",&a,&b);如果输入如下信息:

1234567

将12赋给a,%*3d表示读入3位整数但不赋给任何变量。然后再读入2位整数67赋给b。(4)输入数据时不能规定精度,例如,scanf(“%7.2f”,&a);是不合法的。使用scanf函数时应注意的问题(1)scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。(2)如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。例3-8:scanf函数的使用。

#include<stdio.h>intmain(){inta,b,temp;printf(”Pleaseinputa,b:”\n);scanf(”%d%d”,&a,&b);temp=b;b=a;a=temp;printf(”a=%d,b=%d\n”,a,b);return0;} 运行结果如下:Pleaseinputa,b:23↙a=3,b=2

(3)在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。(4)在输入数据时,遇以下情况时该数据认为结束。①遇空格,或按“回车”或“跳格”(tab)键。②按指定的宽度结束,如“%3d”,只取3列。③遇非法输入。3.2.4程序举例例3-9

输入圆的半径,求圆的面积。

#definePI3.14#include<stdio.h>intmain(){floatr,area;printf(”Pleaseinputr(r>=0):”);scanf(”%f”,&r); area=PI*r*r;printf(”%7.2f\n”,area);return0;}运行结果如下:Pleaseinputr(r>=0):5↙78.50

在C语言中,根据条件来确定程序的执行流程,选择某一个分支来执行的语句被称为选择语句。其基本特点是:程序的流程由多路分支组成,在程序的一次执行过程中,根据不同的情况,只有一条支路被选中执行,而其他分支上的语句被直接跳过。

C语言提供两种选择语句,分别是if语句和switch语句,if语句用于两者选一的情况,而switch用于多分支选一的情形。3.3

选择结构程序设计

3.3.1if语句

if语句的三种形式:第一种形式语句格式:if(表达式)

{

语句;

}

语句功能:如果表达式的值为真(T),则执行其后面的语句,否则不执行该语句。表达式TF语句

第二种形式

语句格式:

if(表达式)

{

语句1}else{

语句2}

语句功能:如果表达式的值为真(T),则执行语句1,否则执行语句2。无论如何,语句1与语句2每次只能有一个被执行。表达式TF语句1语句2要注意的是:if或if...else,包括后面要讲到的第三种形式,即if...elseif...都被看成是一条语句,即使其中的语句是包含多条语句的复合语句,仍然如此。例3-10

输入三个整数,找出并打印其中的最小数。源程序:#include<stdio.h>voidmain(){

int

a,b,c,min;

printf(“inputa,b,c:”);

scanf(“%d%d%d”,&a,&b,&c);

if(a<b){min=a;}else{

min=b;}if(c<min){

min=c;}

printf(“Theresultis%d\n”,min);}例3-11从键盘读入两个数x、y,将大数存入x,小数存入y。分析:x、y从键盘读入,若x>=y,只需顺序输出,否则,应将x,y中的数进行交换,然后输出。两数交换必须使用一个中间变量t,定义三个浮点数x、y、t。算法:

1)读入x、y;2)大数存入x,小数存入y;3)输出x、y。第2)步细化:若x<y,则交换x与y;再细化,x与y交换;①t=x②x=y③y=t读入x、yx>yYN

t=x;x=y;y=t;输出x、y第三种形式前两种形式的if语句一般用于有两个分支的情形,当有多个分支选择时,可采用这种形式。语句功能:依次判断表达式的值,当出现某个值为真(T)时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序,如果所有的表达式均为假(F),则执行语句n+1,然后继续执行后续的程序。语句格式:

if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式n)语句nelse

语句n+1

表达式1YN

Y表达式2N语句1……

语句2

表达式n

YN

语句n语句n+1 例3-12输入一个百分制成绩,要求输出其对应的成绩等级。其中90~100分的成绩等级为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,0~59分’E’。#include<stdio.h>intmain(){floatscore;chargrade;printf(”pleaseinputthescore:\n”);scanf(”%f”,&score);if(score>=90&&score<=100)grade=’A’;elseif(score>=80&&score<=89)grade=’B’;elseif(score>=70&&score<=79)grade=’C’;elseif(score>=60&&score<=69)grade=’D’;

elseif(score>=0&&score<=59)grade=’E’;elseprintf(”youhaveenteredthewronggrade!”);printf(”score=%.1f,grade=%c”,score,grade);return0;}运行结果如下:pleaseinputthescore:86↙score=86.0,grade=B

第四种形式

if语句的嵌套if语句的嵌套形式在if语句中又包含了一个或者多个if语句,这种情形叫做if语句的嵌套。其一般形式如下:if(表达式1)

if(表达式2)语句1else

语句2elseif(表达式3)语句3else

语句4

if语句和else的配对嵌套在if语句当中的语句有可能又是if-else型的,这个时候就会出现多个if和多个else重复出现的情况,所以应当特别注意if和else的配对关系。为了避免这种二义性C语言规定,else总是与它前面最近的if配对。

例如:

if(表达式1)

if(表达式2)语句1else语句2if(表达式3)语句2else语句3例3-13计算函数对多重if,最容易犯的错误是if与else配对错误,例如,写成如下形式:y=0;if(x>=0)if(x>0)y=1;elsey=-1;

y=0;if(x>=0)

{if(x>0)

y=1;}elsey=-1;

3.2.2switch语句

if语句只能处理从两者间选择之一的情况,当要实现几种可能之一时,就要用if-elseif甚至多重的嵌套if来实现,当分支较多时,程序变得复杂冗长,可读性降低。C语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁。语句功能:计算表达式的值,并逐个与其后面的常量表达式比较,当表达式的值与某一个case中的常量表达式的值相等时,就执行此case后面的语句,若表达式的值与所有常量表达式的值都不相同时,则执行default后面的语句。switch语句格式:switch(表达式){case常量表达式1:语句1

case常量表达式2:语句2

……case常量表达式n:语句n

default:语句n+1;}break;break;break;,

特殊情况下,如果switch表达式的多个值都需要执行相同的语句,可以采用下面的格式:

switch(i)

{case1:case2:case3:语句1break;case4:case5:语句2break;default:语句3}

当整型变量i的值为1、2或3时,执行语句1;当i的值为4或5时,执行语句2;否则,执行语句3。几点说明:(1)其中常量表达式的值必须是整型、字符型或者枚举类型。并且各常量表达式的值不能相同,否则会出现错误。(2)各语句里面允许有多条语句,可以不用{}括起来,若语句序列i为空,则对应的break语句可去掉。(3)各case和default子句的出现顺序不影响执行结果,可以先出现default子句,再出现case子句。(4)执行完一个case后面的语句后,流程转入下一个case继续执行,case子句只是起到语句标号的作用,并不是在该处进行判断的条件。所以若想跳出switch语句,则可以用一个break语句来实现。例3-14输入月份,打印在2005年该月有几天。程序如下:#include<stdio.h>voidmain(){

intmonth;

intday;

printf(“pleaseinputthemonthnumber:”);

scanf(“%d”,&month);switch(month){case1:case3:case5:case7:3.3.3程序举例

case8:case10:case12:day=31;break;case4:case6:case9:case11:day=30;break;case2:day=28;break;default:day=-1;}

if(day==-1){

printf(“Invalidmonthinput!\n”);}else{printf(“2005.%dhas%ddays\n”, month,day);}}3.4

循环结构程序设计循环语句是程序流程控制语句中的另一个基本语句。在实际问题中,常常需要进行大量的重复处理。循环语句可以使我们只写很少的语句,而让计算机反复执行,从而完成大量雷同的计算。

C语言中主要有三种循环语句:while语句、do…while语句和for语句,利用这些语句可以实现不同形式的循环结构。

3.4.1while语句

while语句是用来实现“当型”循环的控制语句。while语句格式:while(表达式){

语句}

语句功能:当表达式的值为真(T)时,执行循环体语句。当表达式的值为假(F)时,退出循环,执行while语句后面的语句。

while语句的特点是先判断,后执行,若条件不成立,有可能一次也不执行。

表达式为真

语句例3-15:用while语句,求1到50的和。分析:令和s的初值为0,变量i为记数器,i从1变到50,每一步令s=s+i,则最终s的值就是所求。程序如下:#include<stdio.h>voidmain(){inti=1,s=0;while(i<=50){s=s+i;i++;}printf(“s=%d”,s);}例3-16

求n!分析:n!=n*(n-1)*(n-2)*...2*1,0!=1。即S0=1,Sn=Sn-1*n。可以从S0开始,依次求出S1、S2、...Sn。#include<stdio.h>voidmain(){intn,i;longints;printf(“pleaseinputn(n>=0):”);scanf(“%d”,&n);if(n>=0){s=1;}

if(n>0){i=1;while(i<=n){s*=i;i=i+1;}}

printf(“%d!=%ld\n”,n,s);}else

printf(“Invalidinput!\n”);}

3.4.2do...while语句在C语句中,do…while语句是用来实现“直到型”循环的控制语句。

do…while语句格式:

do{

语句;

}while(表达式);语句功能:先执行一次指定的循环体语句,再判别表达式,当表达式的值为真(T)时,则继续执行循环体语句,直到表达式的值为假(F)时,才终止循环,执行while语句后面的语句。

语句表达式为真

do…while语句的基本特点是:先执行后判断,因此,循环体至少被执行一次。但需要注意的是,do…while与标准的直到型循环有一个极为重要的区别,直到型循环是当条件为真时结束循环,而do…while语句恰恰相反,当条件为真时循环,一旦条件为假,立即结束循环。例3-17

用do-while语句计算1到100的和。程序如下:

#include<stdio.h>intmain(){

inti=1,s=0;

do

{

s=s+i;

i++;

}while(i<=100);

/*注意while后面一定要有分号*/

printf(”s=%d”,s);

return0;}运行结果如下:s=5050C语言中,for语句的功能更强,使用更广泛,它不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环条件的情况。

for语句格式:

for(表达式1;表达式2;表达式3)

{

语句;}

语句功能:首先计算表达式1的值。再计算表达式2的值,若值为真(T),则执行循环体一次,若为假,则跳出循环。然后计算表达式3的值。转回第2步继续执行程序。循环结束,执行for下面的程序。

3.4.3for语句

for语句最简单的应用形式也就是最容易理解的形式如下:

for(循环变量赋初值;循环条件;循环变量增值)语句;

例如:

for(i=1;i<=100;i++)

{s=s+i;}例3-18计算自然数1到n的平方和。#include<stdio.h>#include<math.h>voidmain(){inti;

floats;printf(“pleaseinputn:”);scanf(“%d”,&n);s=0.0;

for(i=1;i<=n;i++){s=s+(float)(i)*(float)(i);}printf(“1*1+2*2+...+%d*%d=%f\n”,n,n,s);}运行结果如下:pleaseinputn:61*1+2*2+...+5*5+6*6=91.000000for语句的几点说明:(1)for语句中的各表达式都可以省略,但分号间隔符不能少。(2)表达式1省略时,应在for语句之前给变量赋初值。(3)表达式2或者表达式3省略时,将造成无限循环,这个时候应该在循环体内部设法结束循环。例3-19:#include<stdio.h>voidmain(){

inta=0,n;

printf(“\ninputn:”);

scanf(“%d”,&n);

for(;n>0;){a++;n--;

printf(“%d”,a*2);}}

3个表达式语句都可以省略,如:

for(;;)语句;

这种情况下,for语句等效于

while(1)语句;

即不设初值,不判断条件(认为表达式2为真),循环变量不增值。无终止地执行循环体。所以一般将条件表达式加break语句放在循环体内适当位置,一旦条件满足时,用break语句跳出for循环。

在for语句中,表达式1、表达式3都可以有一项或多项,例如:

for(i=1,j=n;i<j;i++,j--)

语句;

表达式1同时为i和j赋初值,表达式3同时改变i和j的值。当有不止一项时,各项之间用逗号“,”分隔。

(1)三种语句的选用同一个问题,往往既可以用while语句解决,也可以用do…while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句,选用的一般原则是:①如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是由循环体的执行情况确定的,一般用while语句或者do…while语句。②当循环体至少执行一次时,用do…while语句,反之,如果循环体可能一次也不执行,选用while语句。

关于循环语句的几点说明:一个循环的循环体内又有另一个循环,叫做循环的嵌套。这种嵌套过程可以有很多重。嵌套的循环中还可以嵌套循环,叫做多层循环。三种循环语句for、while、do…while可以互相嵌套自由组合。下面几种嵌套形式都是合法的嵌套形式:①for(;;)②do{…{…while()for(;;){…}{…}……}}while();3.4.4循环的嵌套do(;;){

...for(;;){…}…}

while(;;){

...do{…}while…}

for(;;){

...while(;;){…}…}

for(;;){

...for(;;){…}…}

例3-20打印4行5列的星形矩阵。程序如下:#include<stdio.h>voidmain(){

inti,j;

for(i=0;i<4;i++){for(j=0;j<5;j++){printf(“*”);}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论