第五章
while 循环
While(循环条件)
{ 循环体}
(循环条件不符合结束循环)
Eg: int x=100;
int s=0; { while(x>=2) {s=s+x;x=x-2;} }
cout <<"S="<<s;(计算2——100的偶数和)
do while循环
do
{循环体
}
While(循环条件);
注:while 后要加 ;
Eg: do{ if(x%15==0) cout<<x<<endl; x++;}
while(x<=500);
for 循环
for(A,B,C) (执行顺序ABDCBDCBDC…至B为假结束循环)
{ D }
Eg: int a=0;
for(x=0;x<=100;x++)
{ if(!(n%2)) x=x+a; }
cout<<x<<endl;
循环嵌套
int i=1,j=0;
while(i<=3)
{ cout<<"i="<<endl;
while (j<5)
{
cout<<" j="<<j;
j++;
}
i++;}
cout<<endl;
return 0;
}
最小化数字错误
在计算机程序中,使用浮点数进行循环可能会导致累积误差(也称为舍入误差或最小化数字错误),这是因为浮点数在计算机内部是以近似值存储的。尤其是在进行多次迭代或连续的小数减法、乘法和除法运算时,这种误差会逐渐积累。
进制转化
-
十进制转任意进制(例如二进制、八进制、十六进制):
- 采用除基取余法。首先将十进制数不断除以目标进制基数(如2、8、16),每次得到的余数就是目标进制下的数字,然后从下到上排列这些余数即为结果。例如,将十进制数转换为二进制时,不断地除以2并记录余数。
-
任意进制转十进制:
- 按权展开求和。将每个位置上的数字乘以其所在位置的位权(该位权等于基数的相应次方,从右向左第一位的位权为0,第二位为基数的1次方,第三位为基数的2次方,依此类推),然后将所有乘积相加即可得到十进制数。
-
二进制转八进制或十六进制:
- 每3位二进制数转换成一位八进制数,或每4位二进制数转换成一位十六进制数。
- 对于二进制转八进制,从二进制数的最右边开始,每3位一组(不足3位时左边补0),将每组转换成对应的八进制数。
- 对于二进制转十六进制,同样从二进制数的最右边开始,每4位一组(不足4位时左边补0),将每组转换成对应的十六进制数。
-
八进制转二进制:
- 将每一位八进制数转换为其对应的3位二进制数(八进制数8对应二进制数1000,7对应0111,以此类推)。
-
十六进制转二进制:
- 类似地,将每一位十六进制数转换为其对应的4位二进制数(十六进制数A对应二进制数1010,F对应1111,等等)。
举例说明:
- 十进制数100转换为二进制:100 ÷ 2 = 50 ... 0, 50 ÷ 2 = 25 ... 0, 25 ÷ 2 = 12 ... 1, 12 ÷ 2 = 6 ... 0, 6 ÷ 2 = 3 ... 0, 3 ÷ 2 = 1 ... 1, 1 ÷ 2 = 0 ... 1,所以结果为1100100。
- 八进制数123转换为二进制:先分别转换每位八进制数,1 -> 001, 2 -> 010, 3 -> 011,拼接起来得到二进制数00101011。
关键字break和continue
Break语句
作用:用于跳出选择结构或循环结构
Break使用时机:
1出现switch条件语句中,作用是终止case并跳出switch.