C语言第6章:数组

6-1数组初体验

C语言中的数组初始化是有三种形式的,分别是:

1、 数据类型 数组名称[长度n] = {元素1,元素2…元素n};

2、 数据类型 数组名称[] = {元素1,元素2…元素n};

3、 数据类型 数组名称[长度n]; 数组名称[0] = 元素1; 数组名称[1] = 元素2; 数组名称[n-1] = 元素n;

注意:
在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。


6-4数组作为函数参数

int arr1[] = {10,41,3,12,22};
int arr2[] = {1,2,3,4,5};
replaceMax(arr1,arr2[0]); //将数组arr1和数组arr2的第一个元素传入函数中


6-5数组的应用(一)

冒泡排序

#include <stdio.h>
int main()
{
    double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};
    int i,j;
    printf("\n************排队前*************\n");
    for(i=0;i<10;i++)
    {
		  printf("%.2f, ", arr[i]);  //%.2f表示小数点后精确到两位
    }
    
    for(i=8; i>=0; i--)
    {
        for(j=0;j<=i;j++)
        {
            if(arr[j]>arr[j+1])      //当前面的数比后面的数大时
            {
                double temp;    //定义临时变量temp
                temp = arr[j];     //将前面的数赋值给temp
                arr[j] = arr[j+1];             //前后之数颠倒位置
                arr[j+1] = temp;              //将较大的数放在后面    
            }                 
        }                
    }
    
    printf("\n************排队后*************\n");
    for(i=0;i<10;i++)
    {
            printf("%.2f, ", arr[i]);  //%.2f表示小数点后精确到两位     
    }
    return 0;    
}


6-7字符串与数组

使用数组来定义我们所要的字符串。一般有以下两种格式:

1、char 字符串名称[长度] = “字符串值”;

2、char 字符串名称[长度] = {‘字符1’,‘字符2’,…,‘字符n’,’\0’};

注意:

1、[]中的长度是可以省略不写的;

2、采用第2种方式的时候最后一个元素必须是’\0’,’\0’表示字符串的结束标志;

3、采用第2种方式的时候在数组中不能写中文。

在输出字符串的时候要使用:printf(“%s”,字符数组名字);或者puts(字符数组名字);。例如:
在这里插入图片描述
运行结果:
在这里插入图片描述


6-8字符串函数

常用的字符串函数如下:
在这里插入图片描述
使用字符串函数注意以下事项:

1、strlen()获取字符串的长度,在字符串长度中是不包括‘\0’而且汉字和字母的长度是不一样的。比如:
在这里插入图片描述
2、strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小,例如:
在这里插入图片描述
3、strcpy()拷贝之后会覆盖原来字符串且不能对字符串常量进行拷贝,比如:
在这里插入图片描述
4、strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串,如:
在这里插入图片描述


6-9多维数组

多维数组的初始化与一维数组的初始化类似也是分两种:

1、数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n] = {{值1,…,值n},{值1,…,值n},…,{值1,…,值n}};

2、数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n]; 数组名称[下标1][下标2]…[下标n] = 值;

多维数组初始化要注意以下事项:

1、采用第种始化时数组声明必须指定列的维数。因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数;

2、采用第种初始化时数组声明必须同时指定行和列的维数

注:
二维数组中第二个[ ]里的为列数。


6-11多维数组的遍历

判断二维n*n数组下标是否为对角线元素:

 if((i+j)%(n-1)==0)
发布了30 篇原创文章 · 获赞 36 · 访问量 698

猜你喜欢

转载自blog.csdn.net/qq_42745340/article/details/103547942