一、顺序结构
顺序结构:按语句书写的先后顺序依次执行的结构。
1.复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
int a = 0;
int b = 0;
a = 5;
b = 4;
{
int a = 6;//变量声明
printf("%d\n",a);//这个a的值是6,和前面的a不是同一个
a++;//自增表达式语句
printf("%d\n",a);//函数调用语句
++b;
}
printf("%d\n", a);//这个a的值是5
printf("%d\n",b);
打印结果是:
复合语句不以分号;作为结束符,即最后的}后面不加分号。
在复合语句中可以定义变量,但仅在复合语句中有效,即作用域是{}括起来的部分。
二、选择结构(分支结构):根据条件判断来选择执行哪一条语句。
选择结构的语句有:if条件语句和switch多路分支语句。
1.if语句
if(条件表达式)
语句1;
执行过程:如果条件表达式的值为真,则执行语句1,否则不执行语句1。
输入a和b的值,判断并输出最大值
int a = 0;
int b = 0;
int max = 0;
printf("请依次输入a和b的值:");
scanf("%d%d",&a,&b);
max = a;
if(max < b)
max = b;
printf("max:%d\n",max);
return 0;
运行结果是:
2、.if...else语句
if(条件表达式)
语句1;
else
语句2;
执行过程:如果条件表达式的值为真,则执行语句1,否则执行语句2。
输入a和b的值,判断并输出最大值
int a = 0;
int b = 0;
int max = 0;
printf("请依次输入a和b的值:");
scanf("%d%d",&a,&b);
if(a < b)
max = b;
else
max = a;
printf("max:%d\n",max);
运行结果是:
3、switch多路分支语句
switch(表达式)//1
{
case 常量表达式1:语句1(集合);
case 常量表达式2:语句2(集合);
...
case 常量表达式n:语句n(集合);
default:语句n+1;
}
执行过程:首先计算表达式的值,与常量表达式i进行比较,如果与其中一个常量表达式i的值相等,就执行其后的语句直到遇到break语句才结束switch语句,如果case后无break语句,则继续执行随后所有的case后的语句。如果没有找到与表达式的值相匹配的常量表达式,则执行default后的语句n+1。
输入数字1-7,并输出显示对应的星期
代码如下:
int week = 0;
printf("今天星期几:");
scanf("%d", &week);//1---'1'
switch (week)//week是表达式
{
case 1:printf("今天是星期一\n"); break;
case 2:printf("今天是星期二\n"); break;
case 3:printf("今天是星期三\n"); break;
case 4:printf("今天是星期四\n"); break;
case 5:printf("今天是星期五\n"); break;
case 6:printf("今天是星期六\n"); break;
case 7:printf("今天是星期天\n"); break;
default:printf("输入数据有误!\n");
}
运行结果如下:
注意:
1.switch后面括号中的表达式可以是整型、字符型和枚举型。
2.在case后的各常量表达式的值不能相同
3.在case后,允许有多个语句,可以不用 {}括起来,而整个switch结构一定要有一 对{}
4.各case和default语句的先后顺序可以改 变,不影响程序执行结果。