C语言结构化程序设计

目录

1. 顺序结构

2. 选择结构

2.1 if语句

2.2 switch语句

3. 循环结构

3.1 while语句

3.2 for语句

3.3 do-while

4. 跳转语句

4.1 break

4.2  continue语句

4.3 goto语句


        C语言程序设计的结构有:顺序结构 选择结构  循环结构  跳转语句;总共分为9条语句,实现程序结构化编程,使程序具有逻辑性,层次性。

1. 顺序结构

        从程序的入口函数开始,从上往下依次执行,上一条语句结束之后,下一条语句才会继续执行,是程序的整体的趋势。

2. 选择结构

        程序根据条件有选择性的执行其中的语句块(一条语句或者是多条语句);选择结构的语句有: if语句, switch…case…break…default语句。

2.1 if语句

(1)第一种形式:单分支

if( 条件表达式 )
{
   //条件成立,则执行if语句
}

说明:

        if语句默认执行离它最近的语句,如果仅仅只有一条语句,可以不用加括号,如果是多条语句则必须加大括号,建议只有一条语句的时候,也用大括号括起来

        执行原理:条件表达式成立(表达式的值是非零值),则执行if语句里面的内容,如果条件不成立,则if语句结束程序继续往下执行

        条件表达式:通常关系运算符  逻辑运算符  算数运算符,也可以使用数据值来作为if语句,只要数据为非零值,则条件成立。

(2)第二种形式:双分支

if(条件表达式)
{
   //条件成立,则执行if语句
}
else 
{
   //条件不成立,则执行else语句
}

一个条件,两种选择,如果.....否则.....。

(3)第三种形式:多分支

if(条件表达式1)
{
   //条件1成立,则执行语句块1,整个if嵌套结构结束
}
else if(条件表达式2)
{
   //条件2成立,则执行语句2,整个if结构结束
}
else if(条件表达式3)
{
   //条件3成立,则执行语句3,整个if结构结束
}
....
else if(条件表达式n)
{
   //条件n成立,则执行语句n,整个if结构结束
}
else 
{
    //条件n不成立,则执行语句n+1,整个if结构结束
    //else根据程序的实际情况,可加可不加 {}
}

2.2 switch语句

格式:
switch(整型表达式)
{
    case 整型常量1: 语句块1;   
    case 整型常量2:语句块2;
    case 整型常量3:语句块3;
    ....
    default: 语句块;
}
如果在case里面定义变量,则需要加大括号

        执行原理:先执行整型表达式,根据整型表达式的值,用于跟case后面的整型常量进行比较,从第一个case开始比较,一旦匹配成功,则从该case后面的语句开始执行,一直到遇到 } 括号结束switch结构,如果整型表达式的值跟case后面的整型常量都不匹配,则执行default默认语句

        说明:在使用switch结构的时候,更希望与整型表达式跟case后面的常量匹配成功之后,仅仅只执行其中的一个case(匹配成功的case),而其他的case后面的内容不在执行,需要使用break语句,结束switch结构。如下代码所示:

switch(a)
{
	case 1: 	 
	{
		printf("case 1执行\n");
		int i = 6;   //在case里面定义变量则需要加大括号
		while(i != 0)
		{
			printf("%d =========== %d\n",i,i);
			i--;
		}
		printf("**************\n");
	}
	break;  //结束switch结构
	case 2:		
		printf("case 2执行\n");
		break;
	case 3:		
		printf("case 3执行\n");
		break;
	case 'A':	
		printf("case A执行\n");
		break;
	default: 
		printf("default执行\n");
}

3. 循环结构

        一条语句或者多条语句重复多次执行---------循环结构

3.1 while语句

格式:
while( 条件表达式  )
{
    //循环体 
}

        while语句默认执行离它最近的一条语句, 如果循环体只有一条语句,原则上可以不用加大括号,但是建议把大括号加上去。

        执行原理:先执行条件表达式,如果条件成立(条件表达式的值是非零值),则执行循环体,然后在判断条件是否成立,如果成立,则继续执行循环体,如果条件不成立,则不执行循环体,while语句结束。

        条件表达式的写法不受限制,只要能够判断条件是否成立。

3.2 for语句

格式:
for( 赋值表达式 ; 条件表达式; 循环变量表达式)
{
    //循环体,   
    //默认执行离它最近的一条语句,如果是一条语句,也可以不用加大括号,建议加上
}

(1)表达式的作用

  • 赋值表达式:只执行一次,循环体开始执行的初始值,给循环变量赋初值;
  • 条件表达式:判断循环体是否执行的条件,条件不成立,则循环结束 ;
  • 循环变量表达式: 作用加快循环的结束,循环变量变化的值。

(2)执行原理:

        先执行赋值表达式,然后判断是否满足条件,如果满足条件则执行循环体,循环体执行完成之后,继续执行循环变量表达式,然后在判断是否满足条件,如果满足继续执行循环体,然后执行循环变量表达式,依次往返,如果不条件表达式不成立,则for循环结构结束,在整个过程中赋值表达式只执行一次。

(3)说明:

  • for循环语句,其中赋值表达式可以写括号的外面,循环变量表达式可以写在循环体的后面,但是分号不能丢,并且赋值表达式,条件表达式,不仅仅可以只有一条语句,可以是多条语句,但是必须用逗号隔开。
  • 可以使用for循环写一个死循环,for(;;);
  •        一个标准的死循环是用while语句表示,while(1);
  • 能够写成for循环结构的一定可以写成while语句或者do-while语句。反之不一定成立
  • for循环更适合于循环次数可知的情况,范围的程序,while或者do-while更适合于循环次数不可知的情况,只需要确定什么时候循环结束。

3.3 do-while

格式:
do
{
  //循环体
}while(条件表达式);

(1)执行原理:

        先执行循环体,然后在判断条件表达式是否成立,如果成立,则继续执行循环体,在判断条件是否成立,如果条件表达式不成立,则do-while循环结构结束

(2)while语句和do-while的区别:

  • while 先判断条件,然后在执行循环体,循环体可能一次也不会执行;
  • do-while 先执行循环体,然后在判断条件是否成立,循环体至少会执行一次。

4. 跳转语句

4.1 break

(1)作用: 中断,打断

(2)适用于:选择结构的switch语句,结束switch结构;循环结构for,while,do-while,结束循环,通常跟if搭配使用在循环结构,结束离它最近的循环。

int main (void)
{
	int data;

  
	while(1)
	{
		 printf("请输入一个整型数据:");
		 scanf("%d",&data);	
		 if(data >= 0 && data <= 99)
		 {
			 break;//如果条件成立,则将会退出while(1)循环,执行后面的语句。
		 }
	}
	
    switch(data / 10 )
	{

		case 6: printf("该整型数据的范围是:60~69");break;
		case 7: printf("该整型数据的范围是:70~79");break;
		case 8: printf("该整型数据的范围是:80~89");break;
		case 9: printf("该整型数据的范围是:90~99");break;

		default : printf("该整型数据的范围是:<60");
	}
 
     return 0;
}

4.2  continue语句

(1)作用:结束本轮循环,继续执行下一轮新的循环

(2)说明: 只能用于循环结构,表示结束本轮循环,继续执行下一轮新的循环;一般也是跟if搭配使用在循环结构,作用于离它最近的循环。

int main()
{
	int i ;
	int j = 2;
	
	while(j != 0)
	{
		for(i = 1; i <= 6; i++)
		{
			printf("%d *************  ",i);
			if(i == 3)
			{
				//break;   //结束循环,break后面的语句不在执行,
				continue;  //结束本次循环,继续执行下一轮新的循环
						   //都是作用于离它最近的循环
			}
			printf("%d =============\n",i);	
		}
		printf("%d ************* \n",j);
		j--;
	}
	return 0;
}

运行结果: 

PS G:\> cd "g:\" ; if ($?) { gcc new.c -o new } ; if ($?) { .\new }
1*************
1=============
2*************
2=============
3*************
4*************
4=============
5*************
5=============
6*************
6=============
2-------------
1*************
1=============
2*************
2=============
3*************
4*************
4=============
5*************
5=============
6*************
6=============
1-------------
PS G:\>

4.3 goto语句

(1)作用:跳转,表示程序跳转到某个地方

(2)格式: goto  标签名(符合标识符的命名规则即可)

(3)含义: 程序遇到goto语句,表示程序要跳转到标签名所在的地方,从该标签的名的下面继续往下执行

(4)说明:  

  • 程序一般往上跳转;
  • 可以达到循环的效果;
  • goto语句不能使用太多,可能会造成程序的紊乱 ;
  • goto语句尽量少用或者不用。
int main()
{
	int data;
input: 
    printf("请输入一个整型数据:");
	scanf("%d",&data);
	
	
	if(data < 0 || data > 99)
	{
		printf("数据输入错误,请重新输入:");
		goto input;    //表示程序要跳转到Input所在的地方,从input的下面开始继续往下执行
	}
	
    switch(data / 10 )
	{

		case 6: printf("该整型数据的范围是:60~69");break;
		case 7: printf("该整型数据的范围是:70~79");break;
		case 8: printf("该整型数据的范围是:80~89");break;
		case 9: printf("该整型数据的范围是:90~99");break;

		default : printf("该整型数据的范围是:<60");
	}
}

你可能感兴趣的:(C语言,c语言)