当前位置:嗨网首页>书籍在线阅读

08-乘法运算符

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.2.5 乘法运算符:*

符号*表示乘法。下面的语句用2.54乘以 inch ,并将结果赋给 cm

cm = 2.54 * inch;

C没有平方函数,如果要打印一个平方表,怎么办?如程序清单5.4所示,可以使用乘法来计算平方。

程序清单5.4  squares.c 程序

/* squares.c -- 计算1~20的平方 */
#include <stdio.h>
int main(void)
{
     int num = 1;
     while (num < 21)
     {
          printf("%4d %6d\n", num, num * num);
          num = num + 1;
     }
     return 0;
}

该程序打印数字 120 及其平方。接下来,我们再看一个更有趣的例子。

1.指数增长

读者可能听过这样一个故事,一位强大的统治者想奖励做出突出贡献的学者。他问这位学者想要什么,学者指着棋盘说,在第1个方格里放1粒小麦、第2个方格里放2粒小麦、第3个方格里放4粒小麦,第4个方格里放8粒小麦,以此类推。这位统治者不熟悉数学,很惊讶学者竟然提出如此谦虚的要求。因为他原本准备奖励给学者一大笔财产。如果程序清单5.5运行的结果正确,这显然是跟统治者开了一个玩笑。程序计算出每个方格应放多少小麦,并计算了总数。可能大多数人对小麦的产量不熟悉,该程序以谷粒数为单位,把计算的小麦总数与粗略估计的世界小麦年产量进行了比较。

程序清单5.5  wheat.c 程序

/* wheat.c -- 指数增长 */
#include <stdio.h>
#define SQUARES 64             // 棋盘中的方格数
int main(void)
{
     const double CROP = 2E16;  // 世界小麦年产谷粒数
     double current, total;
     int count = 1;
     printf("square     grains       total     ");
     printf("fraction of \n");
     printf("           added        grains    ");
     printf("world total\n");
     total = current = 1.0;        /* 从1颗谷粒开始   */
     printf("%4d %13.2e %12.2e %12.2e\n", count, current,
               total, total / CROP);
     while (count < SQUARES)
     {
          count = count + 1;
          current = 2.0 * current;    /* 下一个方格谷粒翻倍 */
          total = total + current;    /* 更新总数 */
          printf("%4d %13.2e %12.2e %12.2e\n", count, current,
                    total, total / CROP);
     }
     printf("That's all.\n");
     return 0;
}

程序的输出结果如下:

square        grains       total        fraction of
              added        grains       world total
    1         1.00e+00     1.00e+00     5.00e-17
    2         2.00e+00     3.00e+00     1.50e-16
    3         4.00e+00     7.00e+00     3.50e-16
    4         8.00e+00     1.50e+01     7.50e-16
    5         1.60e+01     3.10e+01     1.55e-15
    6         3.20e+01     6.30e+01     3.15e-15
    7         6.40e+01     1.27e+02     6.35e-15
    8         1.28e+02     2.55e+02     1.27e-14
    9         2.56e+02     5.11e+02     2.55e-14
   10         5.12e+02     1.02e+03     5.12e-14

10个方格以后,该学者得到的小麦仅超过了1000粒。但是,看看55个方格的小麦数是多少:

55         1.80e+16     3.60e+16     1.80e+00

总量已超过了世界年产量!不妨自己动手运行该程序,看看第64个方格有多少小麦。

这个程序示例演示了指数增长的现象。世界人口增长和我们使用的能源都遵循相同的模式。