C语言的循环语句( while,for与 do-while循环 )
上期,我们介绍了C语言的分支语句( if 与 switch语句 )(https://blog.csdn.net/GenshiN__IMPACt_/article/details/132044349?spm=1001.2014.3001.5502)
所以我们今天来介绍一下常与分支语句结合使用的循环语句( **while,for与 do-while循环** )
关于while循环:
1)while在C语言中的定义
2)while循环在C语言中的基本作用
while循环的两个例子
1.与scanf构成多组输入
例如:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
while (scanf("%d", &n) != 0)
{
for (int i = 0; i < 33; i++)
{
if (n == 0)
{
printf("他的二进制中一的总数有%d个\n", i);
break;
}
n = (n & (n - 1));
}
}
return 0;
}
如下图所示,其中左图加了while循环,我们可以看到左图的可以进行多次输入且没有退出程序,
所以我们可以尽情使用这个程序,如果想退出可以按"ctri+Z"退出程序
2.输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输入:125 输出:5 2 1
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
while (n)
{
printf("%d ", n % 10);
n /= 10;
}
return 0;
}
在这里n==0时程序结束while循环。
关于for循环
1)for在C语言中的定义
for(表达式1; 表达式2; 表达式3)
{
执行语句;
}
其中,
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
例如:我们想知道X的Y次方为多少,就可以用for循环来解决,代码如下:
#include<stdio.h>
int main()
{
int x = 0, y = 0;
scanf("%d %d", &x, &y);
int a = x;
for (int i = 0; i < y; i++)
{
x *= x;
}
printf("%d的%d次方是%d\n", a, y, x);
return 0;
}
方法解析:这里我们正是用了for循环
1.首先,我们初始化了i变量;
2.接着,就是执⾏i<y的判断部分;
3.若满足判定即(i<y)==0,则进行变量的调整与for所包含的执行语句;若(i<y)!=0,则跳出循环
2)for循环实例
例如:打印二维数组
代码如下:
#include<stdio.h>
int main()
{
int arr[2][5] = { 0,1,2,3,4,5,6,7,8,9 };
int sz = sizeof(arr) / sizeof(arr[0]);
int len = sizeof(arr) / (sizeof(arr[0][0]) * sz);
for (int i = 0; i < sz; i++)
{
for (int j = 0; j < len; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
for的双循环使得在打印完数组一行的列数之后得以换行,这样就可以实现二维数组的输入了
do while循环体系
1)do while循环的语法形式
do while与for while不同的是do while先执行程序再进行判定,其结构图如下:
在 do while 循环中先执⾏图上的“语句”,
执⾏完语句,再去执⾏do while所包含的判断语句,判断表达式的结果是!=0,则继续循环,
执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅
2)do while循环的运用
1.输⼊⼀个正整数,计算这个整数是⼏位数,
例如:5201314 输出:该整数是7位数
代码如下:
#include<stdio.h>
int main()
{
int n = 0, count = 0;
scanf("%d", &n);
do
{
n = n / 10;
count++;
} while (n);
printf("该整数是%d位数\n", count);
return 0;
}
我们可以看到,即使n==0,也是1位数,也需要统计位数,所以这里使用do while循环就可以很好的表示。
好了,这里就是这一期的全部内容,如果有错或有疑问可以私信我哦
谢谢!!!