kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2011-07-26

Turbo C 結構體的使用

本範例示範結構體的使用
如何傳遞結構體給函數,
有如物件般,把資料封裝起來.

執行如圖



由於結構太大,所以無法一一列出,故只能跳著列出,每20層一印,每層又有20筆,總執行次數為 n = 11000次,結構示意如下

<01期>
    |--<01層>
    |        |--<10筆>
    |        |--<10筆>
    |--<02層>
            |--<10筆>
            |--<10筆>
 ...
    |--<100層>
            |--<10筆>
            |--<10筆>
 ...
<10期>
    |--<01層>
    |        |--<10筆>
    |        |--<10筆>
    |--<02層>
            |--<10筆>
            |--<10筆>

 ...
    |--<100層>
            |--<10筆>
            |--<10筆>

程式碼如下

#include <conio.h>
#include <stdio.h>
#include <string.h>
    char msg[128]="TC struct data test.\nby kowala... \t2011-07-26\n";
    struct data{
        int position[10];
        int mapping[10];
    };
    struct node{
        int period;
        struct data numbers[100];
    };
    struct node srcNode[10];        /* 示範結構體 */

/* 畫線 */
void print_line(){printf("\n---------------------------------\n");}
/* 清結構體 */
void clrNode(struct node *map,int len){
    int i,j,k;   
    for(i=0;i<=len;i++){
        map[i].period=0;
        for(j=0;j<100;j++){
            for(k=0;k<10;k++){
                map[i].numbers[j].position[k]=0;
                map[i].numbers[j].mapping[k]=0;
            }       
        }
    }   
}
/*******************************
本範例示範結構體的使用
*******************************/
void main() {
    int i,j,k,n,nodeCount=10;   
    clrscr();
    printf("%s\n",msg);

    clrNode(&srcNode,nodeCount);    /* 清結構體 */
    n=0;
    for(i=0;i<=nodeCount;i++){       
        printf("1-%d(%d) ",i,srcNode[i].period);
        for(j=0;j<100;j++){
            for(k=0;k<10;k++){
            n++;
            if(j%20==0 && k==0)
            printf("2-%d(%d,%d) ",j,srcNode[i].numbers[j].position[k],srcNode[i].numbers[j].mapping[k]);
            }
        }
        printf("\n");
    }   
    printf("After %d calculation...\n",n);
    print_line();
}

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)