while 语法结构
while(表达式)
循环语句
简单的一个列子:
用while循环打印1-10的数字
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>//引入头文件
int main()
{
int i = 1;
while (i <=10)//如果i小于等于10
{
printf("%d", i);//就打印i
i++;//i+1
}//继续回到while哪里(第6行)继续循环 直到i>=10.
return 0;
}
break:
在while循环中,break用于永久的终止循环
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 1;
while (i <=10)//如果i小于等于10
{
if (5 == i)
{
break;//终止循环,直接跳到15行,打印结果为 1 2 3 4
}
printf("%d", i);//就打印i
i++;//i+1
}//继续回到while哪里(第6行)继续循环 直到i>=10.
return 0;
}
continue:
在while循环中,continue的作用是跳过本次循环continue后面的代码 直接去判断部分,看是否进行下一次循环
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 1;
while (i <=10)//如果i小于等于10
{
if (5 == i)
{
continue;//当i = 5时,就跳过continue后面的代码,直接回到while循环(第6行)
}
printf("%d", i);//就打印i
i++;//i+1
}//继续回到while哪里(第6行)继续循环 直到i>=10.
return 0;
}
getchar :读取一个字符 每个函数返回的是字符也是ASCII码值,但读取时遇到一个错误或文件结束,这个函数返回的是一个EOF
EOF - end of fine - 文件结束标准 EOF也是 - 1
putchar :输出一个字符
回车键相当于在缓冲区里打了\n
分析以下的代码,可以让你更好掌握知识
尝试去调式一下代码!
//代码是什么意思
//分析代码
//代码1
int main()
{
int a = 0;
//ctrl +z - getchar 就读取结束
while ((a = getchar()) != EOF)//getchar获取一个字符放入a里面 不等于EOF时 进入while循环内部 就打印字符a
{
putchar(a);//putchar打印字符
}
return 0;
}
//代码2
//分析代码
int main()
{
char password[20] = { 0 };//创建一个password可以输入20个字符
printf("请输入密码");
scanf("%s", password);
printf("请确认密码(Y/N)");
int tmp = 0;//清理缓冲区的中的多个字符
while ((tmp = getchar()) != '\n');//读写一个字符放在tmp里面去 不等于\n时 这个字符就扔了,直到读到\n
{
;
}
int a = getchar();//读一个字符放在a里面去
if (a == 'Y')//如果输入Y,打印 确认成功
{
printf("确认成功");
}
else//否则打印 确认失败
{
printf("确认失败");
}
//
return 0;
}
//代码3
//分析代码
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch > '9' );//如果 a<字符0 或者a>字符9
continue; //跳过continue后面的代码,直接回到while循环
putchar(ch);
}
return 0;
}
for循环:
for循环语法
for(表达式1;表达式2;表达式3)//(初始化;判断;调整部分)
循环语句
//例子
int main()
{
int a = 0;
for (a = 1; a <= 10; a++)//a=1 a小于等于10 a+1
{
printf("%d", a);
}
return 0;
}
//例子2 break
int main()
{
int a = 0;
for (a = 1; a <= 10; a++)
{
if (5 == a);
break;//终止循环
printf("%d", a);
}
return 0;
}
//例子3 continue
int main()
{
int a = 0;
for (a = 1; a <= 10; a++)//a=1 a小于等于10 a+1
{
if (5 == a)
continue;//跳过后面的代码 但是前面的a++ 还会继续执行 但a != 5 时,continue就不会执行了
printf("%d", a);//结果是1 2 3 4 6 7 8 9 10
}
return 0;
}
for循环的建议:
1.不可在循环体内修改循环变量,防止for循环失去控制
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法
//什么前闭后开呢?
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++)//i = 0 i <10 这就是前闭后开写法 i=0 i<=9这是前后都闭写法
{
printf("%d\n", arr[i]);
}
return 0;
}
注意事项:
//1.不建议省略
int main()
{
//判断部分的省略 -判断部分永久为真 就是死循环
for (;;)
{
printf("hh");
}
return 0;
}
//2.变种
int main()
{
int x, y;
for(x = 0,y = 0;x<2 && y<5;x++,y++);
{
printf("hh\n");
}
return 0;
}
判断!请问循环要循环几次!!!
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++);
k++;
return 0;
}
//答案:一次都不循环 for语句中k=0并不是判断 判断是== k=0是赋值,说明表达式结果为假 一次都不循环。