C语言控制流程(2)

本文详细介绍了C语言中的循环结构,包括for、while和do-while循环,以及循环中的关键字如continue、break和goto。同时,讲解了如何使用scanf进行输入操作,并提到了空语句在延时中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 循环结构
C语言使用循环结构语句来完成需要反复执行的逻辑 提供的关键字:
for
while
do - while
1.1 1.1 for 循环
1)语法格式:
for(表达式1; 表达式2; 表达式3){
语句1;
语句2;

}
执行流程:
第一步,首先执行表达式1
第二步,执行表达式2
如果表达式2运算结果为真 ,那么就去执行
语句1
语句2

如果表达式2运算结果为假,整个for循环结束 (跳到 }后去执行)
第三步,如果表达式2运算结果为真,会执行
语句1;
语句2;

以上语句执行完毕后,再执行表达式3
第四步, 执行完表达式3 ,重复执行第二步内容 第三步,
直到表达式2 为假 退出for循环
2) 使用形式
形式1:
int i = 0;
for(i=0; i<5; i++)
{
printf(“i = %d \n”, i);
}
形式2:
int i = 0;
for(; i<5; i++) //for之前i中是一个合适的值 可以省略表达式1
{
printf(“i = %d \n”, i);
}

     形式3:
            int m = 0;
            for(; m<5; ){
                printf("m = %d\n", m);
                m++;
            }
     形式4:
           for(;;){ //死循环
                printf("周末可以休息了...\n");
            }
           注意:按ctrl + c 强制退出程序 
           
           break: 关键字
                  退出for循环
           int n = 0;
           for(;;){ //死循环
                printf("周末可以休息了...\n");
                n++;
                if(n>5){
                    break;
                }
            }
     形式5:
            /*形式5*/
            for(m=0, n=0; m<5 && n<5; m++, n +=2){
                printf("m=%d n=%d\n", m, n);
            }
     形式6:
            for(int k=0; k<5; k++)//注意k变量的定义位置
                                  //c89标准 不允许  gcc for.c -std=c89编译出错
                                  //c99标准 允许    gcc for.c 默认c99编译 正常通过
            {
                printf("k=%d\n", k);
            }
            形式6代码不具有良好的可移植性
            建议大家写代码时 不要使用该种形式
      形式7:
            for(m=0; m<5; m++)
            {   
                if(3==m){
                    continue;//结束本次循环 继续开始下一次循环
                }
                printf("m = %d \n", m); 
            }    
            break: 打断  / 退出for循环
            continue: 继续

程序错误分两大类
1)语法错误
gcc xxx.c -o xxx 报出来的错误
解决该类错误的方式:
a)只关注只解决第一个错误
b)根据第一个错误信息 提示的出错 仔细检查所在行是否有语法错误
c)如果所在行无语法错误的,往当前行以前的代码中去找错误
2)逻辑错误(BUG)
./a.out 达不到想要的效果 甚至是程序崩溃,这种错误称为逻辑错误

1.2 while循环
while,在…时候
语法格式:
while(循环控制表达式){
语句1;
语句2;

}
执行流程:
1)循环控制表达式
如果该表达式运算结果为真,那么就执行语句1 语句2 …
如果该表达式运算结果为假,while循环结束,跳到 } 后去执行
2)语句1 语句2 … 执行完毕后,接着执行步骤1)
特殊情况
1)while循环语句只有一条时 ,建议还是{ }
while(i++ <5)
printf("%d\n", i);
2) 死循环
for(;😉

        while(1)   

    1.3 do while循环
  语法格式:
      do{
        语句1;
        语句2;
        ...
      }while(循环控制表达式); //切记别把 ;丢掉                             
  do: 执行
  语义:
      1)执行语句1 语句2 ... 
      2) 执行循环控制表达式
         计算结果如果为真 ,再去执行语句1 语句2 ... 
                            执行完毕后再去计算循环控制表达式的值 
                            如果还为真 重复上面动作
         
                 如果为假, 循环立即结束,调整到后续代码执行                          
         
   和while循环的区别在于:先执行一次循环语句,再去判断条件
                          do {。。。} while最少会被执行到一次
   例如:
       do{
           printf("hello\n");
       }while(0);
       结果: 打印输出一次hello                       

2、空语句
1)语法格式: 仅仅包含了一个 ;
例如:
int a = 0;
int b = 10;
; //空语句 起到了延时的作用,因为CPU执行该空语句是需要耗费时间的
2) 应用场景: 延时
for(;😉 ;
while(1) ; //死循环 CPU全速空转

  int i = 100000;
  for(; i>=0; i--) ;//空循环100000次
                    //每次CPU都会消耗点时间 ,达到延时的效果
                    //不精确的延时
  1. 空语句误用
    for(i=0; i<5; i++);
    printf("%d\n", i);

    while(i++<10);
    printf(“i=%d\n”,i);

3、循环内部常用的三个关键字
1)continue: 结束本次循环,开始下次循环
2) break:结束循环 结束所在的那层循环
3) goto:跳转到标号指定的位置去执行
了解即可 绝对多少企业禁用goto

4、关于scanf的使用
scanf(“占位符”, 变量的地址)
功能: 扫描键盘缓冲区 取出想要的按键值 把键值存储到变量对应的内存中去

1)连续输入多个数字,默认以空白符(空格 TAB 换行)分割数据项
scanf("%d%d%d", &b, &c, &d);
输入数据的形式: 1 (多个空格) 2 (TAB/回车键) 3
2)特定格式接收

  scanf("%d,%d,%d", &b, &c, &d);  
  输入数据的形式 1,2,3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值