目录
分支语句
1.if语句
可以在判断之后选择执行的语句
语法结构:
1.单分支
if(表达式) //如果表达式结果为真,语句执行,否则不执行
语句;
2.双分支
if(表达式) //如果表达式结果为真,语句1执行,否则语句2执行
语句1;
else //若不含代码块,则只能写一条语句
语句2;
3.多分支
if(表达式1) //表达式1为真,则语句1执行
语句1;
else if(表达式2) //表达式2为真,则语句2执行
语句2;
else
语句3;
4.含代码块
if(表达式)
{
语句列表1; //这里的一对{ }就是代码块,代码块里面可以写多条语句
}
else
{
语句列表2;
}
举例:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d",&age); //用来接收键盘输入的数据,把这个数据赋给age
if (age >= 18) //如果age大于等于18,则打印成年,否则打印未成年,尽量别谈恋爱
printf("成年\n");
else
{
printf("未成年\n");
printf("尽量别谈恋爱\n");
}
return 0;
}
悬空else案例:
int main()
{
int a = 0;
int b = 2;
if(a==1)
if(b==2)
printf("hehe\n");
else //else和离他最近的if结合,而a不等于1,第一个if进不去,第二个if自然就没结果了,所以执行后为空
printf("haha\n");
return 0;
}
2.switch语句
适用于多分支的情况(switch可以嵌套使用)
语法结构:
switch(整型表达式)
{
语句项://case语句项
}
例如:
int day = 0;
scanf("%d",&day);
switch (day)
{
case 1:
printf("星期1\n");
break; //跳出switch分支
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期日\n");
break;
default: //如果day的值不在1-7之间,则进入default中
printf("输入错了\n");
break;
}
而如果day在多个情况时执行的任务相同,则可以这么写:
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1: //这里的1 ,2里没有内容,就会顺序执行程序到case 3
case 2:
case 3:
printf("学习C语言");
break;
case 4:
case 5:
printf("学习数据结构与算法");
break;
case 6:
case 7:
printf("休息");
break;
default:
printf("打错了");
break;
}
return 0;
}
循环语句
1.while循环
可以使代码循环执行的语句,一般用于不知道需要循环次数的时候
#include <stdio.h>
int main()
{
int line = 0; //初始化循环变量
while (line < 99999) //若括号里条件成立,则代码循环,反之则代码跳出循环
{
printf("代码写了:%d行\n", line);
line++; //调整循环变量
}
if (line == 99999)
printf("你是精英程序员了!\n");
return 0;
}
而在while循环中,同样可以使用break和continue
在while循环中,break用于永久终止循环,continue用于跳过本次循环中continue后面的代码,直接去判断部分,看是否进行下一次循环
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if (i == 5) //若是break,则结果为1 2 3 4
break; //若是continue,则结果为1 2 3 4 死循环
printf("%d",i);
i++;
}
return 0;
}
2.for循环
可以使代码循环执行的语句,一般用于知道需要循环次数的时候
语法结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整
举例:
#include <stdio.h>
int main() //运行结果为12346789,跳过了5
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if ( i == 5)
continue;
printf("%d",i);
}
return 0;
}
for循环变种
//for循环的变种
//第一种:
int main()
{
//判断部分省略 --- 判断结果恒为真,可能导致死循环
for (;;)
{
printf("hehe\n");
}
return 0;
}
//第二种:
结果为三个hehe
int main()
{
int i = 0;
int j = 0;
for (; i < 3; i++)
{
for (; j < 3; j++) //当第二个for中的printf在i=0时执行满三次后此时j已经等于3,所以在i等于1,2时程序不进入第二个for
{
printf("hehe\n");
}
}
return 0;
}
//第三种:
结果为循环0次
int main()
{
int i = 0;
int j = 0;
for (i = 0, j = 0; j = 0; i++, j++)//“j = 0”为判断语句,=为赋值符号,循环进行0次
j++;
return 0;
}
3.do......while循环
先执行,后判断,所以至少执行一次
语法结构:
do
{
循环语句;
}while(表达式);
举例:
#include <stdio.h>
int main()
{
int i = 1; //结果为1-10
do
{
printf("%d",i);
i++;
} while (i <= 10);
return 0;
}
goto语句
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号 不建议过多使用
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环
而这种情况使用break是达不到目的的,因为它只能从最内层循环退出到上一层的循环。
#include <stdio.h>
int main()
{
flag:
printf("好好学习\n");
Sleep(500); //会使程序的执行暂停500ms
printf("努力刷题\n");
Sleep(500);
goto flag; //该程序会一直打印"好好学习"和"努力刷题"
return 0;
}