C语言程序设计PPT课件 第5章 数组程序设计
合集下载
C语言程序设计 第5章 数组程序设计PPT课件
第1次 第2次 第3次 第4次 第5次 第6次 第7次 第8次 第9次 i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8
scanf("%d",&a[i]);
for(i=0;i<N-1;i++) if(a[i]>a[i+1])
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
第5章 数组程序设计
5.1 一维数组程序设计 5.2 字符串操作 5.3 二维数组程序设计 5.4 数组应用程序举例
C语言程序设计-理论方法与实践(第2版)语言程序设计-理论方法与实践(第2 版)语言程序设计-理论方法与实践(第2版)语言程序设计-理论方法与实践(
5.1 一维数组程序设计
5.1.1 一维数组示例程序 5.1.2 一维数组的定义 5.1.3 数值型一维数组的输入和输出 5.1.4 数值型一维数组的初始化 5.1.5 字符型一维数组的初始化 5.1.6 一维数组的存储
➢ 错误 int n=10; float a[n];
C语言程序设计-理论方法与实践(第2版)语言程序设计-理论方法与实践(第2 版)语言程序设计-理论方法与实践(第2版)语言程序设计-理论方法与实践(
5.1.2 一维数组的定义
2、数组元素的引用 数组元素的引用形式
数组名[下标] 下标是数组元素的序号,可以是一个整型常量,也可以是整型表达式。 C语言规定,数组元素的下标从0开始,当数组长度为n时,最末元素的 下标是n-1。
int a,b,c,d,e,f,g,h,i,j; printf("Input Data: "); scanf("%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); printf("Output Data: "); printf("%d %d %d %d %d %d %d %d %d %d\n",j,i,h,g,f,e,d,c,b,a); return 0; }
C语言程序设计第五章
通过编写程序,实现对数组的访问、修改 、排序等操作。例如,实现一个程序,将 一个数组中的所有元素进行排序,或者找 到数组中的最大值和最小值。
05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。
05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。
第5章 函数与带参数宏 《C语言程序设计及应用教程》课件-PPT课件
5.2 函数的嵌套与递归调用
函数的嵌套调用
不允许嵌套定义,函数间平行的、独立。 C中的函数:
允许嵌套调用。
main( ) 调用函数a 结束
a函数
调用函数b
b函数
【例5-7】 输入两个整数,求平方和
#include <stdio.h>
int fun1(int x,int y)
int fun1(int x,int y);
斐波那契数列");
for(i=0;i<N;i++)
{
printf("%d\t",iF[i]);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
int Sum(int iF[],int n); void main() { int i,Fibonacci[N],m,n; //生成斐波那契数列 CreateFibonacci(Fibonacci); //输出斐波那契数列 PrintFibonacci(Fibonacci); //求数列前n项的和 printf(" 请输入要求和的项数 n(n<%d): ",N); scanf("%d",&n); m=Sum(Fibonacci,n); printf("\n 斐波那契数列前 %d项的和:%4d\n",n,m);}
第5章 函数与带参数宏 ?C语言 程序设计及应用教程?课件
5.1 函数的声明、定义与调用
5.1.1 函数的声明与定义 5.1.2 函数调用 5.1.3 函数参数传递 5.1.4 主函数中的参数
C语言完整 ppt课件
1.4.1 宏定义
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。
C语言数组详解ppt课件
}
ppt课件完整
10
§ 1.4一维数组程序举例
程序举例1:用选择排序法进行排序。
int a[5] = {3,6,1,9,4};
选择排序法是编程中经常用的一种排序算 法。具体如下:
先将5个数中最小的数与a[0]对换,再将 a[1]到a[4]中最小的数与a[1]对换,这样每比 较一轮,找出一个未经排序的数中最小的一 个。共比较4轮。
表示元素 的个数, 即数组长
度。 4
(一)一维数组(1)——定义及使用
注意: 1.数组名不能与其它变量名相同
void main() {
int a; float a[10]; …… }
ppt课件完整
5
(一)一维数组(1)——定义及使用
2. 不能在方括号中用变量来表示元素的个 数,但可以是符号常数或常量表达式。
6与 a[3] 对换
ppt课件完整
12
main() { int i,j,k,t;
int a[5] = {3,6,1,9,4}; for( i = 0; i < sizeof(a)/sizeof(int) – 1; i++) { k = i;
for( j = i + 1; j < sizeof(a); j++ ){ if(a[j] < a[k] ) k = j;
g[i]:第i个学生的成绩等等
ppt课件完整
2
(一)一维数组(1)——定义及使用
类型说明符 int
任一种基 本数据类 型或构造 数据类型。
数组名[常量表达式] a[10]
用户自定义的数组 名字,其定名规则 与变量名定名规则 一样,都需遵循标
识符定名规则
C语言程序设计教程数组PPT课件
{ if (max<a[i]) { max=a[i];j=i;}/*把当前最大值送max,下标送j*/
else if (min>a[i]){ min=a[i];k=i;}
}
printf("max:a[%d]=%d,min:a[%d]=%d",j,max,k,min);
}
第11页/共78页
212021/4/6
2021/4/6
4
第4页/共78页
6.1.2 数组元素的引用
定义了数组以后,就可使用它了。
但不能利用数组名来整体引用一个数组,只能单个的使用数组 元素
数组元素的描述 : 由 数组名加方括号中的下标 组成,即:
数组名[下标]
下
标:数组元素在数组中的顺序号,使用整序型表达
式。
a[5]=80;
取值范围:从0到元素个数-1。 C语言不a[对2.5下]=标60;越?界作语法
③ #define N 5
long data[N]; /* 定义一个有5个元素的长整型数组
data */
2021/4/6
3
第3页/共78页
例:试判断下列数组定义是否合法:
int student[35]; char name[20]; float score[35]; #define student 35 float n_student[student]; int score_student[student*3]; int person(10); int n=10, a[n];
若不对auto数组进行初始化,则其初值是不可知的。
若一个static或外部数组未进行初始化,则对数值型 数组元素,初值为0,而对字符型数组元素,初值为空字 符‘\0’.
C语言课件 第5章
如果x<y, max=y, min=x ③ 输出最大值max、 最小值min
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float
C语言程序设计第5章数组.ppt
冒泡法排序
2019/3/19
F
冒泡法排序 (续)
程序如下:
#define N 6 #include "stdio.h" void main( ) {int a[N]; int i,j,t; printf("请输入%d个成绩,用空格隔开:\n",N); for (i=0; i<N; i++) scanf("%d",&a[i]);
2019/3/19
5.2.2 数组元素的引用(续)
2.说明
① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10],i; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查。
2019/3/19
5.2.2 数组元素的引用(续)
【例5-4】用冒泡法(也称起泡法)对输入的一组 成绩按从低分到高分的顺序排序并输出。
例如将6个数:4、7、5、6、8、1按从小到大顺序用冒泡 法排序,方法如下: 在第一趟排序中, 6个数比较了5次,把6个数中 第一趟排序情况如下: 的最大数8排在最后。 4 7 5 6 8 1 第一次 4和7比较,不交换 4 7 5 6 8 1 第二次 7和5比较,交换 457681 第三次 7和6比较,交换 456781 第四次 7和8比较,不交换 4 5 6 7 8 1 第五次 8和1比较,交换 456718
2019/3/19
5.1概述(续)
2.数组与数组元素的概念
数组:是用一个名字表示的一组相同类型的数据的集合, 这个名字就称为数组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的数据分别存储在用下 标区分的变量中,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
2019/3/19
F
冒泡法排序 (续)
程序如下:
#define N 6 #include "stdio.h" void main( ) {int a[N]; int i,j,t; printf("请输入%d个成绩,用空格隔开:\n",N); for (i=0; i<N; i++) scanf("%d",&a[i]);
2019/3/19
5.2.2 数组元素的引用(续)
2.说明
① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10],i; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查。
2019/3/19
5.2.2 数组元素的引用(续)
【例5-4】用冒泡法(也称起泡法)对输入的一组 成绩按从低分到高分的顺序排序并输出。
例如将6个数:4、7、5、6、8、1按从小到大顺序用冒泡 法排序,方法如下: 在第一趟排序中, 6个数比较了5次,把6个数中 第一趟排序情况如下: 的最大数8排在最后。 4 7 5 6 8 1 第一次 4和7比较,不交换 4 7 5 6 8 1 第二次 7和5比较,交换 457681 第三次 7和6比较,交换 456781 第四次 7和8比较,不交换 4 5 6 7 8 1 第五次 8和1比较,交换 456718
2019/3/19
5.1概述(续)
2.数组与数组元素的概念
数组:是用一个名字表示的一组相同类型的数据的集合, 这个名字就称为数组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的数据分别存储在用下 标区分的变量中,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
《C语言程序设计》第5章数组、字符串、指针
相当于声明了5个整型变量
说明: ① 数组的所有元素的数据类型都是相同的。 ② 数组取名规则应符合标识符的规定,数组 名不能与同一函数中其它变量名相同: int a; float a[10]; 是错误的。
③ C语言中规定数组的下标从0开始,方括号 中常量表达式表示数组元素的个数。
④ 不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如: int n=5,a[n]; 是错误的。
二维数组在内存的存放顺序是“先行后列”
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0]
…
a[2][3]
5.3.2 二维数组元素的引用
二维数组的元素的引用形式为: 数组名[下标][下标] 使用二维数组的情况举例: 学生多门功课的成绩,如: a[100][3]可以用来记录100个学生3门功 课的成绩。 矩阵,如: a[3][3]可以用来记录3×3的矩阵。一个 数组元素正好存放一个矩阵的元素。
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
C语言程序设计教程ppt课件完整版pptx
C语言的应用领域
计算机系统基本概念
计算机系统的组成 操作系统的基本概念 计算机中的数与编码
编程环境与工具安装配置
01
常见的C语言编程环境
02
安装与配置C语言编译器
使用集成开发环境(IDE)进行C语言编程
03
第一个C程序:Hello, World!
01
C程序的基本结 构
02
编写Hello, World!程序
应用场景
适用于需要根据特定条件提前终 止循环或跳过某些循环操作的情 况。
04 函数与模块化设计
函数定义和调用
01
函数定义
包括函数名、参数列表、返回值 类型和函数体等部分,用于描述 函数的功能和实现细节。
函数调用
02
03
函数声明
通过函数名和参数列表来调用函 数,实现相应功能并获取返回值 。
在使用函数之前,需要对函数进 行声明,以便编译器识别函数的 存在和调用方式。
THANKS FOR WATCHING
感谢您的观看
指针运算符
包括取地址运算符&和取值运算符*,分别 用于获取变量的内存地址和通过指针访问内 存中的数据。
动态内存分配函数(malloc, free)使用方法
malloc函数
用于在堆区动态分配指定大小的内存空间,并返回 分配内存的起始地址。
free函数
用于释放之前通过malloc函数分配的内存空间,防 止内存泄漏。
动态规划思想
动态规划是一种在数学、计算机科学和经济学中 使用的,通过把原问题分解为相对简单的子问题 的方式来求解复杂问题的方法。动态规划常用于 优化重叠子问题的计算。
回溯与分支限界法
回溯法是一种通过探索所有可能的候选解来找出 所有解的算法,而分支限界法是一种通过剪枝来 减少搜索空间的优化算法。回溯与分支限界法常 用于解决组合优化问题。
计算机系统基本概念
计算机系统的组成 操作系统的基本概念 计算机中的数与编码
编程环境与工具安装配置
01
常见的C语言编程环境
02
安装与配置C语言编译器
使用集成开发环境(IDE)进行C语言编程
03
第一个C程序:Hello, World!
01
C程序的基本结 构
02
编写Hello, World!程序
应用场景
适用于需要根据特定条件提前终 止循环或跳过某些循环操作的情 况。
04 函数与模块化设计
函数定义和调用
01
函数定义
包括函数名、参数列表、返回值 类型和函数体等部分,用于描述 函数的功能和实现细节。
函数调用
02
03
函数声明
通过函数名和参数列表来调用函 数,实现相应功能并获取返回值 。
在使用函数之前,需要对函数进 行声明,以便编译器识别函数的 存在和调用方式。
THANKS FOR WATCHING
感谢您的观看
指针运算符
包括取地址运算符&和取值运算符*,分别 用于获取变量的内存地址和通过指针访问内 存中的数据。
动态内存分配函数(malloc, free)使用方法
malloc函数
用于在堆区动态分配指定大小的内存空间,并返回 分配内存的起始地址。
free函数
用于释放之前通过malloc函数分配的内存空间,防 止内存泄漏。
动态规划思想
动态规划是一种在数学、计算机科学和经济学中 使用的,通过把原问题分解为相对简单的子问题 的方式来求解复杂问题的方法。动态规划常用于 优化重叠子问题的计算。
回溯与分支限界法
回溯法是一种通过探索所有可能的候选解来找出 所有解的算法,而分支限界法是一种通过剪枝来 减少搜索空间的优化算法。回溯与分支限界法常 用于解决组合优化问题。
四川大学《c语言程序设计》课件-第5章 函数
用void定义参数 ,表示没有参数
void 函数名(void)
{ 声明语句序列 可执行语句序列 return ;
}
return语句后无需 任何表达式
【例】 计算整数n的阶乘n!
/* 函数功能: 用迭代法计算n!
返回值函数类入型口参数:函整数型名变量说n明表示阶乘的形阶参数表,函
函数返回值: 函返数回的n!功的能值
函数定义(Function definition)
返回值 类型
函数名标识符, 说明运算规则
参数表相当于 运算的操作数
类型 函数名(类型 参数1, 类型 参数2, ……)
{ 声明语句序列
可执行语句序列 return 表达式;
}
函数出口
返回运算的结果
函数定义(Function definition)
因变量
函数名
自变量
程序设计中的函数
程序设计中的函数不局限于计算 –计算类,如打印阶乘表的程序…… –判断推理类,如排序、查找……
问题的提出
读多少行的程序能让你不头疼? 假如系统提供的函数printf()由10行代码替换,那么你编过的程 序会成什么样子?
–实际上一个printf()有上千行代码 main()中能放多少行代码? 如果所有代码都在main()中,怎么团队合作? 如果代码都在一个文件中,怎么团队合作?
C程序的存储类别 – auto型(自动变量) – static型(静态变量) – extern型(外部变量) – register型(寄存器变量)
变量的存储类型( Storage Class)
变量的生存期(Lifetime )
The lifetime of a variable is the period of time during which memory is allocated to the variable
《C语言程序设计》课件 第五章 数组
若二维数组名a代表的起始地址为5948,则它的三个元 素a[0]、a[1]和a[2]分别对应了起始地址5948、5956和 5964。
a(5948)
a[2](5964) a[1](5956) a[0](5948) 图 5-10
a[2][1] (5968) a[2][0] (5964) a[1][1] (5960) a[1][0] (5956) a[0][1] (5952) a[0][0](5948)
return 0;
}
5.1.4一维数组程序举例
3.用选择法对输入的n个学生的单科成绩进行 从小到大排序。
编程思路: 直接选择排序的过程是:首先在所有数据中找出值 最小(最大)的数据,把它与第1个数据交换,然后 在其余的数据中找出值最小(最大)的数据,与第2 个数据交换......依次类推,这样,n个数据经过n-1轮 交换后可得到有序结果。
printf("%3d ",a[i]); printf("\n"); return 0; }
5.1.3 一维数组的初始化 5.1.3 一维数组的初始化
数组初始化常见的格式:
1.用大括号括起来的常量表达式列表,常量表达式 之间用逗号进行分隔: int a[10]={1,2,3,4,5,6,7,8,9,10};
注意:
不要将a[i][j]写成a[i,j],否则编译系统会将逗号分隔 符作为逗号运算符处理,即将a[i,j]视为a[j]。
5.2.2二维数组元素的引用
可以将二维数组看成是特殊的一维数组。
例如,二维数组a[3][2]可以看成是长度为3的一维数组, 所含的3个数组元素分别为:a[0]、a[1]、a[2]
for(i=0;i<3;i++) for(j=0;j<5;j++)
a(5948)
a[2](5964) a[1](5956) a[0](5948) 图 5-10
a[2][1] (5968) a[2][0] (5964) a[1][1] (5960) a[1][0] (5956) a[0][1] (5952) a[0][0](5948)
return 0;
}
5.1.4一维数组程序举例
3.用选择法对输入的n个学生的单科成绩进行 从小到大排序。
编程思路: 直接选择排序的过程是:首先在所有数据中找出值 最小(最大)的数据,把它与第1个数据交换,然后 在其余的数据中找出值最小(最大)的数据,与第2 个数据交换......依次类推,这样,n个数据经过n-1轮 交换后可得到有序结果。
printf("%3d ",a[i]); printf("\n"); return 0; }
5.1.3 一维数组的初始化 5.1.3 一维数组的初始化
数组初始化常见的格式:
1.用大括号括起来的常量表达式列表,常量表达式 之间用逗号进行分隔: int a[10]={1,2,3,4,5,6,7,8,9,10};
注意:
不要将a[i][j]写成a[i,j],否则编译系统会将逗号分隔 符作为逗号运算符处理,即将a[i,j]视为a[j]。
5.2.2二维数组元素的引用
可以将二维数组看成是特殊的一维数组。
例如,二维数组a[3][2]可以看成是长度为3的一维数组, 所含的3个数组元素分别为:a[0]、a[1]、a[2]
for(i=0;i<3;i++) for(j=0;j<5;j++)
《C程序设计》数组PPT课件
交换!
79
41
j
1
5.2 一维数组及应用
第
5 章 数 组
代码段如下:
a[0] 92
for(j=1;j<8;j++) if(a[0]<a[j])
a[j] 71
{t=a[0];a[0]=a[j];a[j]=t;}
93
59
50
27
79
41
j
1
5.2 一维数组及应用
第
5 章 数 组
代码段如下:
a[0] 92
第
5
C语言中定义数组就是按数组 a
章 数据类型及元素个数找到相应大
数 小的一组连续的存储空间。例如:
组
int a[4] a[0]=2 2 a[3]=5 a[2]=3
5.1 数组的概念
第
5
C语言中定义数组就是按数组 a
章 数据类型及元素个数找到相应大
2
数 小的一组连续的存储空间。例如:
组
int a[4] a[0]=2 a[3]=5 5 a[2]=3
数组
本章主要内容
第
5
章
数
1. 数组基本概念
组
2. 一维数组及应用
3. 二维数组及应用
4. 字符数组和字符串
5.1 数组的概念
第
5
C语言中定义普通变量就是 a2
章 按变量的数据类型找到相应大
数 小的存储空间例如: 组
整型变
int a1,a2;
量占两 个字节
float a3;
a1
char a4
5.1 数组的概念
第
5
C语言中定义普通变量就是 a2
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.用scanf()函数和printf()函数输入输出字符串
/* program e5-5.c*/ #include<stdio.h> 5.2.1 字符串的输入输出 #define N 50 void main() { 1.用scanf()函数和printf()函数输入输出字符串 char str[N],digital[N]; int i=0,j=0; 例5-5 使用“%s”格式符举例。 printf("Input: "); 输入一个长度小于50的字符串,将其中的数字字符按输入顺序存储到 scanf("%s",str); digital数组中,然后输出该数组。 while(str[i]!='\0') { if(str[i]>='0'&&str[i]<='9') digital[j++]=str[i]; i++; } digital[j]='\0'; printf("Output: %s\n",digital); C语言程序设计(第3版)张磊编著 清华大学出版社 }
/* program e5-6.c*/ #include<stdio.h> 5.2.1 字符串的输入输出 #include<string.h> #define N 50 2.使用gets()函数和puts()函数输入输出字符串 void main() ⑴ 使用gets()函数输入字符串 { 格式:gets(字符数组名) char str[N],digital[N]; char str[12]; int i=0,j=0; gets(str); gets(str); 执行gets()函数后,从键盘输入一个字符串存储到str数组中。 while(str[i]!='\0') ⑵ 使用puts()函数输出字符串 { 格式:puts(字符数组名) if(str[i]>='0'&&str[i]<='9') char c[6]="China"; digital[j++]=str[i]; puts(c); i++; } 例5-6 用gets()函数和puts()函数改写例5-5的程序。 digital[j]='\0'; puts(digital); C语言程序设计(第3版)张磊编著 清华大学出版社 }
5.1 一维数组程序设计
5.1.1 逆序输出数据程序 5.1.2 一维数组的定义
5.1.3 数值型一维数组的输入和输出
5.1.4 数值型一维数组的初始化 5.1.5 字符型一维数组的初始化 5.1.6 一维数组的存储
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.1 逆序输出数据程序
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式 数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.2 一维数组的定义
一般格式 数据类型 数组名[数组长度] 例如: int a [10]; char name[20]; 说明 ⑴ 数组的数据类型就是数组元素的数据类型。 ⑵ 数组长度是数组能够包含的数组元素的个数,是常量表达式。 错误 int n=10; float a[n];
5.1.3 数值型一维数组的输入和输出
例5-2 向数组输入10个整数,然后通过相邻元素比较交换的方法,将最大值 移到数组最后,然后输出该数组。
#include<stdio.h> #define N 10 void main() { int a[N],i,temp; 第1次 第2次 第3次 第4次 第5次 第6次 第7次 第8次 第9次 i=0 i=1 i=2 i=5 i=6 i=3 i=7 i=4 i=8 for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; 相邻元素a[i]与a[i+1]进行比较、交换(i依次取值0,1,2,……,8) a[i+1]=temp; } for(i=0;i<N;i++) printf("%d ",a[i]); }
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.6 一维数组的存储
int a[6]={10,20,30,40,50,60}; char word[6]="Hello!";
数组a→ 10 20 30 40 50 60
a[0] 数组word→ a[1] a[2] a[3] a[4] a[5]
H e l l o i
5.2.2多字符串操作函数 /* program e5-7.c */ #include<stdio.h> 格式:strcat(s1,s2) #include<string.h> 功能:把字符串s2连接到字符串s1的后面。 说明: void main() { ⑴ s1只能是字符数组名、s2既可以是字符数组名,也可以 是字符串常量。 c1[20]="China",c2[10]= "man"; char ⑵ 函数执行之后,s1是连接之后的字符串,s2保持不变。 strcat(c1,c2); 定义s1数组时,其数组长度应不小于两个字符串的长度之和。 printf("String c1: "); puts(c1); 例5-7 将两个字符串连接为一个字符串后输出。 printf("String c2: "); puts(c2); }
引子程序:一个正确的程序,但并不是一个好程序 从键盘输入10个整数,然后按照与输入相反的顺序依次将其输出。
/* program e5-0.c */
#include<stdio.h> void main() { int a,b,c,d,e,f,g,h,i,j; printf("Input Data: "); scanf("%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); printf("Output Data: "); printf("%d %d %d %d %d %d %d %d %d %d\n",j,i,h,g,f,e,d,c,b,a); }
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.2 一维数组的定义
数组概念 数组是包含多项同类数据的一种数据结构,它能将一系列相 同类型的数据组织起来,使用同一个名字命名,再用下标进 行分量标识,例如a[1]、a[2]、......、a[10]等,当下标用一个 变量i表示时,i的不同取值即对应不同的分量,使用a[i]即可 访问这一组数据的任何一个分量。 这里的a即是一个数组。
5.2.1 字符串的输入输出
/* program e5-4.c*/ #include<stdio.h> void main() 例5-4 使用“%c”格式符举例。 { 输入一个长度是10的字符串,然后逆序输出它。 char str[10]; int i; printf("Input: "); for(i=0;i<10;i++) scanf("%c",&str[i]); printf("Output: "); for(i=9;i>=0;i--) printf("%c",str[i]); printf("\n"); } C语言程序设计(第3版)张磊编著 清华大学出版社
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.3 数值型一维数组的输入和输出
数值型数组的输入和输出通过每一个数组元素的输入和输出实现。 例如,对a数组: 输入a [5] : scanf("%d",&a [5]); 输出a [5]: printf("%d",a [5]);
C语言程序设计(第3版)张磊编著 清华大学出版社
1.字符串连接函数strcat()
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。 #include<stdio.h> void main() { long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++) fib[i]=fib[i-1]+b[i-2]; for(i=1;i<=20;i++) { printf("%-10ld",fib[i]); if(i%5==0) printf("\n"); } }
/* program e5-5.c*/ #include<stdio.h> 5.2.1 字符串的输入输出 #define N 50 void main() { 1.用scanf()函数和printf()函数输入输出字符串 char str[N],digital[N]; int i=0,j=0; 例5-5 使用“%s”格式符举例。 printf("Input: "); 输入一个长度小于50的字符串,将其中的数字字符按输入顺序存储到 scanf("%s",str); digital数组中,然后输出该数组。 while(str[i]!='\0') { if(str[i]>='0'&&str[i]<='9') digital[j++]=str[i]; i++; } digital[j]='\0'; printf("Output: %s\n",digital); C语言程序设计(第3版)张磊编著 清华大学出版社 }
/* program e5-6.c*/ #include<stdio.h> 5.2.1 字符串的输入输出 #include<string.h> #define N 50 2.使用gets()函数和puts()函数输入输出字符串 void main() ⑴ 使用gets()函数输入字符串 { 格式:gets(字符数组名) char str[N],digital[N]; char str[12]; int i=0,j=0; gets(str); gets(str); 执行gets()函数后,从键盘输入一个字符串存储到str数组中。 while(str[i]!='\0') ⑵ 使用puts()函数输出字符串 { 格式:puts(字符数组名) if(str[i]>='0'&&str[i]<='9') char c[6]="China"; digital[j++]=str[i]; puts(c); i++; } 例5-6 用gets()函数和puts()函数改写例5-5的程序。 digital[j]='\0'; puts(digital); C语言程序设计(第3版)张磊编著 清华大学出版社 }
5.1 一维数组程序设计
5.1.1 逆序输出数据程序 5.1.2 一维数组的定义
5.1.3 数值型一维数组的输入和输出
5.1.4 数值型一维数组的初始化 5.1.5 字符型一维数组的初始化 5.1.6 一维数组的存储
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.1 逆序输出数据程序
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式 数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.2 一维数组的定义
一般格式 数据类型 数组名[数组长度] 例如: int a [10]; char name[20]; 说明 ⑴ 数组的数据类型就是数组元素的数据类型。 ⑵ 数组长度是数组能够包含的数组元素的个数,是常量表达式。 错误 int n=10; float a[n];
5.1.3 数值型一维数组的输入和输出
例5-2 向数组输入10个整数,然后通过相邻元素比较交换的方法,将最大值 移到数组最后,然后输出该数组。
#include<stdio.h> #define N 10 void main() { int a[N],i,temp; 第1次 第2次 第3次 第4次 第5次 第6次 第7次 第8次 第9次 i=0 i=1 i=2 i=5 i=6 i=3 i=7 i=4 i=8 for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; 相邻元素a[i]与a[i+1]进行比较、交换(i依次取值0,1,2,……,8) a[i+1]=temp; } for(i=0;i<N;i++) printf("%d ",a[i]); }
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.6 一维数组的存储
int a[6]={10,20,30,40,50,60}; char word[6]="Hello!";
数组a→ 10 20 30 40 50 60
a[0] 数组word→ a[1] a[2] a[3] a[4] a[5]
H e l l o i
5.2.2多字符串操作函数 /* program e5-7.c */ #include<stdio.h> 格式:strcat(s1,s2) #include<string.h> 功能:把字符串s2连接到字符串s1的后面。 说明: void main() { ⑴ s1只能是字符数组名、s2既可以是字符数组名,也可以 是字符串常量。 c1[20]="China",c2[10]= "man"; char ⑵ 函数执行之后,s1是连接之后的字符串,s2保持不变。 strcat(c1,c2); 定义s1数组时,其数组长度应不小于两个字符串的长度之和。 printf("String c1: "); puts(c1); 例5-7 将两个字符串连接为一个字符串后输出。 printf("String c2: "); puts(c2); }
引子程序:一个正确的程序,但并不是一个好程序 从键盘输入10个整数,然后按照与输入相反的顺序依次将其输出。
/* program e5-0.c */
#include<stdio.h> void main() { int a,b,c,d,e,f,g,h,i,j; printf("Input Data: "); scanf("%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); printf("Output Data: "); printf("%d %d %d %d %d %d %d %d %d %d\n",j,i,h,g,f,e,d,c,b,a); }
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.2 一维数组的定义
数组概念 数组是包含多项同类数据的一种数据结构,它能将一系列相 同类型的数据组织起来,使用同一个名字命名,再用下标进 行分量标识,例如a[1]、a[2]、......、a[10]等,当下标用一个 变量i表示时,i的不同取值即对应不同的分量,使用a[i]即可 访问这一组数据的任何一个分量。 这里的a即是一个数组。
5.2.1 字符串的输入输出
/* program e5-4.c*/ #include<stdio.h> void main() 例5-4 使用“%c”格式符举例。 { 输入一个长度是10的字符串,然后逆序输出它。 char str[10]; int i; printf("Input: "); for(i=0;i<10;i++) scanf("%c",&str[i]); printf("Output: "); for(i=9;i>=0;i--) printf("%c",str[i]); printf("\n"); } C语言程序设计(第3版)张磊编著 清华大学出版社
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.3 数值型一维数组的输入和输出
数值型数组的输入和输出通过每一个数组元素的输入和输出实现。 例如,对a数组: 输入a [5] : scanf("%d",&a [5]); 输出a [5]: printf("%d",a [5]);
C语言程序设计(第3版)张磊编著 清华大学出版社
1.字符串连接函数strcat()
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。 #include<stdio.h> void main() { long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++) fib[i]=fib[i-1]+b[i-2]; for(i=1;i<=20;i++) { printf("%-10ld",fib[i]); if(i%5==0) printf("\n"); } }