程序设计基础(C语言).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计基础(C语言).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 语言
- 资源描述:
-
1、程序设计基础(C语言)程序设计基础(C语言)数组概念程序设计基础(C语言) stdio.h#include mainmain()()float cj1,cj2,cj3,float cj1,cj2,cj3,cj10;/cj10;/*定义定义1010个变量个变量*/float pj float pj;scanf scanf(“%f”,&cj1%f”,&cj1);/;/*输入输入1010个数据个数据*/scanf scanf(“%f”,&cj2%f”,&cj2);scanf scanf(“%f”,&cj10%f”,&cj10);pj pj=cj1+cj2+=cj1+cj2+cj10;+cj10;pj
2、 pj=pj/10;/=pj/10;/*求平均值求平均值*/*打印低于平均成绩的同学成绩打印低于平均成绩的同学成绩*/if(cj1pj)printf if(cj1pj)printf(“%fn”,cj1%fn”,cj1);if(cj1pj)printf if(cj1pj)printf(“%fn”,cj2%fn”,cj2);if(cj1pj)printf if(cj1pj)printf(“%fn”,cj10%fn”,cj10);例例2:计算:计算10个同学的成绩:计算平均成绩、打印个同学的成绩:计算平均成绩、打印低于平均成绩的同学成绩低于平均成绩的同学成绩如果增加如果增加1000个成绩?个成绩?程
3、序设计基础(C语言) stdio.h#include main()main()float cj10;/float cj10;/*定义一个实型数组存放定义一个实型数组存放1010个成绩个成绩*/float pj;int float pj;int i;i;for(i=0;i10;i+)/for(i=0;i10;i+)/*输入输入1010个数据个数据*/scanf(%f,&cji scanf(%f,&cji););for(i=1,pj=0;i10;i+)/for(i=1,pj=0;i10;i+)/*求平均值求平均值*/pj=pj+cji pj=pj+cji;pj pj=pj/10;=pj/10;fo
4、r(i=0;i10;i+)/for(i=0;i10;i+)/*打印低于平均成绩的同学成就打印低于平均成绩的同学成就*/if(cjipj if(cjipj)printf(cj printf(cj=%d=%fn,i+1,cji);=%d=%fn,i+1,cji);例例2:计算:计算10个同学的成绩:计算平均成绩、打印个同学的成绩:计算平均成绩、打印低于平均成绩的同学成绩低于平均成绩的同学成绩程序设计基础(C语言) 根据数组下标的多少,数组可以分为一维数组和多维数组n一维只有一个下标,例如:cj10n二维有两个下标,例如:grade34程序设计基础(C语言) 可以准确访问到数组中的每一个元素提示nC
5、语言是一个有趣的语言,它从0开始计数,而不是从1开始,所以例题中10个元素的编号是从0到9a10a10 a a0 0 a a1 1 a a2 2 a a9 9 数组名数组名数组元素名数组元素名数组长度数组长度程序设计基础(C语言)一维数组程序设计基础(C语言) 数组名常量表达式;n说明:数据类型是数组全体数组元素的数据类型数组名用标识符表示 符合表示服的命名规则整型常量表达式代表数组具有的数组元素个数 必须是正的整型常量表达式,不能出现变量或非整型值提示n编译程序为数组开辟连续的存储单元,用来顺序存放数组的各数组元素用数组名表示该数组存储区的首地址数组元素的下标一律从0开始n一维数组元素按顺序
6、存放,其所占字节数的计算公式:数组所占总字节数=sizeof(type)*size程序设计基础(C语言) int a5,b5;float c10;n说明:定义了整型数组a和 b以及实型数组c a和 b的 数组元素的类型都是int c的 数组元素的类型都是float a数组有5个数组元素,b数组有5个数组元素,c数组有10个元素n以a5为例a数组的数组元素是a0,a1,a2,a3和a4 共5个数组元素 a数组元素的下标大于等于0,且小于5定义了int型数组a编译程序将为a数组在内存中开辟5个连续的存储单元(每个int存储单元占2个字节),用来存放a数组的5个数组元素a0代表这片存储区的第一个存储
7、单元 数组名a代表a数组的首地址,即a0存储单元的地址ai实际上代表这片存储区序号为i的存储单元 ai就是一个带下标的int型变量a数组是这些int型下标变量的集合程序设计基础(C语言) N 5 int aN;/*N是符号常量,其值为5*/nint b2+3;/*2+3是常量表达式,其值为5*/nint c10;错误的数组定义nint aj;/*j不是常量*/nint x=10,bx;/*?*/nint M(4);/*不能用圆括号定义数组*/nint n1.0;/*?*/程序设计基础(C语言) 中给出各数组元素的初值 各初值之间用逗号分开 把 中的初值依次赋给各数组元素数据类型数据类型 数组名
8、数组名整型常量表达式整型常量表达式=初值初值1,初值,初值2,;程序设计基础(C语言) num 4=1,2,3,4;表示把初值1,2,3,4依次赋给num 0,num1,num2,num 3相当于执行如下语句int num 4;num 0=1;num 1=2;num 2=3;num 3=4;n提示初始化的数据个数不能超过数组元素的个数,否则出错 例如:int a4=1,2,3,4,5;是错误的一维数组程序设计基础(C语言) num5=1,2,3;numnumnum0 num1 num2 num3 num4num0 num1 num2 num3 num4 1 2 3 0 01 2 3 0 0该语
9、句执行该语句执行:num0=1;num1=2;num2=3;num3=0;num4=0;num0=1;num1=2;num2=3;num3=0;num4=0;程序设计基础(C语言) n数组的元素不能自动初始化采用语句 int cj10=0;将数组cj的元素初始化为0n若数组元素的个数定义省略,则系统根据初值的个数来确定数组元素的个数例如:int a3=1,2,3;数组有3个数组元素:a0=1,a1=2,a2=3若省略数组元素个数的定义,则初值必须完全给出 C 语言编译系统将自动根据初始化数据的个数来确定数组的长度程序设计基础(C语言) 1:intint a2;a2;scanf scanf(“%
10、d%d”,&a1,&a2%d%d”,&a1,&a2);?错误:错误:在在C C语言中数组元素的下标由语言中数组元素的下标由 0 0开始,一个数组的下标的合法开始,一个数组的下标的合法范围在范围在0 0n-1n-1,因此该题正确的写法是:,因此该题正确的写法是:intint a2 a2;scanfscanf(“%d%d”,&a0,&a1%d%d”,&a0,&a1););错误:错误:数组元素是通过数组名数组元素是通过数组名 下标下标 来访问的,其中下标必须是来访问的,其中下标必须是大于大于0 0的整数、整型变量或整型表达式,在这段程序中,的整数、整型变量或整型表达式,在这段程序中,i i是浮是浮点
11、数,不能做数组元素的下标。点数,不能做数组元素的下标。问题问题2 2:intint a10 a10;float i=3float i=3;ai=10ai=10;?一维数组程序设计基础(C语言) SIZE 10#define SIZE 10mainmain()()intint aSIZE=aSIZE=1,2,35,6,39,47,53,4,5,101,2,35,6,39,47,53,4,5,10;intint i i,x x;printfprintf(“please enter a x:n”please enter a x:n”););scanfscanf(“%d”,&x%d”,&x););fo
12、r for(i=0i=0;i=SIZE-1i=SIZE-1;i+i+)ifif(ai=xai=x)breakbreak;if if(i SIZEi SIZE)printfprintf(“%d,poster is%dn”,x,i%d,poster is%dn”,x,i););else else printf printf(“no find%d n”,xno find%d n”,x););程序设计基础(C语言) SIZE 10#define SIZE 10mainmain()()intint aSIZE=1,2,35,6,39,47,53,4,5,10 aSIZE=1,2,35,6,39,47,5
13、3,4,5,10;intint i i,j j,x x;for for(i=0i=0;iSIZEiSIZE;i+i+)printfprintf(“%4d”,ai%4d”,ai););printfprintf(“please enter a x:n”please enter a x:n”););scanfscanf(“%d”,&x%d”,&x););for for(i=0i=0;iSIZEiSIZE;i+i+)ifif(ai=xai=x)breakbreak;for for (j=i;jSIZE-1;j+j=i;jSIZE-1;j+)aj=aj+1aj=aj+1;for for(i=0;iSIZ
14、E-1;i+i=0;iSIZE-1;i+)printf(“%4d”printf(“%4d”;aiai););printfprintf(“n”n”););说明:说明:做删除操作时,首先要做删除操作时,首先要找到删除元素的位置,找到删除元素的位置,找到后,立即用找到后,立即用breakbreak语语句推出循环并进行删除句推出循环并进行删除操作,删除操作实质是操作,删除操作实质是把一些数组元素向前移把一些数组元素向前移动一位。最后一位的删动一位。最后一位的删除不必移位,直接输出除不必移位,直接输出前前size-1size-1位。位。程序设计基础(C语言) N 10main()int aN,k,max
15、,min;for(k=0;kN;k+)/*将将N个数输入到个数输入到a数组中数组中*/scanf(%d,&ak);max=a0;for(k=1;kN;k+)/*依次比较各数,找出最大值依次比较各数,找出最大值max*/if(maxak)max=ak;min=a0;for(k=1;kak)min=ak;printf(max=%d,min=%dn,max,min);求求10个数中的最大值和最小值。个数中的最大值和最小值。把以上求最大值的程序和求最把以上求最大值的程序和求最小值的程序按串行方式写入一小值的程序按串行方式写入一个程序中。程序中先求最大值,个程序中。程序中先求最大值,然后再求最小值然后再
16、求最小值程序设计基础(C语言) N 10#include stdio.hmain()int aN,k,max,min;for(k=0;kN;k+)/*将将N个数输入到个数输入到a数组中数组中*/scanf(%d,&ak);max=min=0;/*假定最大值和最小值均为假定最大值和最小值均为a0,记录它们的下标,记录它们的下标0*/for(k=1;kN;k+)/*依次比较各数依次比较各数,找出最大值和最小值的下标找出最大值和最小值的下标max、min*/if(amaxak)min=k;/*找出最小值下标找出最小值下标min*/printf(max=a%d=%d,min=a%d=%dn,max,a
17、max,min,amin);在上面程序中必须增加记忆最大值下标和最小值在上面程序中必须增加记忆最大值下标和最小值下标的语句。即每当产生一个最大(小)值时,下标的语句。即每当产生一个最大(小)值时,立即记录它的下标。若最大值下标是立即记录它的下标。若最大值下标是max,最小,最小值下标是值下标是min,则,则amax就是最大值,就是最大值,amin就就是最小值是最小值程序设计基础(C语言)二维数组程序设计基础(C语言) 格式n说明数据类型是数组全体数组元素的数据类型数组名用标识符表示两个整型常量表达式分别代表数组具有的行数和列数 数组元素的下标一律从0开始n例:int array34;类型说明符
18、类型说明符 数组名数组名常量表达式常量表达式1常量表达式常量表达式2;程序设计基础(C语言) 0 1 2 3第第0列列 第第1列列 第第2列列 第第3列列 数组名数组名行下标行下标列下标列下标 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 该二维数组包含三行四列,因此称为该二维数组包含三行四列,因此称为34数组。数组。数组中的每一个数组中的每一个元素都用元素都用aij的形式表示。的形式表示。所以:所以:该例中定义了一个该例中定义了一个3*4(3行行4列)的数组,我们可以将其视为列)的数组,我们可以将其视为一个有一个有3个元素个元素a0、a1、a
19、2组成的一维数组,而组成的一维数组,而a0、a1、a2又是包含又是包含4个元素的一维数组。因此,可以将个元素的一维数组。因此,可以将a0、a1、a2分别看成是三个一维数组的名字。分别看成是三个一维数组的名字。二维数组程序设计基础(C语言) a00 a01a02a03a10 a a00 a01.a22 a23二维数组存储所占的内存字节数的计算公式为:二维数组存储所占的内存字节数的计算公式为:数组总字节数数组总字节数=sizeof(type)*size1*size2程序设计基础(C语言) 数组名整常量表达式 整常量表达式=初始化数据;n在 中给出各数组元素的初值各初值之间用逗号分开把 中的初值依次
20、赋给各数组元素初始化方式n分行进行初始化例:int a23=1,2,3,4,5,6;在 内部再用 把各行分开提示n初始化的数据个数不能超过数组元素的个数,否则出错程序设计基础(C语言) a23=1,2,3,4,5,6;把 中的数据依次赋给a数组各元素(按行赋值)为部分数组元素初始化n例:int a23=1,2,4;省略第一维的定义,但不能省略第二维的定义n系统根据初始化的数据个数和第2维的长度可以确定第一维的长度n例:int a 3=1,2,3,4,5,6;na数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2n省略第一维的定义时,第一维的大小按
21、如下规则确定:n初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则第一维的大小为商再加1n例如int a 3=1,2,3,4;等价于:int a23=1,2,3,4;程序设计基础(C语言) a23=a23=5,65,6,7,87,8;5,6,05,6,07,8,07,8,0intint a23=a23=5,6,7,85,6,7,85,6,75,6,78,0,08,0,0程序设计基础(C语言) a进行正确初始化的语句是:进行正确初始化的语句是:(A A)intint a2=1,0,1,2,0,2;a2=1,0,1,2,0,2;(B B)intint a3=1,2,3,4,5,6;a
22、3=1,2,3,4,5,6;(C C)intint a24=1,2,3,4,5,6;a24=1,2,3,4,5,6;(D D)intint a3=1,0,1,a3=1,0,1,,2,3;2,3;例:例:已知已知 intint a3=0 a3=0,1 1,2 2,3 3,4 4,5 5,6 6;则数组;则数组 的第一维的大小是多少?的第一维的大小是多少?(A A)2 2 (B B)3 3 (C C)4 4 (D D)无确定值)无确定值 程序设计基础(C语言) 数组名下标1下标2;每个元素同一般变量一样使用例:int a24;a02=a13*4;例:int a23,i=1,j=2,k=0;n合法引
展开阅读全文