根据输入没有获得所需的输出

时间:2017-06-17 06:15:27

标签: c pointers

我正在实现一个简单的程序来使用C从数组中查找最大和最小的元素。但是在某些情况下我得到意外的输出。请检查this输出。请查看以下代码。

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

int largest(int *input)
{
    int i=0,large=0;
    for(;i<input[i]!='\0';i++)
    {
        if(input[i]>large)
            large=input[i];
    }
    return large;
}

int smallest(int *input)
{
    int i=0,small;
    small=input[i];
    for(;i<input[i]!='\0';i++)
    {
        if(input[i]<small)
            small=input[i];
    }
    return small;
}

void main()
{
    int *input;
    int size,i=0,large,small;
    printf("Enter size of array:\n");
    scanf("%d",&size);
    printf("Enter Numbers:\n");
    input=(int *)malloc(size * sizeof(int));
    for(;i<size;i++)
    {
        scanf("%d",input+i);
    }
    large=largest(input);
    printf("Largest element is:%d, ",large);
    small=smallest(input);
    printf("Smallest element is:%d\n",small);
}

当我将大小传递给函数时,程序运行正常。

int largest(int *input,int size)
{
    int i=0,large=0;
    for(;i<size;i++)
    {
        if(input[i]>large)
            large=input[i];
    }
    return large;
}
通过实现上述功能

output

我不知道这里发生了什么。请帮我找到解决方案。

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

    #include<stdio.h>
    main(){
    int count, i, j, k;
    float all_number[15],temp;
    printf("\n Enter the number of input : ");
    scanf("%d",&count);
    for(i=0;i< count;i++){
        printf("\n Enter %d element : ",i);
        scanf("%f",&all_number[i]);
    }
    for(j=0; j<count ; j++){
        for(k = j+1; k <count; k++){
            if(all_number[j] > all_number[k]){
                temp = all_number[j];
                all_number[j] = all_number[k];
                all_number[k] = temp;
            }
        }
    }

     printf("\n lowest %d element : %f",i,all_number[0]);
     printf("\n highest%d element : %f",i,all_number[count]);
}