分⽀和循环(二)

while循环

C语⾔提供了3种循环语句,while 就是其中⼀种,接下来就介绍⼀下while 语句。 while 语句的语法结构和if 语句⾮常相似。

 if和while的对⽐

if(表达式)
    语句;
while(表达式)     
    语句;//如果循环体想包含更多的语句,可以加上⼤括号

while循环的实践

练习:在屏幕上打印1~10的值

int main() {
	int i = 1;
	while (i<=10) {
		printf("%d ", i);
		i++;
	}
}

练习
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1 
输⼊:521,输出:1 2 5 

int main() {
	int i = 0;
	scanf("%i", &i);
	while (i) {
		printf("%d", i % 10);
		i /= 10;
	}
}

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 循环的语法形式如下:

 for(表达式1; 表达式2; 表达式3)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号

表达式1 ⽤于循环变量的初始化 

表达式2 ⽤于循环结束条件的判断

表达式3 ⽤于循环变量的调整

for循环的实践

练习:在屏幕上打印1~10的值

int main() {
	int i = 0;
	for (i = 1;i <= 10;i++) {
		printf("%d ", i);
	}
    return 0;
}

练习:计算1~100之间3的倍数的数字之和

int main() {
	int i = 0;
	int sum = 0;
	for (i = 1;i <= 100;i++) {
		if (i % 3 == 0)
			sum += i;
	}
	printf("%d", sum);
	return 0;
}

do-while循环

语法形式在循环语句中   do while 语句的使⽤最少,它的语法如下:
 

 do
     语句;
 while(表达式);

while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环;⽽do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

练习 
输⼊⼀个正整数,计算这个整数是⼏位数? 例如:
输⼊:1234 输出:4 
输⼊:12 输出:2 

int main() {
	int i = 0;
	scanf("%d", &i);
	int cut = 0;
	do {
		cut++;
		i = i / 10;
	} while (i);
	printf("%d\n", cut);
	return 0;
}

break和continue语句

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中 提供了  break 和   continue 两个关键字,就是应⽤到循环中的。
•  break的作⽤是⽤于永久的终⽌循环,只要break 被执⾏,直接就会跳出循环,继续往后执⾏。
•  continue的作⽤是跳过本次循环中continue后边的代码,在for循环和while循环中有所差异的。

while循环中的break和continue

int main() {
	int i = 1;
	while (i <= 10) {
			if (i == 5)
			break;
            printf("%d ", i);
		    i++;
	}
	return 0;
}

打印了1,2,3,4后,当i等于5的时候,循环在break 的地⽅终⽌,不再打印,不再循环。所以break 的作⽤就是永久的终⽌循环,只要break 被执⾏,break 外的第⼀层循环就终⽌了。那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成我们想要的效果。

continue举例

continue 是继续的意思,在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续进⾏下⼀次循环的判断。上⾯的代码,如果把break 换成continue会是什么结果呢?

int main() {
	int i = 0;
	while (i <= 10) {
		if (i == 5)
			continue;
		printf("%d ", i);
		i++;
	}
	return 0;
}

 continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在continue后边的话,可能会造成死循环。

for循环中的break和continue

break举例

其实和while循环中的break⼀样,for循环中的break也是⽤于终⽌循环的,不管循环还需 要循环多少次,只要执⾏到了break ,循环就彻底终⽌。

int main() {
	int i = 0;
	for (i = 1;i <= 10;i++) {
		if (i == 5)
			break;
		printf("%d ", i);
	}
	return 0;
}

输出 1 2 3 4

continue举例

int main() {
	int i = 0;
	for (i = 1;i <= 10;i++) {
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}

输出 1 2 3 4 6 7 8 9 10

循环的嵌套

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

练习

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

int main() {
	int i = 0;
	for (i = 100;i <= 200;i++) {//生成100到200的数
		int j = 0;
		int flag = 1;
		for (j = 2;j < i;j++) {//生成2 - i-1的数
			if (i % j == 0) {//相除判断是否整除
				flag = 0;//能被整除,标记为否
				break;//跳出循环
				}
			}if (flag) {
				printf("%d ", i);//是素数输出
		}
	}
	return 0;
}

1.    要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
2.    假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤循环解决。
3.    如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

goto语句

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

int main() {
	printf("hehe\n");
	goto next;
	printf("haha\n");
	next:
	printf("跳过了haha的打印\n");
	return 0;
}

goto语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建 议是能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出 使⽤ goto 就⾮常的⽅便了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值