第5章 C语言数组
更新时间:2023-09-02 04:33:01 阅读量: 教育文库 文档下载
C语言数组,即教程
第5章 数 组 章5.1 一维数组 5.2 二维数组 5.3 字符数组
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
int a,b; int c[10]; 都是变量。 则 c[0],c[1],…,c[9]都是变量。 都是变量 5.1.1 一维数组的定义 数组名[元素个数 元素个数]; 类型标识符 数组名 元素个数 ; 例如: 例如: char str[20]; ; 数组名为 str,有20个元素 , 个元素: 个元素 str[0],str[l],str[2],…….,str[19] , , ,2011-6-5 计算机程序设计基础(C) 2
5.1 一维数组
C语言数组,即教程
5.1.2 一维数组的存储形式对于 int a[10]; ; 编译系统为数组a分配 编译系统为数组 分配10*sizeof(int) 个字 分配 节的存储区域。 节的存储区域。
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
5.1.3 一维数组的初始化和 int b1=0, s=0; 类似,有 类似, int a[10] ={0, l,2,3,4,5,6,7,8,9} ; (1) 全部赋初值,可不指定长度,如 全部赋初值,可不指定长度, int a[ ] ={0, l,2,3,4,5,6,7,8,9} ; (2) 部分赋初值,长度不能省略,如 部分赋初值,长度不能省略, int a[10] ={1,2,3} ; char b[5] ={‘+’,’-’} ; ={‘+’,’(3) 初值不能多于数组长度,如 初值不能多于数组长度, int a[3]={1,2,3,4} 是错误的。 是错误的。2011-6-5 计算机程序设计基础(C) 4
C语言数组,即教程
5.1.4 一维数组的引用 数组名[下标 下标] 数组名 下标 下标可以是整型表达式 整型表达式。 下标可以是整型表达式。 例如: 例如 int a[10]; a[0]=5; a[1]=2*a[3/4]; a[5]=a[3%2]+a[6-6];
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
5.1.5 一维数组应用举例 用数组求Fibonacci数列的前 项。 数列的前40项 例5.1 用数组求 数列的前 1,1,2,3,5,8,13,21,…… , , , , , , , , f1=1, f2=1, fn=fn-1+fn-2 (n>2) #include <stdio.h> void main() { int i; long f [40]={1,1}; for(i=2;i<40;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<40;i++) { if(i%5==0) printf("\n"); printf("%10ld",f[i]); } }2011-6-5 计算机程序设计基础(C) 6
C语言数组,即教程
个数从小到大排序。 【例5.2】用选择排序法对 个数从小到大排序。 】用选择排序法对N个数从小到大排序 分析: 分析:设 N=5a[0] a[1] a[2] a[3] a[4]
原序列: 原序列: 遍选择: 第1遍选择: 遍选择 遍选择: 第2遍选择: 遍选择 3遍选择 遍选择: 第3遍选择: 遍选择: 第4遍选择: 遍选择
8 1 1 1 1
6 6 2 2 2
3 3 3 3 3
1 8 8 8 6
2 2 6 6 8
i=0, i=1, i=2, i=3,
k=2, j=2 k=0,j=1 , k=1, j=3 j=4 k=3, j=1 j=3 k=1,j=2 , k=4, j=3 k=2, j=2 j=4 k=2, j=4 j=3 k=4, j=4 k=3, j=4
for ( i=0; i<4; i++ ) i=0; i<4; { k=i; for( j=i+1; j<5; j++ ) if( a[k]>a[j] ) k=j ; j=i+1; j<5; t=a[k]; a[k]=a[i]; a[i]=t; }2011-6-5 计算机程序设计基础(C) 7
C语言数组,即教程
#include <stdio.h> #define N 8 void main() { float a[N],t; int i,j,k; for(i=0;i<N;i++) scanf("%f",&a[i]); for(i=0;i<N-1;i++) { k=i; for(j=i+1;j<N;j++) if(a[j]<a[k]) k=j; t=a[k]; a[k]=a[i]; a[i]=t; } for(i=0;i<N;i++) printf("
%.2f ",a[i]); } 2011-6-5 计算机程序设计基础(C)
C语言数组,即教程
【例5.3】用冒泡排序法对n个数从小到大排序。 】用冒泡排序法对 个数从小到大排序。 个数从小到大排序 个数, 对5个数,从小到大排序: 个数 从小到大排序: 第一遍选择: 第一遍选择: 8 6 3 1 2 第一次 6 8 3 1 2 第二次 6 3 8 1 2 第三次 N=5 6 3 1 2 8 结果
6 3 1 8 2 第四次
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
6 3 1 3 1 2 1 2 3 2 6 6 8 8 8 第一遍 第二遍 第三遍
1 2 3 6 8 第四遍
for(i=0;i<Nfor(i=0;i<N-1;i++) for(j=0;j<Nfor(j=0;j<N-1-i;j++) if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1] ; a[j+1]=t; }2011-6-5 计算机程序设计基础(C) 10
C语言数组,即教程
#include <stdio.h> #define N 8 void main() { float a[N] ,t; int i,j,k; printf("input %d numbers:\n",N); for(i=0;i<N;i++) scanf("%f",&a[i]); for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1] ; a[j+1]=t;} printf("the sorted numbers:\n"); for(i=0;i<N;i++) printf("%.2f ",a[i]); }2011-6-5 计算机程序设计基础(C) 11
C语言数组,即教程
5.2 二维数组 5.2.1 二维数组的定义 数组名[常量表达式 常量表达式]; 常量表达式][常量表达式 类型标识符 数组名 常量表达式 常量表达式 ; 例如: 例如: float a[3][4]; ; 共有12个元素, 共有 个元素,即: 个元素 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]2011-6-5 计算机程序设计基础(C) 12
C语言数组,即教程
5.2.2 二维数组的存储形式 二维数组在内存中按行存放 按行存放。 二维数组在内存中按行存放。 a[0][0] int a[3][2]; a[0][0] a[1][0] a[2][0] a[0][1] a[1][1] a[2][1] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]2011-6-5 计算机程序设计基础(C) 13
C语言数组,即教程
5.2.3 二维数组的初始化(1)全部元素赋初值 全部元素赋初值int a[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; ;
int a[3][4]={ l,2,3,4,5,6,7,8,9,10, 11,12}; ; (2) 部分元素赋初值。 部分元素赋初值。 int a[3][4]={{l},{5},{9}}; , , ; int a[3][4]={1,5,9,4}; (3)一维的长度可不指定。 一维的长度可不指定。 一维的长度可不指定 int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; = ;
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
5.2.4 二维数组的引用数组名[下标 下标 数组名 下标][下标 下标 下标] 如: int x[2][3]; x[0][0]=3; x[1][2]=x[0][0]+5; x[1][2] ++;
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
5.2.5 二维数组应用举例 的整数矩阵, 【例5.5】 输入一个 ×4的整数矩阵,分别求 】 输入一个4× 的整数矩阵 两对角线上元素之和。 两对角线上元素之和。m[0][0] m[1][0] m[2][0] m[3][0] m[0][1] m[1][1] m[2][1] m[3][1] m[0][2] m[1][2] m[2][2] m[3][2] m[0][3] m[1][3] m[2][3] m[3][3]
分析: 分析:当 i==j 时, m[i][j]在主对角线上 在主对角线上 当 i+j==3 时,m[i][j]在次对角线上 在次对角线上2011-6-5 计算机程序设计基础(C) 16
C语言数组,即教程
m[0][0] m[0][1]
m[0][2] m[0][3] #define N 4 #include<stdio.h> m[1][0] m[1][1] m[1][2] m[1][3] void main() m[2][0] m[2][1] m[2][2] m[2][3] {int m[N][N]; m[3][0] m[3][1] m[3][2] m[3][3] int i, j, r1=0, r2=0; 分析: 分析:当 i=j 时, m[i][j]在主对角线上 在主对角线上 for( i=0;i<N;i++) 当 i+j=3 时,m[i][j]在次对角线上 在次对角线上 { printf("one line:"); for(j=0;j<N;j++) { scanf("%d",&m[i][j]); if(i==j) r1+=m[i][j]; if(i+j==N-1) r2+=m[i][j]; } } printf("the result: %d, %d\n",r1,r2); }
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
5.3 字符数组 5.3.1 字符数组的定义char a[10]; a[0]=’C’; a[1]=’H’; a[2]=’I’; a[3]=’N’; a[4]=’A’; a[5]=’\0’; 在内存中的状态如下: 在内存中的状态如下:
2011-6-5
计算机程序设计基础(C)
C语言数组,即教程
5.3.2 字符数组的初始化char c[7]={‘a’, ‘ ’ ,‘b’ ,‘o’, ‘y’ }; = ; a b o y \0 \0
又如 char c[ ]={‘a’, ‘ ’ , ‘b’,’o’,’y’,’\0’}; char c[ ]={“a boy”}; char c[ ]= “a boy”; 三者等价。 三者等价。 a2011-6-5
b
o
y
\019
计算机程序设计基础(C)
正在阅读:
第5章 C语言数组09-02
计算机图形学DDA画线算法及具体程序实现05-14
浙江选考2019届高考历史学业水平考试专题十九中外历史人物评说第46讲无产阶级革命家和杰出的科学家10-30
关于商业银行的案例分析问题及答案05-20
《工程估价》教学大纲03-29
老人的期盼散文11-21
2020版高考历史新探究大一轮复习第一单元1第1讲夏商制度与西周封建课后达标检测含2019届新题含解析岳麓版11-22
机房动力环境监控系统方案 - 图文06-24
定积分练习参考答案05-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数组
- 语言
- 第4章 电子表格Excel 2003习题答案
- 《中国中铁股份有限公司工程项目物资(集中采购)招标管理办法
- 烟草行业市场调查报告
- 一位德国市长和中国某市委书记的对话
- 2010年中药制剂分析自考试题及答案
- 机械设计基础(-第五版)讲义13
- 个人岗位廉政风险点及防控措施一览表
- 决策树例题分析
- 雪佛兰C类大篷车路演方案
- 2017年春季学期新北师大版二年级语文下册3、丁丁冬冬学识字(一)教学设计3
- 苏教版小学语文五年级上册复习知识点
- 紧急状态下护理人力资源调配方案
- GMAT语法题OG详解103,140
- 浅谈利用地下空间发展城市综合管廊
- 【提分必做】推荐(部编人教版)数学四年级(下册(第二学期)):鸡兔同笼
- 高中语文必修三所有课字词总结(注音)
- 中国复合肥市场竞争调研与未来前景研究报告(2014-2019)
- 某某花园市场推广提案
- 高考语文现代文阅读答题技巧要点
- 西方经济学经典著作