分支和循环语句
分支语句
switch
switch 允许嵌套使用
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <windows.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:m++;
case 2:n++;
case 3:
switch (n)
{ //switch 允许嵌套使用
case 1:n++;
case 2:m++; n++; break;//此处的break仅仅是跳出对应的switch语句
}
case 4:m++; break;
default:
break;
}
printf("m=%d\nn=%d\n", m, n);
system("pause");
return 0;
}
default 语句
匹配那些不能匹配到case 的语句。
对于if语句不做赘述
0表示假 非0表示真 真则执行语句
else 是与紧邻的if匹配
循环语句
for 循环语句
关于for语句后面加了分号
加分号,表示这个循环是空语句,除了执行for()括号里的,什么都不干,然后就执行下一行。
不加分号,那for循环后面的printf语句就是for循环的一部分,跟着for一起执行,但前提是for循环里的条件要满足。
分号代表语句结束。
例如:
for(i=0;i<100;i++);
就等于:
for(i=0;i<100;i++)
{
;
}
一个很坑人的代码
int main()
{
int i = 0; int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
} //一次循环都不执行
for (i = 0, k = 0; k = 0; i++, k++) 注意那里是赋值语句k=0不是判断
==一个等号赋值语句0 为假因此一次循环都不执行 ==
① 不可在for循环内修改循环变量,防止for循环失去控制。
② 建议for语句的循环控制变量的取值采取半开半闭的写法
while 循环语句
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
if (5 == i)
break;
}
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
continue; //死循环
printf("%d ", i);
i++;
}
system("pause");
return 0;
}
两个输出的结果均为1-4
不同的是第二个是一个死循环打印4后 执行i++ i=5
程序到if (5 == i);
continue;
i一直为5
continue 直接跳到了判断部分
在此与for的continue 进行一个对比
1.for的continue 结束本次循环 跳到调整部分 先调整再判断
而while的continue 直接跳到了判断部分
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{ if (5 == i)
continue;
printf("%d\n", i);
}
system("pause");
return 0;
}
2.for与while 相比较三个表达式在一起 更加方便看比较常用。
不会因为循环部分过长导致判断部分和条件调整部分而隔开。