电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C语言程序设计 教学课件 ppt 作者 孙鸿飞 刘国成 主编 ch06

30页
  • 卖家[上传人]:E****
  • 文档编号:89452782
  • 上传时间:2019-05-25
  • 文档格式:PPTX
  • 文档大小:212.61KB
  • / 30 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、6.1 一维数组 6.2 二维数组 6.3 字符数组与字符串,第6章 数 组,一、数组的引入 为了便于处理一批类型相同的数据,引入了数组类型.,假设现在要保存每个学生的成绩,那就需要40个变量,但这样一来输入、输出、计算都会变得繁琐。 在这种情况下,我们可以使用数组类型,声明一个含有40个元素的数组,每个数组元素存放一个成绩,成绩的输入、输出、计算都可通过循环来实现。,例:某班有40名学生,求该班成绩的平均分,#include main( ) int j , sum , s ; float ave ; sum=0; for(j=1; j=40 ; j+) scanf(“%d”, ,二、数组的概念 构造数据类型之一 1.数组:由具有相同类型的有序 数据的集合。用数组名标识。,#include main( ) int j , sum , s40 ; float ave ; sum=0; for(j=0; j=39 ; j+) scanf(“%d”, ,2.数组元素:每一个数组元素 都是一个变量,为了与一般 的变量相区别,我们称数组 元素为下标变量,3.下标变量在数组中的位置 序号称下标,c

      2、语言中下标 从0开始,6.1 一维数组,6.1.1一维数组的定义 定义方式: 数据类型 数组名常量表达式 ;,合法标识符,表示元素个数 下标从0开始,例 int a10;,数组名表示数组所在内存首地址也是a0的地址,是地址常量,6.1.2 数组元素的引用,数组必须先定义,后使用 下标可以是常量或整型表达式如: a1 , a2*3 只能逐个引用数组元素,不能一次引用整个数组 下标不要超范围(越界) 区分:数组定义:int a10,数组元素引用 t=a6;,例 int a10; printf(“%d”,a); () 必须 for(j=0;j10;j+) printf(“%dt”,aj); (),引用形式 : 数组名 下标 ,例 int data5; data5=10; () /C语言对数组不作越界检查,使用时要 注意,6.1.3 数组元素的初始化与赋值,在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值),int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统

      3、会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,可以只给部分数组元素赋初值,一维数组的赋值是指数组已经定义完毕,对数组元素作动态赋值。 例如: int a5; /* 定义一维数组a,每个元素的值是不确定的 */ a0=1;a1=2;a2=3; /* 逐个赋值 */,3. int a5; a= 1, 2, 3, 4, 5 ; ,4. int a10; float i=3; ai=10; ,1. char name0; float weight10.3; int array-100; ,6.int i, a5; for(i=0;i5;i+) scanf(“%d”, ,2. int i=5; int ai= 1, 2, 3, 4, 5; ,5. int a5; scanf(“%d”, ,讨论:以下几种用法是否正确?,一维数组的赋值,【例6.1】 编程,输入10个整数,计算最大值并输出。,源程序: #include main( ) int i,max,a10; printf(“Input 10 numbers:n“); for(i=0;imax) max=ai; printf(“Ma

      4、x=%dn“,max); ,【例6.2】 用冒泡排序法对N个数进行排序(从小到大),用6个演示,冒泡排序方法: 依次比较相邻的两个数,将小数放前面,大数放后面.经过第1轮(共5次比较与交换)后最大的数9已“沉底” 。再对余下的前面5个数进行第二轮比较,次大的数又被安置。 n个数排序需要进行n-1轮比较,从第1轮到第n-1轮,各轮的比较次数依次为:n-1次、n-2次 1次,第i轮比较中要进行n-i次两两比较。,a0 a1 a2 a3 a4 a5,2,7,7,5,4,7,1,4,5,1,5,1,4,1,2,9,9,9,9,9,7,2,5,4,1,初始状态,第1轮,第2轮,第3轮,第4轮,第5轮,7,6.2 二维数组,该表共有15个数值,我们可以把它看作是由5行3列组成的矩阵。在数学中,我们使用双下标变量来表示矩阵中的某个值,其中一个变量表示行,另一个变量表示列。 在C语言中可以使用二维数组来定义这样的表。该表在C中可以这样来定义: int v53; /* v是二维数组名称,5表示行数,3表示列数,int表示元素类型 */,6.2.1 二维数组的定义,定义形式 : 类型说明符 数组名 常量表

      5、达式1 常量表达式2 ; 如: int a34 ;,6.2.2 二维数组的引用 数组元素的表示形式 : 数组名 下标 下标,注意 : (1) 每个下标都要用 括起来,如 a 2 1 不能写成 a 2,1 (2) 下标从0开始,且不要超过定义的范围,6.2.3 二维数组的初始化与赋值,1. 分行初始化 int a34= 1, 2, 3, 4 , 5, 6, 7, 8 , 9, 10, 11, 12 ; 此方法较直观, 第一对 内的数据赋给第一行数组元素, 依次类推,2. 按数据的排列顺序对数组元素赋初值 int a34= 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; 将数据依次赋给元素 a00 , a01 a23,注意: 此方法数据无明显的界限, 当数据较多时容易出错,3. 对数组的部分元素赋初值,未赋值元素自动取0 int a34= 1,2 , 3 ,4,5,6 ;,int a34= 1,2,3,4,5,6 ;,4. 对数组的全部元素赋初值时可以省略第一维的长度(行下标), 系统会根据数据的个数和第二维的长度自动求出第一维长度, 但第二维下标不可省. i

      6、nt b 2= 1, 2, 3, 4, 5, 6, 7, 8 ;,数组a 第一维长度为 3,数组b 第一维长度为 4,如仅对部分元素赋初值,要想省略数组的行数,则必须分行赋值。 int a 4= 1, 2 , 0, 3, 4 , 5 ;,【例6.3】 求一个44矩阵的主对角线上各元素之和。,#include main( ) int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; int i,j,sum=0; for(i=0;i4;i+) for(j=0;j4;j+) if(i=j) sum=sum+aij; printf(“sum=%d“,sum); ,方阵主对角线上元素的特征是:行标值等于列标值。,6.3 字符数组与字符串,一、字符数组 1. 定义 例 char c10, ch34;,例 输出一个字符数组,#include main() char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(“%c“,ci); printf(“n“); ,二、字符串 1、字符串存放及其结束标志 无

      7、字符串变量,用字符数组处理字符串 字符串结束标志:0,字符串在字符数组中的存放,数组名:字符数组(字符串)在内存的首地址。,作为字符串进行存储时,字符串与字符数组的长度可以不等,系统自动加0为结束标志。,字符串在字符数组中的存放,不能写成: char s15= “China“ ; 用字符串作初值时,数组的长度应足够大以便能容纳全部字符和 0。,2、字符串的输入输出 逐个字符I/O: %c 整个字符串I/O: %s,例 用%c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, ,例 用%s main() char str5; scanf(“%s”, str); printf(“%s”, str); ,main( ) char a5=H,e,l,l,o; printf(“%s”,a); ,main( ) char a =“Hello”; printf(“%s”,a); ,结果:因为没有0结束符,输出Hello,后面的字符不确定。,结果:Hello,printf的s输出字符串,main() char a=h,e,l,0,l,o,0; pr

      8、intf(“%s“,a); ,输出:hel,数组中有多个0时,遇第一个结束,用“%s”输出时,遇0结束,main() int i; char a5; scanf(“%s“,a); for(i=0;i5;i+) printf(“%d,“,ai); ,运行情况: (1)若输入 hel , 正常 (2)若输入 hell , 正常 (3)若输入 hello , 用%s 输出时,会出现问题,输入字符串长度数组维数,scanf的s输入字符串,scanf的s输入字符串,#include main() char a15,b5,c5; scanf(“%s%s%s“,a,b,c); printf(“a=%snb=%snc=%sn“,a,b,c); scanf(“%s“,a); printf(“a=%sn“,a); ,运行情况: 输入:How are you? 输出:a=How b=are c=you? 输入:How are you? 输出:a=How,scanf中%s输入时,遇空格或回车结束,3、常用的字符串处理函数 除puts和gets外,包含在头文件 string.h,(1)字符串输出函数puts 格

      9、式:puts(字符数组) 功能:向显示器输出字符串(输出完,换行) 说明:字符数组必须以0结束,(2)字符串输入函数gets 格式:gets(字符数组) 功能:从键盘输入一以回车结束的字符串放入字符数组中, 并自动加0 说明:输入串长度应小于字符数组维数,例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 输入: How are you? 输出: How are you ?,#include main() char a15,b5,c5; scanf(“%s“,a); printf(“a=%sn“,a); ,运行情况: 输入:How are you? 输出:a=How,#include main() char a15,b5,c5; gets(a); printf(“a=%sn“,a); ,使用scanf()的%s整体输入,空格或回车结束 使用 gets() 函数,只以回车键结束输入,运行情况: 输入:How are you? 输出:a= How are you?,讨论:scanf()的%s与gets()

      《C语言程序设计 教学课件 ppt 作者 孙鸿飞 刘国成 主编 ch06》由会员E****分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 孙鸿飞 刘国成 主编 ch06》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.