C 函数运行后不打印
我解决了一些问题,但我仍然认为这是错误的。不知何故,当我不止一次使用int声明GetRand函数时,我会收到更多错误消息 我想要的最终结果是打印我创建的数组,还打印它的最大值和平均值,只计算每个数>-1 我错误地调用了maxavg函数,并且在maxavg开头的“{”标记之前收到了一条错误消息error]expected identifier,我无法修复该错误C 函数运行后不打印,c,arrays,printf,C,Arrays,Printf,我解决了一些问题,但我仍然认为这是错误的。不知何故,当我不止一次使用int声明GetRand函数时,我会收到更多错误消息 我想要的最终结果是打印我创建的数组,还打印它的最大值和平均值,只计算每个数>-1 我错误地调用了maxavg函数,并且在maxavg开头的“{”标记之前收到了一条错误消息error]expected identifier,我无法修复该错误 *EDITED* 这个程序只在main中的for循环中打印数组a的元素。除了GetRand,没有调用其他函数,因此get和maxavg永
*EDITED*
这个程序只在main中的for循环中打印数组a的元素。除了GetRand,没有调用其他函数,因此get和maxavg永远不会执行,尽管已经定义。因此,是的,如果您想查看它的功能,首先应该从main调用它 不过,maxavg函数的逻辑也有一个大问题。 您假定迭代的数组在哪里?您没有向maxavg传递任何参数,也没有声明和设置局部变量。看起来您希望current包含这些数组元素值,但实际情况是您从未将此变量的值设置为任何值。您应该使用i和j变量作为索引,以e您应该添加的数组,如arr[i][j]中的数组 其他一些注意事项: 你真的应该在循环结束后设置[2][15]、[10][6]等等,而不是在每次迭代中。 你已经两次声明了GetRand。 maxavg返回一个int,但函数控件中并没有返回语句到达非void函数的末尾。
您已经创建了一个用于计算数组统计信息的函数,但您从未调用过它,因此它不会打印任何内容。顺便说一下,该函数已损坏,但这是另一个问题。为什么要设置[2][15],等等。每次通过循环时?如果要用这些值替换随机数,请在循环后执行。int maxavg;表示函数声明,但您随后尝试定义它,因此应删除;。此外,maxavg现在始终返回0,而不是计算的最大值和平均值。并且此函数的作用域中没有ar甚至是i或j。您需要将在main中创建的数组作为参数传递给maxavg。您的意思是在main之前,然后是函数本身吗?当我在maxavg之前删除int时,不知何故会收到更多错误消息。函数定义的语法是return_type function_nameparm_type param_name,{/*function body*/}。如果函数不返回任何内容,则其返回类型为void。
#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);
}