提供兩支有關一維陣列副程式,供方便練習用:陣列填亂數、顯示陣列內容
●arrayrand:
point:陣列填滿隨機正整數 arrayrand( [陣列], [陣列長度], [允許重複值], [上限], [下限] )
usage:
1.加入include包含
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
2.在開頭include之後插入
int arrayrand( int *, int, int, int, int ) ;
3.並在main函數之後(不可以插在main函數中)插入程式主體:
int arrayrand ( int *array, int length, int echo, int upper, int lower )
{
int i = 0, j = 0 ;
if ( ( echo != 0 ) && ( echo != 1 ) )
{
printf( "Error: arrayrand function.\nEcho Error.\nThe variable \"echo\" value must 0 or 1...\n" ) ;
return 1 ;
}
if ( length <= 0 )
{
printf( "Error: arrayrand function.\nLength Error.\nPlease check your configure or variable...\n" ) ;
return 1 ;
}
if( lower > upper )
{
printf( "Error: arrayrand function.\nUpper and lower variable Error.\nPlease check your configure or variable...\n" ) ;
return 1 ;
}
if( ( length > ( upper - lower + 1 ) ) && ( echo == 0 ) )
{
printf( "Error: arrayrand function.\nConfigure Error.\nDoes not allow echo,But define domain not enough.\nPlease check your configure or variable...\n" ) ;
return 1 ;
}
srand( time( NULL ) ) ;
if( echo == 1 )
{
for ( i = 0 ; i < length ; i++ )
{
array[ i ] = ( rand() % ( upper - lower + 1 ) ) + lower ;
}
}
else
{
for ( i = 0 ; i < length ; i++ )
{
array[ i ] = ( rand() % ( upper - lower + 1 ) ) + lower ;
for ( j = i - 1 ; j >= 0 ; j-- )
{
while ( ( array[ i ] == array[ j ] ) )
{
array[ i ] = ( rand() % ( upper - lower + 1 ) ) + lower ;
j = i - 1 ;
}
}
}
}
}
4.在其他函數中就可以使用 arrayrand() 例如: arrayrand ( u, 20, 0, 20, 1 ) ;
就會將陣列 u 中填入 20 個不重複出現的亂數,亂數範圍是1-20,在本例中經過自行排序後會出現:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
5.參數說明:
參數依序是[陣列], [陣列長度], [允許重複值], [上限], [下限]如下說明之
[陣列]:需填入陣列名稱,以便傳入一個您已經宣告的陣列供函數操作。
[陣列長度]:需要填入陣列的長度,例如: 您宣告了一個陣列 int array [ 30 ] ; 這裡就要填入30。
[允許重複值]:這裡設定您是否允許在隨機陣列中出現相同的"值"。
1:表示true 允許
0:表示false 不允許
[上限]:表示隨機變數會出現的最大值,如果輸入100則最大會出現100
[下限]:表示隨機變數會出現的最小值,如果輸入0則最小會出現0
6.其他處議事項與錯誤訊息說明:
(1)函數會自動進行簡單的參數檢查,以防止矛盾的設定,錯誤訊息如下說明。
<1>
Error: arrayrand function.
Echo Error.
The variable "echo" value must 0 or 1...
參數[允許重複值]是控制是否允許隨機數出現相同的"值",其設定只能是 0 或 1 二擇一。 1:表示true 允許, 0:表示false 不允許
<2>
Error: arrayrand function.
Length Error.
Please check your configure or variable...
陣列長度出現負數,您可能手誤了。
<3>
Error: arrayrand function.
Upper and lower variable Error.
Please check your configure or variable...
您[上限][下限]的位置放反了。
<4>
Error: arrayrand function.
Configure Error.
Does not allow echo,But define domain not enough.
Please check your configure or variable...
您的[上限][下限]和[允許重複值]的設定有衝突,例如您要填滿一個長度20的陣列,不允許重複值,但是根據您定義的[上限][下限]定義域只有少於20個可用值。
請您變更[允許重複值]來排除此問題,或是重新設定[上限][下限]
(2)這一隻程式是輔助練習用的,如果您要參加正式的考試,寫 arrayrand ( u, 20, 0, 20, 1 ) ; 這種東西是沒有分數的,本人概不負責。
●arrayshow:
point:輸出陣列至螢幕上 arrayshow( [陣列], [陣列長度|輸出長度] )
usage:
1.加入include包含
#include <stdio.h>
2.在開頭include之後插入
void arrayshow( int *, int ) ;
3.並在main函數之後(不可以插在main函數中)插入程式主體:
void arrayshow ( int *array, int length )
{
int i = 0 ;
for( i = 0 ; i < length ; i++ )
{
printf ( "%d ", array[ i ] ) ;
}
printf ( "\n" ) ;
}
4.在其他函數中就可以使用 arrayshow() 例如: arrayshow( u,20 ) ;
就會將陣列 u 中的20個元素輸出。( 如果不只20個就會輸出前20個 )
19 23 38 29 52 4 45 7 33 48 47 11 5 13 6 35 42 36 8 31
5.參數說明:
[陣列]:需填入欲輸出的陣列名稱。
[陣列長度|輸出長度]:填入陣列長度輸出整個陣列"或是"欲輸出的元素數目,例如:arrayshow( u,20 )函數就會輸出陣列前20個元素。
6.其他處議事項與錯誤訊息說明:
(1)這一隻程式是輔助練習用的,如果您要參加正式的考試,寫 arrayshow( u,20 ) ; 這種東西是沒有分數的,本人概不負責。
公告
- Jan 05 Mon 2009 02:30
一維陣列實用副程式
全站熱搜
留言列表