——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!——
流程控制
*顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
*选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
*循环结构:在给定条件成立的情况下,反复执行某一段代码。
顺序结构
复合语句
在C语言中,一对花括号{}不仅可以用作函数体的开头和结尾标志,也可以用作复合语句的开头和结束标志。复合语句也称为语句块,其形式如下:
{语句1 语句2 语句n}
注意:
1)一个复合语句在语法上被视为一条语句,在一对花括号内的语句不限
2)在复合语句中不仅可以有执行语句,也可以有定义部分,复合语句申明的变量的作 用域只在复合语句中,出了复合语句就不起作用.复合语句中的变量名和主函数中的变量可以相同,但不是同一变量
#include <stdio.h>
int main()
{
int a = 2,b = 3,c = 4;
printf("a=%d,b=%d,c=%d\n",a,b,c);
{
int a = 7,b = 8,c = 9;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
return 0;
}
运行结果:
a=2,b=3,c=4
a=7,b=8,c=9
空语句
C程序中的所有语句都必须由一个分号”;”作为语句的结束,如果一个语句只有一个分号,这样的语句叫做空语句。
程序执行空语句时将不产生任何动作。
选择结构
选择结构—if
单条件选择
格式:
if(条件表达式)
{
满足条件时执行的代码;
}
int a = 10;
if(a>5)
{
printf("hahah\n");
}
双条件选择
格式:
if(条件表达式)
{
满足条件时执行的代码;
}
else
{
不满足条件时执行的代码;
}
int count = 40;
if ( count >= 50 )
{
printf("开班!!!\n");
printf("准备机器!!!\n");
}
else
{
printf("不开班!!!\n");
printf("不准备机器!!!\n");
}
多条件选择
格式:
if(条件表达式1)
{
满足条件1时执行的代码;
}
else if(条件表达式2)
{
满足条件表达式2的代码;
}
else
{
不满足所有条件时执行的代码;
}
#include <stdio.h>
int main()
{
int a = 6;
if (a++ > 10) // a == 7
{
printf("A\n");
}
else if (a++ > 5) // a == 8
{
printf("B\n");
}
else if (a++ > 3)
{
printf("C\n");
}
else
{
printf("D\n");
}
printf("a的值是%d\n", a);
return 0;
}
其他结构
if (条件)
语句1;
int a = -10;
if (a>1)
printf("A\n");
printf("B\n");
运行结果:B
条件语句的嵌套
条件语句允许相互嵌套
例:输入三个数x,y,z,然后按从大到小输出
#include <stdio.h>
int main()
{
float x,y,z;
scanf("%f%f%f",&x,&y,&z);
if(x>=y&&x>=z)
{
printf("%f\t",x);
if(y>=z)
printf("%f\t%f\n",y,z);
else
printf("%f\t%f\n",z,y);
}
else if(y>=x&&y>=z)
{
printf("%f\t",y);
if(x>=z)
printf("%f\t%f\n",x,z);
else
printf("%f\t%f\n",z,x);
}
else
{
printf("%f\t",z);
if(x>=y)
printf("%f\t%f\n",x,y);
else
printf("%f\t%f\n",y,x);
}
}
注意:if(语句)后不要加分号
选择结构—switch
格式:
switch(常量表达式)
{
case 常量1:
语句1或空;
case 常量2:
语句2或空;
case 常量n:
语句n或空;
default:
语句n+1或空;
}
执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。
注意:
1>switch中变量可以是数值,也可以是字符,但必须是整数。
2>可以省略一些case和default。
3>每个case或default后的语句可以是语句体,但不需要使用”{“和”}”括起来。
例:一个学生的成绩分成五等,超过90分的为’A’,80-89的为’B’,70-79为’C’,60-69为’D’,60分以下为’E’。现在输入一个学生的成绩,输出他的等级。
#include <stdio.h>
int main()
{
int num;
char grade;
scanf("%d",&num);
num/=10;
switch(num)
{
case 10:
case 9:
grade='A';
break;
case 8:
grade='B';
break;
case 7:
grade='C';
break;
case 6:
grade='D';
break;
default:
grade='E';
break;
}
printf("%c",grade);
return 0;
}
case里面可以是空的,例如上边程序中switch语句执行的顺序是从第一个case判断,如果正确就往下执行,直到break;如果不正确,就执行下一个case。所以在这里,当成绩是100分时,执行case 10:然后往下执行,grade=’A’;break;退出。
Switch case 语句允许嵌套;
注意:如果要在case中定义新的变量,需用{}扩起来
循环结构
循环结构—while
格式:
while(表达式)
{
循环体;
}
运行原理
1.如果一开始条件就不成立,永远不会执行循环体
2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立……
int count = 0;
while (count<50)
{
++count;
printf("做第%d次俯卧撑\n", count);
}
循环结构—do while
格式:
do
{
循环体;
}
while(表达式);
#include <stdio.h>
int main()
{
int i = 0;
do {
i++; // 5
} while (i<0);
printf("i=%d\n", i);
return 0;
}
while和do-while的区别:
1.很多情况下,while和do while可以互换
2.while特点:如果一开始的条件不成立,永远不会执行循环体;
do while特点:不管一开始的条件是否成立,至少会执行一次循环体
3.最好使用while
循环结构—for
格式:
for(控制变量初始值;控制条件表达式;控制变量改变方式)
{
循环体;
}
执行过程:
进入循环后,先初始化控制变量,然后检查控制条件表达式是否满足,如果满足则执行循环体,然后按照控制变量改变方式去改变控制变量的值;然后继续检查控制条件表达式是否满足;如果控制条件表达式不满足,则直接退出整个循环。
例:输出以下内容
好友列表1
好友1
好友2
好友列表2
好友1
好友2
好友列表3
好友1
好友2
#include <stdio.h>
int main()
{
for (int i = 1; i<=4; i++)
{
//printf("好友列表%d\n", i + 1);
printf("好友列表%d\n", i);
/*
printf(" 好友1\n");
printf(" 好友2\n");
printf(" 好友3\n");
printf(" 好友4\n");
printf(" 好友5\n");*/
for (int j = 1; j<=7; j++)
{
printf(" 好友%d\n", j);
}
}
return 0;
}
continue和break
break
1.使用场合
1> switch语句:退出整个switch语句
2> 循环结构:退出整个循环语句
* while
* do while
* for
2.注意点
只对最近的循环结构有效
#include <stdio.h>
int main()
{
for (int i = 0; i<3; i++)
{
for (int j = 0; j<2; j++)
{
if (j==1)
{
break;
}
printf("A\n");
}
}
return 0;
}
运算结果:
A
A
A
continue:
1.使用场合
1>循环结构:结束当前这次的循环体,进入下一次循环体
* while
* do while
* for
2.注意点
只对最近的循环结构有效
#include <stdio.h>
int main()
{
for (int i = 0; i<5; i++)
{
if (i%2)
{
continue;
}
printf("%d\n", i);
}
return 0;
}
运算结果:
0
2
4