在c编程中,我如何交换数组的元素,使x[1,2,3,4,...,i,i+1,...,n-1,n]
变为x[2,1,3,4,...i,i+1,...,n-1,n]
然后x[2,3,1,4,...,i,i+1,...,n-1,n]
然后x[2,3,4,1,...,i,i+1,...,n-1,n]
一直变为n,然后返回到1再次?
到目前为止,我已经打印了以下代码,其中我打印了非混乱数组,然后创建了一个应该交换元素的循环,但它只对前两个元素执行此操作。
#include <stdio.h>
float temp;
float x[10];
int i,n;
double delta;
int main(int argc, char *argv[])
{/*main*/
for (i=0;i<10;i++)
{
delta=5;
x[0]=5;
x[i]=x[i-1]+delta;
printf("X[%d] = %f\n", i, x[i]);
}
for(i=0;i<=10;i++)
{
temp=x[i];
x[i]=x[(i+1)];
x[(i+1)]=temp;
printf("\nResultant Array...\n");
for (i=0;i<10;i++)
{
printf("X[%d] = %f\n", i, x[i]);
}
}
}/*main*/
打印;
X[0] = 5.000000
X[1] = 10.000000
X[2] = 15.000000
X[3] = 20.000000
X[4] = 25.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...
X[0] = 10.000000
X[1] = 5.000000
X[2] = 15.000000
X[3] = 20.000000
X[4] = 25.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
如果这有效,我打算写;
if(i+1==n)
{
temp=x[i+1];
x[i+1]=x[i];
x[i]=temp;
}
所有这些都在for循环中,试图循环回溯从n到1的索引。
我是编程新手,我真的不知道从哪里开始,所以非常感谢任何帮助!
答案 0 :(得分:2)
要从n循环到0,请使用
for(i=n-1;i>=0;i--)
请注意,n-1会导致数组从0开始
答案 1 :(得分:1)
您遇到的问题与变量范围有关!您在两个循环中使用变量 i ,其中一个嵌套在另一个循环中(我在谈论第二个)和第三个FOR循环,从上到下列出。
这意味着两个循环都在增加i的值(通过执行单独的i ++命令),所以在第3个FOR循环的第一次迭代结束时,变量i的值为10,因此程序赢了& #39; t运行第二个FOR循环的第二次迭代。
我已将内循环更改为使用名为 j 的单独变量。我还必须改变FOR循环的一些条件才能使它们正常工作(你以1为准):
#include <stdio.h>
float temp;
float x[10];
int i,j,n;
double delta;
int main(int argc, char *argv[])
{/*main*/
for (i=0;i<10;i++)
{
delta=5;
x[0]=5;
x[i]=x[i-1]+delta;
printf("X[%d] = %f\n", i, x[i]);
}
for(i=0;i<9;i++)
{
temp=x[i];
x[i]=x[(i+1)];
x[(i+1)]=temp;
printf("\nResultant Array...#%d\n",i);
for (j=0;j<10;j++)
{
printf("X[%d] = %f\n", j, x[j]);
}
}
}/*main*/
它给出了这些结果:
X[0] = 5.000000
X[1] = 10.000000
X[2] = 15.000000
X[3] = 20.000000
X[4] = 25.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#0
X[0] = 10.000000
X[1] = 5.000000
X[2] = 15.000000
X[3] = 20.000000
X[4] = 25.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#1
X[0] = 10.000000
X[1] = 15.000000
X[2] = 5.000000
X[3] = 20.000000
X[4] = 25.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#2
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 5.000000
X[4] = 25.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#3
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 25.000000
X[4] = 5.000000
X[5] = 30.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#4
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 25.000000
X[4] = 30.000000
X[5] = 5.000000
X[6] = 35.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#5
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 25.000000
X[4] = 30.000000
X[5] = 35.000000
X[6] = 5.000000
X[7] = 40.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#6
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 25.000000
X[4] = 30.000000
X[5] = 35.000000
X[6] = 40.000000
X[7] = 5.000000
X[8] = 45.000000
X[9] = 50.000000
Resultant Array...#7
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 25.000000
X[4] = 30.000000
X[5] = 35.000000
X[6] = 40.000000
X[7] = 45.000000
X[8] = 5.000000
X[9] = 50.000000
Resultant Array...#8
X[0] = 10.000000
X[1] = 15.000000
X[2] = 20.000000
X[3] = 25.000000
X[4] = 30.000000
X[5] = 35.000000
X[6] = 40.000000
X[7] = 45.000000
X[8] = 50.000000
X[9] = 5.000000
我会告诉你如何回去:) 祝你好运!