以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  C语言程序设计  (http://www.njcie.com/bbs/list.asp?boardid=29)
----  [推荐]第六课代码讲义:数组  (http://www.njcie.com/bbs/dispbbs.asp?boardid=29&id=1575)

--  作者:admin
--  发布时间:2015/10/30 21:43:55
--  [推荐]第六课代码讲义:数组

如何把一个值赋给很多变量?
数组提供了一种循环访问变量的方法


int main()
{
    int array[10],i=0;
    array[0]=1;
    array[1]=1;
    for(i=0; i<10; i++)
        array[i]=1;
    for(i=0; i<10; i++)
        printf("array[%d]=%d\\t",i,array[i]);

}


如果不赋值会怎么样?
int main()
{
    int array[10],i=0;
    array[0]=1;
    array[1]=1;

    for(i=0; i<10; i++)
        printf("array[%d]=%d\\t",i,array[i]);

}

其他初始化赋值方法:
int main()
{
    int array[10]= {0,1,2,3,4,5,6,7,8,9},i=0;
    for(i=0; i<10; i++)
        array[i]=i;
    for(i=0; i<10; i++)
        printf("array[%d]=%d\\t",i,array[i]);

}

一个例子(让用户分别给每个数组元素赋值,最后算出平均数)
#define LEN 4

int main()
{
    int array[LEN],i=0,sum=0;
    for(i=0; i<LEN; i++)
    {
        scanf("%d",&array[i]);
    }
    for(i=0; i<LEN; i++)
    {
        sum=sum+array[i];
    }

    printf("%5.2f",sum*1.0/LEN);

}

改进代码:
#define LEN 4

int main()
{
    int array[LEN],i=0,sum=0;
    for(i=0; i<LEN; i++)
    {
        scanf("%d",&array[i]);
         sum=sum+array[i];
    }
    printf("%5.2f",sum*1.0/LEN);

}

利用数组实现数位显示

int main()
{
    int number=0,i=0,array[5],divider=10000,j=0;
    scanf("%d",&number);
    for(i=0; i<5; i++)
    {
        array[i]=number/divider;
        number=number%divider;
        divider=divider/10;
        if(j==0 && array[i]>0)
        {

            j=5-i;
            printf("这是%d位数\\n每个位数是:",j);

        }
        if(j>0)
            printf("%d ",array[i]);
    }

    printf("\\n倒序结果为:");
    for(i=4; i>=5-j; i--)
        printf("%d ",array[i]);
}

 

数组排序
#define LEN 4

int main()
{
    int array[LEN],i=0,j=0,temp=0;
    for(i=0; i<LEN; i++)
    {
        scanf("%d",&array[i]);
    }
    for(i=0; i<LEN; i++)
    {
        for(j=i+1; j<LEN; j++)
        {
            if(array[i]>array[j])
            {
                temp=array[i];
                array[i]=array[j];
                array[j]=temp;
            }
        }
    }
    for(i=0; i<LEN; i++)
        printf("array[%d]=%d\\t",i,array[i]);
}

转置二维矩阵
有问题?
#define LEN 4

int main()
{
    int array[LEN][LEN]= {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};
    int i=0,j=0,temp;
    for(i=0; i<LEN; i++)
    {
        for(j=0; j<LEN; j++)
            printf("[%d,%d]=%d\\t",i,j,array[i][j]);
        printf("\\n");
    }
    for(i=0; i<LEN; i++)
        for(j=0; j<LEN; j++)
        {
            temp=array[i][j];
            array[i][j]=array[j][i];
            array[j][i]=temp;
        }
    for(i=0; i<LEN; i++)
    {
        for(j=0; j<LEN; j++)
            printf("[%d,%d]=%d\\t",i,j,array[i][j]);
        printf("\\n");
    }
}

只需改动一个!
#define LEN 4

int main()
{
    int array[LEN][LEN]= {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};
    int i=0,j=0,temp;
    for(i=0; i<LEN; i++)
    {
        for(j=0; j<LEN; j++)
            printf("[%d,%d]=%d\\t",i,j,array[i][j]);
        printf("\\n");
    }
    for(i=0; i<LEN; i++)
        for(j=i; j<LEN; j++)
        {
            temp=array[i][j];
            array[i][j]=array[j][i];
            array[j][i]=temp;
        }
    for(i=0; i<LEN; i++)
    {
        for(j=0; j<LEN; j++)
            printf("[%d,%d]=%d\\t",i,j,array[i][j]);
        printf("\\n");
    }
}


删除指定元素
#define LEN 10
#include "stdio.h"
#include "stdlib.h"

main()
{
    int array[LEN]= {0,1,2,3,4,5,6,7,8,9},number=0,i=0,j=0;
    scanf("%d",&number);
    for(i=0; i<LEN; i++)
    {
        if(number==array[i])
        {
            break;
        }
    }
    for(j=i; j<LEN-1; j++)
    {
        array[j]=array[j+1];
    }
    array[LEN-1]=0;
    for(i=0; i<10; i++)
        printf("array[%d]=%d\\t",i,array[i]);

}

 

 

 

 

 

[此贴子已经被作者于2015-11-05 20:47:26编辑过]