第五章 流程控制

概述

  1. 三种结构:顺序、选择、循环
  2. 顺序结构:从上到下
  3. 选择结构:分支机构,是否满足,有选择的执行
  4. 循环结构:条件是否满足,重复多次

选择结构

if

  1. 语法
if(表达式){
    语句
}
    
  1. 执行逻辑
  1. 示例
int a;
scanf("plz input a integer number:",&a);
if(a>10){
    printf("a>10\n");
}
return 0;

if...else

  1. 语法
if(表达式){
    语句1
}
else{
    语句2
}
  1. 执行逻辑
    1. 如果表达式1成立(为真),则执行语句1;否则执行语句2
  2. 示例

if...else if..else语句

  1. 语法
if(表达式1){
    语句1
}
else if(表达式2){
语句2
}
...
else if(表达式n-1)
    语句n-1
}
else{
    语句n
}
  1. 顺序
  2. 示例

switch 语句

  1. 语法
switch(表达式:整数){
        case 常量表达式1:语句1;break;整型
        case 常量表达式2:语句2;break;
        ...
        case 常量表达式n-1:语句n-1;break;
    default:语句n//默认
}

选择语句嵌套

  1. 语法
if(表达式1){
    if(表达式2){
        语句1
    }
    else{
       语句2 
    }
}
else//else if()
    if(表达式3){
        语句3
    }
    else{
        语句4
    }
}
  1. 示例
if(体育老师生病了){
    if(语文老师没课){
        上语文课
    }
    else{
       上自习
    }
}
else//else if()
{
    上体育课
    }
}

循环结构

while 语句

  1. 语法
while(表达式){
    语句
}
  1. 表达式为真,执行循环直到表达式为假
  1. 示例
while(x!=0){
    printf("%d\n",x);
    x--;
}
return 0;
}

do while语句

  1. 语法
do{
    语句
}while(表达式);
  1. 与while的区别do while 至少执行一次

for 语句

  1. 语法
for (表达式1;表达式2;表达式3){
    语句
}
  1. 逻辑
    1. 首先表达式1
    2. 表达式2;语句;表达式3(循环)
    3. 表达式2结果为假结束
  2. for (;;)无限循环

练习

  1. 求某个整数二进制表达形式中有多少个1
  2. 求5的接层

循环嵌套

  1. 循环中有循环逻辑
  2. 示例
for(i=1;i<=9;i++)
{
    for(j=1;j<=i;j++)
    {
        printf("%d*%d=%d\t",i.j,i*j);
    }
    printf("/n");
}
  1. N+M+...+

break 语句:终止循环

  1. break在switch 语句中
    1. break用于switch,可使程序跳出switch,如果没有将会继续下一个case(不论case后面的表达式结果与switch是否相等),直到遇到break;
switch()
{
        case1:printf("1\n");break;
        case2:printf("2\n");
        case3:printf("3\n");break;
        case4:printf("4\n");break;
}
2. 上面case2后面没有break,所以当x=2时。输出结果位2 3
3. 思考:如何使用switch语句首先在键盘上输入一个月份如何输出对应月份的天数?
  1. break 中循环语句:
    1. break 语句用于do-while\for\while 循环语句跳出循环,可使程序终止循环而执行循环后面的语句,通常break1语句与if语句一起应用。即满足条件跳出循环。
int m.n;
for (m=0;m<10;m++){
    for(n=0;n<10;n++){
        if(n==3)
            break;
        printf("%d\n",n);
    }
}

continue语句

  1. 结束本次循环,继续下次循环:0,1,2,4,5,6,7,8,9:不打印3
int m,n;
for (m=0;m<10;m++){
    for(n=0;n<10;n++){
        if(n==3)
            continue;
        printf("%d",n);
    }
}

调试

  1. 卡住了:scanf()
printf("[%d %s]x:%d",__func__,__LINE__,x);
    scanf("%d %d\n",&x,&y);//scanf后面加\n回一直输入直到遇到1非空白字符回车键也不行
  1. 陷入死循环(无限循环):打印循环变量和比较值
    1. 循环变量忘记自增或自减
    2. printf()语句
  2. 程序异常退出:除法判断除数是否为0;数组越界;指针访问错\越界
  3. 预期不一致:使用printf

练习:

  1. C语言中:^是异或;平方要xxxx
posted @ 2026-03-23 15:20  小离儿  阅读(3)  评论(0)    收藏  举报