Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么数组只显示垃圾值_Arrays_C - Fatal编程技术网

Arrays 为什么数组只显示垃圾值

Arrays 为什么数组只显示垃圾值,arrays,c,Arrays,C,C程序(mainfunction)要求用户输入数组中的元素数(此函数可以使用)。C函数findSecondCallest查找数组的第二小元素(指向第一个索引)。C函数sortAscending按升序排列数组元素(不显示输入的元素,只显示垃圾值),C函数displayArray应按升序显示排列的数组 #include<stdio.h> #include<limits.h> int initializeArray(int num,int arr[]); int findSec

C程序(
main
function)要求用户输入数组中的元素数(此函数可以使用)。C函数
findSecondCallest
查找数组的第二小元素(指向第一个索引)。C函数
sortAscending
按升序排列数组元素(不显示输入的元素,只显示垃圾值),C函数
displayArray
应按升序显示排列的数组

#include<stdio.h>
#include<limits.h>
int initializeArray(int num,int arr[]);
int findSecondSmallest(int num,int arr[]);
int *sortAscending(int num,int arr[]);
void displayArray(int num,int arr[]);
void main(){
    int array[50],*arr;
    int n = sizeof(array) / sizeof(array[0]);
    initializeArray(n,array);
    findSecondSmallest(n,array);
    arr = sortAscending(n,array);
    displayArray(n,arr);
}

int initializeArray(int num,int arr[]){
    int i;
    printf("Input the number of elements in an array: ");
    scanf("%d", &num);
    printf("\nEnter %d elements: ", num);
    for(i = 0;i < num;i++){
        scanf("%d", &arr[i]);
    }
}

int findSecondSmallest(int num,int arr[]){
    int i,secondSmall,small;
    small = secondSmall = INT_MAX;
    for(i = 1;i < num;i++){
        if(arr[i] < small){
            secondSmall = small;
            small = arr[i];
        }else if(arr[i] < secondSmall && arr[i] > small){
            secondSmall = arr[i];
        }
    }
    printf("The second smallest element is %d", secondSmall);
}


int *sortAscending(int num,int arr[]){
    int i,j,temp;
    for(i = 0;i < num;i++){
        for(j = i + 1;j < num;j++){
            if(arr[i] > arr[j]){
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}
void displayArray(int num,int arr[]){
    int i;
    for(i = 0;i < num;i++){
        printf("Element at Array[%d] = %d ", i, arr[i]);
    }
}
#包括
#包括
int initializeArray(int num,int arr[]);
int findSecondCallest(int num,int arr[]);
int*排序(int num,int arr[]);
void displayArray(int num,int arr[]);
void main(){
整数数组[50],*arr;
int n=sizeof(数组)/sizeof(数组[0]);
初始化array(n,数组);
FindSecondCallest(n,数组);
arr=排序扫描(n,数组);
显示阵列(n,arr);
}
int initializeArray(int num,int arr[])){
int i;
printf(“输入数组中的元素数:”);
scanf(“%d”和&num);
printf(“\n输入%d个元素:”,num);
对于(i=0;ismall){
secondSmall=arr[i];
}
}
printf(“第二小元素是%d”,第二小元素);
}
int*排序设置(int-num,int-arr[]){
int i,j,温度;
对于(i=0;iarr[j]){
温度=arr[i];
arr[i]=arr[j];
arr[j]=温度;
}
}
}
}
void displayArray(int num,int arr[]){
int i;
对于(i=0;i

需要帮助时,您只需要处理用户输入的元素,而不需要处理整个数组,因为数组的其余部分尚未初始化

更改
initializeArray()
以返回用户输入的元素数。然后在调用其他函数时使用它,而不是
n

initializeArray()
未使用参数
num
。它应该使用它来检查用户输入的元素没有超过数组所能容纳的数量。因此,您需要为参数和用户输入使用不同的变量,以便进行比较

findSecondCallest()
不返回任何内容,因此应该声明它为
void
,而不是
int

sortAscending()
应该返回指向数组的指针,但缺少
return
语句

findsecondmalest()
中,可以将变量初始化为数组的第一个元素,而不是
INT\u MAX
。然后从
i=1
开始循环是有意义的,因为您已经使用了元素
0

#include<stdio.h>
#include<limits.h>
#include <stdlib.h>

int initializeArray(int num,int arr[]);
void findSecondSmallest(int num,int arr[]);
int *sortAscending(int num,int arr[]);
void displayArray(int num,int arr[]);

int main(void){
    int array[50],*arr;
    int n = sizeof(array) / sizeof(array[0]);
    int num = initializeArray(n,array);
    findSecondSmallest(num,array);
    arr = sortAscending(num,array);
    displayArray(num,arr);
}

int initializeArray(int n,int arr[]){
    int i, num;
    printf("Input the number of elements in an array: ");
    scanf("%d", &num);
    if (num > n) {
        printf("That's too many elements\n");
        exit(1);
    }
    printf("\nEnter %d elements: ", num);
    for(i = 0;i < num;i++){
        scanf("%d", &arr[i]);
    }
    return num;
}

void findSecondSmallest(int num,int arr[]){
    int i,secondSmall,small;
    small = secondSmall = arr[0];
    for(i = 1;i < num;i++){
        if(arr[i] < small){
            secondSmall = small;
            small = arr[i];
        }else if(arr[i] < secondSmall && arr[i] > small){
            secondSmall = arr[i];
        }
    }
    printf("The second smallest element is %d\n", secondSmall);
}


int *sortAscending(int num,int arr[]){
    int i,j,temp;
    for(i = 0;i < num;i++){
        for(j = i + 1;j < num;j++){
            if(arr[i] > arr[j]){
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

void displayArray(int num,int arr[]){
    int i;
    for(i = 0;i < num;i++){
        printf("Element at Array[%d] = %d\n", i, arr[i]);
    }
}
#包括
#包括
#包括
int initializeArray(int num,int arr[]);
void findSecondCallest(int num,int arr[]);
int*排序(int num,int arr[]);
void displayArray(int num,int arr[]);
内部主(空){
整数数组[50],*arr;
int n=sizeof(数组)/sizeof(数组[0]);
int num=initializeArray(n,数组);
FindSecondCallest(num,数组);
arr=排序(num,数组);
显示数组(num,arr);
}
int initializeArray(int n,int arr[]){
int i,num;
printf(“输入数组中的元素数:”);
scanf(“%d”和&num);
如果(num>n){
printf(“元素太多了\n”);
出口(1);
}
printf(“\n输入%d个元素:”,num);
对于(i=0;ismall){
secondSmall=arr[i];
}
}
printf(“第二小元素是%d\n”,第二小元素);
}
int*排序设置(int-num,int-arr[]){
int i,j,温度;
对于(i=0;iarr[j]){
温度=arr[i];
arr[i]=arr[j];
arr[j]=温度;
}
}
}
返回arr;
}
void displayArray(int num,int arr[]){
int i;
对于(i=0;i
您只需要处理用户输入的元素,而不需要处理整个数组,因为数组的其余部分尚未初始化

更改
initializeArray()
以返回用户输入的元素数。然后在调用其他函数时使用它,而不是
n

initializeArray()
未使用参数
num
。它应该使用它来检查用户输入的元素没有超过数组所能容纳的数量。因此,您需要为参数和用户输入使用不同的变量,以便进行比较

findSecondCallest()
不返回任何内容,因此应该声明它为
void
,而不是
int

sortAscending()
应该返回指向数组的指针,但缺少
return
语句

findsecondmalest()
中,可以将变量初始化为数组的第一个元素,而不是
INT\u MAX
。然后从
i=1
开始循环是有意义的,因为您已经使用了元素
0

#include<stdio.h>
#include<limits.h>
#include <stdlib.h>

int initializeArray(int num,int arr[]);
void findSecondSmallest(int num,int arr[]);
int *sortAscending(int num,int arr[]);
void displayArray(int num,int arr[]);

int main(void){
    int array[50],*arr;
    int n = sizeof(array) / sizeof(array[0]);
    int num = initializeArray(n,array);
    findSecondSmallest(num,array);
    arr = sortAscending(num,array);
    displayArray(num,arr);
}

int initializeArray(int n,int arr[]){
    int i, num;
    printf("Input the number of elements in an array: ");
    scanf("%d", &num);
    if (num > n) {
        printf("That's too many elements\n");
        exit(1);
    }
    printf("\nEnter %d elements: ", num);
    for(i = 0;i < num;i++){
        scanf("%d", &arr[i]);
    }
    return num;
}

void findSecondSmallest(int num,int arr[]){
    int i,secondSmall,small;
    small = secondSmall = arr[0];
    for(i = 1;i < num;i++){
        if(arr[i] < small){
            secondSmall = small;
            small = arr[i];
        }else if(arr[i] < secondSmall && arr[i] > small){
            secondSmall = arr[i];
        }
    }
    printf("The second smallest element is %d\n", secondSmall);
}


int *sortAscending(int num,int arr[]){
    int i,j,temp;
    for(i = 0;i < num;i++){
        for(j = i + 1;j < num;j++){
            if(arr[i] > arr[j]){
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

void displayArray(int num,int arr[]){
    int i;
    for(i = 0;i < num;i++){
        printf("Element at Array[%d] = %d\n", i, arr[i]);
    }
}
#包括
#包括
#包括
int initializeArray(int num,int arr[]);
void findSecondCallest(int num,int arr[]);
int*