c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件
【4】c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键
【5】c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法
【6】c/c++:2进制、8进制、10进制、16进制和进制之间的转换,c语言输出匹配格式%
【7】c/c++:原码,反码,补码和常见的数据类型取值范围,溢出
【8】c/c++:类型限定符,printf输出格式,putchar,scanf,getchar
【9】c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换
【10】c/c++:顺序结构,if else分支语句,do while循环语句,switch case break语句


文章目录

  • c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto
    • @[TOC](文章目录)
  • c/c++:for循环语句
  • for循环的变体,不太规矩的循环
  • 猜数字游戏
  • for嵌套循环
  • 练习打印电子时钟
  • 打印99乘法表
  • 跳转语句continue,break
  • goto关键字,了解即可
  • 总结

c/c++:for循环语句

for(初始化表达式1;判别表达式2;表达式3)
{
循环体
}

先执行初始化表达式1,初始化;

再执行判别表达式2,如果判别为真
去执行循环体
然后执行循环表达式3
再执行表达式2
然后执行循环表达式3
直到不满足条件,退出
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第1张图片
初始化表达式1只执行1次

判别表达式2是循环和终止条件

表达式3是自增或者自减

咱们看看求1–100的和


void f27(void)
{
	//咱们看看求1--100的和
	int sum = 0;
	for (int i = 1; i <= 100; i++)
	{
		sum += i;//每次都累加
	}
	printf("%d\n", sum);
}

int main(void)
{
	f27();

	system("pause");
	return 0;
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第2张图片

for循环的变体,不太规矩的循环

for的表达式有3个
但是仨都可以变换或者省略
分号不可以省略;


void f28(void)
{
	//咱们看看求1--100的和
	int sum = 0;
	int i = 1;
	for (; i <= 100; i++)
	{
		sum += i;//每次都累加
	}
	printf("%d\n", sum);
}

void f28(void)
{
	//咱们看看求1--100的和
	int sum = 0;
	int i = 1;
	for (; ; i++)
	{
		if (i > 100) break;
		sum += i;//每次都累加
	}
	printf("%d\n", sum);
}


void f28(void)
{
	//咱们看看求1--100的和
	int sum = 0;
	int i = 1;
	for (; ; )
	{
		if (i > 100) break;
		sum += i;//每次都累加
		i++;
	}
	printf("%d\n", sum);
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第3张图片
咋仨都是同一个结果
你看看,反正表达式仨个都可以省略

但是最好别这么搞
基础标准版for循环最合适

方便。

表达式有多个呢,也行


void f29(void)
{
	int i = 0;
	int a = 0;
	for (i = 1, a = 3; i < 10, a < 20; i++, a += 5)
	{
		printf("%d %d ", i, a);
	}
}

初始条件2个
判断条件时要同时满足的
自增条件随你加

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第4张图片
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第5张图片

猜数字游戏

生成一个随机数
需要添加随机数种子,利用当前的系统时间,来生成随机数

srand(time(NULL));


#include  // system,srand
#include  //time函数

void f30(void)
{
	srand(time(NULL));//添加随机数种子
	//返回随机数
	int n = rand() % 100;//模的话,只能是0-99了
	//循环输入数据,猜
	
	int x;
	//while实现
	
	while (1)//不等继续猜
	{
		printf("请猜数字:\n");
		scanf("%d", &x);//你还得提示用户
		if (x == n)
		{
			printf("恭喜你,你猜读对了\n");
			break;
		}
		else if (x > n) printf("你猜太大了!\n");
		else printf("你猜太小了\n");
	}
	
}

int main(void)
{
	f30();

	system("pause");
	return 0;
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第6张图片
for循环也可以实现哦


void f31(void)
{
	srand(time(NULL));//添加随机数种子
	//返回随机数
	int n = rand() % 100;//模的话,只能是0-99了
	//循环输入数据,猜

	int x;
	//while实现

	for (;;)//不等继续猜
	{
		printf("请猜数字:\n");
		scanf("%d", &x);//你还得提示用户
		if (x == n)
		{
			printf("恭喜你,你猜读对了\n");
			break;
		}
		else if (x > n) printf("你猜太大了!\n");
		else printf("你猜太小了\n");
	}

}


c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第7张图片
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第8张图片

常见的scanf错误
不要用printf格式
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第9张图片
\n绝对不能放到scanf中!!

for嵌套循环

这些将来设计算法的时候,经常用的。

经常会遇到o(n平方的)算法复杂度,你需要优化为o(nlogn)或者o(n)
o(n立方的)优化为o(n平方的)

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第10张图片
这个看起来就是o(n平方)
外循环执行1次
内循环执行10次

外面n次,里面也n次,其复杂度计算不就是o(n平方)吗
懂?

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第11张图片
这个的话,外面o(n方),最里面每次都是o(n)
那不就是o(n立方)吗

easy?懂?

练习打印电子时钟

时分秒,60进制

逢60进位


#include  //Sleep
void f32(void)
{
	int i, j, k;//时分秒
	for (i = 14; i < 24; i++)
	{//时
		for (j = 46; j < 60; j++)
		{//分钟
			for (k = 0; k < 60; k++)
			{//秒
				printf("%.2d:%.2d:%.2d\n", i, j, k);//时分秒
				Sleep(1000);//睡眠毫秒
				system("cls");//清屏
			}
		}
	}
}

int main(void)
{
	f32();

	system("pause");
	return 0;
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第12张图片
很简单的

打印99乘法表

11
1
2

91
9
2
等等

不就是外面1–9
里面1–9

void f33(void)
{
	for (int i = 1; i < 10; i++) {
		for (int j = 1; j < 10; j++)
		{
			printf("%.2d × %.2d = %.2d ",i,j, i * j);
		}
		printf("\n");
	}
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第13张图片
非常简单的事情

重复的就不用了



void f33(void)
{
	for (int i = 1; i < 10; i++) {
		for (int j = 1; j <= i; j++)
		{
			printf("%.2d × %.2d = %.2d ",i,j, i * j);
		}
		printf("\n");
	}
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第14张图片
看看你能倒过去打印吗


void f34(void)
{
	for (int i = 9; i >= 1; i--) {
		for (int j = 1; j <= i; j++)
		{
			printf("%d × %d = %d\t", j, i, i * j);
		}
		printf("\n");
	}
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第15张图片

跳转语句continue,break

break是直接跳出循环,不玩了

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第16张图片
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第17张图片

continue是跳过当前后续的语句,继续下一个循环

void f35(void)
{
	for (int i = 0; i < 10; i++)
	{
		if (i == 3) continue;//跳过3
		printf("%d\n", i);
	}
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第18张图片
上面的代码,i=3时,结束本次循环,但是继续下一个循环,本次不玩了
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第19张图片

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第20张图片

goto关键字,了解即可

太灵活了
最好别用

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第21张图片


void f36(void)
{
	int i = 0;
	L:
	printf("1111111111\n");
	printf("1111111111\n");
	printf("1111111111\n");

	printf("2222222222\n");
	i++;
	if (i == 5) system("pause");
	goto L;
}


int main(void)
{
	f36();

	system("pause");
	return 0;
}

c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第22张图片
最好别这么搞
这可是死循环了
别的代码没得玩了
可怕。

它只在函数内部生效
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第23张图片
c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto_第24张图片
你直接去j,请问j没有初始化,它等于多少呢?????

所以不推荐使用goto,懂了吧?


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

你可能感兴趣的:(c++,c++,c语言,goto,continue,for循环)