运行后无法打印功能

时间:2015-09-03 20:20:07

标签: c arrays printf

*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);

}

1 个答案:

答案 0 :(得分:0)

此程序仅在a的for循环中打印数组main的元素。除了GetRand之外,没有其他函数被调用,因此getmaxavg永远不会被执行,尽管已经定义了。所以,是的,如果你想知道它的作用,首先你应该从main调用它。

尽管你的maxavg功能的逻辑存在很大问题。 您想要迭代的阵列在哪里?您尚未将任何参数传递给maxavg(也未声明并设置局部变量)。看起来您期望current包含这些数组元素值,但实际情况是您从未将此变量的值设置为任何值。您应该使用ij变量作为应添加的数组的索引,如arr[i][j]中所示。

其他几点说明:

  • 你应该在循环结束后设置a[2][15]a[10][6]等等,而不是每次迭代。
  • 您已经两次宣布GetRand
  • maxavg返回int,但您的函数中没有return语句(&#34;控件到达非void函数的末尾&#34;)。