本範例示範結構體的使用
如何傳遞結構體給函數,
有如物件般,把資料封裝起來.
執行如圖
由於結構太大,所以無法一一列出,故只能跳著列出,每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();
}
 
 
沒有留言:
張貼留言
請提供您的寶貴意見 ;-)