[C.C++] C语言循环语句

310 0
Honkers 2025-5-30 03:45:14 来自手机 | 显示全部楼层 |阅读模式

一、while循环

循环值得是对于重复的if判断,并且默认为真才进入语句。

语句形式:

  1. while(exp1)
  2. {
  3. exp2;
  4. }
复制代码

例:打印1~10的数

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int n = 10;
  5. while(n--)
  6. {
  7. printf("%d\n",10 - n);
  8. }
  9. return 0;
  10. }
复制代码

这里n–是后置自减,判断n的值时先使用,10为真,后自减,再打印10 - 9,依次执行当n=1时,为真,自减为0,打印10 - 0。

while循环一般用在不知道循环次数,但知道循环条件的情况。

二、for循环

  1. for(exp1;exp2;exp3)
  2. {
  3. exp4;
  4. }
  5. exp1是循环变量初始化,exp2是循环条件,exp3是循环变量的变化
  6. 与while循环对应,while循环中,exp1是在循环外定义并初始化
  7. exp2在while循环中就是括号内中的语句
  8. exp3在while循环中一般在循环内部进行,也可以在循环条件中进行
  9. for循环和while循环的执行逻辑相似,for循环一般用在已知可能的执行次数的情况。
复制代码

例:打印1~10

  1. #include <stdio.h>
  2. int main()
  3. {
  4. for ( int n = 10;n > 0 ;n -- )
  5. {
  6. printf("%d\n",11 - n);
  7. }
  8. return 0;
  9. }
复制代码

例:打印100以内3的倍数

  1. #include <stdio.h>
  2. int main()
  3. {
  4. for ( int n = 100;n > 0 ;n -- )
  5. {
  6. if(n % 3 == 0)
  7. printf("%d\n",n);
  8. }
  9. return 0;
  10. }
复制代码

这个方法比较笨,但也是一种解决方法,其实我们所说的算法就是不同的问题有不同的解法,每有一种解法,就有一种算法,算法之间的好坏,主要看执行效率。

三、do while循环

  1. do
  2. {
  3. exp1;
  4. }while(exp2)
  5. do while循环与while循环很像,但是他的执行逻辑是先执行我们想要执行的语句,再进行判断
  6. 所以do while循环里的exp1至少都会执行1次
复制代码
  1. //判断输入的数据位数
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int n = 0;
  6. scanf("%d", &n);
  7. int cnt = 0;
  8. do
  9. {
  10. cnt++;
  11. n = n / 10;
  12. } while (n);
  13. printf("%d\n", cnt);
  14. return 0;
  15. }//这里用do while 的优点是,即使我输入0也会执行1次,并且打印出1,但是while循环和for循环就不会执行,还需另外用if判判断
复制代码

四、break和continue

在循环执⾏的过程中,如果需要提前终⽌循环,就需要用到跳转语句。C语⾔中 提供了break、 continue 两个关键字,就是应⽤到循环中的。

例:1~10的打印

  1. break的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int i = 1;
    5. while(i<=10)
    6. {
    7. if(i == 5)
    8. break;
    9. printf("%d ", i);
    10. i = i+1;
    11. }
    12. return 0;
    13. }//执行结果为1 2 3 4
    复制代码
  2. continue 的作⽤是跳过本次循环中continue后边的代码,在 for 循环和 while 循环中有所差异的。

    1. //while循环
    2. #include <stdio.h>
    3. int main()
    4. {
    5. int i = 1;
    6. while(i<=10)
    7. {
    8. if(i == 5)
    9. continue;
    10. printf("%d ", i);
    11. i = i+1;
    12. }
    13. return 0;
    14. }//执行结果:死循环,因为continue跳过了后面的i = i+1
    复制代码
    1. //for循环的continue
    2. #include <stdio.h>
    3. int main()
    4. {
    5. int i = 1;
    6. for(i=1; i<=10; i++)
    7. {
    8. if(i == 5)
    9. printf("%d ", i);
    10. }
    11. return 0;
    12. }//执行结果:1 2 3 4 6 7 8 9 10,这里continue跳过了n= 5的printf,但是i++依然在执行
    复制代码

    do while循环同理

五、循环嵌套

前面的三种循环可以彼此或者是自嵌套,一些问题可能并不能只用一次循环就能解决。

比如一些排序问题。这里有一个求100到200的素数问题

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 0;
  5. //循环产⽣100~200的数字
  6. for(i=100; i<=200; i++)
  7. {
  8. //判断i是否为素数
  9. //循环产⽣2~i-1之间的数字
  10. int j = 0;
  11. int flag = 1;//假设i是素数
  12. for(j=2; j<i; j++)
  13. {
  14. if(i % j == 0)//如果被除1或者它本身的数整除
  15. {
  16. flag = 0;//它不是质数
  17. break;
  18. }
  19. }
  20. if(flag == 1)//否则他就是质数
  21. printf("%d ", i);
  22. }
  23. return 0;
  24. }
复制代码

六、 goto语句

go to 语句也是一种跳转语句,但是使用它会打乱程序执行顺序,不建议使用,但是既然有goto这个语法存在,那他就有存在的道理。goto语句一般用在比如多重循环中,想要一次性跳出循环的情况,但是能用goto语句的地方都是可以用其他方法解决的,只是goto可能更方便。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4014
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行