目录
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条语句,实现程序结构化编程,使程序具有逻辑性,层次性。
从程序的入口函数开始,从上往下依次执行,上一条语句结束之后,下一条语句才会继续执行,是程序的整体的趋势。
程序根据条件有选择性的执行其中的语句块(一条语句或者是多条语句);选择结构的语句有: if语句, switch…case…break…default语句。
(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根据程序的实际情况,可加可不加 {}
}
格式:
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");
}
一条语句或者多条语句重复多次执行---------循环结构
格式:
while( 条件表达式 )
{
//循环体
}
while语句默认执行离它最近的一条语句, 如果循环体只有一条语句,原则上可以不用加大括号,但是建议把大括号加上去。
执行原理:先执行条件表达式,如果条件成立(条件表达式的值是非零值),则执行循环体,然后在判断条件是否成立,如果成立,则继续执行循环体,如果条件不成立,则不执行循环体,while语句结束。
条件表达式的写法不受限制,只要能够判断条件是否成立。
格式:
for( 赋值表达式 ; 条件表达式; 循环变量表达式)
{
//循环体,
//默认执行离它最近的一条语句,如果是一条语句,也可以不用加大括号,建议加上
}
(1)表达式的作用
(2)执行原理:
先执行赋值表达式,然后判断是否满足条件,如果满足条件则执行循环体,循环体执行完成之后,继续执行循环变量表达式,然后在判断是否满足条件,如果满足继续执行循环体,然后执行循环变量表达式,依次往返,如果不条件表达式不成立,则for循环结构结束,在整个过程中赋值表达式只执行一次。
(3)说明:
格式:
do
{
//循环体
}while(条件表达式);
(1)执行原理:
先执行循环体,然后在判断条件表达式是否成立,如果成立,则继续执行循环体,在判断条件是否成立,如果条件表达式不成立,则do-while循环结构结束
(2)while语句和do-while的区别:
(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;
}
(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:\>
(1)作用:跳转,表示程序跳转到某个地方
(2)格式: goto 标签名(符合标识符的命名规则即可)
(3)含义: 程序遇到goto语句,表示程序要跳转到标签名所在的地方,从该标签的名的下面继续往下执行
(4)说明:
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");
}
}