标签:
C语言中的程序结构有三种,分别是顺序结构、选择结构和循环结构。
一、按照语句的先后顺序执行的程序结构,称为顺序结构。
下面以一个求三角形面积的例子进行说明,其代码如下:
例1.1
1 #include<stdio.h> 2 int main() 3 { 4 int width,height,s; 5 printf("请输入三角形的底宽:\n"); 6 scanf("%d",&width); 7 printf("请输入三角形的高:\n"); 8 scanf("%d",&height); 9 s=width*height/2; 10 printf("三角形的面积为:s=%d\n",s); 11 return 0; 12 }
程序在执行时,需先输入三角形的底宽(6行),再输入高(8行),程序往下执行,计算三角形的面积(9行),最后将面积显示出来(10行)。这是按照语句的先后顺序执行的。
二、根据某种条件的成立与否而采用不同的程序段进行处理的程序结构,称为选择结构。
通常选择结构有两个分支,条件为真,执行甲程序段,否则执行乙程序段。有时,两个分支还不能完全描述实际问题(例如将学生成绩根据分数高低分成A,B,C,D,E等多个等级),需要分成多个分支,这样的程序结构称为多分支选择结构。
1、if简单语句
其语法形式如下:
if(表达式)
{语句1}
功能:计算表达式的值,若为“真”,则执行语句1,否则将跳过语句1,执行if语句的下一条语句。
例2.1
1 #include<stdio.h> 2 int main() 3 { 4 int age; 5 scanf("%d",&age); 6 if(age>18) 7 { 8 printf("您已经是成年人了!"); 9 } 10 re&turn 0; 11 }
上述程序中,首先定义了整型变量age,在输入age的值之后,根据age的值的大小,来判断是否为成年人。运行代码时,假如输入的数值大于18岁,则输出”您已经是成年人了!“,否则直接退出程序。
2、if—else语句
其语法形式如下:
if(表达式)
{语句1}
else
{语句2}
功能:计算表达式的值,若表达式的值为”真“执行语句1,并跳过语句2,继续执行if—else语句的下一条语句,若表达式为假,跳过语句1,执行语句2,然后继续执行if—else语句 的下一条语句。
例2.2
1 #include<stdio.h> 2 int main() 3 { 4 int age; 5 scanf("%d",&age); 6 if(age>18) 7 { 8 printf("您已经是成年人了!"); 9 } 10 else 11 { 12 printff("您还是未成年人了!"); 13 } 14 re&turn 0; 15 }
上述程序与例2.1相比,多了一条语句。在运行代码时,假如输入的数值大于18岁,则输出”您已经是成年人了!“,否则输出”您还是未成年人!“。
3、嵌套的if语句
在if语句和if—else语句形式中,语句1或语句2可以是任意合法语句。若它们也是if语句,就构成嵌套的if语句。嵌套形式有多种,下面介绍几种。
嵌套形式1 嵌套形式2 嵌套形式2
if(表达式1) if(表达式1) if(表达式1)
{ { {语句1}
if(表达式2) if(表达式2) else if(表达式2)
{语句1} {语句1} {语句2}
else } else
{语句2} else {语句3}
} {语句2}
else
{语句3}
例2.3:求下列分段函数
当x>0时,y=x+1;当x=0时,y=x;当x<0时,y=x-1;
利用嵌套形式1:
1 #include<stdio.h> 2 int main() 3 { 4 int x,y; 5 scanf("%d",&x); 6 if(x>=0) 7 { 8 if(x>0) 9 { 10 y=x+1; 11 } 12 else 13 { 14 y=x; 15 } 16 } 17 else 18 { 19 y=x-1; 20 } 21 printf("x=%d,y=%d\n",x,y); 22 return 0; 23 }
利用嵌套形式2:
1 #include<stdio.h> 2 int main() 3 { 4 int x,y; 5 scanf("%d",&x); 6 y=x; 7 if(x>=0) 8 { 9 if(x>0) 10 { 11 y=x+1; 12 } 13 } 14 else 15 { 16 y=x-1; 17 } 18 printf("x=%d,y=%d\n",x,y); 19 return 0; 20 }
利用嵌套形式3:
1 int main() 2 { 3 int x,y; 4 scanf("%d",&x); 5 if(x>0) 6 { 7 y=x+1; 8 } 9 else if(x=0) 10 { 11 y=x; 12 } 13 else 14 { 15 y=x-1; 16 } 17 printf("x=%d,y=%d\n",x,y); 18 return 0; 19 }
4、switch语句
其形式如下:
switch()
{
case 常量表达式1:语句1
case 常量表达式2:语句2
……
case 常量表达式n:语句n
default: 语句n+1
}
主意:switch语句常与break连用,break的功能为终止它所在的switch语句。
例2.4根据学生成绩的高低划分等级,代码如下:
1 #include<stdio.h> 2 int main() 3 { 4 int x; 5 printf("请输入学生成绩:\n"); 6 scanf("%d",&x); 7 switch(x/10) 8 { 9 case 10: 10 case 9: 11 printf("A"); 12 break; 13 case 8: 14 printf("B"); 15 break; 16 case 7: 17 printf("C"); 18 break; 19 case 6: 20 printf("D"); 21 break; 22 case 5: 23 case 4: 24 case 3: 25 case 2: 26 case 1: 27 case 0: 28 printf("E"); 29 break; 30 default: 31 printf("无效数据!"); 32 } 33 return 0; 34 }
上述程序中,先定义一个整型变量x,在输入x的值后,根据x所在的范围,确定成绩的等级。运行代码时,假如输入85,则输出"B",这表示该学生成绩等级为B。若该switch语句中,没有break语句,则程序会继续执行下面语句,输出B、C、D、E。
三、控制一个代码块多次执行,知道某个条件被满足的程序结构,称为循环结构。
C语言中,while语句、do—while语句和for语句是直接控制循环过程的循环语句。
1、while语句
其语法形式如下:
while(表达式)
{循环体语句}
功能:首先计算表达式的值,若为”真“,则执行循环体语句,执行完毕后,再计算表达式的值,若仍为”真“,则重复执行循环体语句。直到表达式的值为”假“时,结束while语句的执行,继续执行while语句后面的语句。
下面以求1+2+3+……+100的和为例,说明while循环语句的用法。
例3.1
1 #include<stdio.h> 2 int main() 3 { 4 int s,i; 5 s=0; 6 i=1; 7 while(i<=100) 8 { 9 s=s+i; 10 i++; 11 } 12 return 0; 13 }
2、do—while语句
其语法形式如下:
do
{循环体语句}
while(表达式);
功能:首先执行循环体语句,然后检测循环控制条件表达式的值,若为”真“,则重复执行循环体语句,否则退出循环。
下面以求1+2+3+……+100的和为例,说明do—while循环语句的用法。
例3.2
1 #include<stdio.h> 2 int main() 3 { 4 int s,i; 5 s=0,i=1; 6 do 7 { 8 s=s+i; 9 i++; 10 }while(i<=100); 11 return 0; 12 }
3、for语句
其语法形式如下:
for(表达式1;表达式2;表达式3)
{循环体语句}
功能:首先计算表达式1的值,然后检测表达式2的值,若其为“真”,则执行循环体语句,执行完毕后,在计算表达式3。然后,再测试表达式2的值是否为“真”,若为“真”,继续执行循环体语句,若为“假”,则终止循环。
下面以求1+2+3+……+100的和为例,说明for循环语句的用法。
例3.3
1 #include<stdio.h> 2 int main() 3 { 4 int i,s; 5 s=0; 6 for(i=1;i<=100;i++) 7 { 8 i++; 9 } 10 return 0; 11 }
从例3.1、3.2和3.3可以看出三种循环语句可以相互转化。但是它们也有各自的侧重点,应当根据不同的需求,选取适宜的语句。
4、循环嵌套
循环结构的循环体语句可以是任何合法的C语句。若一个循环结构的循环体中包含了另一个循环语句,则构成了循环嵌套,称为多重循环。
下面以用*输出一个矩形为例,说明循环嵌套的用法。
例3.4
1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 int width,height; 6 printf("输入矩形的长和宽:\n"); 7 scanf("%d%d",&width,&height); 8 for(i=1;i<=width;i++) //i控制矩形的长 9 { 10 for(j=1;j<=height;j++) //j控制矩形的宽 11 { 12 printf("*"); 13 } 14 printf("\n"); //一行*输出后换行 15 } 16 return 0; 17 }
上述程序中,首先申请四个变量,分别为i,j,width和height。i和j均作为循环控制变量,分别控制矩形的宽和高,当输入width和height的值时,矩形的宽和高就确定了,最后利用for语句将矩形输出来。
假如width=5,height=2,则输出结果如下:
*****
*****
标签:
原文地址:http://www.cnblogs.com/yddlvo/p/4440352.html