随笔 - 31  文章 - 0  评论 - 0  阅读 - 3132

第三章 三大结构 | 循环语句

while 函数

可以这样理解,当满足什么条件时,执行while循环。

编写格式

while (condition) {
// this is the function
}

当满足condition时,循环可以运行。
如果condition内的东西不变,那么就会造成一个死循环。

do-while循环

先进行一次循环,然后再检查条件是否满足,如果条件不满足(即表达式为零),则退出循环。

编写格式

do {
//To do
} while ( condition );

例子

这让我们想到如果用它来算位数,也是不错的选择

#include <stdio.h>
int main () {
int num;
scanf("%d",&num);
int i = 0;
do {
num /= 10;
i++;
} while ( num > 0 );
printf("是%d位数",i);
return 0;
}

这就可以解决用户输入0的问题了。
其实,它等同于下面的代码

while (1) {
// this is the function
if( condition ) {
break;
}
}

for循环

编写格式

for ( 初始条件(控制变量); 循环条件; 循环要执行的步长) {
// to do
}

例子

输出3的n次方
#include <stdio.h>
#include <math.h>
int main() {
int n;
scanf("%d",&n);
for(int i = 0; i <= n; i++) {
printf("pow(3,%d) = %.0f\n", i, pow(3,i));
}
return 0;
}
读取数组
#include <stdio.h>
int main() {
int n[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0; i <= n; i++) {
printf("n[%d] = %d",i,n[i]);
}
return 0;
}

还是输出3的n次方,如果把初始变量的部分去掉呢?
就像这样

#include <stdio.h>
#include <math.h>
int main() {
int n;
scanf("%d",&n);
for(; n >= 1; n--) {
printf("pow(3,%d) = %.0f\n", i, pow(3,n));
}
return 0;
}

结果也是可以的。

i = 0; i < 10; i++i = 1; i <= 10; i++的循环次数是一样的,但是起始的值不一样:一个是从i=0开始,一个是从i=1开始。

for循环要注意的事情

请看代码1和代码2
代码1

for (int i = 0; i < N; i++) {}

代码2

for (int i = 0; i <= N; i++) {}

这两个的不同之处在于,代码2比代码1多运行了一次,就如PTA里面的练习2-14 求奇数分之一序列前N项和中的那样:如果用代码1则可以求出前23项之和,代码2则可以求出前24项之和。
所以代码1等同于代码3
代码3

for (int i = 1; i <= N; i++) {}

何时用while、do-while、for循环

  1. 如果有固定次数,用for循环是最好的;无论如何都要执行一次,用do-while循环;其他情况用while循环。
  2. 其实,for循环和while循环是等价的。特别是for(; condition;){}和while(condition){},简直就是完全等价
posted on   Mryan2005  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示