问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C语言分支初启航,循环开篇韵悠长--while,for循环

创作时间:
作者:
@小白创作中心

C语言分支初启航,循环开篇韵悠长--while,for循环

引用
CSDN
1.
https://blog.csdn.net/2402_88135437/article/details/145412840

while循环

C语言提供了3种循环语句,while就是其中一种,接下来就介绍while语句。

while语句的语法结构和if语句非常相似。

if 和 while的对比

1 if(表达式)
2 语句;
3
4
5 while(表达式)
6 语句;//如果循环体想包含更多的语句,可以加上大括号

你可以对比来看一下,具体写个代码吧

1 //代码1
2 #include <stdio.h>
3
4 int main()
5 {
6 if(1)
7 printf("hehe\n"); //if后边条件满足,打印一次hehe
8 return 0;
9 }
1 //代码2
2 #include <stdio.h>
3
4 int main()
5 {
6 while(1)
7 printf("hehe\n"); //while后边的条件满足,死循环的打印hehe
8 return 0;
9 }

这就是他们的区别,while语句是可以实现循环效果的。

while语句的执行流程

首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。

while 循环的实践

练习:在屏幕上打印 1~10 的值

参考代码:

1 #include <stdio.h>
2 int main()
3 {
4 int i = 1;
5 while(i<=10)
6 {
7 printf("%d ", i);
8 i = i+1;
9 }
10 return 0;
11 }

练习

输入一个正的整数,逆序打印这个整数的每一位

例如:

输入:1234,输出:4 3 2 1

输入:521,输出:1 2 5

题目解析

  1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4

  2. 要想去掉n的最低位,找出倒数第二位,则使用 n=n/10 操作就可以去掉最低位的,如:

n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。

  1. 循环1和2两个步骤,在n变成0之前,就能到所有的位。

参考代码:

1 #include <stdio.h>
2
3 int main()
4 {
5 int n = 0;
6 scanf("%d", &n);
7 while(n)
8 {
9 printf("%d ", n%10);
10 n /= 10;
11 }
12 return 0;
13 }

for循环

for循环是三种循环中使用最多的,for循环的语法形式如下:

1 for(表达式1; 表达式2; 表达式3)
2 语句;//如果循环体想包含更多的语句,可以加上大括号

表达式1 用于循环变量的初始化

表达式2 用于循环结束条件的判断

表达式3 用于循环变量的调整

for循环的执行流程

首先执行 表达式1 初始化循环变量,接下来就是执行 表达式2 的判断部分,表达式2 的结果如果

==0,则循环结束;表达式2 的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表 达式

3 ,调整循环变量,然后再去 表达式2 的地方执行判断,表达式2 的结果是否为0,决定循环是否继

续。

整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。

for循环的实践

练习:在屏幕上打印1~10的值

参考代码:

1 #include <stdio.h>
2 int main()
3 {
4 int i = 0;
5 for(i=1; i<=10; i++)
6 {
7 printf("%d ", i);
8 }
9 return 0;
10 }

运行结果:

for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部

分非常集中,便于代码的维护,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优一些。

练习

练习1:

计算1~100之间3的倍数的数字之和

参考代码:

1 #include <stdio.h>
2 int main()
3 {
4 int i = 0;
5 int sum = 0;
6 for(i=1; i<=100; i++)
7 {
8 if(i % 3 == 0)
9 sum += i;
10 }
11 printf("%d\n", sum);
12 return 0;
13 }
14 //小的优化
15 //如果能直接产生3的倍数的数字就省去了多余的循环和判断
16 #include <stdio.h>
17 int main()
18 {
19 int i = 0;
20 int sum = 0;
21 for(i=3; i<=100; i+=3)
22 {
23sum += i;
24 }
25 printf("%d\n", sum);
26 return 0;
27 }
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号