*EDITED*
我解决了一些问题,但我仍然称错了。不知何故,当我不多次使用int声明GetRand函数时,我会收到更多错误消息。
我想要的最终结果是打印我创建的数组,并打印它的最大值和平均值(仅计算每个数字> -1)。
我正在调用maxavg()函数错误,我收到错误消息“错误”预期标识符或'('''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
int GetRand(int min, int max);
int maxavg();
int main ()
{
int a[21][21], i , j, average, maximum;
for (i = 0; i < 21; i++)
{
for ( j = 0; j < 21; j++)
{
a[i][j] = GetRand(0, 100);
printf("%3d" , a[i][j]);
}
a[2][15] = -1;
a[10][6] = -1;
a[13][5] = -1;
a[15][17] = -1;
a[17][17] = -1;
a[19][6] = -1;
printf("\n");
}
average = maxavg();
maximum = maxavg();
printf("average = %d \n maximum = %d", average, maximum);
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);
}
// max and average
int maxavg();
{
int max=INT_MIN, sum=0, count=0, avg, n, m, current;
current = a[i][j];
avg = sum/count;
for(n = 0; n < 21; n++){
for(m =0; m < 21; m++){
if(current > -1){
sum = sum + current;
count = count + 1;
if(current > max){
max = current;
}
}
}
}
return(0);
}
答案 0 :(得分:0)
此程序仅在a
的for循环中打印数组main
的元素。除了GetRand
之外,没有其他函数被调用,因此get
和maxavg
永远不会被执行,尽管已经定义了。所以,是的,如果你想知道它的作用,首先你应该从main
调用它。
尽管你的maxavg
功能的逻辑存在很大问题。
您想要迭代的阵列在哪里?您尚未将任何参数传递给maxavg
(也未声明并设置局部变量)。看起来您期望current
包含这些数组元素值,但实际情况是您从未将此变量的值设置为任何值。您应该使用i
和j
变量作为应添加的数组的索引,如arr[i][j]
中所示。
其他几点说明:
a[2][15]
,a[10][6]
等等,而不是每次迭代。GetRand
。maxavg
返回int
,但您的函数中没有return
语句(&#34;控件到达非void函数的末尾&#34;)。