目录
for循环
//语法
for(表达式1;表达式2;表达式3)
(循环语句);
//表达式1
表达式1为初始化部分,用于初始化循环变量
//表达式2
表达式2为条件判断部分,用于判断循环时候终止
//表达式3
表达式3为调整部分,用于循环条件的调整
实际的问题:
for循环打印1-10的数字
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1;i <= 10;i++)
{
printf("%d ", i);
}
return 0;
}
执行顺序如下:
for循环的执行流程
拓展:上图中出现了EOF!
End-of-File
It is a macro definition of type int that expands into a negative integral constant expression (generally, -1).
It is used as the value returned by several functions in header <cstdio> to indicate that the End-of-File has been reached or to signal some other failure conditions.
It is also used as the value to represent an invalid character.
In C++, this macro corresponds to the value ofchar_traits<char>::eof()
.
简单来说;EOF就是-1;
举个例子:KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-231~231-1),编程判断它的奇偶性。
#include <stdio.h>
int main()
{
int num = 0;
while(scanf("%d", &num) != EOF)
{
if(num%2==1)
printf("Odd\n");
else
printf("Even\n");
}
return 0;
}
下面对比一下while循环和for循环吧!
int i=0;
//使用while
i=1; //初始化部分
while(i<=10) //判断部分
{
printf("111");
i++;
}
//使用for
for (i = 1;i <= 10;i++)
{
printf("111");
}
可以发现while循环中依然存在循环的三个条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改不够集中。所以,for循环风格更胜一筹;使用频率更高
· for语句惯用法.
- 从0向上加到n-1:
for (i = 0;i <n;i++)···················
- 从1向上加到n
for (i = 1;i <=n;i++)···················
- 从n-1向下减到0
for (i = n-1;i >=0;i--)···················
- 从n向下减到0
for (i = n;i >0;i--)···················
for语句中省略表达式
#include <stdio.h>
int main()
{
int i = 10;
for (;i > 0;--i)
printf("%d ",i);
return 0;
}
答案是10 9 8 7 6 5 4 3 2 1
在这个例子中变量i由单独的赋值语句实现初始化,因此 for语句省略了第一个表达式(注意:保留第一个表达式和第二个表达式之间的分号)。即使省略某些表达式,控制表达式也必须始终两个分号
#include <stdio.h>
int main()
{
int i = 0;
for (i = 10;i > 0;)
printf("%d ", i--);
return 0;
}
如果省略第三个表达式,循环体需要确保第二个表达式的值最终为假。为了补偿省略第三个表达式产生的后果,我们使变量i在循环体中进行自减。
一道笔试题
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0;k = 0;i++, k++)
k++;
printf("k=%d", k);
return 0;
}
k=0是赋值!
do··while()循环
语法
do
循环语句;
while(表达式1);
执行流程
特点
循环至少执行一次,使用的场景有限,所以不是经常使用!
do··while打印1-10
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
do··while中的break
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i==5)
break;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
1 2 3 4
do··while中的continue
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i==5)
continue;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
1 2 3 4死循环
goto语句
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
goto语句真正适合的场景如下:
for(.....)
for(.....)
{
for(.....)
{
if(disaster)
goto error;
}
}
.....
error:
if(disaster)
#include <stdio.h>
int main()
{
char input[10] = { 0 };
system("shutdown -s -t 60");
again:
printf("电脑将在60内关机,如果输入111,将取消关机:请输入->\n");
scanf("%s", input);
if (0 == strcmp(input, "111"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}