c - C 中数组的索引操作

标签 c arrays

从有序数组开始

 [1, 2, 3, 4, 5, 6, 8, 9, 10]

如何让每次迭代都得到以下结果?

1   2   3   4   5   6   7   8   9   10
1   3   4   5   6   7   8   9   10   2
1   4   5   6   7   8   9   10   2   3
1   5   6   7   8   9   10   2   3   4
1   6   7   8   9   10   2   3   4   5
1   7   8   9   10   2   3   4   5   6
1   8   9   10   2   3   4   5   6   7
1   9   10   2   3   4   5   6   7   8
1   10   2   3   4   5   6   7   8   9


#include <stdio.h>    
#define MAX 10 
int a[MAX], i,j,cnt=2;
main (){
    for (i=0; i<MAX; i++){
       a[i]= i+1;
    }
    for (i=0; i<MAX; i++) {
        printf ("%d   ", a[i]);
    }
    printf ("\n");

    for (j=0; j < MAX-2;j++){
           a[0]=1;
           for (i=1; i < MAX-1; i++){
                if (a[i]%MAX != 0){
                       a[i]= a[i] + 1;
                }else{
                     if (a[i]==10) {
                     //printf ("a[%d]: %d \t ** %d\n", i , a[i] ,cnt);
                     //a[i-1]= i;
                    a[i]  = cnt;
                }
            }
        }
        for (i=0; i<MAX; i++)    {
                printf ("%d   ", a[i]);
         }

        printf ("\n");
       }
  }

现在我差不多明白了,但最后一栏不对,我该怎么办?

1   2   3   4   5   6   7   8   9   10   
1   3   4   5   6   7   8   9   10   10   
1   4   5   6   7   8   9   10   2   10   
1   5   6   7   8   9   10   2   3   10   
1   6   7   8   9   10   2   3   4   10   
1   7   8   9   10   2   3   4   5   10   
1   8   9   10   2   3   4   5   6   10   
1   9   10   2   3   4   5   6   7   10   
1   10   2   3   4   5   6   7   8   10 

最佳答案

C 数组从 0 开始索引。因此,当您访问从 1 到 MAX 的元素时,就会超出数组末尾。

让循环从 0 到 MAX-1。习惯的写法是

for (i=0 ; i < MAX ; ++i)

...所以任何人阅读你的代码都可以立即证明数组索引永远不等于 MAX。

关于c - C 中数组的索引操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240527/

相关文章:

c - 如何同时使用多个while循环?

ios - 在 View 之间传递数组值 [swift 3] [iOS]

我可以在 C 中为一个变量传递多个值吗?

javascript - 超出最大调用堆栈大小错误...我该如何修复?

c - 连接到文件中的服务器时出错

c - ANSI C 和 C99 文字前缀和后缀列表

javascript - JSON 和 Javascript 数组之间的 "Interactions"(和语法)

在 header 中声明的 C++ 外部数组在 main.cpp 中不可用

c - 从用户空间访问内核内存(task_struct)

C - 在函数中初始化全局数组