循环语句for、do··while、goto

目录

for循环

for循环的执行流程

拓展:上图中出现了EOF!

·       for语句惯用法.

for语句中省略表达式

一道笔试题

do··while()循环

语法

执行流程

 特点

do··while中的break

do··while中的continue

goto语句


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 of char_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;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对自己好点儿i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值