C 如何将值从一个函数传递到另一个函数?

C 如何将值从一个函数传递到另一个函数?,c,C,我创建了一个程序,该程序接收用户选择的输入“n”个数字,然后打印重复次数最多的一个,但我在函数之间传递值时遇到了问题,因此结果为0。我怎样才能解决它 void most_present_number(int array[]); int read_numbers(int array[]); int main() { int array[400]; most_present_number(array); return 0; } void most_present_numb

我创建了一个程序,该程序接收用户选择的输入“n”个数字,然后打印重复次数最多的一个,但我在函数之间传递值时遇到了问题,因此结果为0。我怎样才能解决它

void most_present_number(int array[]);
int read_numbers(int array[]);

int main() {
    int array[400];
    most_present_number(array);
    return 0;
}

void most_present_number(int array[]){
    read_numbers(array);
    int i = 0;
    int Max = 0;
    int Current_number = vettore[0];
    int Current_number_counter = 0;
    int most_present_number = 0;
    int most_present_number_counter = 0;
    while (i < Max) {
        if (array[i] == Current_number) {
            Current_number_counter++;
            i++;
        } else {
            if (Current_number_counter > most_present_number_counter){
                most_present_number = Current_number;
                most_present_number_counter = Current_number_counter;
            }
            Current_number = array[i];
            Current_number_counter = 1;
            i++;
        }
    }
    printf("The most present number is %d which is repeated %d times\n", most_present_number, 
           most_present_number_counter);
}

int read_numbers(int array[]){
    int Max = 0;
    int i = 0;
    printf("Insert the array lenght\n");
    scanf("%d", &Max);
    while (i < Max) {
        printf("Insert the numbers\n");
        scanf("%d", &array[i]);
        i++;
    }
    return Max;
}
void most_present_number(整数数组[]);
整数读取_数(整数数组[]);
int main(){
int数组[400];
most_当前_数(数组);
返回0;
}
无效最当前的数字(整数数组[]){
读取数字(数组);
int i=0;
int Max=0;
int Current_number=vettore[0];
int Current_number_计数器=0;
int most_present_number=0;
int most_present_number_counter=0;
而(i最新数量计数器){
most_当前_编号=当前_编号;
most_present_number_计数器=当前_number_计数器;
}
当前_编号=数组[i];
当前\u编号\u计数器=1;
i++;
}
}
printf(“最新出现的数字是%d,重复了%d次”\n“,最新出现的数字,
大多数(当前(数字(计数器));
}
整数读取数(整数数组[]){
int Max=0;
int i=0;
printf(“插入数组长度\n”);
扫描频率(“%d”和最大值);
而(i
最新编号()中有
Max=0
,因此
while
循环立即停止

read\u numbers()
返回
Max
,因此您可以使用它初始化
most\u present\u numbers()中的
Max

void most_present_编号(int数组[],int Max);
整数读取_数(整数数组[]);
int main(){
int数组[400];
整数大小;
most_当前_数(数组);
返回0;
}
无效最当前的数字(整数数组[]){
int Max=读取的数字(数组);
int i;
int当前_数=数组[0];
int Current_number_计数器=0;
int most_present_number=0;
int most_present_number_counter=0;
对于(i=0;i最新数量计数器){
most_当前_编号=当前_编号;
most_present_number_计数器=当前_number_计数器;
}
当前_编号=数组[i];
当前\u编号\u计数器=1;
}
}
printf(“最新出现的数字是%d,重复了%d次”\n“,最新出现的数字,
大多数(当前(数字(计数器));
}
整数读取数(整数数组[]){
int Max=0;
int i=0;
printf(“插入数组长度\n”);
扫描频率(“%d”和最大值);
而(i

还请注意,您的算法假设数组中所有相等的数字都在一起。如果它们可以混淆,你需要一个非常不同的设计。您需要另一个数组来保存每个数字的计数。然后在最后,您会在该数组中找到计数最高的条目。

至少您需要写入int Max=read_numbers(数组);而不是读取数字(数组);int Max=0;你有什么问题?很难回答你的问题,因为它没有包含一个。请将您的问题包括完整的代码集、示例输入和输出以及任何错误消息。告诉我们你期望发生什么以及实际发生了什么。这将帮助我们更好地回答您的问题。如前所述,大多数_present_number()最多迭代0个数组元素。换句话说,while(i)的条件是等待应答,但程序不会启动,因为在全局函数
void most\u present\u number(int array[],int Max)
中,变量
int Max
没有在主函数之后的`void most\u present\u number(int array[])函数中声明
void most_present_number(int array[], int Max);
int read_numbers(int array[]);

int main() {
    int array[400];
    int size;
    most_present_number(array);
    return 0;
}

void most_present_number(int array[]){
    int Max = read_numbers(array);
    int i;
    int Current_number = array[0];
    int Current_number_counter = 0;
    int most_present_number = 0;
    int most_present_number_counter = 0;
    for (i = 0; i < Max; i++) {
        if (array[i] == Current_number) {
            Current_number_counter++;
        } else {
            if (Current_number_counter > most_present_number_counter){
                most_present_number = Current_number;
                most_present_number_counter = Current_number_counter;
            }
            Current_number = array[i];
            Current_number_counter = 1;
        }
    }
    printf("The most present number is %d which is repeated %d times\n", most_present_number, 
           most_present_number_counter);
}

int read_numbers(int array[]){
    int Max = 0;
    int i = 0;
    printf("Insert the array lenght\n");
    scanf("%d", &Max);
    while (i < Max) {
        printf("Insert the numbers\n");
        scanf("%d", &array[i]);
        i++;
    }
    return Max;
}