C语言分支初启航,循环开篇韵悠长--while,for循环
C语言分支初启航,循环开篇韵悠长--while,for循环
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
题目解析
要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4
要想去掉n的最低位,找出倒数第二位,则使用 n=n/10 操作就可以去掉最低位的,如:
n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
- 循环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 }