数组

作者: 王执姬 | 来源:发表于2018-05-09 20:37 被阅读0次

数组:组织和处理一批同类型数据。

一维数组

一维数组的定义和初始化

元素类型名 数组名[元素数] ={元素的初值列表}

int  a[10];//整形数组a有十个元素,下标范围为0~9
int  a[10]={1,2,3,4,5,6,7,8,9,10};//定义一个数组a并给每一个元素赋初始值
int  a[10]={1,2,3,4,5};//定义一个数组a并给只给前面部分元素赋初始值
int  n[]={1,2,3,4,5};//定义一个数组n,方括号中的元素数由列表中全部元素的个数确定
int  n[4]={1,2,3,4,5};//若初值列表中的初值个数多于元素数,则系统编译出错

注:[]内为元素数,即数组长度。
C语言中不允许用变量来定义元素数。
C语言规定,元素下标一律从零开始,升序编排。

一维数组元素的引用

数组名[下标]

int  a[10]={1,2,3,4,5,6,7,8,9,10};//定义一个数组a
d[5]=d[0]+d[3];//赋值后d[5]的值为5
d[0]=d[2-d[3]];//下标2-d[3]=-2,数组越界

注:C语言中一般不做数组越界检查,但越界往往会产生意想不到的结果

一维数组的应用举例

将任意一个十进制数转化成二进制数并输出。

#include<stdio.h>
main
{
  int i=0,n,d[40];
  scanf("%d",&n);
  while(n>0)
  {
    d[i++]=n%2;//整除2求余
    n=n/2;//整除2求商
  }
  for(i--;i>=0;i--)
    printf("%1d",d[i]);
  printf("\n");
}

问题:受之前编的一些程序的影响(比如打印321,则是3*100+2*10+1),没有想通如何打印二进制数的0和1
解决:把数组单个打印出来和一起打印出来看起来没什么区别。

二维数组

二维数组的定义和初始化

元素类型名 数组名[行数][列数] ={元素的初值列表}

int a[2][3]={1,2,3,4,5,6};//定义一个两行三列的数组
int b[3][3]={1,2,3,4,5,6};//后面3个元素默认初始值为0
int b[3][4]={{1,2},{3},{4}};//给部分元素赋值

二维数组元素的引用

数组名[行下标][列下标]

int a[2][3]={{1,2,3},{4,5,6}};//定义一个数组a
a[0][2]=a[1][1]+1;//数组变为 a[2][3]={{1,2,6},{4,5,6}};

注:数组元素中的每个下标都一律从0开始升序编排,最大小标分别等于数组定义的行数减一和列数减一。
二维数组一般通过二重循环改变行下标和列下标实现对数组元素的逐个访问。

数组的定义和储存可以拓展到三维数组甚至n维数组

字符数组

字符数组的定义和引用

定义: char 数组名[元素数]={元素初值列表}

char a[8]={'G','o','o','d'};
char x[8]={"I am a student."};//定义字符串常量的方法1
char x[8]="I am a student.";//定义字符串常量的方法2

注:
如果元素初值列表元素数小于定义元素数,则后面自动补全ASCII码为0的'\0'
如果元素初值列表元素数大于定义元素数,则编译器报错。

引用:数组名[元素数]

与一般类型的数组一样,除了函数调用语句外,其他语句不能整体引用字符数组。

字符数组的输入与输出
1.用格式符"%c"逐个输入输出字符
2.用格式符"%s"整体输入字符串

char c[20];
scanf("%s",c);//数组名前不需要加字符串&

3.用格式符"%s"整体输出字符数组

char c[20]={"How are you"};
printf("%s?",c);

只有字符数组可以整体输入或输出,其它数组都不行

字符串处理函数

  • gets(字符数组);
    字符串整行输入函数
char str[20];
gets(str);
/*
运行时在键盘输入:
How are you<回车>
结果将包含11个有效字符和'\0'字符供12个存入str
*/
  • puts(字符串);
    字符串整行输入函数
char str[]={"Hello !\nHow are you?"};
puts(str);
puts("Welcome to you!");
/*
输出:
Hello !
How are you?
Welcome to you!
*/
  • strcat(字符数组,字符串);
    将字符串连接到数组中的串后面
char s[20]="You are a ";
strcat(s,"worker.");
puts(s);
/*
输出
You are a worker.
*/
  • strcpy(字符数组,字符串);
    复制字符串到数组
char s[20];
strcpy(s,"Hello !");
puts(s);
/*
输出:
Hello !
*/
  • strcmp(字符串1,字符串2);
    两个字符串比较,返回比较结果
    对字符串1和字符串2从左到右按其ASCII码比较,遇到'\0'或字符值不相等结束。
    两字符串值相等返回0,不相等且字符串1值大返回正整数,否则返回负整数。
  • strlen(字符串);
    测字符串长度,返回字符串有效长度,不包括'\0'
char s[20]={"12345"};
strlen(s);
/*
strlen(s)长度为5
strlen("How are you?")长度为13
*/
  • strlwr(字符串);
    将字符串大写字母转化为小写
  • strupr(字符串);
    将字符串小写字母转化为大写

相关文章

  • 数组

    数组数组数组数组数组数组数组数组数组

  • JavaScript - 5.数组<增删改查>

    数组 Array 数组 - 增 数组 - 删 / 改 数组 - 查 数组 - 自动 toString() 数组 -...

  • PHP数组使用

    数组定义 数组增、删、改 数组查询 数组排序 数组合并、分割 数组比较、去重复 数组长度 数组遍历 数组转换 其他...

  • 》》》PHP初入---(三)

    数组定义 1.索引数组:数组下标是整型的 声明数组: 访问数组: count(数组)--获取数组长度 查看数组所有...

  • JavaScript中数组的常用操作

    数组的遍历 数组的映射 数组的简化 数组的连接 获取数组的片段 数组的拷贝 查找数组 数组去重

  • JavaSE之数组

    六、数组 目录:数组概述、数组声明创建、数组使用、多维数组、Array类、稀疏数组 1.什么是数组 数组的定义:数...

  • Shell数组、关联数组

    数组 定义数组 获取数组 关联数组 定义关联数组 获取关联数组

  • 学习Java第五天

    数组是多个数据的集合 数组的语法 数组元素类型【】 数组名; 多维数组: 数组元素类型【】【】 数组名; 多维数组...

  • php基础精粹

    PHP php数组 php数组之索引数组初始化 PHP数组之索引数组赋值 PHP数组之访问索引数组内容 PHP数组...

  • C语言的惯用集

    数组部分 数组部分 清空数组a 把数据读进数组a 对数组a求和

网友评论

      本文标题:数组

      本文链接:https://www.haomeiwen.com/subject/pyeorftx.html