数组个人总结

数组

数组是一组有序数字的集合

数组中的每一个元素都属于同一个数据类型(数组元素类型称为数组基类型)

用一个数组名和下标来唯一确定数组中的元素

数组定义

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

int a[2]={1,2}

类型说明符为数组的类型

数组命名规则遵守标识符命名规则

常量表达式不能包含变量(即不能有int n=1; a[n] )

常量表达式中指明元素的个数必须大于0 (数组成员为数组元素)

下标为数组维度 比如 a[2][3] 有两个下标为二维数组

数组定义时,为数组元素赋初值称为数组初始化

例: a[4]={1,3,5,7} 元素长度可以不定义

当给元素赋值时,不为其赋值的会自动默认赋值为0

数组引用

数组名[下标]

例 引用的时候 a[3]为序号为3的元素,即第4个(从0开始,到n-1结束)

ps:这是引用的,不是定义

一维数组的输入输出

数组的运用离不开循环

输入

#include <stdio.h>
int main()
{
    int a[2],i;
    for(i=0;i<2;i++)
    {
        scanf("%d",&a[i]);
    }
    return 0;   
}

输出

#include <stdio.h>
int main()
{
    int a[2]={1,2},i;
    for(i=0;i<2;i++)
    {
        printf("%d",a[i]);
    }
    return 0;   
}

二维数组

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

常量表达式1代表行数 常量表达式2代表列数

例 int a[1] [2]表示为

a[0]-----a[0] [0],a[0] [1]

a[1]-----a[1] [0],a[1] [1]

a[2]-----a[2] [0],a[2] [1]

二维数组中各个元素是连续存放的,不是二维的,是线性的,只是在逻辑上的概念用矩阵形式

二维数组的初始化

定义时,一维数组的长度可以省略,但二维长度不能省略

(1)赋值时可以分行赋值

例:int a[3] [2]={{1,2},{3,4},{5,6}};

(2)赋值时可以写在一个花括号内,会自动按顺序为各元素赋值

例: int a[3] [2]={1,2,3,4,5,6};

引用时,数组名不能进行赋值

二维数组的输入输出

同一维数组一样,但需要采用双重循环的方式

输入

#include <stdio.h>
int main()
{
    int a[2][2],i,j;
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
        {
            scanf("%2d",&a[i][j]);
        }
    }
    return 0;   
}

输出

#include <stdio.h>
int main()
{
    int a[2][2]={1,2,3,4},i,j;
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
        {
            printf("%2d",a[i][j]);
        }
    }
    return 0;   
}

二维数组的运用

行列的转换 关键点在于 双重循环 和 转换

转换行列其实为b[j] [i] = a[i] [j]

#include <stdio.h>
int main()
{
	int a[2][3] = { {1,2,3},{4,5,6} }, b[3][2], i, j;
	printf("队列a=\n");
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%4d", a[i][j]);
			b[j][i] = a[i][j];			
		}
		printf("\n");
	}
	printf("队列b=\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 2; j++)
		{
			printf("%4d", b[i][j]);
		}
		printf("\n");
	}
	return 0;
}

字符数组

用于存放字符数据的数组

c语言用字符数组用来存放字符串,字符数组中的各元素依次存放字符串的各字符

格式:char c[常量表达式]

字符串实际占有单元个数等于字符串长度+1 (最后一个结束符 \0 需要占用一个元素)

字符数组初始化

(1)用单个字符对字符数组初始化

例 char c[4]={‘c’,’ ',‘p’}

缺点:1.不进行初始化,数组中各元素会无法预料

2.花括号初值大于数组长度,则出现语法错误

3.如果初值个数小于数组长度,则后面的元素会自动被赋值为空(即\0)

4.预定的数组长度与初值个数一样时,系统会自动省略数组长度,根据初值个数来自动确定数组长度

(2)用字符串常量对字符数组初始化

例 char str[6]={“CHINA”}

1.可以省略花扩号

2.可以省略长度值

ps:字符数组利用结束符\0来结束循环

字符数组的输入输出

和前面一样,采用循环方式

不同的点是将%d改成%c,&d改成&c

所以不提了

字符数组整体或部分输入输出

char str[6];

scanf(“%s”,str);

ps:输入输出必须以字符串地址形式,也可以是字符串常量“…”,输入时不能输入 “空格” “\t” “\n”,如果需要输入空格则需要gets函数,输入数组名前不加&

字符串处理函数

puts 输出字符串

puts(字符数组)

gets 输入字符串

gets(字符数组) --可以输入带空格的字符串

加入#include <string,h>后使用以下函数

strcat 字符串连接

strcat(字符数组1,字符数组2)

将字符数组2连接到字符数组1后

#include <stdio.h>
#include <string.h>
int main()
{
    char str1[30]="hello ";
    char str2[30]="world";
        printf("%s",strcat(str1,str2));
}
strcpy 字符串复制

strcpy(字符数组1,字符串2)

ps:不能使用赋值

字符数组1长度不能小于字符串2长度

复制时同时复制\0

strcmp 字符串比较

strcmp(字符串1,字符串2)

比较字符串1和2

结果:字符串1=字符串时 函数值为0

字符串1<字符串2 函数为一负整数

字符串1>字符串2 函数为一正整数

strlen 字符串长度

strlen(字符数组)

测试字符串长度,但不包括\0

char str[10]="apple"
    printf("%d",strlen(str));

结果为5

strlwr 将字符串中大写字母换成小写字母
strupr 将字符串中小写字母换成大写字母

感谢收看笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值