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