-2
我已創建此2D 21x21陣列,並將其值設置爲-1。我寫了它來打印地址和值,不知何故它只是在[6] [19]開始爲什麼?用C/Average/Max值中的隨機數填充定義的2D陣列
我想要做的是在同一個數組中使用從0到100的隨機數替換一些-1值。我知道我需要用函數srand種子,但我在連接功能的問題,因爲我在C.
共初學者編輯1:
現在我可以打印整個陣列,並填充隨機數字。對於我剛剛分配的-1值,對於這種情況很好。
我想要,現在被發現的所有值的平均值和最大值,所以我有什麼是:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[21][21], i , j;
for (i = 0; i < 21; i++)
{
for (j = 0; j < 21; j++)
{
a[i][j] = GetRand(0, 100);
a[7][15] = -1;
a[10][6] = -1;
a[13][5] = -1;
a[15][17] = -1;
a[17][17] = -1;
a[19][6] = -1;
printf("%3d" , a[i][j]);
}
printf("\n");
}
return 0;
}
// random seed
int GetRand(int min, int max);
int get() {
int i, r;
for (i = 0; i < 21; i++)
{
r = GetRand(0, 100);
printf("Your number is %d \n", r);
}
return(0);
}
int GetRand(int min, int max)
{
static int Init = 0;
int rc;
if (Init == 0)
{
srand(time(NULL));
Init = 1;
}
rc = (rand() % (max - min +1) +min);
return (rc);
}
// average
int avg()
float sum=0.0;
for(i = 0; i <= 21; i = i + 1) {
for(j = 0; j <= 21; j = j + 1){
sum = sum + a[21][21];
}
printf("The the average number is %.2f\n", sum/21);
}
//find maximum of all values
int *pv = &a[0][0];
max = min = 0;
for (i = 1; i < i*j; ++i){
if (pv[i] > pv[max])
max =i;
if (pv[i] < pv[min])
min = i;
}
printf("The max value is %d in row %d, col %d\n", pv[max], max/j, max%j);
return 0;
}
對於一般的函數,編譯器會告訴我之前,我所預期的聲明,這是「浮動總和= 0.0;」但我還沒有能夠解決這個問題。
對於發現最大功能我不確定我在那裏做什麼,我只是對它是如何做的模糊的想法...我是否在正確的方向?
謝謝!
'a [i] [j] = GetRand(0,100);'而不是'a [i] [j] = -1;' –
我不確信實際問題和您對問題的描述在這裏匹配。你說它「從[6] [19]開始」。我敢打賭,這與你終端中的回滾緩衝區有關。嘗試通過'more'或'less'管道輸出。另一部分似乎對如何編譯和鏈接多個源文件感到困惑。當然,你可以在你的其他源文件中包含'GetRand'的代碼。除非'main'只出現在其中一箇中,否則您將無法鏈接這兩個源文件。 – paddy
我的輸出不好。所以我寫了一個[i] [j] = GetRand(0,100);而不是[i] [j] = -1;現在我的數組有從0到100的隨機數,我的問題是我需要它有一些-1值。 例如: [2] [3] = 9 [2] [4] = - 1 [2] [5] = 23 [2] [6] = - 1 和我不知道我怎麼能做到這一點 – Mimic03