学完整个C语言后,感觉流程控制很重要,尤其是循环结构中的while循环和for循环,在很多编程思想中都有应用和体现。所以我奉劝像我一样的初学者,一定要牢牢掌握此处的知识,对我们以后更深入学习C语言有着很大的帮助。
流程控制分为:选择结构和循环结构。选择结构包含:if语句,switch语句;循环结构包含:while循环,do while循环和for循环。这些语句允许你只有在程序运行时才能。知道其状态的情况下,控制程序的执行过程。
今天我首先总结下选择结构,选择结构虽然简单,但千万不可掉以轻心,后面很多运算,还有OC的对象方法和内存管理都会用到if选择结构,if语句相比switch用处要广很多。
一、if语句:
第1种结构:
if(条件)
{
语句1;
......
}
第2种结构
if(条件1)
{
语句1; //if语句的执行过程如下:如果条件为真,就执行if的对象;否则,执行else的对象。任何时候两条语句都不可能同时执行
}
else
{
}
if(条件1)
{
语句1;
语句2;
......
}
else if(条件2)
{
}
else if(条件3)
{
}
else
{
}
if和else的对象都是单个语句,也可以是代码块。条件可以是任何返回布尔值的表达式。else子句是可选的
例如:
程序运行的时候提示下列信息
请输入相应数字选择需要执行的运算:
1 加法
2 减法
用户选择运算后,再提示用户输入两个需要进行运算的整数,输入完毕后就输出运算结果
#include <stdio.h>
int main()
{
// 1. 提示用户选择计算类型
printf("请输入相应数字选择需要执行的运算:\n");
printf("1 加法\n");
printf("2 减法\n");
// 2. 定义变量存储用户选择的计算类型
int type = 0;
// 3. 让用户输入计算类型
scanf(“%d”, &type);
if (type!=1 && type!=2)
{
// type值输入不合理,就直接退出程序
printf("非法选择\n");
return 0;
}
// 4.提示用户输入两个计算的数值
printf("请连续输入两个需要进行运算的整数,并且以空格隔开\n");
// 5.定义2个变量存储数值
int num1, num2;
scanf("%d %d", &num1, &num2);
// 6.计算
int result;
if (type == 1) {
result = num1 + num2;
printf("%d + %d = %d\n", num1, num2, result);
} else if (type == 2) {
result = num1 - num2;
printf("%d - %d = %d\n", num1, num2, result);
}
return 0;
}
二、switch语句的格式如下:
switch(表达式)
{
case 常量表达式1:语句1
case 常量表达式2:语句2
case 常量表达式3:语句3
case 常量表达式n:语句n
default :语句n+1
}
switch语句,其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较, 当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断, 继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同 时,则执行default后的语句。
在使用switch语句时还应注意以下几点:
(1)所有case后面的表达式这能是这几种情况:1、枚举常量(有些书称为枚举元素) 2、数值常量 3、字符常量 4、常变量(只能被赋一个值的变量) 5、宏
(2)switch后面括号里的“表达式”允许是任何类型
(3)执行完一个case语句后,流程控制就转移到下一个case语句继续执行(case常量表达式只是起语句标号的作用,并不是在该处进行条件判断。在执行switch语句时,根据switch()中表达式的值找到与之匹配的case语句,就从此case语句开始执行下去,不再进行判断)
例如:
switch (i)
{
case 1: 语句1;
case 2: 语句2;
default: 语句3;
case 3: 语句4;
}
说明: 当i==1时,从case 1处开始往下一个不落的往下执行,当i==2时,从case 2处开始往下一个不落的往下执行,当i==3时,只执行case 3的语句,当i不等于1,2,3时,会执行defaulr 语句。
(4)switch是选择不是循环。如果在switch中出现了break 语句,该语句的功能只是退出switch语句转去执行它下面的语句。在switch中出现continue 是错误的,除非switch本身就属于for或while循环的一部分。