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
或其他一些大数字(或负数),那么您的逻辑(据我所知)将失败。您可能需要一个非常大的数组,或者必须限制用户的输入。动态?静止的什么?谢谢我知道结果了。