程序的流程控制说明及笔试习题
已知程序的流程控制可分为:顺序,选择控制,循环等。
1、顺序执行:从上往下,逐条来执行。
2、选择控制:当达到某种条件,执行特定的指令。
if switch
if(逻辑条 件表达式)
语句;
双分支: 多分支:
if(表达式) //条件为真 if(表达式1)
{ 语句 1;
语句 ; else if(表达式2)
} 语句 2;
else //条件为假 ...
{ else
语句 ; 语句n;
}
嵌套if
双分支:
if(表达式) //条件为真
{
if(表达式)
语句 ;
...
else //条件为假
{
if (表达式)
语句;
...
}
多分支:switch
switch(整型表达式) //注:必须为整型表达式
{
case 常量表达式1:
break;
case 常量表达式2:
break;
default;
}
注:整型表达式表达式与常量表达式进行匹配;匹配成功则执行此分支直到遇到break分支才结束。
//注:1、表达式为真,则执行下列表名句。否则不执行。
2、结合:if()一条语句或者语句块结合成为一条完整的语句。
循环控制:重复执行
for while do-while
for(初始化表达式1;(逻辑值)结束表达式;过程表达式)
{
循环体;
}
注:结束表达式为真则循环;否则退出循环
嵌套循环
for(初始化表达式1;(逻辑值)结束表达式;过程表达式3)
{
for(初始化1;结束表达式2;过程表达式3)
循环体;
....
}
循环的控制:结束(不再循环;结束本次循环,开始下一次循环)循环
不再循环:break;(退出循环)
开始下一次循环:continue;
循环:for while do-while
while(逻辑值的表达式)//先判断再执行
{
循环体
}
do
{
}while(逻辑值的表达式); //先执行再判断
注:1、表达式为真,继续循环;表达式为假,退出循环
2、表达式中值是否初始化。
3、结束退出
练习
1、通过if来比较flag与零值。 (笔试题)
float flag;(精度)+
int flag;
if(0==flag)
double flag;
* bool flag;
* int* flag;
if语句中的布尔变量与零值作比较
不能用布尔变量与true,false,1,0直接作比较。布尔变量类型的语义是:零值为“假”,任何非零值都表示“真”。因为true的值并没有唯一的标准,因此不能用布尔变量与它直接进行比较。
假设布尔变量为flag,那么它与零值进行比较时if语句应该是
if(flag)\\表示如果flag为真
if(!flag)\\表示如果flag为假
不能用以下的这些方法
if(flag==1)
if(flag==true)
if(flag==false)
if(flag!=0)
if语句中整型变量与零值作比较
整型变量中应该用“==”“!=”直接与零作比较,例如:
if(value==0)
if(value!=0)
不应该用
if(value)
if(!value)
这样容易被误解为value是布尔变量。
if语句中浮点变量与零值作比较
不能将浮点变量用“==”“!=”与任何数字作比较。
float和double类型的变量都有精度限制。应该用“>=”“<=”的形式进行比较。应为
if((x>=-MIN) && (x<=MIN))
MIN可以是0.00000001。
不能直接 if(x==0.00)
if语句中指针变量与零值作比较
指针变量的零值是“空”,因此应该与“NULL”作比较。虽然“NULL”代表0,但是有不同的意义。
if语句如下:
if(p==NULL)
IF(P!=NULL)
不同的形式代表不同的含义,因此要正确的表达想要表达的意思,应该用正确的方式写代码。
2、打印如下所示图案
*
***
*****
*******
*********
结果输出如图所示
3、求某正整型数字的最小公倍数(2位数的)
4、将54321的整型数字倒着打印
5、求某个数字的是否是回文数字 (***) 121 12345 54321
6、求某个5位数中那一位数最大!12859