循环和关系表达式1

目录

  • 一、for循环
    • 一.for循环的组成部分
    • 二.for循环的应用
      • 打印9*9乘法口诀表
      • 精度控制
        • 1.宽度
        • 2.小数点精度
      • 打印n*n乘法口诀表
    • 二、递增运算符(++)和递减运算符(- -)

一、for循环

很多情况下都需要程序执行重复的任务,如将数组中的元素累加起来或者将歌词打印20份,C语言中的for循环可以轻松的完成这种任务。
我们来看下面这段代码,来了解for循环所做的任务,然后讨论它是如何工作的。

#include
int main()
{
	int i=0;
	for (i = 0; i < 5; i++)
	{
		printf("hello world\n");
	}
	return 0;
}

下面是该程序的输出:
循环和关系表达式1_第1张图片
该循环首先将整形变量i设置为0(i=0);
然后循环测试部分(i<5)检查i是否小于5;如果确实小于5,则程序将执行接下来的语句-----循环体(printf(“hello world”));
执行完成了之后程序执行了i++使i加1,当程序执行到i=5的时候测试部分测试不符合条件后将会结束for循环。

一.for循环的组成部分

1.设置初始值。
2.执行测试,看看循环是否应当继续执行。
3.执行循环操作。
4.更新用于测试的值。
一般for的格式可以理解为:

for(值的初始化;测试表达式;值的更新)
{
循环体
}

在这里,C语言默认的是循环只执行一次初始化。通常,程序使用该表达式将变量设置成起始值,然后用该变量计算循环周期。

测试表达式决定循环体是否被执行。通常,这个表达式是关系表达式,即对两个值进行比较。如上面的例子,这个例子将i的值同5进行比较,看i是否小于5。如果比较结果为真,则程序将执行循环体。实际上,C语言没有将测试表达式限制为只能为真或者假,可以使用任意表达式,C语言将把结果强制转化成了bool类型(bool类型——>true,false)。因此,值为0的表达式被强制转换为bool值false,导致循环结束。如果非0,则转换为bool值true,循环继续进行,

#include
int main()
{
	int a = 5;
	int i = 0;
	for (i = a; i; i--)
	{
		printf("hello world\n");
	}
	printf("now i = %d", i);
	return 0;
}

此时程序的运行结果为:
循环和关系表达式1_第2张图片
程序在i变为0的时候结束。即i=0的时候,C语言将0强制转换成false,导致for循环结束。

二.for循环的应用

下面使用for循环完成更多的工作。

打印9*9乘法口诀表

这段代码使用循环来实现在屏幕上输出9*9的乘法口诀表。

#include 
int main()
{
	int i = 0;
	//控制行数
	for(i=1; i<=9; i++)
	{
		//打印每一行内容,每行有i个表达式
		int j = 0;
		for(j=1; j<=i; j++)
		{
			printf("%d*%d=%2d ", i, j, i*j);
		}
		printf("\n");
	}
	return 0;
}

输出结果是:
循环和关系表达式1_第3张图片
这里我们用到了for循环的嵌套,使用了两个for循环完成了我们想要输出的9*9乘法口诀表。
这个程序用i做了外面的循环,用j做了里面的循环,我们在每一次循环都会对j进行初始化,达成我们每个数都能乘到它自己的目的,最后在i=10的时候程序结束。

精度控制

我们在输出的时候可以看到,有一个%2d,这个是什么含义呢?
这个是没讲的属于精度控制的类容,我们在输出的时候%和d、lf、c这些表示要输出内容的中间还可以添加一个辅助的符号(m.n)

m表示宽度–表示数字的长度
n表示小数点精度意为保留几个小数点——会四舍五入
例如:11 当我们输出时使用%3d
我们会输出【空格】11

1.宽度

如图:循环和关系表达式1_第4张图片
可是当我们输出的数的长度小于数字会输出什么呢?
循环和关系表达式1_第5张图片
结果是输出原数字。

2.小数点精度

.n的使用则在浮点数里面使用
例如:

循环和关系表达式1_第6张图片

打印n*n乘法口诀表

我们接下来将99乘法口诀表升级,我们想得到1212的乘法口诀表怎么办呢?

#include
int main()
{
	printf("你需要多少乘多少的乘法口诀表:");
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%2d*%d=%3d ",i,j,i * j);
		}
		printf("\n");
	}
	return 0;
}

输出结果为:
循环和关系表达式1_第7张图片
仔细观察便可发现我们改变的仅仅是外层for循环对于i的测试表达式中的n

二、递增运算符(++)和递减运算符(- -)

C语言中有很多常被用在循环里面的运算符,前面多少有了对递增运算符(++)和递减运算符(- -)的了解。这两个运算符执行两种极其常见的循环操作:将循环计数加1或减1。但是我们还需要知道这两个运算符有两个变体
前缀版本位于操作数前面,如++x;后缀版本位于操作数后面,如:x++。两种版本对操作的影响是一样的,但是影响的时间不同。对于先用后付和先付后用来说是一样的。
循环和关系表达式1_第8张图片

粗略的讲,a++意味着使用a的当前值计算表达式,然后将a的值加1;而b++的意思是先将b的值加1,然后用新的值来计算表达式。

你可能感兴趣的:(c++,算法,c语言)