c编程中的数组索引

时间:2015-10-23 00:40:33

标签: c arrays variables

在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的索引。

我是编程新手,我真的不知道从哪里开始,所以非常感谢任何帮助!

2 个答案:

答案 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

我会告诉你如何回去:) 祝你好运!