C程序设计语言
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.4 顺序程序设计

到目前为止,已经学习了数据的输入、处理和输出的一般方法,也就具备了编写简单程序的基本条件。下面结合实例,学习简单的程序设计。

所谓简单的程序设计,就是在进行程序设计时,只使用表达式语句和函数调用语句,不涉及复合语句和控制语句等。这样的程序称为“顺序程序”,这是结构最为简单、也是最基本的一类程序,程序中的语句按照排列的先后顺序依次执行。

【例3.6】 输入一个大写字母,转化为小写字母输出。

分析:单字母的输入、输出可以用getchar、putchar函数,也可以用scanf、printf函数。

在字符编码集中,大写字母和小写字母的编码相差32,因此,小写字母=大写字母+32。

算法用N-S图表示,如图3.3所示。

图3.3 将大写字母转化为小写字母

程序如下:

            1   #include <stdio.h>
            2   void main()
            3   {   char c;
            4       printf("输入一个大写字母:");          /* 输入提示 */
            5       c=getchar();
            6       c=c+32;                              /* 大写字母转化为小写字母 */
            7       printf("对应的小写字母为:");
            8       putchar(c);
            9   }

试试看,如果输入的不是大写字母,结果是不是很可笑呢?能不能对输入数据进行限制:如果输入的不是大写字母,就不执行转换和输出呢?答案当然是肯定的,不过需要引入选择结构,详见第4章。

【例3.7】 输入a、b、c的值,设b2-4ac>0且a≠0,输出一元二次方程ax2+bx+c=0的实根。

分析:对于一元二次方程ax2+bx+c=0,如果b2-4ac>0且a≠0,则方程有两个实根:

因此,只要输入的系数满足要求,就可以求得该一元二次方程的两个不同的实根。当然,在求根公式中,需要进行求平方根的运算,可以使用数学函数库中的平方根函数sqrt来完成。

N-S图如图3.4所示。

图3.4 求一元二次方程的根

程序如下:

            1   #include "stdio.h"
            2   #include "math.h"
            3   void main()
            4   {   float a,b,c,disc,x1,x2,p,q,a2;
            5       printf("Please Input a、b、c:");            /* 输入提示 */
            6       scanf("%f%f%f",&a,&b,&c);                   /*输入系数a、b、c*/
            7       disc=b*b-4*a*c;
            8       a2=2*a;
            9       p=-b/a2;
            10      q=sqrt(disc)/a2;
            11      x1=p+q;
            12      x2=p-q;
            13      printf("Roots of equation%.1f*x^2+%.1f*x+%.1f are:\n",a,b,c);
            14      printf("x1=%.3f\nx2=%.3f\n",x1,x2);
            15  }

运行结果为:

            Please Input a、b、c:1  5  4↙
            Roots of equation 1.0*x^2+ 5.0*x+4.0 are:
            x1=-1.000
            x2=-4.000

【例3.8】 已知三角形的两条边及其夹角,求其第三边长度。

分析:根据题目给定的条件,数学上利用余弦定理求第三边的长度。方法是:若给定的两条边是a和b,夹角为α,则第三边的长度c为:

程序中,α用标识符alpha代表。

N-S图如图3.5所示。

图3.5 利用三角形的两条边及其夹角求其第三边长度

程序如下:

            1   #define PI 3.14                      /* 定义符号常量PI */
            2   #include "stdio.h"
            3   #include "math.h"
            4   void main()
            5   {   float a,b,c,x,y;
            6       float alpha;
            7       printf("Input a、b、alpha:");       /* 输入提示 */
            8       scanf("%f,%f,%f",&a,&b,&alpha);     /* 输入三角形的两条边及夹角 */
            9       x=alpha*PI/180;                      /* 将alpha由度转换成弧度 */
            10      y=a*a+b*b-2*a*b*cos(x);             /*利用余弦定理求第三边的长度 */
            11      c=sqrt(y);
            12      printf("c=%7.3f\n",c);
            13  }

运行情况为:

            Input a、b、alpha:3,4,90↙     (注:按程序要求,采用逗号分隔数据)
            c=4.998