c语言课件第5章

合集下载

C语言程序设计PPT课件 第5章 数组程序设计

C语言程序设计PPT课件 第5章 数组程序设计
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++)
{
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*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
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语言(第五章选择结构) c语言 教学课件

c语言(第五章选择结构) c语言 教学课件
▪ 非闰年的判别:
• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1

C语言第5章循环结构PPT课件

C语言第5章循环结构PPT课件
格式:while (条件1)
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环

第五章 C语言多重循环语句ppt课件

第五章  C语言多重循环语句ppt课件
scanf(“%f”,&Weight); /*第7个儿童的体重*/ total=total+ Weight; /*前7个儿童的总体重*/
scanf(“%f”,&Weight); /*第8个儿童的体重*/ total=total+ Weight; /*前8个儿童的总体重*/
scanf(“%f”,&Weight); /*第9个儿童的体重*/ total=total+ Weight; /*前9个儿童的总体重*/
unsigned n,sum=0; scanf(“%u”,&n); do { sum+=i ;
int i; float Weight, total=0, aver;
*输入N个儿童的体重并计算总体重*/
for(i=1;i<=N;i++) {
scanf(“%f”,&Weight); /*第i个儿童的体重*/ total=total+ Weight; /*i个儿童的总体重*/
}
aver=total/N;
scanf(“%f”,&Weight); /*第1个儿童的体重*/ total=total+ Weight; /*前1个儿童的总体重*/
scanf(“%f”,&Weight); /*第2个儿童的体重*/ total=total+ Weight; /*前2个儿童的总体重*/
scanf(“%f”,&Weight); /*第3个儿童的体重*/ total=total+ Weight; /*前3个儿童的总体重*/
/*10个儿童的平均体重*/
printf(“%d个儿童的平均体重是:%.2\n”,N,aver); }

第5章 函数与带参数宏 《C语言程序设计及应用教程》课件-PPT课件

第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课件

《C语言第五章》PPT课件
1。
3
循环的嵌套
定义:
一个循环体中又包含一个完整
的循环构造,称为循环的嵌套。
说明:
while 循环、do… while循
环和 for循环都可以进展嵌套,而且
可以相互嵌套。
1 4
几种合法的嵌套构造:
while ( ) {… while ( ) {…} }
while ( ) {… do {…} while ( ); … }
1 2
三种循环的比较(续):
while和do …while循环只在while后面指定循 环条件,且在循环体中应包含使循环趋于完毕的 语句;for循环可以在表达式3中包含使循环趋 于完毕的操作,甚至可以将循环体中的操作全部 放到表达式3中,功能更强。
while 和for循环是先判断表达式,后执行语句 ;do …while循环是先执行语句后判断表达式
do {…
do{…} while ( ); } while ( );
for ( ; ; ) {…
while ( ) {…} … }
for ( ; ; ) {…
for ( ; ; ) {…} }
do {…
for(; ;) {…} … } while ( );
使用循环嵌套时注意:
➢ 要保证嵌套的每一层循环在逻辑上都是完整的, 防止嵌套穿插使用。
3 先判断表达式,后执
表 达式
=0
0
语句 (循 环体)
图6_1
100
【例6.1】求 n 。 n 1
sum =0 i= 1

i< = 1 0 0

sum sum +i i i+ 1
输 出 结 果 sum

C语言第五章课件

C语言第五章课件

scanf(“%d”,&x);
if(x<0) y=-1; else if(x==0) y=0; else y=1; printf(“y=%d\n”,y); }


/* 魔数的另一种解法 */ main() { int magic=123, guess;
clrscr(); scanf("%d", &guess); if(guess==magic){ printf("** Right **\n"); printf("%d is the magic number\n", magic); } else if(guess>magic) printf( " ** Wrong ** Too High \n"); else printf("** Wrong ** Too Low\n");
条件运算
是一种在两个表达式的值中选择一个的操作。
格式: e1 ? e2 :e3 条件表达式 含义: 若表达式e1为真(非零),则此条件表达式的值为e2的值, e1为 假, 则表达式取e3的值. 条件运算符 "? :" 要三个操作数, 三元(目)运算符.
If (a>b) max=a;
Else max=b;
5.3
if语句
一、if语句的一般形式 if(表达式) 语句 else 语句
语句项可为单独语句,也可为复合语句(必须加花括号),else从句可 选。 执行顺序: 表达式取真值(除零以外的任何值),执行if语句序列, 否则 执行else语句序列(没有else,则向下执行)。
If语句形式之一:
if (表达式) 语句;
个 相 等 Else b b 4ac x1 2a 实根: if b^2-4ac=0 -b/(2a)

C语言课件 第5章

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

C语言程序设计第5章数组.ppt

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]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。

C语言课件第5章循环结构程序设计2

C语言课件第5章循环结构程序设计2
18
思考 1、如果去掉循环体 中的大括号会怎样? 2、在循环体中,使 循环条件趋向于不满 足(假)的语句是哪 条?
第5章
循环结构程序设计
举例
while和do-while循环的比较。
此程序的 功能?
#include <stdio.h> int main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; }
第5章
循环结构程序设计
举例
现有某班20名学生的C语言成绩,求该班学生的C语 言的平均成绩。即:输入20个学生的成绩,计算平 均值,输出平均值。
分析:定义变量表示学生的成绩、全班总和、平均成绩。 如果定义20个变量保存20 算法设计: 个成绩,程序中计算成绩 第一步:输入20个学生的成绩 总和会有什么问题? 第二步:计算成绩总和 (用累加求和的方法)
运行结果:凵2550
#include <stdio.h> int main() { int i=1, n; float fac=1; printf("请输入n:"); scanf ("%d",&n); while (i<=n) { fac=fac*i; i++; } printf("%.0f\n",fac); return 0; } 请输入n:5
分析
求1~100的累加和。
换一种思路:
sum=sum+n;
首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次 取1、2、……、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累 计和。

C语言第5章

C语言第5章

问题分析 可以使用多个赋值语句,完成把这些价格存入一个表格的任务。用嵌套for循环 打印输出结果。输出时用转移字符’\t’控制对齐,行号变化时必须插入一个’\n’ 以输出回车换行。为了在输出中增添描述性标题,只需简单地在首行数值打印之 前打印一行标题,在首列数值打印前打印一列标题即可。
程序实现
§5.3.4 多维数组的初始化和引用
#include <stdio.h> #include <stdlib.h> void main() { int i,j,nSum=0, nAverage,nAver[3]; int nScore[3][5]={{80,61,59,85,76},{75,65,63,87,77},{92,71,70,90,85}}; for(i=0;i<3;i++) { for(j=0;j<5;j++) nSum=nSum+nScore[i][j]; nAver[i]=nSum/5; nSum=0; } nAverage=(nAver[0]+nAver[1]+nAver[2])/3; printf("math:%d\nc languag:%d\ndFoxpro:%d\n",nAver[0],nAver[1],nAver[2]); printf("total:%d\n", nAverage); }
输出方法:
输出第i行第j列元素: printf(“%d”,a[i][j]); 输出整个数组元素:
for (i=0;i<2;i++) for(j=0;j<3;j++) printf(“%d”,a[i][j]);
例5-5 用二维数组实现如下表5-2所示的计算每门课的 平均分数。

四川大学《c语言程序设计》课件-第5章 函数

四川大学《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语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;

《C语言程序设计》课件 第五章 数组

《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++)

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;

do-while语句
… break;

表达式? N
Y
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.5.4 字符数组的输入输出
(2) 将整个字符串一次输入或输出。 运行: 如:char c[20]; China↙ scanf("%s",c); China printf("%s",c);
c c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7]…… C h i n a \0 \0 ……
二维数组的元素的表示形式为: 数组名 [下标][下标]
如:int a[3][4];
a[0][2]=16; a[1][3]=10; a[3][4]=22; a[2][2]= a[0][2]+ a[1][3]
5.3.3 二维数组的初始化
可以用下面的方法对二维数组初始化: (1) 分行给二维数组赋初值。 如: int a[3][4]={ {1,2,3,4},{5,6,7,8}, {9,10,11,12} };
1. 字符串连接函数 strcat
其函数原型为: strcat ( char[] ,const char[]) ; 函数的作用是:将第二个字符数组中的字符串连接 到前面字符数组的字符串的后面。连接后的字符串 放在第一个字符数组中。 如: char str1[30]=″People's Republic of ″; char str2[]=″China″; printf("%s",strcat(str1,str2));
5.3.3 二维数组的初始化
(2) 可以将所有数据写在一个花括号内,按数组排 列的顺序对各元素赋初值。 如:int a[3][4]={ 1,2,3,4,5,6,7,8,9,10,11,12 };
效果与前相同。
但第1种方法为好,一行对一行,界限清楚。 第2种方法如果数据多,容易遗漏,不易检查。
(3) 可以对部分元素赋初值。
(4) 如果一个字符数组中包含一个以上′\0′,则遇 第一个′\0′时输出就结束。
str C
h
\0
i
n
a
\0 ……
(5) 从键盘向计算机输入一个字符串时,从键盘输 入的字符串应短于已定义的字符数组的长度,否则 会出现问题。
5.5.5 字符串处理函数
由于字符串使用广泛,C提供了一些字符串函数, 使得用户能很方便地对字符串进行处理。 几乎所有版本的C都提供下面这些函数,它们是放 在函数库中的,在string和string.h头文件中定义。 如果程序中使用这些字符串函数,应该用#include 命令把string.h或string头文件包含到本文件中。
a 0 1 2 3 4 5
a[2]
a[3] a[4] a[5]
printf(“%3d”,a[i]);
}
5.2.3 一维数组的初始化
(1) 在定义数组时分别对数组元素赋予初值。
如:int a[6]={ 0 , 1 , 2 , 3 , 4 , 5 }; a a[0] a[1] a[2] a[3] a[4] a[5]
0 1 2 3
0
1
1 5 9
2 6 10
3 7 11
4 8 12
2
例:输出二位数组中全部元素的值 int a[3][4]={ {1,2,3,4},{5,6,7,8}, {9,10,11,12} }; for (i=0; i<3; i++) { for (j=0; j<4; j++) printf(“%3d“,a[i][j] ); printf(“\n“); }
数组名[下标]
下标可以是整型常量、整型表达式或变量。 如:a[2*3]=11*6; a[i]=18;
例: #include <stdio.h>
main( )
{ int i , a[6]; for (i=0; i<=5; i++) a[i]=i; for (i=5; i>=0; i--)
a[0]
a[1]
只能对字符数组的元素赋值,而不能用赋值语句对 整个数组赋值。 如:char c[6]; c={'C', 'h', 'i', 'n', 'a'}; c=“china”; c[0]=„C‟;c[1]=„h‟;c[2]=„i‟;c[3]='n';c[4]='a'; 如果已定义了a和b是具有相同类型和长度的数组, 且b数组已被初始化,分析: a=b; a[0]=b[0];
第5章 数组
5.1 数组的概念 5.2 一维数组的定义和引用 5.3 二维数组的定义和引用 5.4 用数组名作函数参数 5.5 字符数组 5.6 C处理字符串的方法——字符串类与字符 串变量
5.1 数组的概念
数组是有类型属性数据的集合。
引入数组就不需要在程序中定义大量的变量,使程 序精炼。熟练地利用数组,可以大大地提高编程和 解题的效率,加强了程序的可读性。
5.3.4 二维数组程序举例
例: 将一个二维数组行和列元素互换,存到另一 个二维数组中。 如:
a= 1
4
2
5
3
6
b= 1
2 3
4
5 6
5.5 字符数组
用来存放字符数据的数组是字符数组,字符数组中 的一个元素存放一个字符。 5.5.1字符数组的定义和初始化: 如:char c[10]; c[0]='I'; c[1]=' '; c[2]='a'; c[3]='m'; c[4]=' '; c[5]='h'; c[6]='a'; c[7]='p'; c[8]='p'; c[9]='y';
4. 字符串长度函数strlen
函数原型为:
strlen(const char[]); 测试字符串长度的函数。其函数的值为字符串中的 实际长度,不包括′\0′在内。 如:char str[10]=″China″;
5.3.1 定义二维数组
定义二维数组的一般形式为: 类型标识符 数组名[常量表达式][常量表达式]
如:float a[3][4];
int b[5][10];
a为3×4(3行4列)的单精度数组
b为5×10(5行10列)的整形数组。
int a[3][4] 0 0 a[0][0] 1 2
a[1][1] a[2][3]
(5) 每一个数组元素都为一个变量,类型和数组类型 相同。
如:int a[10]; a[0]=12; a[2]=16; a[6]=11.5; a[10]=10;
5.2.2 引用一维数组的元素
数组必须先定义,后使用。
一次只能引用一个数组元素,即只能逐个引用数组 元素的值而不能一次引用整个数组中的全部元素的 值。 数组元素的表示形式为:
1 5 0 0 6 0 0 0 0 0 0 0
(4) 如果对全部元素都赋初值,则定义数组时对第 一维的长度可以不指定,但第二维的长度不能省。 如: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) 常量表达式中可以包括常量、常变量和符号常量, 但不能包含变量。
如:int n; scanf(“%d”,&n); int a[n]; const int n=10;
int a[n];
(4) 常量表达式的值表示数组中元素的个数,即数组 长度。
如:int a[10]; 10表示a数组有10个元素,分别是: a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]
1
2
a[0][2]
3
二维数组中元素存放的顺 序是: 按行存放,即在内存中先 顺序存放第一行的元素, 再存放第二行的元素。
a [0][0] a [0][1] a [0][2] a [1][0] a [1][1] a [1][2]
a [2][0] a [2][1] a [2][2]
5.3.2 二维数组的引用
对字符数组进行初始化。
如:
char c[11]={′I′,′ ′,′a′,′m′,′ ′,′h′
,′a′,′p′,′p′,′y′}; char c[ ]= {′I′,′ ′,′a′,′m′,′ ′,′h′ ,′a′,′p′,′p′,′y′}; char c[11]="I am happy";
5.5.2 字符数组的赋值与引用
说明:
(1) 在调用strcpy函数时,第一个参数必须是数组名, 第二个参数可以是字符数组名,也可以是一个 字符串常量。
strcpy (str1,str2); strcpy (str1,"china!");
(2) 不能用赋值语句将一个字符串常量或字符数组 直接赋给一个字符数组。
str= "china!";
如:int a[5]={ 1,2,3,4,5 };
可以写成:int a[ ]={ 1,2,3,4,5 };
5.2.4 一维数组程序举例
例:将一维数组的数据按逆序存放.
5.3 二维数组的定义和引用
具有两个下标的数组称为二维数组。 有些数据要依赖于两个因素才能惟一地确定,例如 有3个学生,每个学生有4门课的成绩,显然,成绩 数据是一个二维表。 想表示第3个学生第4门课的成绩,就需要指出学生 的序号和课程的序号两个因素。
5.5.3 字符串和字符串结束标志
用一个字符数组可以存放一个字符串中的字符。 如:char c[7]=“China”;
c
c[0] c[1] c[2] c[3] c[4] c[5] c[6]
相关文档
最新文档