Linux 版 (精华区)

发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标  题: ◇ 星星流讲座 0022
发信站: 紫 丁 香 (Sun Nov  8 18:30:06 1998), 转信


寄信人: guest.bbs@hgluo.hust.edu.cn 
标  题: ◇ 星星流讲座 0022
发信站: 华南理工大学 BBS木棉站
日  期: Thu Feb 20 14:45:00 1997

发信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信区: test
标  题: 星星流讲座 0022
发信站: ☆清华电机☆ (Thu May 25 15:17:58 1995)


;35m第 4 讲 之 6            基本的流程控制
                        Topic: for loop (2)m

下面的程式片段是用来把一个阵列的排列顺序反过来的,传入该阵列以及该阵
列元素的个数:

void reverse (int a[], int n)
{
    int temp, i, j;

    i = 0;
    j = n - 1;          /* array ranges from a[0] ~ a[n - 1] */
    while (i < j)
    {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;    /* swap a[i], a[j] */
        i++;
        j--;
    }
}

这个东西也可以用 for 回圈来达成:

void reverse (int a[], int n)
{
    int temp, i, j;

    for (i = 0, j = n - 1; i < j; i++, j--)
        temp = a[i], a[i] = a[j], a[j] = temp;
}

这是利用了逗号运算子 , (comma operator) 的特性。逗号运算子的功用就
是把几个叙述式 (statement) 合成一个,也就是说:

        temp = a[i];
        a[i] = a[j];
        a[j] = temp;

相当於
        temp = a[i], a[i] = a[j], a[j] = temp;

for 回圈中一次是可以数好几个回圈变数的,但是程式的长度有时短些会比
较好。我们的例子中是把一个整数的阵列反转过来,在实际的应用上把字串
反转过来的机会会大的多,技术上是一模一样的。现在请你翻翻你的程式库
手册,我要如何获得字串的长度呢?

谈到这里,请你动手实作一个九九乘法表的程式,它的输出如下:

2 * 1 = 2       3 * 1 = 3       4 * 1 = 4       5 * 1 = 5
2 * 2 = 4       3 * 2 = 6       4 * 2 = 8       5 * 2 = 10
2 * 3 = 6       3 * 3 = 9       4 * 3 = 12      5 * 3 = 15
2 * 4 = 8       3 * 4 = 12      4 * 4 = 16      5 * 4 = 20
2 * 5 = 10      3 * 5 = 15      4 * 5 = 20      5 * 5 = 25
2 * 6 = 12      3 * 6 = 18      4 * 6 = 24      5 * 6 = 30
2 * 7 = 14      3 * 7 = 21      4 * 7 = 28      5 * 7 = 35
2 * 8 = 16      3 * 8 = 24      4 * 8 = 32      5 * 8 = 40
2 * 9 = 18      3 * 9 = 27      4 * 9 = 36      5 * 9 = 45

6 * 1 = 6       7 * 1 = 7       8 * 1 = 8       9 * 1 = 9
6 * 2 = 12      7 * 2 = 14      8 * 2 = 16      9 * 2 = 18
6 * 3 = 18      7 * 3 = 21      8 * 3 = 24      9 * 3 = 27
6 * 4 = 24      7 * 4 = 28      8 * 4 = 32      9 * 4 = 36
6 * 5 = 30      7 * 5 = 35      8 * 5 = 40      9 * 5 = 45
6 * 6 = 36      7 * 6 = 42      8 * 6 = 48      9 * 6 = 54
6 * 7 = 42      7 * 7 = 49      8 * 7 = 56      9 * 7 = 63
6 * 8 = 48      7 * 8 = 56      8 * 8 = 64      9 * 8 = 72
6 * 9 = 54      7 * 9 = 63      8 * 9 = 72      9 * 9 = 81

如果你的程式扣除掉大括号的部份在十行以内的话,那麽恭喜你,你合格了。
参考答案以後会公布。

--
本文原作者为徐振家,原作刊载於星星神教总坛 ☆清华电机☆ test 板。
你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。
原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。
未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。
其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。
对本文有任何疑问或意见请 mail 给 ax.bbs@bbs.ee.nthu.edu.tw,谢谢。


--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.150毫秒