数组:

一 一维数组

1.1 一维数组的定义:

类型符 数组名[常量表达式];
int a[10];

说明:

1.数组的命名规则遵循标识符命名规则。

2.定义时需要指定元素的个数。方括号里的常量表达式表示元素的个数。

3.常量表达式中不能包含变量;如:int a[n];不合法,c语言不允许对数组的大小作动态的定义。

1.2 引用一维数组:

格式:
数组名[下标];
#include<stdio.h>
int main() {
#if(0)
//逆序输出一个数组的元素
#endif
int a[10],i;
for(int i = 0;i < 10;i++) {
a[i] = i;
}
for(i = 9;i > 0;i--) {
printf("%d ",a[i]);
}
printf("\n");
return 0;
}

1.3 一维数组的初始化:

1.在定义数组时对全部数组赋予初值;
eg: int a[10] = {0,1,2,3,4,5,6,7,8,9};
2.可以给数组中的一部分赋值
eg: int a[10] = {0,1,2,3,4};//系统会给后面未付赋值的空间赋值0.
3.如果对数组去不赋值可以不定义长度。
eg: int a[5] = {0,1,2,3,4};
int a[] = {0,1,2,3,4};
#include<stdio.h>
int main() {
#if(0)
//逆序输出一个数组的元素
int a[10],i;
for(int i = 0;i < 10;i++) {
a[i] = i;
}
for(i = 9;i > 0;i--) {
printf("%d ",a[i]);
}
printf("\n");
#endif #if(1)
//利数组求Fibonacci数列,前二十项
#endif
int i, fi[20] = {1,1};
for(i = 2;i < 20;i++) {
fi[i] = fi[i-2] + fi[i-1];
}
for(i = 0;i < 20;i++) {
if(i%5 == 0) {//每行5个数换行
printf("\n");
}
printf("%12d",fi[i]);
}
printf("\n"); return 0;
}
#include<stdio.h>
int main() {
#if(0)
//逆序输出一个数组的元素
int a[10],i;
for(int i = 0;i < 10;i++) {
a[i] = i;
}
for(i = 9;i > 0;i--) {
printf("%d ",a[i]);
}
printf("\n");
#endif #if(0)
//利数组求Fibonacci数列,前二十项
int i, fi[20] = {1,1};
for(i = 2;i < 20;i++) {
fi[i] = fi[i-2] + fi[i-1];
}
for(i = 0;i < 20;i++) {
if(i%5 == 0) {//每行5个数换行
printf("\n");
}
printf("%12d",fi[i]);
}
printf("\n");
#endif #if(1)
//利用冒泡法进行排序。
int a[10];
int i,j,k;
printf("请输入10个数字:\n");
for(i = 0;i < 10;i++) {
scanf("%d",&a[i]);
}
printf("\n");
for(i = 0;i < 9;i++) {
for(j = 0;j < 9-i;j++) {
if(a[j] > a[j+1]) {
k = a[j];
a[j] = a[j+1];
a[j+1] = k;
}
}
}
printf("数字的大小顺序是:\n");
for(i = 0;i < 10;i++) {
printf("%4d",a[i]);
}
printf("\n");
#endif return 0;
}

二 二维数组

2.1 二维数组定义

类型说明符 数组名[常量表达式][常量表达式];
eg:int [3][4];//三行四列的数组,形象的可容认为三行四列的矩阵
float [2][3];

说明:在C语言中,二维数组可以看成是特殊的一维数组,实质上在内存中是连续的地址存储。是线性存储的。几行几列是逻辑上的表示。

2.2 二维数组的引用

格式:
数组名[下标][下标];
a[2][3];

2.3 二维数组的初始化

1.分行给二维数组赋初值
eg: int a[3][4] = {{1,2,3,4},{2,3,4,6},{1,3,4,5}};
2.可以将所有的值放在一个打括弧里。和线性存储一致。这样可以对第一维的长度可以不写,第二维的长度必须写。
eg: 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.也可以对局部元素赋初值
eg: int a[3][4] = {{1},{0,5},{0,0,9,8}};
#if(0)
//二维数组练习
//1.一个两行三列的矩阵转换成三行两列的矩阵
int a[2][3] = {{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("a矩阵为:\n");
for(i = 0;i < 2;i++) {
for(j = 0;j < 3;j++) {
printf("%5d",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("%5d",b[i][j]);
}
printf("\n");
} #endif #if(1)
//有一个3*4的矩阵,求出矩阵中最大的一个数
int a[3][4] = {{23,4,-2,3},{4,45,9,-45},{31,67,45,0}};
int i,j,row,col,max;
max = a[0][0];
for(i = 0;i < 3;i++) {
for(j = 0;j < 4;j++) {
if(a[i][j] > max) {
max = a[i][j];
row = i;
col = j;
}
}
}
printf("最大的元素为:%d\n 第%d行\n 第%d列\n",max,row,col);
#endif return 0;
}

三 字符数组

3.1 定义字符数组

char c[10];//包含10个字符

3.2 字符数组的初始化

char c[12] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};

说明:字符数组必须初始化,如果提供的处置个数大于数组的个数则会出现语法错误,如果小于数组长度,系统会给最后一个自动补'\0';如果两者相等即可省略个数。 char c[] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};

二维字符数组初始化;

char diamond[5][5] = {{'','',''},{'','','','',''},{'','','','',''},{'','','','',''},{'','',''}}//代表一个菱形

3.3 字符数组的引用

#include<stdio.h>
int main() {
#if(1)
//利用字符二维数组输出一个菱形
char diamond[5][5] = {{' ',' ','*'},{' ','*',' ','*',' '},{'*',' ',' ',' ','*'},{' ','*',' ','*',' '},{' ',' ','*'}};//没有的字符有个空格
int i,j;
for(i = 0;i < 5;i++) {
for(j = 0;j < 5;j++) {
printf("%c",diamond[i][j]);
}
printf("\n");
} #endif return 0;
}

3.4 字符串和字符串结束的标志

在C语言中,字符串是作为字符数组来处理的。定义一个字符串就会利用一个一维数组来存放。字符中的字符是逐个放到数组中的,两者的长度是相同的。

为了测定字符串的实际长度,C语言规定了一个“字符串结束的标志”,其中有一个'\0',则'\0'前面的为有效长度。

字符串常量使字符数组初始化

char c[] = {"I love C/C++"};
or
char c[] = "I love C/C++";

而下面的并不等价

char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+'};

不等价

char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+','\0'};

说明:字符数组并不要求他的最后一个字符'\0',根据自己的需求定义。而系统会给字符串添加一个'\0',便于测定字符串的实际长度。由于字符串的处理方式是字符数组的形式,为了处理方式一致可对字符数组也认为的添加'\0',便于处理。

C_数组详解的更多相关文章

  1. 3.awk数组详解及企业实战案例

    awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...

  2. JavaScript进阶(十)Array 数组详解

    JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...

  3. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  4. “全栈2019”Java第三十一章:二维数组和多维数组详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第三十章:数组详解(下篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. “全栈2019”Java第二十九章:数组详解(中篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. “全栈2019”Java第二十八章:数组详解(上篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. Swift_数组详解

    Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...

  9. (转)awk数组详解及企业实战案例

    awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [root@nfs-server t ...

随机推荐

  1. Division Game UVA - 11859 Nim

    Code: #include<cstdio> #include<algorithm> using namespace std; #define maxn 10005 int n ...

  2. bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...

  3. python -迭代器与生成器 以及 iterable(可迭代对象)、yield语句

    我刚开始学习编程没多久,对于很多知识还完全不知道,而有些知道的也是一知半解,我想把学习到的知识记录下来,一是弥补记忆力差的毛病,二也是为了待以后知识能进一步理解透彻时再回来做一个补充. 参考链接: 完 ...

  4. VGA接口时序约束

    SF-VGA模块板载VGA显示器DA转换驱动芯片AVD7123,FPGA通过OUPLLN连接器驱动ADV7123芯片产生供给VGA显示器的色彩以及同步信号.SF-CY3核心模块与SF-VGA子模块连接 ...

  5. wcf rest系列文章

    http://www.cnblogs.com/artech/archive/2012/02/15/wcf-rest.html 需要注意的是,发布的服务,可以在web behavior中指定显示help ...

  6. Mysql Workbench初体验

    可以画图,建立表关系. 分类整理数据表. 可以直接导出sql语句. 可以导出png图片. 可以连接mysql数据库. 基本满足了各项需求. 这次初体验只是基本的功能,这个软件对于mysql还是很牛的.

  7. windows常用命令有哪些(整理)

    windows常用命令有哪些(整理) 一.总结 一句话总结:其实这个好学,只要先弄懂主干,清除主干,那么枝叶的添加逻辑就很清除了 这种多内容的,散乱的,弄清除主干效率就高了 1.windows命令行的 ...

  8. centos7 ssh免口令认证登录

    摘要:centos7, xshell, 公钥,  ssh ssh登录方式有口令认证登录和密钥认证登录 接下来本次介绍是ssh密钥登录方式 (1)产生公钥 (2)将公钥放置到centos7的(/root ...

  9. 原生ajax实现方式

    http://www.cnblogs.com/rubylouvre/archive/2013/01/08/2851051.html <!DOCTYPE html> <html lan ...

  10. selenium 窗口句柄之间的切换

    以前使用selenium时都是在单窗口的模式下,本次新增多窗口下的窗口之间切换 from selenium import webdriver from selenium.webdriver.commo ...