Arrays 为什么数组只显示垃圾值
C程序(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
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*