4.2.4 流程控制结构程序示例

以上介绍的3种程序结构,实际上是前面介绍过的各个C51流程控制语句及其嵌套的使用。在实际的单片机程序设计中,需要根据设计任务的特点,合理选择使用这些程序结构,来简化程序设计并解决问题。下面举一个比较复杂的算法处理的例子,其中综合运用了顺序、选择以及循环程序结构。要计算的数学表达式如下所示。

4.2.4 流程控制结构程序示例 - 图1

其中x和y均为整型数据,当自变量x取值大于0时,因变量y等于x的阶乘;当自变量x小于或等于0时,因变量y等于表达式x3-2x+2的值。完整的程序代码示例如下。


include<stdio.h>//头文件

int Fun(int x)

{

int i,y;

if(x>0)//判断x的值

{

y=1;

for(i=1;i<=x;i++)//阶乘运算

{

y=y*i;

}

}

else

{

y=xxx-2*x+2;//计算数学表达式

}

return y;//返回语句

}

void main()//主函数

{

int x,y;

x=4;

y=Fun(x);//函数调用

printf(“Fun(%d)=%d\n”,x,y);//打印输出结果

x=-3;

y=Fun(x);//函数调用

printf(“Fun(%d)=%d\n”,x,y);//打印输出结果

}


该程序可以在KeilµVision3编译环境中执行,其运行的结果如下所示。


Fun(4)=24

Fun(-3)=-19


在本例中,自定义了一个函数Fun用于处理上面的分段数学表达式。函数内部首先采用if条件语句选择结构对x进行分段处理,接着在if分支语句中采用for循环结构来计算阶乘,最后通过return语句返回运算的结果。main主函数中则按照顺序结构调用函数并输出结果。