二路分支
if(): 只有代码满足一定条件的时候才会执行如
if(1>0)
{
printf("正确");
}
else :则是否则的意思如
else
{
printf("不正确");
}
当然除了if else 还有一个是 else if 这个是否则如果则执行某某程序
当然 if括号里面非零则也会执行 如是零则会跳出判断不进行以下判断
多路分支
switch
switch则是一种根据条件的执行不同的代码
如
switch (N)
{
case 1 :
printf("one\n");
break;
case 2:
printf("two\n");
break;
default:
printf("其他数字");
}
如不输入break则会一直往下执行直到default 则才会退出
default是在以上都没有发生的情况之下才会执行的
N必须是一个整形的表达式 switch判断的数据必须是整形或者是字符型
case语句只能带整形常量 包括整形 或者字符型
const
修饰普通变量 使得不可更改 还可以修饰指针 指针到后面指针会讲到
如
int const a =100;
const int b = 200;
a =20;//错误 因为我们已经把a的值给设定为一个不可更改的值 要想改他的值只能通过指针后面会讲到
b =49;
while do.... while for
这些都是属于循环语句可以使得程序一直的执行 程序到他的临界点则会自动的退出看示例
while(1)//while(1)是一个死循环则会一直的执行下去 因为while里面是一个非零的数值
{
}
int n =10;
while(n)
{
printf("%d",n--);//while判断是否满足判断条件 满足则会执行下去直到n=0才会退出
}
do..while 是先执行后判断 while和for都是先判断后执行
// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
do
{
printf("%d\n", a);
a++;
}while(a <= 100);
语法点:
while 循环先进行判断,条件为真后才执行循环体,因此循环体可能一遍也不执行。
do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。
do-while 循环中的 while 语句后面有分号;
for循环
逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量集中在一行
for(初始表达式1;判断表达式2;循环操作表达式3)
{
循环体;
}
// 第一条表达式只执行一遍i = 0只执行一遍
// 然后执行表达式2,判断i 是否小于等于5,如果为真则执行{}里面的内容
// 最后执行表达式3,i++
// 然后一次循环完成再重新执行表达式2,判断i是否小于5,如果为真会执行
// {}里面的内容,最后执行表达式3,i++,依次类推,直到表达式2为假
// 则退出循环体
for(int i = 0; i <= 5; i++)
{
printf("i:%d\n",i);
}
// 死循环
for(;;)
{
}
或者
for(;;);
//多变量
for(int i = 0,j = 0; i < 5; i++,j++)
{
printf("i:%d j:%d\n",i,j);
}如
// 循环输出一系列整数,直到100为止
int a;
for(a=30; a<=100; a++)
{
printf("%d\n", a);
}
for嵌套
int main(int argc, char const *argv[])
{
for(int i = 0; i < 5; i++)// 外循环
{
for(int j = 0; j < 4; j++)// 内循环
{
printf("i:%d j:%d\n",i,j);
}
}
return 0;
}
语法点:
循环的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)
表达式1一般用来初始化循环控制变量
表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环
表达式3一般用来更新循环控制变量
三个表达式均可以省略,但分号不能省略
while注重循环条件,for注重循环次数
break(退出)与continue(继续)
-
运用场景与特点
-
break关键字只能用于循环(while for do...while)和switch语句中,表示结束循环或者跳出switch语句
-
break关键字只能跳出最近一层的循环,也就是说,如果有多重循环,只能跳出最靠近break语句那层循环
-
break关键字 不能 单独用于 if语句中,除非if语句外面包含了循环
-
-
逻辑:
-
continue关键字只能用于循环体中(while do...while for),用于提前结束当前循环体后,又从最近一层循环体开始执行
-
continue关键字不能 单独用于 if语句或者switch 语句中,除非外面包含了循环
-
break:① 跳出 switch 语句; ② 跳出当层循环体
-
continue:结束当次循环,进入下次循环
-
switch(n)
{
case 1:
printf("one\n");
break; // 跳出 switch 语句
case 2:
printf("two\n");
break;
}while(1)
{
int n = scanf("%d", &a);
if(n == 0)
break; // 跳出当层 while 循环体
}for(int i=1; i<=100; i++)
{
if(i%7 == 0)
continue; // 跳过所有能被7整除的数
printf("%d\n", i);
}
goto语句
逻辑无条件跳转
goto 语句标号;//程序会直接跳转到语句标号的地方执行
语句标号:
如
int main()
{
printf("%d\n", __LINE__); // 打印第3行
// 无条件跳转到label处
goto label;
printf("%d\n", __LINE__); // 打印第7行,此处被略过
label:
printf("%d\n", __LINE__); // 打印第9行
}
-
语法:
-
goto语句直接跳转到本代码块中的标签处
-
标签指的是以冒号结尾的标识符
-
-
作用:
-
goto语句的无条件跳转不利于程序的可读性,一般不建议使用
-
goto语句常被用在程序的错误处理中
-
#include <stdio.h>
int main(int argc, char const *argv[])
{
// 注意:千万不要使用goto语句实现死循环,程序
// 无法退出
// lable:
// printf("当前在第:%d 行\n",__LINE__);
// goto lable;// goto 的唯一使用场景为跳转到出错处理
printf("请输入字符:");
int ch = getchar();
if(ch == '#')
{
goto error;
}
printf("当前在第:%d 行\n",__LINE__);// 出错处理标签一定是在程序的末尾
// 程序正常退出还是异常退出最终还是得要执行error标签的语句
error:
printf("process exit\n");
return 0;
}