BBS水木清华站∶精华区

发信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信区: test 
标  题: 星星流讲座 0022 
发信站: ☆清华电机☆ (Thu May 25 15:17:58 1995) 
 
 
第 4 讲 之 6            基本的流程控制 
                        Topic: for loop (2) 
 
下面的程式片段是用来把一个阵列的排列顺序反过来的,传入该阵列以及该阵 
列元素的个数: 
 
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,谢谢。 
 
 

BBS水木清华站∶精华区