c语言编写索引数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编写索引数组相关的知识,希望对你有一定的参考价值。

比如给数组int a[5] = 5, 4, 2, 3, 1;排序后 再对下标排序,输出下标。大神们 求给能运行的代码,结果输出正确的,解释少可以 或者告诉我下 具体操作步骤也行 我在xcode上运行的c。 急求

#include <stdio.h>
void main(void)

    int i, j;
    int a[5] = 5, 4, 2, 3, 1;
    int b[5] = 0, 1, 2, 3, 4; //下标序号,数量多就自增赋值
    int c , d;

    printf("原数组:\\n");    
    for(i = 0; i < 5; i++)
    
        printf("%2d", a[i]);    
    
    for(i = 0; i < 5; i++)
    
        for(j = 4 - i; j < 4; j++)
        
            if(a[j] > a[j+1])//从小到大 冒泡法 交换大小 同时交换下角标
            
                c = a[j];
                a[j] = a[j+1];
                a[j+1] = c;

                d = b[j];
                b[j] = b[j+1];
                b[j+1] = d;
            
        
    
    printf("\\n数组:\\n");    
    for(i = 0; i < 5; i++)
    
        printf("%2d", a[i]);    
    
    printf("\\n下标:\\n");    
    for(i = 0; i < 5; i++)
    
        printf("%2d", b[i]);
    
    
    getchar();

参考技术A 排序后,再对下标排序,输出下标,不就是0,1,2,3,4了??

在c语言中声明时按索引分配数组

【中文标题】在c语言中声明时按索引分配数组【英文标题】:Array assignment by index while declaration in c language 【发布时间】:2013-07-22 08:10:33 【问题描述】:
void fun ()

    int i;
    int a[]=
    
    [0]=3,
    [1]=5
    ;

c语言是否支持上述的a[]数组赋值方式。如果是,哪个 c 版本。 我用 gcc 编译了上面的代码,它工作正常。

但我以前从未见过这种作业。

【问题讨论】:

我相信这是一个 GCC 扩展。 【参考方案1】:

这是 C89 的 GCC 扩展,是 C99 标准的一部分,称为“指定初始化程序”。

见http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Designated-Inits.html。

【讨论】:

【参考方案2】:

必须使用gcc -std=c99或以上编译,否则会得到:

warning: x forbids specifying subobject to initialize

GNU C 允许将此作为​​ C89 中的扩展,当 -pedantic 标志打开时跳过此警告,您可以使用 __extension__

void fun ()

    int i;
    __extension__ int a[]=
    
        [0]=3,
        [1]=5
    ;

【讨论】:

【参考方案3】:

来自GNU C Reference Manual:

当使用 ISO C99 或带有 GNU 扩展的 C89 时,您可以通过指定要初始化的数组索引来乱序初始化数组元素。为此,请将数组索引包含在括号中,并在值之前包含可选的赋值运算符。这是一个例子:

 int my_array[5] =  [2] 5, [4] 9 ;

或者,使用赋值运算符:

 int my_array[5] =  [2] = 5, [4] = 9 ;

这两个例子都等价于:

 int my_array[5] =  0, 0, 5, 0, 9 ;

【讨论】:

以上是关于c语言编写索引数组的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编写函数,要实现快速排序算法或者冒泡法

是否有其他常见的“类 c”或非“类 c”语言具有非零索引数组位置? [关闭]

使用数组编写c语言

在c语言中声明时按索引分配数组

用C语言编写

C语言关于小数存入数组函数编写