经过一段时间的学习和练习,给大家带来了关于c语言中分支语句和循环语句的个人理解。
分支语句
if
语法结构
首先,我们来看一下语法结构
// 单分支
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
可见 if 语句分为单分支和多分支,用以处理问题。
单分支:表达式1为真 ,执行语句1 。反之,执行语句2。
多分支:表达式1为真 ,执行语句1 。表达式2为真 ,执行语句2。以上都不为真,执行语句3。
if的范围
if 的范围:默认只能控制一个语句的执行 要控制多个必须要用 { } 括起来
else if / else 的范围与 if 一致
if(表达式)
{
语句1;
语句2;
}
演示程序
判断两个数字的大小
# include<stdio.h>
int main(void)
{
int i, j;
scanf("%d %d", &i, &j);
if (i > j)
printf("%d>%d\n",i,j);
else if (i < j)
printf("%d<%d\n",i,j);
else
printf("%d=%d\n",i,j);
return 0;
}
switch
语法结构
switch(整型表达式) {
case 整型1: // 入口1
语句1;
case 整型2: // 入口2
语句2;
case 整型3: // 入口3
语句3;
default :
语句4;
}
switch有多个入口
而整型表达式的结果符合 case 后的整型就从那个入口进入向下执行。
这个时候往往需要 break 跳出入口,否则就会进入下一个入口,执行入口内的语句。
如果,都不符合就执行 default后的语句。
但要注意 case,default 是程序的入口,而 case 只是标号的作用,并不是在此判断。
演示程序
简易电梯系统
# include <stdio.h>
int main(I)
{
int val;
do
{
printf("请输入楼层:");
scanf("%d", &val);
switch (val)
{
case 1:
printf("1层开!\n");
break;
case 2:
printf("2层开!\n");
break;
case 3:
printf("3层开!\n");
break;
default:
printf("sb\n");
break;
}
} while (1);
return 0;
}
循环语句
while
语法结构
while(表达式)
循环语句;
表达式成立则执行循环语句
演示程序
输出整数1~10
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d",i);
i++;
}
return 0;
}
for
语法结构
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整
先执行1,再执行2 。
2为真,执行循环语句,最后后执行表达式3.
演示程序
计算1~4的和
int main()
{
int i;
int sum = 0;
for (i = 1; i <= 4; ++i)
{
sum = sum + i; // 循环语句;
// 先执行1,再执行2成立,执行循环
} // 最后执行3,循环一次结束
// 如果2再次成立继续下次循环
printf("sum = %d\n", sum);
return 0;
}
do while
语法结构
do
循环语句;
while(表达式);
先执行循环语句,在判断表达式,为真则继续执行循环语句。为假则退出循环。
goto语句
语法结构
for(...)
for(...)
{
for(...)
{
if(disaster)
goto 标号; // 跳转到标号:
}
}
…
标号:
if(disaster)
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
演示程序
一个关机程序
#include <stdio.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟内关机,如果输入:666,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "666"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0; }
break和continue
二者都是用于跳出循环,但有本质区别
break是跳出整个循环语句
continue是跳出本次循环
演示程序
猜数字游戏
void game()
{
int guess;
srand((unsigned int)time(NULL));
int Number = rand() % (10+1);
printf("请输入10以内的数字\n");
while (1) {
scanf("%d", &guess);
if (guess == Number)
{
printf("猜对了,但没有奖励!\n");
break; // 跳出整个外层循环游戏结束
}
else if (guess > Number)
{
printf("猜大了!\n");
continue; // 跳出本次内层循环,游戏继续
}
else if (guess < Number)
{
printf("猜小了!\n");
continue; // 跳出本次内层循环,游戏继续
}
}
}