付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章数问题:下面的数据该怎么存放与处理1123.的症yyyynnnnynny数组:用于连续存放一组数据类型相同的元引例
问题:当输入下【例4.1】求N个学生的平均成绩,并统计高于平均分的人数。intk=0;floats,ave,sum=0;for(inti=0;i<100;i++){cin>>s;sum=sum+s;}{cin>>s;if(s>ave)k++;}
用数组来实现intk=0;float{sum=sum+s[i];}数组:一组数据类型相同的元素按一定顺序存放,构成的数一维数一维数组的定义、和初始定义形数据类型数组名[整型常量表达式如:int下标从0开数组名是常量,表示数组在内存中的首地正确constints=10;inta[s];float错误ints=10; float正确constints=10;inta[s];float错误ints=10; float花括数组的初花括给所有元素赋初值如:inta[5]={0,2,4,6,8};或inta[给部分元素赋初值。如int花括号内列出的值赋给了前面的若干个元素,其余元素系统自动赋0错错误int//数组名是个地址常量,不能被赋inta[10];//a[10]不是数组中的元素,不能用花括号为一个元素赋多个intc[3]={1,2, //常量个数超过数组定义的长度数组元素的和基本操数组元素的形式:数组名[下标相当于一个普通:int则 //数组下标越 //对数组一般不能作为一个整体进行操基本操假设有定义:inta[NN是已定义过的符号数组元素的输for(j=0;j<N;通过随机函数rand()产生0~100的Nfori=0 //rand()函数产生0~32767之间的整a[irand()%101//stdlib.h中含该函数说数组元素的求for(j=0;j<N;j++)求数组中的最大 //假设第一个元素值最for(j=1;j<N;求最大元素下 //imax代表最大元for(j=1;j<N;j++)
cout<<a[i]<<"";
元素的下标#include"iostream.h“#include"stdlib.h“#include"time.h“voidmain(){inta[10],ax,avg,i;
if{max=a[i];imax=
for
Rand(),srand()随机数Rand(),srand()随机数产生函数,#includerand()产生32767以内的数,srand()次产生的一组数例:数据移#include"iostream.h"#include"iomanip.h"
通过循通过循环显下面的7
右移一个元void{int
输入并显示1
显示显示1for{}
for(j=1;j<8;j++)}常常为符 ,第1个元素不用}即从a[1]开始使 数组排排序是将一组数按递增或递减的次序排列,如按学生的成绩球赛积分等排序选择冒泡法快速排序选择法排基本思想从n个数的序列中选出最小的数(递增),与第1除第个数外,其余n1个数再按(1的方法选出次小的数,与第2个数交换位置;重复(1)n-1遍,最后构成递增序列。【例4.2】对存放在数组中的6下下012345for(i={min=if(a[j]<a[min])min=j;{temp=a[i];a[i]=a[min]=temp;}冒泡法排基本思想:冒泡排序过程演从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放面,值较大的元素放在后面,一轮比较比较完毕,最大的数存放在a[-]中;for(j=1;j<5-i;j++)if(a[j-1]>a[j]{temp=a[j-}然后对a[0]到a[N-2]的N-1个数进行同(1)的操作,次最for(j=1;j<5-i;j++)if(a[j-1]>a[j]{temp=a[j-}987439874397849874398743978437979438
思考:已有序,如何结束排序数组的定形式数据类 数组名[常量表达式1][常量表达式如float a序号01a序号012345序号=当前行号*每行列数+当前列数组的初按在内存排列顺序对所有元素赋初值intint int按行给所有元素赋初值,每一行的数据放于一个花括号内int bb230 04500staticint 对应的数组b为cc000000对应的数组c为二维数组的基本操数组的输入、输【例4.4】输入两个矩阵A、B的值,求c=A+BAA3576B 6分析:A、B矩阵相加,其实质是将两矩阵的对应元素相加。相加的条件是有相同的行、列数。程序
#include"iostream.h"#include"iomanip.h"voidmain(){intfor(i=0;i<2;i++)for(j=0;j<3;for(i=0;i<2;i++)for(j=0;j<3;j++)
(用二重循环fori=0;i<2; //A+B矩阵,每个对应元素相for(j=0;j<3;for(i=0;i<2; for(j=0;j<3;
(用二重循环}}求二维数组中最大(或最小)元素及下【例5】对×方阵,求最大元素及下标。与一维数组求最大值的方式相同max=a[0][0];imax=0;jmax=0;for(i=0;i<3;i++)for(j=0;j<3;if({max=a[i][j];imax=i;矩阵转将矩阵以主对角线为轴线,将元素的行和列位置【例4.6】对3×3方阵转123147a456b258789369for(i=0;i<3;for(j=0;j<i;{t=a[i][j];
}矩阵相【例4.7】求两个矩阵a[M][N]和b[N][P]的乘积cB34B3456 C aikk即矩阵C的第i行第jfor(k=0;k<3;k++)s+=a[0][k]*b[k][0];程序#include#defineM#defineN#definePvoid{intintc[M][P],i,j,k,s;for(i=0;i<M;i++)for(j=0;j<P;j++) //求一个元素的for(k=0;k<N;k++)c[i][j]=}{for(j=0;j<P;j++)cout<<c[i][j]<<"}}字符ab123字符串ab123处理字符串的方法有
系统自动添加‘\0’(结束标志符字符数组、CString(string)类字符数字符数charcharabcd若干个abcd字符数abcdabcd字符数组的初始chars[10]I’,‘a’,‘mchars[10]I’,‘a’,‘m’,‘’,'fin //s串用字符串为字符数组初始charchars[10]={"Iamfine"};chars[10]="Iamfine";s是字符串,‘\0’系统自动添字符串数组初始对二维数组以charchara[4][8]={"COBOL","FORTRAN","PASCAL",注意:对于二维字符数组,用两个下标表示数组中的一个字符chars[10]={“Thisisachars[10]={“Thisisachars="Iamfine";chars[10];s={‘I’,‘’,‘a’,‘m’,‘’,'f','i','n',字符数组的输入/输逐个数组元素的输入/输字符串整体的输入/输char输入 输出 •cout<< •for(inti=0;i<2;i++) •for(i=0;i<2;i+) s1、s2中是字符串,'\0'自动添注意使用cin>>s1;
函数gets()和puts()是对字符串整体输入/输出“stdio.h”gets(字符puts(字符【例4.8】字符串的输入/输#include"stdio.h"#include"iostream.h"voidmain(){ charc[5]={'C','h','i','n',charb[]=fori=0;i<5; //不能用puts(c);也不能用cout<< fori0;b[i]\0'; //正确的,但是坏的,不主张用这种方cout<<}#include"stdio.h"#include"iostream.h"voidmain()#include"stdio.h"#include"iostream.h"voidmain(){chars[80],ch;inti,j;{for(i=0;s[i]!='\0';i++)}}
行字符串处理函使用下面函数时,应加#include“string.h”功能:求str所指向的字符串的长度。不包括字符串结束标志'\0'说明:str可为字符串常量、字符数组名或功能:将字符串中的小写字母转换成大写字母说明:str为字符字符串常量、数组名或字符指针功能:将str2所指的字符串到str1中说明:str1和str2为字符数组名或字符指针,str2还可以是字符串常量str1={str1要有足够大的str1={设:charstr2[10]功能:将str2字符串内容连接到str1字符串chars1[20]=cout<<strcat(s1 //s1中的内容变为功能:比较字符串str1和str2的大说明:从左至右逐个字符进行比较SI码值,直到出现不相同字符或遇到'\0为止。 小于 返回- 等于 返回 大于 返回
结果为:-【例4.9】字符串处理函数示#include"stdio.h"#include"string.h"voidmain(){chars[80];{if(strcmp(s,“pass”//比较两字符puts("Invalidpassword.\n");}}指针回intx=4;int*pp=&xp就是一个指针,存放x的地址p指向x,*p的值为4,*p就是x出现x的地方可以用*p代替,出现*p的地方可以用x2指针运假定有定义:int*p指针的值为NULL(0)表示不指向任何对p指向变量a例,假设有定intfloat则以下形式不允()()p+n(或p-p+n:指向后面的第n个元素p-n:指向前面的第n个元p+n的值为:p的值+n*sizeof(p指向的类型定义int假设a的地址为1000,则p的值为p+3自增(++)和自减(--p+pp自增或自减后p指向前一个或后一个元p指针相int*p1,4.4.1指针和一维数设有定义int下面介绍数组元素的三种方式下标方形式 数组名[下标地址方形式 *(地址指针方形式:*指针变量
假设有定floata[10],*p=则如下的等价关系成立p<=>a<=>p+i<=>*(p+i)<=>*(a+i)<=>指针可以作数组名即设有p=for(i=0;i<10;cinp=forp=for(i=0;i<10;
p=forp=for(i=0;i<10;i++,p++)p=for(i=0;i<10;第三种方法与其它二种区别何在分析下列程序#include#include<iostream.h>voidmain(){ a[10],i,*p;p=a;for(i=0;i<10;i++)for(i=0;i<10;i++,p++)}思考:数组元素//输//输出//输出①p与a的区p是地址变量,而ap、p、a++、②*p+(*p)++区*p++(*p)++的++运算符作用于指针变量所指对象设有定义:int//输出//输出使用指针数组元素:判断数组a与数组b中所有元素是否#includevoid#includevoid{inta[10],b[10],i;{}while(i<10&&if(i==10)cout<<*(a+i)-}void{}while(i<10&&if(i==10)cout<<*(p1+i)-}4.4.3指针和字符可通过字符指针 字符数组,二者的区别字符数字符指定charcharcharcharchar赋//指向字符串常量的首地p=newchar[6]或//应使字符指针有确键盘进行输入操cin>>p;或运字符数组名s不能p是指针变量,可以进行自【例4.1】输入一串字符在字符数组中,用指针方式逐一显示字符,并求其长度。#include"iostream.h"#include"stdio.h"voidmain(){chars[80],*p; cout<<*p //指针下移,直到p指向字符串结束cout<<"\n字符串长度p-}字符数组与字符指针的比较输入一字符串,将大写字母转换为小写字母并显#includeiostream.h>#include"stdio.h"voidmain(){charinti=0;{}}
#includestdio.h"voidmain(){chars[80],*p=s;{}}for(k=0;k<9;k++)if(x<a[k])for(k=0;k<9;k++)if(x<a[k])找的位置下标为for(i=8;i>=k;ia[i1] //从最后元素开始往后移,腾出位a[k]=数基本思想首先要查找待数据在数组中的位置然后从最后一个元素开始往前直到下标为k一个位置x3)第k个元素的位置空出,将欲的数据x7【例4.17】在有序数组a中数值删除数删除操作首先也是要找到欲删除的元素的位置k;然后从k+1n个位置开始向前移动;最后将数组元素减111【例4.18二分法查分析:二分法查设a[low]和a[high]是有序数组中最小和最大元素,待查找的数为x算法描述如下①开始假设待查区间的下界low为0,上界high为N-1待查区间中间元素的下标mid(low+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年开门双四斗柜项目可行性研究报告(市场调查与数据分析)
- 6-6-6-Nitrilotris-2-naphthoic-acid-6-6-6-Nitrilotri-2-naphthoic-acid-生命科学试剂-MCE
- 5-Bis-carboxymethyl-amino-methyl-isophthalic-acid-生命科学试剂-MCE
- 天津市数学试题及答案
- 2026年厂房节能技术应用报告
- 2026年膳食补充行业研究报告:全球市场分析与本土化趋势
- 2026年体育用品行业5S管理与企业效益分析报告
- 2026年新能源行业加盟体系拓展与产业发展报告
- 2026年航空航天行业复合材料创新应用分析报告
- 高纯铟制备工艺创新研究-2026年行业报告
- 研学基地品牌推广策略
- 2025中国中信金融资产管理股份有限公司资产经营四部社会招聘笔试历年常考点试题专练附带答案详解2套试卷
- 耳穴三联疗法课件
- 涉密模块化机房施工方案
- 国内航行海船法定检验技术规则第4篇 船舶安全
- 消防过滤式自救呼吸器的使用方法杜艳葶36课件
- 中介代理公司管理制度
- 中医经络腧穴课件
- 教育研究方法第七章教育个案研究法
- 小学教学质量提升三年(2024-2027)方案及措施
- 经皮肾动脉射频消融去交感神经技术管理规范
评论
0/150
提交评论