1. 請設計C程式宣告3X3的二維陣列, 陣列內的值使用亂數產生, 其範圍是1~50, 然後顯示二維陣列的元素值
並且計算每一列的總和和平均, 最後計算出陣列對角線元素的總和
輸出範例
2 4 6
4 20 3
1 2 3
第一列: 12, 平均: 4 第二列: 27, 平均: 9 第三列:6, 平均: 2
對角線: 25, 27
取亂數的方法: 取 1-10 的亂數 a=(rand( ) % 10) +1; 但此法每次都會從亂數表中從第一個數字取用, 所以每次都是相同的值, 因此C提供亂數種子的函數
srand() 函數
當我們把上面的程式重複執行數次之後,
會發現所得到的亂數是一樣的,
這是因為它由上一個數值產生出下一個亂數,
而一開始系統都是 0,所以每次產生出來的亂數才會一樣。
因此我們可以用 srand() 函數改變一開始的亂數值( srand() 函數也是定義在 stdlib.h),
srand() 需要一個參數做為種子,以產生一個新的亂數數列,而這個參數我們通常以目前的時間傳入,
也就是使用 time() 函數,而 time() 是定義在 time.h 中,整個程式如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int a;
srand(time(NULL));
a=(rand()%100)+1;
printf("The Random Number is %d .\n", a);
}
至於是不是每次呼叫 rand() 前就必須使用 srand() 一次,
答案是否定的,各位只要在程式的一開頭執行一次 srand() 即可,之後出來的亂數就會和上次執行的不一樣。