Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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
C 根据索引交换数组的值_C - Fatal编程技术网

C 根据索引交换数组的值

C 根据索引交换数组的值,c,C,我不清楚如何解决这个问题 main() { int a[10],n,i,j,temp1,max,temp[10]; clrscr(); scanf("%d",&n); for (i = 0 ; i < n ; i++) scanf("%d",&a[i]); for (i = 0 ; i < n ; i++) { temp[1] = a[0]; temp[2]

我不清楚如何解决这个问题

main()
{
    int a[10],n,i,j,temp1,max,temp[10];
    clrscr();

    scanf("%d",&n);
    for (i = 0 ; i < n ; i++)
        scanf("%d",&a[i]);       
    for (i = 0 ; i < n ; i++)
    {
        temp[1] = a[0];
        temp[2] = a[temp[1]];
        a[temp[1]] = 0;
        temp[3] = a[temp[2]];
        a[temp[2]] = temp[1];   
        temp[4]=a[temp[3] ];
        a[temp[3]]=temp[2];
    }

    for (i = 0 ; i < n ; i++)
        printf("%d",a[i] );
    getch();
}
输出

120
但更多的我不明白

类似输入:6
4 3 0 5 1 2 
输出
2 4 5 1 0 3 
逻辑: 以数组为例

i0112
a[i]2 0 1
逻辑是[i]进入数组的索引,数组值进入其索引

a[0]=2,索引为0
因此,在应用逻辑之后,[2]的元素=0
然后
a[1]=0,所以它变成了a[0]=1
等等
而且
将其应用于“430512”到“245103”

尝试将以下
for
循环替换为第二个
for
循环:

for (i = 0 ; i < n ; i++) {
    temp[a[i]]=i;    
}
(i=0;i{ 温度[a[i]]=i; }
然后打印数组
temp

您的代码无法工作,因为它是静态的。你必须以动态的方式创造。 此代码适用于
430512

main()
{
    int a[10],n,i,j,temp1,max,temp[10], result[10];

    scanf("%d",&n);
    for (i = 0 ; i < n ; i++)
        scanf("%d",&a[i]);       
    for (i = 0 ; i < n ; i++)
    {
        for (j = 0 ; j < n ; j++)
        {
            if(i == a[j])
            {
                result[i]=j;
                break;
            }
        }
    }

    for (i = 0 ; i < n ; i++)
        printf("%d",result[i] );
    getch();
}
main()
{
int a[10],n,i,j,temp1,max,temp[10],result[10];
scanf(“%d”和“&n”);
对于(i=0;i
为什么?为什么会这样?据我所知,他希望将元素索引的值分配给元素的索引。例如,输入:430512,例如,第一个元素4及其索引0,然后他希望将第四个索引分配给0。我不清楚您的逻辑。还不清楚预期的输出是什么。这一点也不安全,因为如果
a[i]
的值很大,比如
100245
或其他一些大数字(或负数),那么您的逻辑(据我所知)将失败。您可能需要一个非常大的数组,或者必须限制用户的输入。动态?静止的什么?谢谢我知道结果了。