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;
}

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,可以通过编写一个数组去重函数来实现对数组中重复元素的去除。以下是一个示例的数组去重函数调用的介绍: 假设我们有一个整型数组`arr`,长度为`n`,我们想要对该数组进行去重操作。可以按照以下步骤进行: 1. 定义一个新的数组`result`,用于存储去重后的元素。 2. 遍历原始数组`arr`,逐个检查每个元素是否已经存在于`result`数组中。 3. 如果当前元素不存在于`result`数组中,则将其添加到`result`数组中。 4. 最后,`result`数组中存储的就是去重后的元素。 下面是一个示例的C语言代码,展示了如何调用一个数组去重函数: ```c #include <stdio.h> // 数组去重函数 int* removeDuplicates(int* arr, int n, int* resultSize) { int* result = (int*)malloc(n * sizeof(int)); // 分配内存空间 int count = 0; // 记录去重后的元素个数 for (int i = 0; i < n; i++) { int j; for (j = 0; j < count; j++) { if (arr[i] == result[j]) { break; // 当前元素已存在于result数组中,跳出内层循环 } } if (j == count) { result[count++] = arr[i]; // 当前元素不存在于result数组中,添加到result数组中 } } *resultSize = count; // 更新去重后的元素个数 return result; } int main() { int arr[] = {1, 2, 3, 2, 4, 1, 5}; int n = sizeof(arr) / sizeof(arr[0]); int resultSize; int* result = removeDuplicates(arr, n, &resultSize); printf("去重后的数组:"); for (int i = 0; i < resultSize; i++) { printf("%d ", result[i]); } free(result); // 释放内存空间 return 0; } ``` 运行上述代码,输出结果为: ``` 去重后的数组:1 2 3 4 5 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值