檔案輸出相關問題
題目:
可利用亂數函式產生0-FF(以十六進位表示)的數值,所產生的數值不可重複,並將所產生的數值填入一個16行*16行列的二維矩陣,借以產生對照表;請產生5120張內容,(即0-FF排列)不相同的對照表,然後將所產生對照表的內容存入檔案中,當完成5120張不相同內容對照表檔案的建立後,可以透過鍵盤輸入1-5120的數值將輸入數值的對照表內容讀出並以16*16二維陣列排列方式印出,上述程式須滿足下列規定:
1.計算出產生5120張對照表檔案內容所需的時間
2.程式撰寫須使用呼叫函式的方式
3.須能夠證明所產生5120張對照表的內容均不相同
====
現在已做出亂數函數,但不知5120張表是否是要用for迴圈?
請求指教
/*
* File: main.c
* Author: Charles
*
* Created on 2014年11月18日, 上午 10:45
*/
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int check(int row,int j,int check[16][16]){
int k=0;
if(j==0){
return 0;
}
else{
for(k=0;k<j;k++){
if(check[row][k]==check[row][j])
return 1;
}
}
return 0;
}
void re(int i,int b[16][16]){
int j=0,tmp=0;
while(j<16){
tmp=(rand()%256+1);
b[j]=tmp;
if(check(i,j,b))
j--;
else
j++;
}
}
int main(int argc, char** argv) {
int arr[16][16];
int i=0,j;
srand((unsigned)time(NULL));
while(i<=15){
re(i,arr);
i++;
}
for(i=0;i<16;i++){//16*16
for(j=0;j<16;j++){
if(j==15){
printf("%x\n",arr[j]);
}else
printf("%x ",arr[j]);
}
}
return (EXIT_SUCCESS);
}