版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计?输入十个整数,依次输出这十个数及最大值。?输入十个整数,依次输出这十个数及最大值。定义变量n1,n2n10,max输入n1,n2n10的值给max赋值 max=n1max=n2maxn2YNmax=n10maxn10YN输出n1,n2n10,max?输入十个整数,依次输出这十个数及最大值。?输入十个整数,依次输出这十个数及最大值。main() int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,max; scanf(%d,&n1); scanf(%d,&n2); scanf(%d,&n3); scanf(%d,&n4); scanf(%d,&n5); scan
2、f(%d,&n6); scanf(%d,&n7); scanf(%d,&n8); scanf(%d,&n9); scanf(%d,&n10); max=n1; if (maxn2) max=n2; if (maxn3) max=n3; if (maxn4) max=n4; if (maxn5) max=n5; if (maxn6) max=n6; if (maxn7) max=n7; if (maxn8) max=n8; if (maxn9) max=n9; if (maxn10) max=n10; printf(%4d,n1); printf(%4d,n2); printf(%4d,n3);
3、 printf(%4d,n4); printf(%4d,n5); printf(n); printf(%4d,n6); printf(%4d,n7); printf(%4d,n8); printf(%4d,n9); printf(%4d,n10); printf(n); printf(max=%dn,max);对上例进行分析:对上例进行分析:变量定义太麻烦,要是求变量定义太麻烦,要是求100100个数的最大值?个数的最大值?变量有共同点:数据类型相同、变量名相似变量有共同点:数据类型相同、变量名相似如果有这样的一组变量:名如果有这样的一组变量:名+ +下标下标 ,就方便多了,就方便多了程序中类
4、似的语句重复出现多次程序中类似的语句重复出现多次能使用循环结构该多好能使用循环结构该多好数组数组+ +循环结构循环结构数组数组 一维数组一维数组 用一组具有相同名字、不同下标的用一组具有相同名字、不同下标的下标变量下标变量来代表一组具来代表一组具有相同性质的一组数据,这就是数组。有相同性质的一组数据,这就是数组。 数组是同类型数据的集合,集合中的每个数据称为数组是同类型数据的集合,集合中的每个数据称为数组元数组元素或下标变量素或下标变量,数组元素的,数组元素的类型相同、个数确定。类型相同、个数确定。 下标变量中如果只用一个下标,则称为一维数组,用两个下标变量中如果只用一个下标,则称为一维数组,
5、用两个下标则称之为二维数组,用三个下标称之为三维数组,依下标则称之为二维数组,用三个下标称之为三维数组,依此类推。此类推。 第六单元第六单元 数数 组组1. Introduction2. Strategy3. Challengers Forward4. Conclusion 学学 习习 内内 容容 6.1 一维数组(一维数组(重点重点) 6.2 二维数组(二维数组(重点重点) 6.3 字符数组与字符串(字符数组与字符串(难点难点) 6.4 程序举例程序举例本章要点本章要点 什么是数组什么是数组? ? 为什么要使用数组为什么要使用数组? ? 如何定义数组如何定义数组? ? 如何引用数组元素如何引
6、用数组元素? ? 二维数组的元素在内存中按什么方式存放二维数组的元素在内存中按什么方式存放? ? 什么是字符串什么是字符串? ? 字符串结束符的作用是什么字符串结束符的作用是什么? ? 如何实现字符串的存储和操作,包括字符串的输入和输如何实现字符串的存储和操作,包括字符串的输入和输出出? ? 怎样理解怎样理解C C语言将字符串作为一个特殊的一维字符数组语言将字符串作为一个特殊的一维字符数组? ?一维数组一维数组 6.16.1.1 6.1.1 一维数组的定义一维数组的定义 数据类型数据类型 数组名数组名 长度长度 ; 例如:例如: int a5;int a5; 定义了一个一维整型数组,数组名为定
7、义了一个一维整型数组,数组名为a a,有,有5 5个数组个数组元素。这元素。这5 5 个元素分别为个元素分别为: : a0 a0、a1a1、a2a2、a3a3、a4a4一维数组是数组中最简单的一维数组是数组中最简单的它的元素只需要用数组名加一个下标,就能惟它的元素只需要用数组名加一个下标,就能惟一确定一确定要使用数组,必须在程序中先定义数组要使用数组,必须在程序中先定义数组一维数组的定义一维数组的定义6.1.1(1) (1) 数组名用合法的标识符命名,与变量的命名方法相同。数组名用合法的标识符命名,与变量的命名方法相同。(2) (2) 方括号中的长度表示数组的长度,也即数组元素的个数。方括号中
8、的长度表示数组的长度,也即数组元素的个数。(3) (3) 数组元素的序号是从数组元素的序号是从0 0开始。开始。如上面如上面a5a5中的中的5 5表示表示a a数组有数组有5 5个元素,下标从个元素,下标从0 0开始,注意不能开始,注意不能使用数组元素使用数组元素a5a5。【注意注意】(4) C(4) C语言语言不允许对数组的大小作动态定义不允许对数组的大小作动态定义,即定义行中的,即定义行中的数组长度可以包括常量和符号常量,但不能包括变量。数组长度可以包括常量和符号常量,但不能包括变量。错误的定义:错误的定义:int n=10; int n=10; int an; int an; / /*
9、*因为因为n n为变量为变量* */ /正确的定义:正确的定义: #define N 10 #define N 10 main()main() int aN; int aN;/ /* *N N为符号常量为符号常量* */ / 一维数组的定义一维数组的定义6.1.1(5) (5) 数组元素具有定义行中指定的数据类型。它可以是任数组元素具有定义行中指定的数据类型。它可以是任一种基本数据类型或构造数据类型。一种基本数据类型或构造数据类型。同一数组中所有元素的同一数组中所有元素的数据类型都是相同的。数据类型都是相同的。下面是常见的一维数组的定义:下面是常见的一维数组的定义:int a10;int a1
10、0; / /* *定义整型数组定义整型数组a a,它有,它有1010个元素个元素* */ /char str20;char str20; / /* *定义字符型数组定义字符型数组strstr,它有,它有2020个元素个元素* */ / float b5,c10; float b5,c10; / /* *定义实型数组定义实型数组b b和和c c,b b有有5 5个元素,个元素,c c有有1010个元素个元素* */ / 一维数组的定义一维数组的定义6.1.1for(i = 0; i n; i+) printf(%d , ai);数组:数组:相同类型相同类型数据的数据的有序集合有序集合,在内存中连
11、续存放。,在内存中连续存放。 由数组名和下标惟一地确定每个数组元素由数组名和下标惟一地确定每个数组元素 每个元素都属于同一类型每个元素都属于同一类型优点:表述简洁,可读性高;便于使用循环结构优点:表述简洁,可读性高;便于使用循环结构0 1 2 9 a0 a1 a9a3 5 2 8 1 22 89 0 -1 76.1.2一维数组元素的引用一维数组元素的引用 数组在定义之后即可引用其中的数组元素,其引用形式为:数组在定义之后即可引用其中的数组元素,其引用形式为: 数组名数组名 下标下标 下标只能为整型常量或整型表达式。如果为小数,下标只能为整型常量或整型表达式。如果为小数,C C语言编语言编译时将
12、自动取整。译时将自动取整。C C语言中只能逐个引用数组元素,而不能一次语言中只能逐个引用数组元素,而不能一次引用整个数组。引用整个数组。 如:如: a0=a5+a7-a2*3 合法合法 int n=5,a10; an=20;合法合法将数字将数字0 0-9 9装入一个整型数组装入一个整型数组a a中,并输出中,并输出【例例6.16.1】解题思路:解题思路:定义一个长度为定义一个长度为1010的数组,数组定义为整型的数组,数组定义为整型要赋的值是从要赋的值是从0 0到到9 9,可以用循环来赋值,可以用循环来赋值用循环按下标从用循环按下标从小小到到大大输出这输出这1010个元素个元素将数字将数字0
13、0-9 9装入一个整型数组装入一个整型数组a a中,并输出中,并输出#includemain() int a10; int i; for(i=0;i10;i+) ai=i; printf(%d,ai); 【例例6.16.1】#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 使使a0a9的值为的值为09例例: 对对1010个数组元素依次赋值为个数组元素依次赋值为0,1,2,3,4,5,6,7,8,90,1,2,3,4,5,6,7,8,9,要求按,要求按逆序逆序输出。输出。#
14、include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 先输出先输出a9,最,最后输出后输出a00123456789a0a1a2a3a4a5a6a7a8a96.1.3一维数组的存储和初始化一维数组的存储和初始化 1.1.一维数组的存储:一维数组的存储:系统为数组按照其类型和元素个数开辟一系统为数组按照其类型和元素个数开辟一组连续的存储单元,每个存储单元存放一个数组元素,组连续的存储单元,每个存储单元存放一个数组元素,该连续该连续存储单元的首地址由数组名表示。存储单元的首地址由数组
15、名表示。2.2.有两种方式对数组元素赋值:有两种方式对数组元素赋值:(1 1)数组定义时给数组元素赋以初值,这两种方式称为)数组定义时给数组元素赋以初值,这两种方式称为数组的数组的初始化;初始化;(2 2)在程序执行部分用赋值语句或输入语句给数组元素赋值。)在程序执行部分用赋值语句或输入语句给数组元素赋值。一维数组的存储和初始化一维数组的存储和初始化 6.1.3对一维数组的初始化通常可以采用以下方式进行对一维数组的初始化通常可以采用以下方式进行: : (1) (1) 对数组的全部元素赋初值对数组的全部元素赋初值例如:例如:int num5=1,2,3,4,5;int num5=1,2,3,4,
16、5;将数组元素的初值依次放在一对花括号内,经过上述定义将数组元素的初值依次放在一对花括号内,经过上述定义及初始化之后,及初始化之后,num0=1, num1=2, num2=3, num3=4, num0=1, num1=2, num2=3, num3=4, num4=5num4=5。 (2) (2) 对数组的部分元素赋初值对数组的部分元素赋初值例如:例如:int num5=1,2,3;int num5=1,2,3;只给前只给前3 3个元素赋初值,其余个元素赋初值,其余2 2个元素的值为个元素的值为0 0。(3) (3) 对全部数组元素赋初值时,可以不指定数组的长度。对全部数组元素赋初值时,可
17、以不指定数组的长度。例如:例如:int num =1,2,3,4,5;int num =1,2,3,4,5;(4) (4) 当数组指定的元素个数小于初值的个数时,作语法错当数组指定的元素个数小于初值的个数时,作语法错误处理。误处理。例如:例如:int num4=1,2,3,4,5;int num4=1,2,3,4,5; 是不合法的,因为是不合法的,因为numnum数数组只能有组只能有4 4个元素。个元素。 一维数组的存储和初始化一维数组的存储和初始化 6.1.3 int a10=0,1,2,3,4,5,6,7,8,9; int a10=0,1,2,3,4;相当于相当于 int a10=0,1,
18、2,3,4,0,0,0,0,0; int a10=0,0,0,0,0,0,0,0,0,0;相当于相当于 int a10=0; int a5=1,2,3,4,5;可写为可写为 int a =1,2,3,4,5;1 1、若有以下语句,则下面、若有以下语句,则下面( )( )是正确的描述。是正确的描述。Char x = Char x = “1234512345”;char y = ;char y = 1 1, ,2 2, ,3 3, ,4 4, ,5 5;A A、 x x 数组和数组和 y y 数组的长度相同数组的长度相同 B B、 x x 数组长度大于数组长度大于 y y 数组长度数组长度C C、
19、 x x 数组长度小于数组长度小于 y y 数组长度数组长度D D、 x x 数组等价于数组等价于 y y 数组数组学生练习:学生练习:2 2、 以下一维整数数组以下一维整数数组 a a 的正确说明是的正确说明是( )( )。A A、 int a(10);int a(10);B B、 int n=10, an;int n=10, an;C C、 int a10;int a10;D D、 scanf(scanf(“%d%d”,&n),&n);int an;int an;3 3、以下能对一维数组、以下能对一维数组 a a 进行正确初始化的语句是进行正确初始化的语句是( )( )。A A、 int
20、a10=( 0, 0 , 0 );int a10=( 0, 0 , 0 );B B、 int a10= ;int a10= ;C C、 int a10=0;int a10=0;D D、 int a10=10int a10=10* *1;(1;(要使每个元素为要使每个元素为 1)1)学生练习:学生练习:一维数组的应用一维数组的应用 6.1.4【例例6.26.2】用数组求用数组求FibonacciFibonacci数列的前数列的前2020项。项。 FibonacciFibonacci数列可按下式计算:数列可按下式计算: f f i i =f =f i-1i-1+f +f i-2i-2 初值初值 f
21、 f 0 0=1 =1 ,f f 1 1=1=1。【例例6.2】main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(n); printf(%6d,fi); 用数组求用数组求Fibonacci数列的前数列的前20项。项。/*控制输出每控制输出每5个数据换一次个数据换一次行行*/【例例6.36.3】 随机输入随机输入1010个数,选出其中的最小数个数,选出其中的最小数main() int i,min,a10; printf(input 10 number:n); for(
22、i=0;i10;i+) scanf(%d,&ai); min=a0; for(i=1;i10;i+) if(aimin) min=ai; printf(minnum=%dn,min);练习练习 2 2 输入输入n(n10)n(n10),再再输入输入n n个数个数(1) (1) 求最小值求最小值学生思考学生思考练习练习【例例】从键盘输入从键盘输入1010个数,求平均数并输出所有大于个数,求平均数并输出所有大于平均数的数。平均数的数。 main()int i,n=0; float a10,ave=0; printf(请输入请输入10个数个数:n); for(i=0;i10;i+) scanf(%f
23、,&ai); ave+=ai; ave=ave/10; printf(平均数为:平均数为:%fn, ave); for(i=0;iave) printf(%f ,ai); n+; if(n%4=0)printf(n); printf( n“);【例例6.46.4】main() static int a10=7,15,4,12,9,3,11,0,24,6; int i,j,temp,n; for(i=0;i=9;i+) for(j=i+1;j10;j+) if(aiaj) temp=ai; ai=aj; aj=temp; for(i=0;i10;i+) printf(%3d,ai); print
24、f(n); 将将1010个整数从大到小排序个整数从大到小排序(简介)简介)例例 4 4 输入输入n(n10)n(n10),再再输入输入n n个数个数(1) (1) 求最小值求最小值(2) (2) 求最小值和它所对应的下标求最小值和它所对应的下标(3) (3) 将最小值与第一个数交换,输出交换后的将最小值与第一个数交换,输出交换后的n n个数个数学生课后学生课后加强练习加强练习给予解题提示,学生课下思考,本次课不需要完成给予解题提示,学生课下思考,本次课不需要完成#include int main(void) int i, min, n; int a10; printf(“Enter n: ); scanf(%d, &n); printf(“Enter %d integers: , n); for(i = 0; i n; i+) scanf(%d, &ai); min = a0; for(i = 1; i n; i+) if(ai min) min = ai; printf(min is %d n, min); return 0; 例例 4(1) 4(1) 求最小值求最小值Enter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年荆州市中医院医护人员招聘笔试参考题库及答案详解
- 2026年中国人民解放军第四六三医院医护人员招聘考试备考试题及答案详解
- 2025年徐州医科大学附属医院医护人员招聘考试试题附答案详解
- 2026年吉林省中医院医护人员招聘考试参考试题及答案详解
- 2026年石家庄市第四医院(谈固院区)医护人员招聘考试备考试题及答案详解
- 2026年解放军昆明总医院医护人员招聘笔试备考试题及答案详解
- 2026年淮北市人民医院医护人员招聘考试参考试题及答案详解
- 2026年内蒙古胸科医院医护人员招聘笔试备考题库及答案详解
- 2026年四川大学华西第四医院医护人员招聘考试参考题库及答案详解
- 2026年吉林大学中日联谊医院医护人员招聘笔试备考题库及答案详解
- 2026年春季学期人教版小学数学五年级下册期末质量检测卷含答案
- 2025陕西省中考历史真题(原卷版)
- 浙江省Z20联盟2026届高三年级第三次学情诊断地理+答案
- (正式版)JJD 008-2026 房屋建筑和市政基础设施工程安全管理资料导则(试行)
- 物理教学方法交流
- 2026中国工业软件自主可控路径及生态建设与替代空间研究报告
- 2026新疆中考历史知识点背诵清单练习含答案
- 高速磁浮无线通信系统试验规范标准文本(含编制说明)-2024
- 管廊机电安装监理实施细则
- 2026年一次通关粮库入库安全培训内容
- 激光美容部工作制度
评论
0/150
提交评论