目录
前言:
选择结构:
while:
for:
do...while:
结束语:
前言:
在前面小编与大家一起学习了分支语句中的选择结构,接下来就和小编一起来学习分支语句中的循环结构吧!
选择结构:
选择结构主要分为三种:while,do...while,for。
while:
语法结构:
while (表达式)循环语句;
简单的一个while的代码如下所示:
#include
int main() {while (1)printf("hehe\n");return 0;
}//该代码会使得代码结果进入一个死循环中
使用while循环在屏幕上打印1~10代码如下所示:
#include
int main() {int i &#61; 1;//初始化while (i <&#61; 10)//判断部分 {printf("%d ", i);i&#43;&#43;;//调整部分}return 0;
}
代码结果截图如下所示&#xff1a;
在while中break用于永久的终止循环&#xff1a;
代码如下所示&#xff1a;
#include
int main() {int i &#61; 1;while (i <&#61; 10){if (i &#61;&#61; 5)break;printf("%d ", i);i&#43;&#43;;}return 0;
}
结果如下截图所示&#xff1a;
在while中continue的作用是跳过本次循环continue后面的代码&#xff0c;直接进入判断部分看是否进行下一次循环。
代码如下所示&#xff1a;
#include
int main() {int i &#61; 1;while (i <&#61; 10){if (i &#61;&#61; 5)continue;//使得程序进入死循环printf("%d", i);//当i &#61;&#61; 5的时候直接跳过下面两条返回到上面while的判断部分i&#43;&#43;;}
}
结果如下截图所示&#xff1a;
while循环的小练习&#xff1a;
在屏幕上获取一个字符之后&#xff0c;再在屏幕上把这个字符给打印出来。
具体代码如下所示&#xff1a;
#include
int main() {int ch &#61; 0;while ((ch &#61; getchar()) !&#61; EOF){putchar(ch);}return 0;//ctrl&#43;z退出循环
}
其中getchar是获取一个字符&#xff0c;putchar是输出一个字符。
如果getchar获取字符失败则返回的是EOF。
其中EOF文件结束的标志(end of file)相当于-1
代码结截图如下所示&#xff1a;
如果要退出程序则需要输入ctrl&#43;z即可。
那么我们来思考一下getchar是如何获取这个字符的呢&#xff1f;
其实getchar是通过电脑中的缓冲区来获取字符的&#xff0c;键盘在输入字符后将它们存储在缓冲区中&#xff0c;然后getchar通过缓冲区在来读取字符&#xff0c;一次只读取一个字符。
先读取A在读取\n。
示例代码如下所示&#xff1a;
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main() {char password[20] &#61; { 0 };printf("请输入密码:>");scanf("%s", password);//数组名即地址printf("请确认密码(Y/N&#xff09;:>");//清理缓冲区//getchar();//处理&#39;\n&#39;//清理缓冲区中的多个字符int tmp &#61; 0;while ((tmp &#61; getchar()) !&#61; &#39;\n&#39;){;}int ch &#61; getchar();if (ch &#61;&#61; &#39;Y&#39;){printf("确认成功\n");}else{printf("不成功\n");}return 0;
}
结果如下截图所示&#xff1a;
其中我们要在确定密码的时候清理缓冲区&#xff0c;否则getchar会直接在缓冲区中拿到“\n”&#xff0c;直接返回不成功&#xff1a;
清理多个字符的缓冲区我们用的代码是&#xff1a;
int tmp &#61; 0;while ((tmp &#61; getchar()) !&#61; &#39;\n&#39;){;}
注意&#xff1a;getchar的返回值是整形&#xff0c; 它读取虽然是字符&#xff0c;但是字符是以ASCII码值存储的&#xff0c;故返回的是整形。
代码如下所示&#xff1a;
#include
int main() {int ch &#61; 0;while ((ch &#61; getchar()) !&#61; EOF){if (ch <&#39;0&#39; || ch > &#39;9&#39;)continue;putchar(ch);}return 0;
}
结果如下截图所示&#xff1a;
for&#xff1a;
语法结构&#xff1a;
其中初始化只执行一次
打印1~10代码如下所示&#xff1a;
#include
int main() {int i &#61; 0;for (i &#61; 1; i <&#61; 10; i&#43;&#43;) {printf("%d ", i);}return 0;
}
结果如下图所示&#xff1a;
for中的break也是终止循环
代码如下所示&#xff1a;
#include
int main() {int i &#61; 0;for (i &#61; 1; i <&#61; 10; i&#43;&#43;){if (i &#61;&#61; 5)break;printf("%d\n", i);}return 0;
}
结果截图如下所示&#xff1a;
for中的break跳过本次循环
代码如下所示&#xff1a;
#include
int main() {int i &#61; 0;for (i &#61; 1; i <&#61; 10; i&#43;&#43;){if (i &#61;&#61; 5)continue;//当i&#61;&#61;5的时候跳过下面的代码进行下一次循环printf("%d\n", i);}return 0;
}
结果截图如下所示&#xff1a;
for中的continue和while中的continue的区别&#xff1a;
for中的continue跳到了调整部分&#xff0c;不会使得代码死循环。
while中的continue可能会跳过调整部分使得代码陷入死循环。
在for中调整部分可以放在大括号内代码如下所示&#xff1a;
#include
int main() {int i &#61; 0;for (i &#61; 1; i <&#61; 10; ){printf("%d\n", i);i&#43;&#43;;}return 0;
}
结果如下截图所示&#xff1a;
建议&#xff1a;
1.不可在for循环体内修改循环变量&#xff0c;防止for失去控制。
代码如下所示&#xff1a;
#include
int main() {int i &#61; 0;for (i &#61; 1; i <&#61; 10; i&#43;&#43;){printf("%d\n", i);i &#61; 5;//改变循环变量}return 0;
}
结果如下截图所示
2.建议for语句的循环控制变量的语句采用“前闭后开区间”的写法。
代码如下所示&#xff1a;
#include
int main() {int arr[10] &#61; { 0 };int i &#61; 0;for (i &#61; 0; i <10; i&#43;&#43;)//前闭后开{printf("%d\n", arr[i]);}return 0;
}
结果截图如下所示&#xff1a;
在for中初始化、判断、调整部分均可以省略。
判断部分省略后&#xff0c;恒为真值会导致死循环&#xff0c;具体代码如下所示&#xff1a;
#include
int main() {//判断部分的省略&#xff0c;判断部分恒为真for (;;){printf("hehe\n");}return 0;
}
结果截图如下所示&#xff1a;
注意判断部分是“&#61;”还是“&#61;&#61;”
“&#61;”为赋值号 “&#61;&#61;”才是判断号
代码如下所示&#xff1a;
#include
int main() {int i &#61; 0;int k &#61; 0;for (i &#61; 0, k &#61; 0; k &#61; 0; i&#43;&#43;, k&#43;&#43;)k&#43;&#43;;printf("%d\n", k);return 0;
}
该代码的执行次数为0次
do...while&#xff1a;
语法结构&#xff1a;
do循环语句;
while (表达式)
while和do...while的区别&#xff1a;
while是先判断再执行而do...while是先执行再判断。
打印1~10代码如下所示&#xff1a;
#include
int main() {int i &#61; 1;do{printf("%d ", i);i&#43;&#43;;} while (i <&#61; 10);return 0;
}
结果如下截图所示&#xff1a;
do...while中的break&#xff1a;
代码如下所示&#xff1a;
#include
int main() {int i &#61; 1;do{if (i &#61;&#61; 5)break;printf("%d ", i);i&#43;&#43;;} while (i <&#61; 10);return 0;
}
结果截图如下所示&#xff1a;
do...while中的continue&#xff1a;
具体代码如下所示&#xff1a;
#include
int main() {int i &#61; 1;do{if (i &#61;&#61; 5)break;printf("%d ", i);i&#43;&#43;;} while (i <&#61; 10);return 0;
}
结果如下截图所示&#xff1a;
这与while中的continue一致。
do...while的特点是&#xff1a;代码至少执行一次。
结束语&#xff1a;
这次的分享就到这里啦&#xff01;我们这次主要和大家一起学习了分支语句中的循环结构&#xff0c;下一次小编将针对于这次的学习进行一次习题练习&#xff0c;想要学习的同学记得关注小编和小编一起学习吧&#xff01;如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津&#xff08;在此小编先谢过各位大佬啦&#xff01;&#xff09;