首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C语言中数组的索引操作

C语言中数组的索引操作
EN

Stack Overflow用户
提问于 2011-06-05 09:49:31
回答 2查看 194关注 0票数 2

从有序数组开始

代码语言:javascript
复制
 [1, 2, 3, 4, 5, 6, 8, 9, 10]

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

代码语言:javascript
复制
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");
       }
  }

现在我几乎得到它,但最后一列是不正确的,我应该怎么做?

代码语言:javascript
复制
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 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-05 09:56:39

C数组从0开始编制索引。因此,当您访问从1到MAX的元素时,您正在运行数组的末尾。

让你的循环从0到MAX-1。通常的编写方式是

代码语言:javascript
复制
for (i=0 ; i < MAX ; ++i)

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

票数 3
EN

Stack Overflow用户

发布于 2011-06-05 09:58:43

嗯,至少,C中的数组是从零开始的,所以你写的东西超过了数组的末尾。对于声明为int foo[MAX]的数组,有效元素来自foo[0]…foo[MAX-1]

具体地说,aMAX很可能引用变量i使用的内存位置,导致在试图覆盖aMAX时重置循环。

或者将所有内容向下移动一位,或者声明数组MAX+1并忽略零位。

哦,而且您不需要每次都设置a1=1;。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6240527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档