C语言 循环高级

时间:2024.11.6

一、学习内容

1、无限循环

无限循环:循环永远停不下来

注意点:无限循环因为永远停不下来,所以下面不能再写其他的代码了

2、break

跳转控制语句:

在循环的过程中,跳到其他语句上执行

复制代码
#include<stdio.h>
int main() {
	int count = 0;
	int i;
//利用for循环去获取1-100之间的数字	
for (i = 1; i < =100; i++) {
//去判断当前的数字是否满足题目的要求		
if ((i % 3 == 0) && (i % 5 == 0)){
			count++;
			if (count == 1)
				printf("%d\n", i);

		}
	}
	
	
	return 0;
}

复制代码
#include<stdio.h>
int main() {
	
	int i;
//利用for循环去获取1-100之间的数字	
for (i = 1; i < =100; i++) {
//去判断当前的数字是否满足题目的要求		
if ((i % 3 == 0) && (i % 5 == 0)){
			
				printf("%d\n", i);
                break;
		}
	}
	
	
	return 0;
}

3、continue

结束本次循环,继续下次循环

复制代码
#include<stdio.h>
int main() {
	
	int i;
	//利用循环去实现吃包子
	for (i = 1; i <= 5; i++) {
	//跳过第三次
		if(i==3)
		{
			continue;
		}
			
		printf("在吃第%d个包子\n", i);
		
	}
	
	
	return 0;
}

4、跳出多层循环和goto

二、练习

1、练习1-打印矩形

++循环嵌套++:循环里面还有其他循环

++先确定内循环是做什么事情,外循环就是把里面的代码重复执行了N次++

复制代码
#include<stdio.h>
int main() {
	
	int i,j;
	//外循环
	for (i = 1; i <= 3; i++) {
	//内循环
		for (j = 1; j <= 5; j++) {
			printf("*");
		}
		printf("\n");		
	}	
	return 0;
}

2、练习2-打印直角三角形

复制代码
#include<stdio.h>
int main() {
	
	int i,j;
	//外循环
	for (i = 1; i <= 5; i++) {
	//内循环
		for (j = 1; j <= i; j++) {
			printf("*");
		}
		printf("\n");		
	}	
	for (i = 1; i <= 5; i++) {
		//内循环
		for (j = 1; j <= 6-i; j++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

3、练习3-打印乘法表

复制代码
#include<stdio.h>
int main() {
	
	int i,j,m;
	//外循环
	for (i = 1; i <= 9; i++) {
	//内循环
		for (j = 1; j <= i; j++) {
			m = i * j;
			printf("%d * %d = %d ",i,j,m);
		}
		printf("\n");		
	}	
	
	return 0;
}

++改进:利用制表符\t调整格式++

复制代码
#include<stdio.h>
int main() {
	
	int i,j,m;
	//外循环
	for (i = 1; i <= 9; i++) {
	//内循环
		for (j = 1; j <= i; j++) {
			m = i * j;
			printf("%d * %d = %d\t",i,j,m);
		}
		printf("\n");		
	}	
	
	return 0;
}

4、练习4-统计质数

第1步:

复制代码
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/
	int n=100,i;
	//定义变量记录整数
	int count = 0;
	//scanf("%d\n", &n);
	//统计从2开始,到n-1这个范围内有多少个数字能被n整数
	for (i = 2; i < n; i++) {

		if (n % i == 0)
		{
			//找到了一个数字能被n整除
			count++;
			//优化:后面其余的数字无需再次判断,提高程序的循环效率
			break;
		}
	}
		//对count进行判断
		if (count == 0) {
			printf("%d是一个质数", n);
		}
		else	
			printf("%d不是一个质数", n);
	
	return 0;
}

第2步:

复制代码
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/for (int i = 2; i < 100; i++) {
	//i:依次表示2-100之间的每一个数字
	
	//定义变量记录整数
	int count = 0;
	//scanf("%d\n", &n);
	//统计从2开始,到n-1这个范围内有多少个数字能被n整数
	for (int j = 2; j < i; j++) {

		if (i % j == 0)
		{
			//找到了一个数字能被i整除
			count++;
			//优化:后面其余的数字无需再次判断,提高程序的循环效率
			break;
		}
	}
	//对count进行判断
	if (count == 0) {
		printf("%d是一个质数\n", i);
	}
	else
		printf("%d不是一个质数\n", i);
}
	return 0;
}

第3步:

复制代码
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/
	//定义一个变量,用来统计2-100之间一共有多少个质数
	int count1 = 0;
	for (int i = 2; i <= 100; i++) {
	//i:依次表示2-100之间的每一个数字
	
	//定义变量记录整数
	int count = 0;
	//scanf("%d\n", &n);
	//统计从2开始,到n-1这个范围内有多少个数字能被n整数
	for (int j = 2; j < i; j++) {

		if (i % j == 0)
		{
			//找到了一个数字能被i整除
			count++;
			//优化:后面其余的数字无需再次判断,提高程序的循环效率
			break;
		}
	}
	//对count进行判断
	if (count == 0) {
		printf("%d是一个质数\n", i);
		count1++;
	}	
}
	printf("一共%d个质数\n", count1);
	return 0;
}

加上scanf

复制代码
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/
	//定义一个变量,用来统计2-100之间一共有多少个质数
	int count1 = 0;
	int number;
	scanf("%d", &number);
	for (int i = 2; i <= number; i++) {
	//i:依次表示2-100之间的每一个数字
	
	//定义变量记录整数
	int count = 0;
	//scanf("%d\n", &n);
	//统计从2开始,到n-1这个范围内有多少个数字能被n整数
	for (int j = 2; j < i; j++) {

		if (i % j == 0)
		{
			//找到了一个数字能被i整除
			count++;
			//优化:后面其余的数字无需再次判断,提高程序的循环效率
			break;
		}
	}
	//对count进行判断
	if (count == 0) {
		printf("%d是一个质数\n", i);
		count1++;
	}	
}
	printf("一共%d个质数\n", count1);
	return 0;
}

5、练习5-幂级数列

复制代码
#include<stdio.h>
int main() {
	long long result = 0;
	int i, j,n=10;
	//外循环:依次表示1-10
	for (i = 1; i <= n; i++) {
	//内循环:表示外循环的数字一共要乘几次
	//pow表示每个选项的单独结果
		long long pow = 1;
		for (j = 1; j <= i; j++) {
			pow = pow * i;
		}
    //当内循环结束后,将单独的结果进行累加
		result += pow;
	}
	printf("%lld\n", result);
	return 0;
}

6、练习6-特殊数字

复制代码
#include<stdio.h>
int main() {
	for (int i = 1; i <= 1000; i++)
	{
		int a = i / 100;
		int b = i / 10 % 10;
		int c = i % 10;
		if ((a + b + c) == 15) {
			printf("%d\n", i);
		}
	}
	return 0;
}

三、知识点

1、制表符\t

长度可变的大表格

作用:

在打印图表型数据时,可以让数据对齐

原理:

会根据前面字母的个数在后面补空格,让整体的长度达到8或8的倍数,最少补1个,最多补8个

abc\t 补5个

zhangshan\t 补8个

张\t 补6个(一个中文占2个字符)

复制代码
printf("name\tage\n");
printf("zhangshan23\n");

或
printf("name\t\tage\n");
printf("zhangshan\t23\n");

2、goto的用法

break只能跳出单层循环,goto可以跳出多层循环

结合标号,可以跳到代码中的任意地方,一般只用于跳出循环嵌套

相关推荐
我爱写代码i16 分钟前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路18 分钟前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
ACP广源盛1392462567321 分钟前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
玖玥拾31 分钟前
LeetCode 219 存在重复元素 II
算法·leetcode·哈希算法·散列表
统计学小王子1 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研1 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴2 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
dsyyyyy11012 小时前
JS复习,难点,易错点总结
开发语言·javascript·ecmascript
OIDCAT2 小时前
国产USB转千兆网卡芯片CH398-RTL8153国产替代实测与选型
网络·嵌入式硬件·智能硬件·国产芯片·usb转千兆网卡
a187927218313 小时前
【算法】动态规划第四篇:背包收官——min 哨兵、计数世界与组合排列分水岭
算法·leetcode·动态规划·dp·01背包·算法讲解·决策合并