关于C语言的学习小结(6)——数组

导读

什么是数组?数组有什么用?有哪些数组?如何使用数组?🤔🤔🤔

数组的定义

数组是一组具有相同数据类型的数据的有序集合
用了一个数组名和下标来确定唯一数组中的元素
数组中的每一个元素都属于同一个数据类型

数组的作用

数组可以用来处理具有相同的数据类型,使用过程中需要保留原始数据的数据

数组的类型

一维数组

数组的定义:

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

常量表达式可以为数字可以为字符,但必须大于零
常量应大于零
应使用[]而非()

初始化

在定义数组是对数组元素赋予初值
将数组元素的初值依次放在一对花括号内
例如

int a[9]={1,2,3,4,5,6,7,8,9}

若输入的个数小于数组中元素个数,则其余元素为零
也可以不设置元素的个数,如下所示

int a[]={1,2,3,4,5,6,7,8,9}//与上式等价

赋予初值时个数不能超过总元素的个数

引用

只能引用数组中的某一元素,不能引用整个数组
引用形式:数组名 [下标]
下标为几就是数组中的第几个元素
下标可以说整型常量,整型变量,整形表达式
第一个的下标为0

输入输出

与循环相结合

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

冒泡法

每次将相邻两个比较,将较小的数排到前面
有n个元素就需要n-1次比较

int main()
{
int m[10],a,b,c;
for(a=0;a<10;a++);
  scanf("%d",&m[10]);//输入数组中的元素
printf("\n");
for(b=0;b<9;b++);//十个元素,进行九次循环
  for(a=0;a<9-b;a++);//每次循环进行9-b次比较
    if(m[a]>m[a+1]//进行比较
     {
      c=m[a]
      m[a]=m[a+1]
      m[a+1]=c
      }//替换
for(a=0;a<10;a++);
  printf("%d",a[i]);//输出
return 0;
}

二维数组

数组的定义:

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

一个方括号内不能写两个下标
元素个数必须是常量表达式,不能用变量
常量表达式为大于零的正整数

初始化

分行给二维数组赋予初值
例如

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

将所有数值放入一个花括号内

int a[3][2]={1,2,3,4,5,6}//与上式等价

可以对部分元素赋值,不过其余元素皆为0

int a[3][2]={{1},{2},{3}}//与上式等价

赋予初值时个数不能超过总元素的个数

引用

只能引用数组中的某一元素,不能引用整个数组
引用形式:数组名 [下标1][下标2]
下标为几就是数组中的第几行第几个元素
下标可以说整型常量,整型变量,整形表达式
下标从零开始

输入输出

与一维数组相似,但需要两个循环

输入
#include <stdio.h>
int main()
{int m[2][3],a,b;//a行下标,b列下标
for(a=0;a<2;a++);
   for(b=0;b<3;b++)
  scanf("%d",&m[a][b]);
return 0;
}
输出
#include <stdio.h>
int main()
{int m[2][3],a,b;//a行下标,b列下标
for(a=0;a<2;a++);
   for(b=0;b<3;b++)
  printf("%d",m[a][b]);
return 0;
}

字符数组

字符数组用于存放字符串,数组中的各元素为字符串中各字符

定义

char 数组名[常量表达式]

存放的数组应该小于等于常量表达式-1(因为最后还有一个结束符占一个位置)
故定义时元素数应+1

初始化

用单个字符对字符数组进行初始化

char a[5]={'g','o','o','d','\0'}

若输入的个数小于数组中元素个数,则其余元素为空字符(‘\0’)

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

char a[5]={"good"}
char a[5]="good"//省略{}
char a[]={"good"}//省略元素个数

输入输出

单个字符输入(用格式符%c或字符输入函数)
#include <stdio.h>
int main()
{int c[9],a;
for(a=0;a<9;a++);
  scanf("%c",&c[a]);
return 0;
}
单个字符输出(用格式符%c或字符输入函数)
#include <stdio.h>
int main()
{int c[9],a;
for(a=0;a<9;a++);
  printf("%c",c[a]);
return 0;
}
字符串整体或部分输入输出(用格式符%s)
char c[9];
scanf("%s",c)


以字符串的地址形式出现
不包括空格,\t,\n
输入空格使用gets函数
数组名前不需要&
用%s时,结束使用空格,跳格,回车

字符串处理函数

种类

puts输出字符串
gets输入字符串
(#include<stdio.h>)
strcat字符串连接
strcpy字符串复制
strcmp字符串比较
strlen字符串长度
strlwr将字符串中大写字母换成小写字母
strupr将字符串中小写字母换成大写字母
(#include<string.h>)

puts

形式: puts(字符数组)
作用:将一个字符串(以’\0’结束)输出

gets

形式:gets(字符数组)
作用:可以输出带空格的字符串(scanf的%s格式不行)

strcat

形式:strcat(字符数组1,字符数组2)
作用:将字符串2接到字符串1后面,并将结果放入字符串1中。

strcpy

形式:strcpy(字符数组1,字符串2)
作用:将字符串2,复制到字符数组1中去
注:不能用赋值运算符(=),字符数组1长度应大于字符串2,复制时连同字符串后面的‘\0’一起复制

strcmp

形式:strcmp(字符串1,字符串2)
作用:按照字符的ASCII码值比较
1=2 结果为零
1>2结果为正
1<2结果为负

strlen

形式:strlen(字符数组)
作用:测试字符串长度(不包括’\0’)

strlwr

形式:strlwr(字符串)
作用:将字符串中大写字母换成小写字母

strupr

形式:strupr(字符串)
作用:将字符串中小写字母换成大写字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值