-
2020-03-25 18:34:21
while语句
1
while(语句){语句}中小括号中的语句是判断真假,如果为真,则执行大括号中的语句,如果为假,则不执行下面的语句。
while(语句);中的语句也是一个判断,当小括号中的语句表达式值不为0时,也就是为真,就一直判断,直到里面的表达式值为0时结束判断,去执行下一步的程序,就是语句为真什么都不执行2、while(1){}和while(1);
while(1)会循环执行后面的语句
while(1);表示一个死循环,循环一直运行下去,因为条件一直为真.while(1){……}是让单片机一直执行{……}中内容,防止程序跑飞,通常用于主程序主体,确保程序持续执行
while(1);是一条指令,它让单片机停在这个位置,一般用来检测中断,只有cpu收到中断指令,才会跳出while(1),进入中断服务子程序;
你只要记住whlie(1)本质是死循环,while(1)中的指令会不断重复执行,除非有中断,while(1);可以看作while(1){//空指令},它执行的是空指令,于是单片机就停在这行代码处.更多相关内容 -
java 中的while空语句有什么用?
2021-03-03 12:14:32以下的类中有while(条件){}这样的语句,但是不知道空语句在这有什么作用?classshareClass{//共享类privateintn;privatebooleanflag=false;voidproduce(inti){while(flag){}n=i;f...以下的类中有while(条件){}...以下的类中有while(条件){}这样的语句,但是不知道空语句在这有什么作用?classshareClass{//共享类privateintn;privatebooleanflag=false;voidproduce(inti){while(flag){}n=i;f...
以下的类中有while(条件){}这样的语句,但是不知道空语句在这有什么作用?
class shareClass { // 共享类
private int n;
private boolean flag = false;
void produce(int i) {
while (flag) {}
n = i;
flag = true;
}
void get() {
while (!flag) {}
flag = false;
}
}
// 读取数据类
class Producer implements Runnable {
shareClass shc;
Producer(shareClass c) {
shc = c;
}
public void run() { // 生产者产生5个随机数
for (int i = 0; i < 5; i++)
shc.produce((int) (Math.random() * 100));
}
}
class Consumer implements Runnable {
shareClass shc;
Consumer(shareClass c) {
shc = c;
}
public void run() {
for (int i = 0; i < 5; i++)
shc.get(); // 消费者读取数据
}
}
public class TheadsCommunication {
public static void main(String args[]) {
shareClass shc = new shareClass();
Thread t1 = new Thread(new Producer(shc));
Thread t2 = new Thread(new Consumer(shc));
t1.start();
t2.start();
}
}
其实这是一个关于多线程的例子,但不太清楚while空语句在这起什么作用?
展开
-
if判断语句 for循环 while循环
2020-12-21 10:57:21判断语句 if语句 if语句语法结构 if语句示例解析 条件表达式 1.标准if条件语句的语法 if expression: if suite else: else_ suite 如果表达式的值非0或者为布尔值True,则代码组if_ suite被执行;... 空字符串、空 -
9. C 语言 -- 循环结构:while语句和 do … while语句
2018-10-19 19:17:45本文主要讲述 C 语言循环结构中的 while 和 do while 语句,并且介绍了 scanf, getchar 和 gets三种输入的使用方法及使用情况。本博客主要内容为 “小甲鱼” 视频课程《带你学C带你飞》【第一季】 学习笔记,文章的主题内容均来自该课程,在这里仅作学习交流。在文章中可能出现一些错误或者不准确的地方,如发现请积极指出,十分感谢。
也欢迎大家一起讨论交流,如果你觉得这篇文章对你有所帮助,记得评论、点赞哦 ~(。・∀・)ノ゙1. 循环结构
循环结构是编程中常常使用的结构,当在程序中存在着需要循环执行多次的代码时,可以采用循环结构实现。在 C 语言中常见的是 while 循环和 for 循环,在这里首先介绍 while 循环。
2. while 循环结构
2.1 while 语句
while 语句的语法非常简单,使用方法如下
while (表达式) 循环体
只要表达式的值为真,就会不断执行循环体里边的语句或程序块,如下图所示
举例说明
示例1
现在我们要计算1+2+3+……+100的结果,可以画出如下的流程图
根据流程图可以得到如下的程序
#include<stdio.h> int main() { int i = 1, sum = 0; while (i <= 100) { sum = sum + i; i = i+1; } printf("result is %d\n",sum); return 0; }
示例2
统计从键盘输入的一行英文句子的字符个数,其流程图如下所示
根据流程图可以得到如下代码
#include<stdio.h> int main() { int count = 0; printf("please input a english setence:"); while (getchar() != '\n') { count = count +1; } printf("it has %d words \n",count); return 0; }
在ubuntu16.04下通过gcc编译执行得到如下结果
其中 34 个字符包含了其中的空格。2.2 do … while 语句
while 语句的语法非常简单,使用方法如下
do 循环体 while (表达式);
这里需要注意的是,在
while (表达式);
的后面有一个分号,但是在上一个的中while (表达式)
是没有分号的。do…while
与while
语句相反,先执行循环体的内容再判断表达式是否为真,如下图所示这种循环结构比较特殊,常常用于用户登陆密码验证问题,当输入的密码不正确的时候会要求一直输入密码直至正确(当然生活中的密码往往只可以进行有限次的尝试),常常采用如下左图的使用方式
因为如果采用while
语句而不是采用do … while
语句,就会产生上图中右图的现场,代码会有两部分十分相近。2.3 小结
对于上述的两种循环,其中的
while
语句是入口循环条件,do … while
语句是出口循环条件,其中入口循环条件是首先判断条件是否满足,然后在执行循环体内容;而出口循环条件是先执行循环体,然后判断条件是否满足,因此循环体的内容至少会执行一次。3. C 语言的三种输入函数
在这里介绍 C 语言中的三种输入函数,
scanf()
,getchar()
和gets()
都是标准输入函数,比如在本文中使用的getchar()
,但是在使用有一些不同。 [ 2 ] ^{[2]} [2]3.1 输入操作的原理
在介绍输入函数之前,首先介绍输入操作的原理, 程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。所以我们在使用不同的输入函数时,要考虑在输入缓冲区是否会造成残留的现象。
3.2 三种输入函数用法
gets()
用于从标准输入流stdin读入一个整行(以’\n’或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的’\n’从流中取出,但不写入数组。gets()不检查被写入的数组大小。getchar()
用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点。scanf()
函数返回成功赋值的数据项数,出错时则返回EOF,与上面相同,scanf()
函数返回的也是一个int型的数。因此
getchar()
常用于接收字符,而gets()
常用于接受字符串,scanf()
可用于接受字符也可以用于接收字符串。3.3 三种输入函数的注意事项
首先要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题。
读取字符时:
(1)scanf()
以 Enter 结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
(2)getchar()
以 Enter 结束输入,不会舍弃最后的回车符。读取字符串时:
(1)scanf()
以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符;
(2)gets()
以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!所以当我们项读取一句话中的每一个字符的时候,往往使用
getchar()
而不使用scanf()
,因为一句话中是会出现空格的,如果使用scanf()
会造成将一句话分首先读入第一个空格前的部分,其余部分会残留在输入缓冲区的情况,所以不适合。其次为了避免出现上述问题,必须要在读取输入前,清空缓冲区的残留数据,可以用以下的方法解决:
(1) C语言里提供了函数清空缓冲区,只要在读数据之前先清空缓冲区就没问题了,即使用fflush(stdin)
。某些编译器(如VC6)支持用 fflush(stdin) 来清空输入缓冲,但是并非所有编译器都要支持这个功能(linux 下的 gcc 就不支持),因为标准中根本没有定义 fflush(stdin),所以这种方法的移植性不是很好不建议使用;
(2) 自己取出缓冲区里的残留数据,即使用while ((c = getchar()) != EOF && c != '\n');
,不停地使用getchar()获取缓冲中字符,直到获取的c是“\n”或文件结尾符EOF为止。3.4 举例说明
使用
scanf()
和getchar()
输入读入字符的示例如下所示#include <stdio.h> int main() { char char1, char2, char3, char4; scanf("%c%c%c%c", &char1, &char2, &char3, &char4); printf("%d %d %d %d\n", char1, char2, char3, char4); char c; int i; scanf("%c%d", &c, &i); printf("变量c的值是:%c\n", c); printf("变量i的值是:%d\n", i); // fflush(stdin); while ((c = getchar()) != EOF && c != '\n'); char ch1, ch2, ch3, ch4; ch1 = getchar(); ch2 = getchar(); ch3 = getchar(); ch4 = getchar(); printf("%d %d %d %d\n", ch1, ch2, ch3, ch4); return 0; }
执行上面的代码可以获得如下的结果
这里可以看到,对于输入 “a b”,scanf()
将空格与回车符均作为输入,并且打印输出他们的 ascii 码;之后的scanf()
没有打印输出空格的 ascii 码,是因为定义的输入是 int 型,所以没有将空格这个字符读入;getchar()
获得的结果与scanf()
是一样的。其次可以看到我们在这里清楚了输入缓冲区中的残留,否则
getchar()
会先读取缓冲区残留的回车,然后在读入键盘输入的部分;fflush(stdin)
在 ubuntu 下不可用,所以注释掉了。使用
scanf()
和fgets()
输入读入字符的示例如下所示#include <stdio.h> int main() { char str1[20], str2[20]; printf("input is:"); scanf("%s",str1); printf("output is : %s\n",str1); scanf("%s",str2); printf("output is : %s\n",str2); char c; while ((c = getchar()) != EOF && c != '\n'); printf("input is:"); char str3[20], str4[20]; fgets(str3, 20, stdin); printf("output is : %s\n",str3); fgets(str4, 20, stdin); printf("output is : %s\n",str4); return 0; }
这里有两点需要注意,首先
gets()
在 ubuntu 下事会报错的,所以在这里使用fgets()
替代,其次由于scanf
不会清除最后的回车符号,所以这里我们还是手动清除缓冲区残留,执行后的结果如下所示
所以建议使用fgets()
读入字符串。参考
[1] “小甲鱼” 视频课程《带你学C带你飞》【第一季】P13
[2] hao5743《scanf()和getchar() 使用》
[3] dophiJing CSDN 博客 《gets与scanf如何判断读取文件结束》
[4] guanyasu CSDN 博客《C语言清空输入缓冲区》欢迎大家关注我的知乎号(左侧)和经常投稿的微信公众号(右侧)
-
For、While循环语句
2021-01-18 15:34:46While循环语句 While语句的格式 : while 判断条件(condition): 执行语句(statements) else: 执行语句(statements) 执行Gif演示: 案例:利用While计算1-100的总和 #利用Python计算1-100的总和 a...循环语句的控制结构图
While循环语句
While语句的格式 :
while 判断条件(condition): 执行语句(statements) else: 执行语句(statements)
执行Gif演示:
案例:利用While计算1-100的总和
#利用Python计算1-100的总和 a=1 sum=0 while a<=100: sum = sum + a a=a+1 print(sum) 结果: 5050
案例:无限循环
我们可以通过设置条件表达式永远不为false来实现无限循环
var=1 while var == 1: #表达式永远为true num = int(input("输入一个数字:")) print("你输入的数字是: ", num) print("good bye")
while循环使用else语句:循环输出数字,并判断大小
count=1 while count<5: print(count,"小于5") count=count+1 else: print(count,"大于等于5") 结果: 1 小于5 2 小于5 3 小于5 4 小于5 5 大于等于5
For循环语句
for循环可以遍历任何序列的项目,如一个列表/字符串......
for的语句格式
for <variable> in <sequence>: <statements> else: <statements>
案例:打印language数组
language=['English','Chinese','math'] for x in language: print (x) 结果: English Chinese math
利用break跳出循环
sites = ["Baidu", "Google","JD","Taobao"] for site in sites: if site == "JD": print("京东!") break print("循环数据 " + site) else: print("没有循环数据!") print("完成循环!") 结果: 循环数据 Baidu 循环数据 Google 京东! 完成循环!
Range()函数
range([start],end,[step])
遍历数字序列,可以使用内置的range()函数,生成序列
for x in range(5): print(x) 结果: 0 1 2 3 4 #使用range(x,x)指定区间的值 for x in range(1,5): print(x) 结果: 1 2 3 4 #使用range(z,z,z)指定区间并指定不同的增量 for x in range(1,10,3): print(x) 结果: 1 4 7
#结合range()和len()函数来遍历一个序列的索引 a=['啾咪','三七','阔阔'] for x in range(len(a)): print(x,a[x]) 结果: 0 啾咪 1 三七 2 阔阔
break和continue语句及循环中的else子句
break语句可以跳出while和for循环体,如果你从for或while循环中终止,任何对应的循环else块将不执行
continue语句被用来告诉python跳过当前循环块中剩余语句,然后继续进行下一轮循环
break执行流程:
continue执行流程:
while语句代码执行过程:
for语句代码执行过程:
案例:while中使用break
n=1 while n <= 10: n=n+1 if n==4: break print(n) print('循环结束') 结果: 2 3 循环结束
案例:while中使用continue
n=1 while n <= 10: n=n+1 if n==4: continue print(n) print('循环结束') 结果: 2 3 5 6 7 8 9 10 11 循环结束
案例
for letter in 'JD.com': if letter == ".": break print(letter) print('循环结束') a=0 while a<=10: if a==5: break a=a+1 print(a) print('循环结束') 结果: J D 循环结束 1 2 3 4 5 循环结束
案例:用于查询质数的循环例子:
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被 break 终止时不执行。
for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, '等于', x, '*', n//x) break else: # 循环中没有找到元素 print(n, ' 是质数') 结果: 2 是质数 3 是质数 4 等于 2 * 2 5 是质数 6 等于 2 * 3 7 是质数 8 等于 2 * 4 9 等于 3 * 3
pass语句
pass是空语句,为了保证程序结构的完整性
pass不做任何事情,一般用来做占位符
for x in 'JD.com': if x == 'D': pass print('执行pass块') print(x) 结果: J 执行pass块 D . c o m
-
Python中的While语句,while
2021-01-14 14:30:12While语句的简易使用方法作者:爱吃肉的小花生首先声明:写这些只是方便做着自己记忆和理解,如果能帮助到大家那当然更好不过while语句的框架:while 条件: #注意一定不要忘记有冒号哦循环体……如何停止循环停止... -
单片机C语言中的空语句
2021-05-18 09:54:29标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C51中,直接调用库函数:#include// 声明了void _nop_(void);_nop_... -
Java编程_循环语句(while语句、do-while语句和for语句)
2019-02-25 20:42:58循环语句 循环语句在程序设计中用来描述有规则重复的流程。在实际的程序中,存在很多需要重复执行的流程,为了简化这些重复的执行流程,在程序设计语言中新增了该类语句。 在学习循环语句时,最重要的就是发现... -
Python While 循环语句
2018-01-24 18:55:59Python编程中while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是... -
Java的while语句
2020-05-23 07:25:22循环是程序中的重要流程结构之一。 循环语句能够使程序代码重复执行,适用于...初始化语句(init statement): 一条或多条语句,这些语句用于完成一些初始化工 作,初始化语句在循环开始之前执行。 循环条件(te -
for空语句怎么写
2021-05-22 13:41:341. for 语句怎么用for (表达式1;表达式2;表达式3) { 语句体 } 表达式1在循环开始时被无条件执行一次,然后开始执行表达式2,...3个表达式都可以为空,表达式2为空意味着将无限循环下去(和 C 一样,PHP 认为其值为... -
C语言中循环语句(while)
2021-05-18 14:11:27循环语句 (i)while (ii)for (iii)do while 循环语句三要素: 1.循环变量的初始化; 2.循环条件; 3.循环变量的更新语句 首先来看while循环,前面我们已经掌握了if语句:if(条件)语句;当天件满足的时候,就执行if后面的语句... -
Python中for循环语句和while循环语句有何不同
2020-11-24 00:12:19原标题:Python中for循环语句和while循环语句有何不同前面两期文章已经为大家分别讲解,for循环语句和while循环语句,两种都是化繁琐为简单的Python循环语句,选择困难症已经不知道该用哪一个了。 作为Python循环... -
谈谈Python中的while循环语句
2020-12-24 12:23:26前言python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时候必须有一个可迭代的对象,才能循环,比如说得有一个数组。循环里面还有两个比较重要的... -
c源程序中能允许出现空语句吗
2021-05-21 11:50:01c源程序中能允许出现空语句吗发布时间:2020-07-16 09:19:27来源:亿速云阅读:156作者:Leah这期内容当中小编将会给大家带来有关c源程序中能允许出现空语句吗,文章内容丰富且以专业的角度为大家分析和叙述,阅读完... -
python中的while语句的基本知识与实例
2020-05-15 17:40:49本节实例: ...一.while语句 1.用法 执行语句可以是单个语句或语句块。判断条件可以是任何表达式。 任何非零/非空的值均为True 当判断条件为假时,循环结束 用法如下 while 条件: 执行语句 2.实例 练习 -
Python基础——while循环语句
2020-03-24 16:11:15在 Python 语言中用来控制循环的主要有两个句法,while 和 for 语句,本节将简单介绍 while 句法的使用。 2.while结构 while 语句同其他编程语言中 while 的使用方式大同小异,主要结构如下 while condition: #当... -
while、do-while和for循环语句
2020-07-10 09:08:32循环语句:while、do…while、for; 一、while while循环语句的语法结构是: 变量初始化 while(循环条件){ 循环体 } 循环条件是一个布尔表达式,它的值为布尔类型“true”或者“false”。 我们举个例子,用while... -
python之while语句详解
2020-04-15 17:03:39python之while语句详解1.基本介绍2. while语句练习2.1 求100以内所有奇数或偶数之和2.2 求100以内9的倍数之和,以及个数2.3 输出九九乘法表2.4 猜数字 1.基本介绍 (1)定义:Python 编程中 while 语句用于循环执行... -
Shell语法—— while 条件语句
2021-05-16 00:07:12while 循环语句while 循环语句语法格式为:while < 条件表达式 >do指令done有关脚本运行的相关用法命令说明sh file.sh &把 file.sh 脚本放到后台运行(后台运行脚本的常用方法)ctl+c停止执行当前脚本或任务... -
do while循环语句的学习以及练习
2019-04-23 20:53:40今天学的是do while循环语句, 先执行循环体,直到条件的表达式为false。 与while循环语句的区别: while语句先判断条件,满足时执行循环体。 do while语句先执行循环体,满足条件在执行 语法: do { 循环体 }while... -
分之和循环语句 (if 、for 、while)
2021-05-20 11:51:14if语句if 条件语句:代码块其他语句(1)执行过程:先判断条件语句是否为True,若是True就执行代码块,再执行其他语句若是False,就执行其他语句(2)条件语句:看可以是任何有值的表达式,但一般是布尔值(3)if是关键字... -
C语言基础学习笔记——循环语句(while / do-while / for)
2019-12-10 10:44:04循环语句形式分为:1.while循环 2.do-while循环 3.for循环 1.while语句:一般形式为: while(表达式) { 循环语句; } 特点:先判断表达式,再执行循环体。 2.do-while语句:一般形式为: do ... -
python中if语句和while循环语句的用法
2019-04-07 15:26:07其实python中的if和while的使用和C语言中的if和while的使用并没有多大的差距,只不过在一些地方的的使用有所不同,相较之下python中的用法更为简便快捷些。 if语句 使用if语句要注意的还是缩进,if语句后面要加上... -
【C语言应该这样学】for语句与while语句今生相遇
2021-11-16 15:04:541.for语句的特例 需要强调的是,如果在for语句中没有循环条件,则认为...)相当于while(1)无限循环。 例1.2 for(;i<100;i++) ; 变形1 #include"stdio.h" int main() { int i = 1; for (; i < 100 ;) ... -
while(循环)控制语句
2021-05-03 18:15:37----------------------while(循环)控制语句------------------- while 循环语句 1,while循环的语法结构 while (布尔表达式) { //循环体 } 2,while的执行原理 先判断布尔表达式的结果 *true 执行循环体 *false ... -
Python循环流程语句 while
2020-12-08 07:31:41python 中的 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。当要求你在页面上打印5遍“Hello Python”,你可以写5行 print代码,但是如果要求打印100行,1000行呢,... -
【Java面试题】空语句的详解和运用
2019-05-25 23:32:32空语句: 编程语言中语句都要进行一定的操作,但是java中有一种语句什么也不执行,这就是空语句。空语句是有一个分号(;)组成的语句。 空语句是什么也不执行的语句。在程序中空语句通常用作空循环体。举个例子:... -
do while语句中while后边要有分号,break和continue的区别
2021-04-01 20:46:01do while语句是先执行一次do语句中的内容,接着判断while语句中的内容不成立时就不再执行do语句了,否则循环执行do语句,最后的while小括号后边要加分号 #include <stdio.h> main(){ int x,max; printf(...