c语言第7章数组与字符串.ppt

上传人:max****ui 文档编号:6334550 上传时间:2020-02-23 格式:PPT 页数:35 大小:486.31KB
返回 下载 相关 举报
c语言第7章数组与字符串.ppt_第1页
第1页 / 共35页
c语言第7章数组与字符串.ppt_第2页
第2页 / 共35页
c语言第7章数组与字符串.ppt_第3页
第3页 / 共35页
点击查看更多>>
资源描述
一 概念C提供的数据类型有 标准型和构造型 在遇到的大量编程问题中仅用标准型是解决不了的 如 排序 查询 统计 线性方程组求解 矩阵运算等需要用构造类型 数组是其中之一 数组 具有相同类型数据的集合 数组中每一个数据称为元素 每一个元素均用统一的数组名和相应的下标确定 数组定义格式 一维类型说明符数组名 常量 二维类型说明符数组名 常量 常量 例 intnum 10 floatscore 3 4 在程序中定义了一维数组和二维数组 编译时在内存开辟连续一批单元 存放数组各元素的值 2bytes num 0 num 1 num 2 num 9 4bytes score 0 0 score 0 1 score 0 2 score 2 3 功能 定义数组名 类型和大小 num整型10个元素score实型12个元素 数组元素赋初值指在定义的同时可给数组各元素或部分元素赋初值 即初始化 在编译时除分配一定的单元 同时将初值赋给相应单元 元素 否则是随机值 如果给全部元素赋值 则在数组定义时 可以不给出数组长度 系统将根据初值的个数自动确定数组的长度 num 0 num 1 0 1 9 static 表示静态存储 若定义成 staticintnum 10 所有元素均赋0 部分元素赋初值 staticintnum 10 0 1 2 3 4 其它元素均赋0 num 9 一维数组 staticintnum 10 0 1 2 3 4 5 6 7 8 9 也可staticfloatscore 3 4 1 1 1 1 2 2 2 2 3 3 3 3 也可staticfloatscore 4 1 1 1 1 2 2 2 2 3 3 3 3 而staticfloatscore 3 4 则所有元素均赋0 部分元素赋初值 staticfloatscore 3 4 1 2 3 表示score 0 0 score 1 0 score 2 0 分别赋1 2 3 其它元素均为0 staticfloatscore 3 4 1 7 8 表示score 0 0 1 score 1 0 7 score 1 1 8 其它元素均为0 二维数组staticfloatscore 3 4 1 1 1 1 2 2 2 2 3 3 3 3 对数组元素的操作在C中 只能对已定义的数组元素逐个的操作 赋值 输出等 不可对整个数组一次进行赋值 输出等 凡是变量可出现的地方 数组元素也可出现 数组元素引用格式 一维数组名 二维数组名 一维数组各元素 赋值 输出main intnum 10 i for i 0 i 10 i num i i 1 for i 0 i 10 i num i 10 for i 0 i 10 i printf num d d n i num i main intnum 10 i for i 0 i 10 i scanf d 二维数组各元素 赋值 输出main intscore 3 4 inti j for i 0 i 3 i for j 0 j 4 j scanf d 数组在编程中应用例 某班3人 2门课 试编程 1 键盘输入每个人学号和2门课成绩 2 求出每人平均分和每门课的平均分 变量设置 num 3 存放每个人的学号score 3 2 存放30人 每人9门课成绩aver 3 存放每人平均成绩aver1 2 存放每门课平均成绩 main inti j intscore 3 2 num 3 sum floataver 3 aver1 2 for i 0 i 3 i scanf d 输入每人学号和2门课成绩 for i 0 i 3 i sum 0 for j 0 j 2 j sum score i j aver i sum 2 求出每人平均分 for i 0 i 3 i printf Student d t f n i 1 aver i 输出每门课平均分 for i 0 i 2 i sum 0 for j 0 j 3 j sum score j i aver1 i sum 3 求每门课平均分 for i 0 i 2 i printf Course d t f n i 1 aver1 i 输出每门课平均分 例 已知三行三列数组各元素值 试分别求各行元素 各列元素和每个元素之和 main inti j staticinta 4 4 3 5 6 0 2 1 4 0 3 5 4 0 0 0 0 0 for i 0 i 3 i for j 0 j 3 j a i 3 a i j a 3 j a i j a 3 3 a i j for i 0 i 4 i for j 0 j 4 j printf 5d a i j printf n 第0列各元素之和 所有元素之和 第0行各元素之和 356xx214xx354xxxxxxxxxx 例 矩阵相乘 C A B条件 A阵的列数 B阵的行数乘积矩阵的行数为A阵行 列为B阵列main staticinta 3 3 1 2 3 4 5 6 7 8 9 staticintb 3 2 1 2 3 4 5 6 staticintc 3 2 inti j k for i 0 i 3 i for j 0 j 2 j for k 0 k 3 k c i j a i k b k j for i 0 i 3 i for j 0 j 2 j printf 5d c i j printf n main intnum 10 i j k tem for i 0 inum j tem num i num i num j num j tem for k 0 k 10 k printf d num k 1357924680035792468101579346820127954683012397568401234976850123459786012345698701234567980123456789 main intnum 10 i j k tem for i 0 inum j 1 tem num j num j num j 1 num j 1 tem for k 0 k 10 k printf d num k 1357924680135724680913524670891324560789123450678912340567891230456789120345678910234567890123456789 字符数组C中无字符串变量 字符串是用字符数组处理 定义 一维charcn 5 常用来处理一个字符串 二维charname 30 8 常用来处理多个字符串 赋初值 staticcharcn 5 C h i n a staticcharcn 6 C h i n a 0 staticcharcn 6 China staticcharcn 6 China staticcharcn China 系统定义 自动在串尾加 0 若提供的初值小于数组长度 则只将这些字符赋给数组中前面的元素 其余元素自动空字符 0 若对全体元素赋初值 可省长度说明 均等价 cn 0 cn 1 cn 2 cn 3 cn 4 cn 5 C h i n a 0 字符串结束标志 输出时 printf s n cn cn是字符数组名 当遇到 0 输出结束 printf c n cn 0 cn 0 是字符数组元素 在内存存放 可以用scanf对一个字符数组赋值 即输入一个字符串 但字符串中不能有空格 否则将以空格作为串结束符 Charst 20 scanf s st 注意 st是数组名而非变量名 故不可用 st数组名代表了数组的首地址 整个数组存放在以首地址开始的一块连续内存单元中 字符串处理函数 头文件是puts str或字串 在屏幕上显示一个字符串 以 0 结束 将结束标记转为 n 可含转义字符 staticcharstr BBI puts str staticcharstr nbbi puts str gets str 从键盘输入一个串给字符数组 返回是该数组在内存的首地址 字符串里可含空格gets str 键入 bbistrcat str1 str2 将串2接在串1后 其结果放在字符数组中staticcharc2 aboy staticcharc1 Iam printf s strcat c1 c2 strcpy str1 字串 将字符串拷贝到字符数组里strcpy str1 BBI staticcharstr2 bbi strcpy str2 str1 strcmp str1 str2 两串相同 返回值是0 串1 串2 返回值是正整数 串1 串2 返回值是负整数strcmp CCTV BTV strlen str 返回不包括 0 字符串的长度printf d n strlen bbi 注 str str1 str2是字符数组名或字符型指针变量名 例 实现串拷贝main staticchars2 China chars1 20 inti for i 0 s2 i 0 i s1 i s2 i s1 i 0 printf s n s1 例 实现串连接 includemain chars1 30 s2 20 inti j gets s1 gets s2 i 0 while s1 i i for j 0 s2 j j i s1 i s2 j s1 i 0 printf s n s1 例 字符串比较 includemain chars1 20 s2 20 inti gets s1 gets s2 for i 0 s1 i s2 i i if s1 i 0 break printf d n s1 i s2 i 例 输入一串字符 统计该串里单词的个数 单词间用空格分开 串结束用回车 Num 统计串的个数 Word 当遇到一个或多个空格 word 0 当遇到第一个非空格 若原word是0 表示新词开始 num增1 同时word 1 键入字符串 str i 0 str i Y word 0 Y word 0 num增1 word 1N 输出num N include string h main charstr 20 c inti num 0 word 0 gets str for i 0 c str i 0 i if c word 0 elseif word 0 word 1 num printf num d n num 二维字符数组运用 常用来处理多个字符串 例 charname 30 8 该二维数组用来存放某班30个学生的名字 30个人 每人的名字 其长度 8 name 30 8 例 已知三个字符串 挑出并输出最大串 CCTV 0 BTV 0 NTV 0 c 0 是第一个串在内存存放首地址c 1 是第二个串在内存存放首地址c 2 是第三个串在内存存放首地址str是字符串在内存存放首地址 includemain charstr 20 c 3 20 inti for i 0 i0 strcpy str c 0 elsestrcpy str c 1 if strcmp c 2 str 0 strcpy str c 2 printf max s n str 例 键入一个数字串 将其转为相应的整数 如 1234 转为 1234 1234 转为1234 main chars 20 inti n sign scanf s s for i 0 s i s i t s i n i sign s i 1 1 if s i s i i for n 0 s i 0
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!