2
#include<stdio.h>
void selsort(int a[],int s)
{
    int min,temp,i,j;       
    for(i = 0; i < s ; i++)
    {
        min = 0;
        for(j = i+1 ; j < s; j++)
        {
            if(min > a[j])
            {
                min = j;
            }
        }
        temp = a[i];
        a[i] = a[min];
        a[min] = temp;
        for (j=0;j<s;j++)
        {
            printf("%d",a[i]);
        }
        printf("\n");   

    }
}
main()
{
        int i,a[5];
        int size = 5;
        printf("Enter elements of the array");
        for(i=0;i<size;i++)
        {
            scanf("%d",&a[i]);
        }
        selsort(a[5],size);
}

エラーは次のとおりです。

selsort.c:35:2: warning: passing argument 1 of ‘selsort’ makes pointer from integer without a cast [enabled by default]
selsort.c:2:1: note: expected ‘int *’ but argument is of type ‘int’

将来この問題を回避するためのヒントは本当に役に立ちます

4

2 に答える 2

3

次のように関数を呼び出す必要があります。

selsort(a, size);

a[5]「インデックス5の要素」を意味します(ちなみに、配列の最後を過ぎた場合:の最大の有効な要素int a[5]はインデックスにあります4)。

また、交換する必要があります

min = 0;

min = i;

次のように使用します。

if(a[min] > a[j]) ...
于 2012-12-15T02:15:23.010 に答える
0

関数呼び出しselsort(a[5], size);では、aの5番目の[存在しない]メンバーのみを渡します。あなたが欲しいselsort(a, size);

于 2012-12-15T02:16:45.797 に答える