C语言电子教案 谭浩强 (第三版) 第07章_数组

合集下载

修——C语言程序设计(第三版)第七章-谭浩强

修——C语言程序设计(第三版)第七章-谭浩强

关于形参与实参的说明:
4.在被定义的函数中,必须指定形参的类型。
5.实参和形参在数量、类型、顺序上应严格一致 。如果实参为实型,形参为整型,或者相反, 则按不同类型数值的赋值规则进行转换。
例如:实参值a为3.5,而形参x为整型, 则将实数3.5转换成整数3,然后送到形参b。 字符型与整型可以互相通用。

关于形参与实参的说明:
6. 函数调用时只能把实参的值传给形参,而不能 由形参的值反向传给实参,单向传递 。 在内存中,实参单元与形参单元是不同的单元。 在函数调用过程中,形参的值发生改变,并不 会改变主调函数的实参的值,因此实参的值维 持原值。
• 在很多情况下,不要求无参函数有返回值, 此时函数类型符可以写为void。 • 例:void Hello( ) { printf (“Hello\n”); } Hello函数是一个无参函数,当被其他函数调 用时,输出Hello字符串。
2. 有参函数定义的一般形式
类型标识符 函数名(形式参数表列)
注意: 3.若在定义函数时不指定函数类型,系统会隐 含指定函数类型为int型。 因此上例中max函数左端的int可以省略。 4.在有返回值函数中,至少应有一个return语句 5.C程序中,一个函数的定义可以放在任意位置 ,既可放在主函数main之前,也可放在main 之后。
§7.3向函数传递值和从函数返回值
由主函数调用其他函数,其他函数也可以互相调用。 同一个函数可以被一个或多个函数调用任意多次。
§7.2
函数的定义
• C语言的函数,可以从不同角度进行分类
1.从使用者的角度,分为: 标准库函数、自定义函数 a.标准库函数 由系统提供,用户无须定义和说明,在程序中可直 接调用,只需在程序前把该函数所在的头文件包 含进来即可。 b.用户自定义函数 由用户按需要编写的函数,但必须对函数进行定义 和说明后,才能使用。

C++程序设计(第3版)谭浩强 第7章PPT课件

C++程序设计(第3版)谭浩强 第7章PPT课件
• 7.1.4 结构体数组
结构体数组每个元素都是一个结构全类型的数据,它们分别包括各个成员项。 例7.2 对候选人得票的统计程序。设有3个候选人,最终只能有1个人当选为领导。今有10 个人参加投票,从键盘先后输入这10个人所投候选人的名字,要求最后输出各候选人得票结 果。 方法二:string法
第7章 用户自定义数据类型
第7章 用户自定义数据类型
• 7.2 枚举类型
例7.7 口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋中任意取出3个球,问得 到不同颜色的球的取法,输出每种排列的情况。
写在最后
成功的基础在于好的学习习惯
The foundation of success lies in good habits
结构体变量的指针引用成 员变量方法: (1)(*p).成员名 (2)p->成员名
第7章 用户自定义数据类型
• 7.1.5 指向结构体变量的指针
• 2.用结构体变量和指向结构体变量的指针构成链表 链表是一种常见的重要的数据结构。
例7.4 建立一个如图7.6所示的简单链表, 它由3个学生数据的结点组成。输出各 结点中的数据。
20
谢谢聆听
·学习就是为了达到一定目的而努力去干, 是为一个目标去 战胜各种困难的过程,这个过程会充满压力、痛苦和挫折
Learning Is To Achieve A Certain Goal And Work Hard, Is A Process To Overcome Various Difficulties For A Goal
声明枚举类型的一般形式为: enum 枚举类型名 {枚举常量表}; 例如: enum weekday {sun,mon,tue,wed,thu,fri,sat} workday,week_end; 说明: (1)枚举元素按常量处理,故称枚举常量。 (2)枚举元素作为常量,它们是有值的,其值是一个整数,编译系统定义时的顺序对它们 赋值为0,1,2,…… (3)枚举值可以用来做判断比较,按整数比较规则进行比较。 (4)不能把一个整数直接赋给一个枚举变量,枚举变量只能接受枚举类型数据。

谭浩强 c语言程序设计(第七章)

谭浩强 c语言程序设计(第七章)

13 27 76 13 30 27 27 97 30 76 97 第
27 30 97 30 97 初 始 关 键 字 n=8
第 一 趟 趟 趟 二 三 第
第 四 趟 趟 五
第 六 趟
第 七 趟

10
第七章 数组
#include <stdio.h> main() { int a[11],i,j,t; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); 假 for(i=1;i<=9;i++) for (j=1;j<=10-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=1;i<11;i++) printf("%d ",a[i]); }
{
#include <stdio.h> 1 f[0] 0 main() 1 f[1] 1 { int i; 2 2 int f[20]={1,1}; f[2] 3 3 for(i=2;i<20;i++)f[3] 4 5 f[4] f[i]=f[i-2]+f[i-1]; 5 for(i=0;i<20;i++;\n"); printf("%12d",f[i]); } } 19 f[19] f[19]

谭浩强C语言第7章

谭浩强C语言第7章
个元素的地址。比如 a,实际上址&a[1]可写成a+1,
第i+1个元素的地址&a[i]可写成a+i。
§7.1 一维数组的定义及引用 一维数组的初始化: C语言允许在定义数组的时候初始化数组,形式为: 类型 数组名[宽度] = { 数值表 };
初始化时,需注意几点: 如:int a[5]={ 0,1,2,3,4 }; • 数值表是用逗号分隔的,最后一项后面没有逗号。 • 当数值表中数值个数小于宽度时,其余元素会被 自动初始化为0; • 存字符串的字符数组允许下列的初始化简写形式: int a[5]={ 1,2 }; 等价于int a[5]={ 1,2,0,0,0 }; char ch[6]=“Hello”;
§7.2 二维数组的定义及引用 二维数组的引用:
地址引用:
• 二维数组的数组名代表该数组的首地址,即第1个 元素的地址。比如 a,实际上就是&a[0][0]。 • 二维数组元素在内存中按行存放,a[0]为第1行的 首地址。同样,a[1]为第2行的首地址,......, a[n-1]为第n行的首地址。
• 二维数组中任一元素a[i][j]的地址&a[i][j]等价 于a[i]+j。
§7.1 一维数组的定义及引用 二维数组的初始化: • 分行初始化
int
a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
• 很多程序员也喜欢这么写: 按数组在内存中的排列顺序 int a[3][3]={{1,2,3}, int a[3][3]={1,2,3,4,5,6,7,8,9}; {4,5,6}, {7,8,9}}; • 很多程序员也喜欢这么写: 可省略第一维的长度说明,长度由初值个数确定 int a[3][3]={1,2,3, int a[ ][3]={{1,2,3},{4,5,6},{7,8,9}}; 4,5,6, 注意:第二维的长度不能省略 练习:说出下面二维数组第一维的宽度及各元素的值: 7,8,9}; int b[ ][3]={1,2,3,4};

c语言程序设计谭浩强第07章

c语言程序设计谭浩强第07章

7.3.3 #ifndef 与 #endif命令
格式一
#ifndef 标识符
程序段 #endif
功能
如果“标识符”没有用“#define 标识符”定义过,则编译“程序 段” ,否则不编译。
例 输入一行字母字符,根据需要设置条件编译,使之能将字
母全改为大写输出或全改为小写输出。
#define LETTER 1 main( ) { int i=0; char c , str[20] =“CLanguage” ; while( (c=str[i]) !=‘\0’)
}
源程序file1.c
int max(x,y)
int x,y;
{ int z;
if (x>y) z = x;
else
z = y;
return (z) ;
}
§ 7.3条件编译
根据给定的条件,来决定源程序的编译范围 。即只对源程序中必要的部分进行编译,而对 其余部分不进行编译,不产生目标代码。
7.3.1 #if #else #endif命令
}
运行结果:MAX=9
§7.2 文件包含
格式
#include <filename> 或 #include "filename"
功能
将一个指定的文件嵌入包含到当前的源文件中。系统对嵌入后的
源文件进行整体编译处理。
在指定的标准目录下查找
如 #include <stdio.h> #include "math.h "
首先在当前目录下查找
使用文件包含语句,需注意的问题
1.一条文件包含命令只能包含一个指定的文件。 2.文件包含可以嵌套。如:

谭浩强版C语言课件第7章数组

谭浩强版C语言课件第7章数组
21
7.2.4 二维数组程序举例 将一个二维数组a × 转置存到另一个二维数组b × 例1 将一个二维数组 2×3转置存到另一个二维数组 3×2 a[n]
char name[0]; float weight[10.3]; float array[-100];
7
7.1.2 一维数组的引用
可以自由地存取。 数组元素的使用与单个变量相同,可以自由地存取。
数组元素的表示形式: 数组名[ 下标] 数组元素的表示形式: 数组名 下标 如a[3]
3
数组及其相关概念
数组是一组有序的、类型相同的数据的集合, 数组是一组有序的、类型相同的数据的集合, 是一组有序的 这些数据被称为数组的元素 数组的元素。 这些数据被称为数组的元素。
4
· 数组是同类型变量的集合,共用一个名字,用下标区 数组是同类型变量的集合,共用一个名字 同类型变量的集合 一个名字, 分; · · 每个变量称作数组元素; 每个变量称作数组元素; 按下标递增顺序在内存中存放; 按下标递增顺序在内存中存放;
2
2. 使用数组解决问题 定义一个变量,包含 个数据 称为数组变量。 个数据, 定义一个变量,包含26个数据,称为数组变量。 main() { int i,sum=0,a[26]; for(i=0;i<26;i++) scanf(“%d”,&a[i]); for(i=0;i<26;i++) sum=sum+a[i]; printf("%d",sum); }
16
7.2
二维数组的定义和引用
7.2.1 二维数组的定义
• 定义二维数组的一般方式: 定义二维数组的一般方式:
数组名[常量表达式1][常量表达式2] 1][常量表达式2]; 类型说明符 数组名[常量表达式1][常量表达式2];

谭浩强C程序设计(第三版)课件_第7章_数组

谭浩强C程序设计(第三版)课件_第7章_数组

C程序设计(第三版)
7
例如: int n;
scanf(“%d″,&n);
int a[n];
/*在程序中临时输入数 组的大小 */
数组说明中其他常见的错误:
① float a[0]; /* 数组大小为0没有意义 */ ② int b(2)(3); /* 不能使用圆括号 */ ③ int k, a[k]; /* 不能用变量说明数组大小*/
14
7.1.4一维数组程序举例
例7-1:用数组来处理,求解Fibonacci数列。
Fibonacci数列公式:已知: a1=a2=1an=an-1+an-2 即:1,1,2,3,5,8,13
程序实例: #include <stdio.h> void main()
{ int i; int f[20]={1,1};
144
233
987 C程序设1计59(7第三版) 2584 16
if语句用来控 制换行,每行 输出5个数据。
3 34 377 4181
5 55 610 6765
程序举例2:用起泡法对10个数排序(由小到大)。
第 一 趟 比 较
经过第一趟(共5次比较与交换)后,最大的数9已“沉 底” 。然后进行对余下的前面5个数第二趟比较,
C程序设计(第三版)
8
2.一维数组在内存中的存放 一维数组: float mark[100];
低地址
86.5
92.0
每个数据元素占用
77.5
的字节数,就是基Βιβλιοθήκη 52.0类型的字节数.
一个元素占4个字节
.
.
高地址
94.0
C程序设计(第三版)

c程序设计 谭浩强 第07章课件

c程序设计   谭浩强 第07章课件

7.2.3 二维数组的初始化
可以用下面的方法对二维数组初始化:
(1) 按行分段赋值。如 int a[3][4]={{1,2,3,4},{5,6,7,8},{9, 10,11,12}}; 这种赋初值方法比较直观,把第1个花括弧内的数据给 第1行的元素,第2个花括弧内的数据赋给第2行的元 素……即按行赋初值。
//输出源数组,并转换成目标数组 printf("source array:\n"); for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
printf("%5d",arrSource[i][j]); arrDest[j][i]=arrSource[i][j]; } printf("\n"); }
在实际问题中有很多量是二维的或多维的, 因此C语言 允许构造多维数组。多维数组元素有多个下标, 以标识 它在数组中的位置。 本小节只介绍二维数组,多维数组 可由二维数组类推而得到。
7.2.1 二维数组的定义 一般形式:
类型说明符 数组名[常量表达式][常量表达式]; 例如:int a[3][4],b[5][10]; 定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数
int i; int f[20]={1,1}; for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) {
if(i%5==0) printf("\n"); printf(“%10d",f[i]); } }
运行结果如下:
1

C语言程序设计(第三版)谭浩强习题与答案 第七章

C语言程序设计(第三版)谭浩强习题与答案   第七章
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051


main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档