我正在實現一個簡單的程序,用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通過執行上述功能。
我不明白這裏發生了什麼。請幫我找到解決辦法。
'我的'input = calloc(size +1,sizeof(int));') – BLUEPIXY
@BLUEPIXY是的,它通過使用calloc函數來完美工作。感謝您的幫助。但是我仍然不明白爲什麼它在使用malloc時不工作?你能解釋一下嗎? –
您正試圖與'0'進行比較,但它並不存在於輸入數據的任何地方。 – BLUEPIXY