程序设计基础(C语言).ppt_第1页
程序设计基础(C语言).ppt_第2页
程序设计基础(C语言).ppt_第3页
程序设计基础(C语言).ppt_第4页
程序设计基础(C语言).ppt_第5页
已阅读5页,还剩68页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础(C语言) 程序设计基础(C语言) 数组概念 程序设计基础(C语言) /cxsj 基本概念 n问题的提出? a,b从大到小排序输出? Programming1 : if (a main() float cj1,cj2,cj3, cj10; /*定义10个变量*/ float pj; scanf(“%f”, /*输入10个数据*/ scanf(“%f”, scanf(“%f”, pj=cj1+cj2+cj10; pj=pj/10; /*求平均值*/ /*打印低于平均成绩的同学成绩*/ if (cj1 main() float cj10; /*定义一个实型数组存放10个成绩*/ float pj; int i; for (i=0;i #define SIZE 10 main() int aSIZE=1,2,35,6,39,47,53,4,5,10; int i,x; printf(“please enter a x:n”); scanf(“%d”, printf (“max=%d,min=%dn“,max,min); 求10个数中的最大值和最小值。 把以上求最大值的程序和求最 小值的程序按串行方式写入一 个程序中。程序中先求最大值, 然后再求最小值 24 程序设计基础(C语言) /cxsj 一维数组 n n 一维数组的操作一维数组的操作 例:编写程序求10个数中的最大值和 最小值以及求10个数中的最大值 和最小值的位置 #define N 10 #include “stdio.h“ main ( ) int aN,k,max,min; for(k=0;kak) min=k; /* 找出最小值下标min */ printf(“max=a%d=%d,min=a%d=%dn“,max,amax,min,amin); 在上面程序中必须增加记忆最大值下标和最小值 下标的语句。即每当产生一个最大(小)值时, 立即记录它的下标。若最大值下标是max,最小 值下标是min,则amax就是最大值,amin就 是最小值 25 程序设计基础(C语言) 二维数组 程序设计基础(C语言) /cxsj 二维数组 n二维数组的定义 需要两个下标才能识别某个元素的数组称为“二维数组” n二维数组可以看作具有行和列的平面数据结构 如矩阵 格式 n说明 数据类型是数组全体数组元素的数据类型 数组名用标识符表示 两个整型常量表达式分别代表数组具有的行数和列 数 数组元素的下标一律从0开始 n例:int array34; 类型说明符 数组名常量表达式1常量表达式2; 27 程序设计基础(C语言) /cxsj 0 1 2 第0行 第1行 第2行 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、a2组成的一维数组,而a0、a1、 a2又是包含4个元素的一维数组。因此,可以将a0、a1、a2 分别看成是三个一维数组的名字。 二维数组 28 程序设计基础(C语言) /cxsj 二维数组 n二维数组的存放方式 在C语言中,二维数组在内存中的存储是按行存 放的 a11a12a13a20 a21a22a23 a00 a01 a02a03 a10 a a00 a01 . a22 a23 二维数组存储所占的内存字节数的计算公式为: 数组总字节数=sizeof(type)*size1*size2 29 程序设计基础(C语言) /cxsj 二维数组 n二维数组的初始化 形式 数据类型 数组名整常量表达式 整常量表达式= 初始化数据 ; n在 中给出各数组元素的初值 各初值之间用逗号分开 把 中的初值依次赋给各数组元素 初始化方式 n分行进行初始化 例:int a23=1,2,3,4,5,6; 在 内部再用 把各行分开 提示 n初始化的数据个数不能超过数组元素的个数,否则出错 30 程序设计基础(C语言) /cxsj 二维数组 n二维数组的初始化 按二维数组在内存中的排列顺序初始化 n例:int 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数组的第一维是2 n省略第一维的定义时,第一维的大小按如下规则确定: n初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则 第一维的大小为商再加1 n例如 int a 3= 1,2,3,4;等价于:int a23= 1,2,3,4; 31 程序设计基础(C语言) /cxsj 二维数组 n二维数组的初始化 提示 n只对部分数组元素初始化。未被初始化的数组 元素将被编译系统自动清0 两种初始化方法得到的初始结果是不同的 int a23=5,6,7,8; 5,6,0 7,8,0 int a23=5,6,7,8 5,6,7 8,0,0 32 程序设计基础(C语言) /cxsj 二维数组 n二维数组的初始化 例:一下能够对二维数组a进行正确初始化的语句是: (A)int a2=1,0,1,2,0,2; (B)int a3=1,2,3,4,5,6; (C)int a24=1,2,3,4,5,6; (D)int a3=1,0,1, ,2,3; 例:已知 int a3=0,1,2,3,4,5,6 ;则数组 的第一维的大小是多少? (A) 2 (B) 3 (C) 4 (D)无确定值 33 程序设计基础(C语言) /cxsj 二维数组 n二维数组元素的引用格式 数组名下标1下标2; 每个元素同一般变量一样使用 例: int a24 ;a02=a13*4; 例:int a23,i=1,j=2,k=0; n合法引用 aik,aj-1i,a1j+k aik=ai-1j+a1j; n错误引用 a23下标越界 a32,行下标越界 a1,0 a(1)(2) nC语言不进行数组的越界检查,在引用时不要使数组越界 34 程序设计基础(C语言) /cxsj 二维数组 n二维数组的操作 可以采用循环(嵌套)结构实现对二维数组的操作 例 n从键盘依次为数组元素输入数据 n计算数组a24的所有元素之和的操作 n将数组a24的第二行的所有元素初始化值为0的操作 for(i=0;i=0;n-) if(m+n=2) sum2=sum2+amn; printf(“sum1=%d,sum2=%dn”,sum1,sum2); 39 程序设计基础(C语言) /cxsj 二维数组 n应用 例:根据用户输入的年份和月份,输出这个月的 天数 分析 n要考虑平年和闰年的二月份的天数是不一样的 n程序中采用一个二维数组来存放平年和闰年的 各个月份的天数 #include main() int days212=31,28,31,30,31,30,31,31,30,31,30,31, 31,29,31,30,31,30,31,31,30,31,30,31 ; int year,month; int leap ; 40 程序设计基础(C语言) /cxsj 二维数组 n应用 printf(“enter a year:n”); scanf(“%d” , char s120, s220; printf(“First string:“); gets(s1); printf(“Second string:“); gets(s2); i=0; 62 程序设计基础(C语言) /cxsj while(s1i!=0 break; else if(s1i%sn“,s1,s2); 字符串运算函数 64 程序设计基础(C语言) /cxsj 字符串数组 n字符串数组定义 就是说数组的每一个元素均是一个字符串 n C语言中,常用二维字符数组的形式建立字符串数组 数组的第一个下标(左下标)决定字符串的个数 第二个下标(右下标)说明每个串的最大长度 n例如: char str_array3080; 说明 定义了一个可以存放30个字符串的字符串数组,每个 串的最大长度为80个字符 提示 n在 C语言中,一维字符数组的最普遍的用法是作为字符串 n使用数组处理字符串的另一种常见的形式是字符串数组 65 程序设计基础(C语言) /cxsj 字符串数组 n字符串数组引用 访问字符串数组中一个单独的字符串 n只需要标明左下标即可 n例如gets(str_array0); 数组 str_array中的第一个字符串为参数调用函数gets() 实际上是将 str_array0作为指针处理的 它指向字符数组元素str_array00的地址 上述语句等价于gets( B、strcpy(s1, s2); C、s1=s2; D、strcpy(s2, s1); 71 程序设计基础(C语言) /cxsj 小测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论