循环语句和goto语句

while 循环

C语⾔提供了3种循环语句,while就是其中⼀种,接下来就介绍⼀while语句。

while语句的语法结构和if语句⾮常相似。

 //代码1 
#include <stdio.h>
 int main()
 {
	if(1)
		printf("hehe\n");  //if后边条件满⾜,打印⼀次hehe 
	return 0;
 }


//代码2 
#include <stdio.h>
 int main()
 {
	 while(1)
	 	printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe 
	 return 0;
 }

所以,while可以实现循环效果。
在这里插入图片描述
练习:输入一个正整数,逆序打印这个整数的每一位

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;

	}
	return 0;
}
  1. 要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
  2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤n=n/10 操作就可去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
  3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。

for 循环

for 循环是三种循环中使⽤最多的,for 循环的语法形式如下:
在这里插入图片描述

#include <stdio.h>
//for 循环打印1-10的值
int main()
{
	int n = 0;
	for (n = 1; n <= 10; n++)
	{
		printf("%d ", n);
	}


	return 0;
}

首先执行的是表达式1初始化变量,然后判断符不符合表达式二,符合就执行下面的语句,结合之后,在走表达式3,进行变量调整。

for循环和while循环的对比

在这里插入图片描述
练习:计算1-100之间3的倍数的数字之和

#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;//总数和
	for (i = 1; i < 100; i++)
	{
		if (0 == i % 3)
			sum += i;
	}
	printf("%d\n", sum);


	return 0;
}

//⼩⼩的优化
 //如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
 int main()
{
	int i = 0;
	int sum = 0;
	for (i = 3; i < 100; i += 3)
		sum += i;
	printf("%d\n", sum);
	return 0;
}
 

do…while循环

在这里插入图片描述
所以在do…while语句中循环体是至少执行一次的,这是它特殊的地方。

#include <stdio.h>
//使用do...while打印1-10的值
int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);


	return 0;
}




//输入一个正整数,计算这个整数是几位数
int main()
{
	int i = 0;
	scanf("%d", &i);
	int count = 0;
	do
	{
		i /= 10;
		count++;
	} while (i);
	printf("%d\n", count);

	return 0;
}

这⾥并⾮必须使⽤do while 循环,但是这个代码就⽐较适合使⽤,因为n即使是0,也是1位数,要统计位数的。

break和continue语句

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中提供了continue 和break两个关键字,就是应⽤到循环中的。

  • break的作⽤是⽤于永久的终⽌循环,只要break 被执⾏,直接就会跳出循环,继续往后执行
  • continue的作用是跳过本次循环continue后面的代码

循环的嵌套

前⾯学习了三种循环while,for,do while ,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套,这⾥我们就看⼀个例⼦

练习:
找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。

  1. 要从100-200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
  2. 假设要判断i是否为素数,需要拿2-i - 1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤
    循环解决。
  3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		//找出素数
		int j = 0;
		int flag = 1;
		for (j = 2; j <= i - 1; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
			
		}
		if (flag == 1)
			printf("%d ", i);
	}

	return 0;
}

goto语句

C语⾔提供了⼀种⾮常特别的语法,goto 语句和跳转标号就是内跳转到设置好的标号处。,goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。

#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");

next:
	printf("跳过了haha\n");

	return 0;
}

在这里插入图片描述
goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建议是能不⽤尽量不去使⽤

我们可以用goto 语句写一个关机程序。

//用system执行系统命令
#include <Windows.h>
#include <string.h>
int main()
{
	char ch[20] = { 0 };
	system("shutdown -s -t 60");
again :
	printf("请注意,你的电脑将在一分钟后关机,请输入:我是猪,取消关机\n");
	printf("请输入:>");
	scanf("%s", ch);
	//strcmp用来比较俩个字符串,相同返回0,这边不用简单用==表示相同
	if (0 == strcmp(ch, "我是猪"))
		system("shutdown -a");
		break;
	else
		goto again;

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值