C语言 数组和函数

一、一维数组

1.定义格式:

类型说明符  数组名[常量表达式];  例如  int a10 

2.一维数组初始化

 

  • int a10={0,1,2,3,4,5,6,7,8,9};
  •  int a10={01234};       

       定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0

  • int a10={0};
  • 对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。

   例如:int a5={12345};

   也可以写成  int a[]={12345};  

   int a10={12345};  只初始化前5个元素,后5个元素为0

 

二、二维数组

1.定义格式:

类型说明符  数组名[常量表达式][常量表达式]

例如:float  a[3][4];定义a3×4(34)的数组

2.二维数组初始化

  • 分行给二维数组赋初值。

例如: int a[3][4]={{1234}{5678}, {9101112}}; 

  • 将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。

例如:int a[3][4]={123456789101112};

  • 可以对部分元素赋初值。

例如: int a[3][4]={{1}, {5}, {9}};也可以对各行中的某一元素赋初值,如int a[3][4]={{1}, {0,6}, {0, 0, 0, 11}}; 

  • 如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

例如:int a[3][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};等价int a[ ][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

        3.地址

int a[4][3] ;

printf( " %p\n", &a[0][0]) ; //首元素的地址,单位4字节

printf( " %p\n", a[0]) ; //首行首元素的地址,单位4字节

printf( " %p\n", &a[0]) ; //首行的地址,单位12字节

printf( " %p\n", a) ; //首行的地址,单位12字节

printf( " %p\n", &a) ; //数组的地址,单位48字节

 

       三、字符数组

        1.字符数组初始化

  • char c[10] = {I’,‘ ’,a,m,‘ ’,h,a,p, ‘p’,y} ;

       char c[11] = "HelloWorld";

        2.输入输出方法

  • 逐个字符输入输出。用格式符“%c”
  • 将整个字符串一次输入或输出。用“%s”格式符。

        四、函数

        1.strcat函数-----------连接

其一般形式为:strcat(字符数组1,字符数组2)

strcat的作用是字符串2接到字符串1的后面,结果放在字符数组1,函数调用后得到一个函数值——字符数组1的地址。

        2.strcpy函数-----------复制 

其一般形式为:strcpy(字符数组1,字符串2)

strcpy的作用是将字符串2复制到字符数组1中去。

(注:

         “字符数组1”必须写成数组名形式(str1)

         “字符串2”可以是字符数组名,也可以是一个字符串常量。如:strcpy(str1″China″)

          复制时连同字符串后面的0′一起复制到字符数组1中。

   )

        3.strcmp函数----------比较

其一般形式为:strcmp(字符串1,字符串2)

strcmp的作用是比较字符串1和字符串2

          比较的结果由函数值带回

(1) 如果字符串1=字符串2,函数值为0

(2) 如果字符串1>字符串2,函数值为一正整数。

(3) 如果字符串1<字符串2,函数值为一负整数。

        4.strlen函数----------长度

其一般形式为: strlen (字符数组)

strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括0′在内)

      

        四、用数组编写的冒泡排序

#include<stdio.h>

void in(int a[], int length)
{
    int i=0;
    printf("Please input:");
    for(i=0; i<length; i++)
    {
        scanf("%d",&a[i]);
    }
}

void mao(int a[], int length)
{
    int i,j,temp;
    for(j=0; j<length-1; j++)
        for(i=0; i<length-j-1; i++)
        {
            if(a[i+1] < a[i])
            {
                temp = a[i+1];
                a[i+1] = a[i];
                a[i] = temp;
            }
        }
}

void out(int a[], int length)
{
    int i=0;
    for(i=0; i<length; i++)
    {
        printf("%d ", a[i]);
    }
}

int main()
{
    int i, j, temp;
    int a[5] = {0};
    int length = sizeof(a)/sizeof(a[0]);

    in(a, length);
    mao(a, length);
    out(a, length);

    return 0;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值