while是一个循环语句,关于while的一些理解可以看下面这串代码
#include <stdio.h>
int main() {int i = 0;scanf("%d", &i);printf("输入十以内的数字,从输入的数字开始一直数到十:");while (i<=10){printf("%d ",i);i++;}return 0;
}
例如我们输入一个7 | |
i=7 | 7<=10成立,输出7,i+1变成8 |
i=8 | 8<=10成立,输出8,i+1变成9 |
i=9 | 9<=10成立,输出9,i+1变成10 |
i=10 | 10<=10成立,输出10,i+1变成11 |
i=11,i<=10不成立,跳出while循环 |
这就是while语句基本的运行方式
在此基础上,我们来改进一下这个语句,现在我们想让它运行到9的时候就跳出去该怎么办呢?
while (i <= 10){if(i == 9)break;printf("%d ",i);i++;}
我们可以在while里面加上一个if(i==9)break;的条件,加上之后当i=9时再运行就会因为if中的条件直接跳出循环,所以可以看见,这串代码在输出的时候是没有输出9的,因为9还没来得及输出,循环就直接被跳出去了。
我们再次改进这条语句,要在输入后跳过9,然后继续输出后面的数应该怎么办呢?
这个时候就需要用到一条新的语句了:continue
continue:跳过本次continue循环后面的代码,重新去判断部分(也就是重新进入while循环),看是否能够进行下一次循环
while (i < 10){i++;if(i == 9)continue;printf("%d ",i);}
这串代码与上一次相比,我们把while中的条件改为了i<10而非i<=10,然后还把i++提前了
值得注意的是,如果我们这里不把i++提前而是继续放到printf后面,那么在i=9时,continue直接跳过i++然后回到while当中,这就会导致i一直等于9,造成死循环
那么我们再来看一个while语句
看之前先介绍一下getchar和putchar还有EOF
getchar:获取一个字符
putchar:输出一个字符
EOF:文件结束标志
#include <stdio.h>
int main() {int i ;while ((i=getchar()) != EOF) //如果i一个输出的字符且这个输出的字符不等于EOFputchar(i); //就输出这个ireturn 0;
}
因为我们要先判断i=getchar(),所以我们要用括号把i=getchar()括起来
这段代码的作用是你输入一个字符进去,系统就会返回这个字符给你,可以不断的去读取一个字符
如果我们要结束这个程序,就用ctrl+z就行了,ctrl+z的功能就是让getchar读取到一个EOF