發新話題

[討論] 檔案輸出相關問題

檔案輸出相關問題

題目:
可利用亂數函式產生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);
}

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。