b基本控制结构和导出数据类型.pptx

上传人:莉*** 文档编号:87175571 上传时间:2023-04-16 格式:PPTX 页数:67 大小:541.53KB
返回 下载 相关 举报
b基本控制结构和导出数据类型.pptx_第1页
第1页 / 共67页
b基本控制结构和导出数据类型.pptx_第2页
第2页 / 共67页
点击查看更多>>
资源描述

《b基本控制结构和导出数据类型.pptx》由会员分享,可在线阅读,更多相关《b基本控制结构和导出数据类型.pptx(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、14.4.5.1 5.1 导出类型概念 -在在计计算算机机所所处处理理的的数数据据中中,最最常常见见的的,也也是是最最需需要要由由计计算算机机高高速速处处理理的的数数据据是是成成批批出出现现的的同同一一类类型型的的数据,数据,C+C+语言中把这类数据称为数组。语言中把这类数据称为数组。导出数据类型,其特点是这种类型的定义是在其导出数据类型,其特点是这种类型的定义是在其它已定义类型的基础上定义的,而且其运算也是确它已定义类型的基础上定义的,而且其运算也是确定的。定的。第四种结构类型第四种结构类型第2页/共67页第1页/共67页2 4.4.5.2 5.2 一维数组与实例 数数组组是是同同类类型型元

2、元素素(分分量量)的的有有序序组组合合体体。元元素素的的类类型型可可以以是是C+C+语语言言中中允允许许使使用用的的任任何何一一种种数数据据类型(包括任何用户自定义类型)。类型(包括任何用户自定义类型)。数数组组中中的的每每个个元元素素都都有有与与其其对对应应的的下下标标以以标标明明该该元元素素在在数数组组中中的的位位置置。对对数数组组元元素素的的访访问问通通常常借借助助于于下下标标来来进进行行,元元素素也也被被称称为为下下标标变变量量。每每个个数数组组元元素素(即下标变量)都可以当作单个变量来使用。(即下标变量)都可以当作单个变量来使用。具具有有一一个个下下标标的的数数组组叫叫做做一一维维数

3、数组组,它它是是由由n n个个同同一一类类型型数数据据组组成成的的一一维维序序列列。按按如如下下格格式式来来说说明明一一维维数组。数组。第3页/共67页第2页/共67页31 1 说明一维数组 =其中的其中的“”用于指出数组元素的类型,也称为数组类型。用于指出数组元素的类型,也称为数组类型。“”是一个标识符,是为数组起的名字,该名字还代表是一个标识符,是为数组起的名字,该名字还代表数组首元数组首元素的地址素的地址(指针概念指针概念,在以后介绍)。方括号中的,在以后介绍)。方括号中的“”用于指定用于指定数组的大小,它必须是一个整数或一个整型的常量表达式。数组的大小,它必须是一个整数或一个整型的常量

4、表达式。“=”部分可有可无,若有的话,用于为数组元素置初值;其中的部分可有可无,若有的话,用于为数组元素置初值;其中的“”由一批以逗号分割的由一批以逗号分割的常量值常量值所构成。所构成。第4页/共67页第3页/共67页4例如:int a10int a10;说说明明了了一一个个一一维维数数组组,数数组组名名为为a a,具具有有1010个个元元素素,元元素素类类型型为为intint。要要访访问问a a数数组组的的各各元元素素(分分量量),可可通通过过使使用用下下标标变变量量a0a0,a1a1,a2a2,.,a9a9来来实实现现(注注意意,规规定定下下标标总总从从0 0开开始始)。每每一一个个下下标

5、标变变量量aiai的的作作用用与与一一个个intint型型简简单单变变量量所所能能起起的的作作用用相相同同。既既是是说说,对对intint型型简简单单变变量量可可施施加加的的运运算算与与操操作作同同样样可可施施加加到到intint型型数数组组元元素素(分分量量)上上。除除整整数数外外,下下标标处处还还可可以以使使用用一一个个整整型型表表达达式式,表表达达式式的的值值正正是是要要指指定定的的下标。如,下标。如,a2*4+1a2*4+1,ai+1ai+1,aa1-3aa1-3都是合法的下标变量。都是合法的下标变量。第5页/共67页第4页/共67页5 对对a a数组元素(下标变量)进行使用:数组元素

6、(下标变量)进行使用:int a10,i=1;int a10,i=1;a3=123;a3=123;cina9;cina9;ai-1=a3+2*a2*4+1;ai-1=a3+2*a2*4+1;couta0=a0endl;couta0=a0a9)if(a3a9)couta9endl;couta9a9)(a3a9)”进进行行下下标标变变量的量的比较比较运算等。运算等。第7页/共67页第6页/共67页7又如:char arr120,arr280;char arr120,arr280;float float fa115,fa115,fa26=1.2,35.6,-fa26=1.2,35.6,-22,0.1

7、,66,30;22,0.1,66,30;说说明明了了两两个个charchar型型一一维维数数组组arr1arr1与与arr2arr2,大大小小分分别别为为2020和和8080;又又说说明明两两个个floatfloat型型一一维维数数组组fa1fa1与与fa2fa2,大小分别为大小分别为1515和和6 6,且为,且为fa2fa2数组赋了初值。数组赋了初值。第8页/共67页第7页/共67页82 2 一维数组应用实例1 1 反序输出问题反序输出问题2 2 使使用用Eratosthenes Eratosthenes 筛筛法法求求10001000以内的素数以内的素数3 3 统计学生成绩统计学生成绩第9页

8、/共67页第8页/共67页91 1 反序输出问题 1.1.从键盘输入从键盘输入1010个个intint型数,而后按输入的相反顺序输出它们。型数,而后按输入的相反顺序输出它们。实实现现方方式式:使使用用intint型型数数组组存存放放数数据据,通通过过下下标标变变化化来来处处理理这这些些数数据据 。例如,程序执行后的例如,程序执行后的输入输出界面输入输出界面可设计为可设计为:Input 10 integers:Input 10 integers:1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10-The result-The result-10 9 8 7 6 5

9、4 3 2 1 10 9 8 7 6 5 4 3 2 1 第10页/共67页第9页/共67页10程序编制:#include include void main()void main()int a10,i;int a10,i;/说说明明intint型型一一维维数数组组a acoutInput 10 integers:endl;coutInput 10 integers:endl;/输入输入1010个整数,依次放入各下标变量中个整数,依次放入各下标变量中for(i=0;i10;i+)for(i=0;iai;cinai;cout-The result-endl;cout-The result-=0;

10、i=0;i-)i-)/下下标标i i从从9 9起起,递递减减变变化化到到0 0coutai;coutai;coutendl;coutendl;第11页/共67页第10页/共67页11 2使用Eratosthenes筛法求1000以内的素数(课本p116)先先将将1 110001000放放在在一一个个数数组组sievesieve(看看成成是是一一个个筛筛子子)中中;首首先先“留留下下”2 2(第第一一个个素素数数),而而后后把把2 2的的倍倍数数统统统统从从数数组组sievesieve(筛筛子子)中中删删去去;再再“留留下下”3 3(第第二二个个素素数数),而而后后把把3 3的的倍倍数数统统统统

11、从从数数组组sievesieve中中删删去去;再再往往下下是是5,7,.5,7,.。好好象象是是一一个个筛筛子子,把把不不需需要要的的数数逐逐步筛去步筛去,留下的正是所需要的各素数。,留下的正是所需要的各素数。所所谓谓将将某某数数从从数数组组sievesieve(筛筛子子)中中删删去去,本本程程序序实现时,是将数组中的该数实现时,是将数组中的该数“改写改写”为为0 0。注意注意:具体实现与:具体实现与4.4.7.47.4小节的方法有所不同。小节的方法有所不同。第12页/共67页第11页/共67页12 程序执行后的输出结果样式如下 (每输出1515个素数换一行):2 2 3 3 5 5 7 7

12、11 11 13 13 17 17 19 19 23 23 29 29 31 31 37 37 41 41 43 43 474753 53 59 59 61 61 67 67 71 71 73 73 79 79 83 83 89 89 97 97 101 101 103 103 107 107 109 113109 113127 127 131 131 137 137 139 139 149 149 151 151 157 157 163 163 167 167 173 173 179 179 181 181 191 191 193 197193 197877 877 881 881 883

13、883 887 887 907 907 911 911 919 919 929 929 937 937 941 941 947 947 953 953 967 967 971 977971 977983 991 997983 991 997第13页/共67页第12页/共67页13具体程序:#includeincludevoid main()void main()const int n=1000;const int n=1000;int sieven+1;int sieven+1;/筛子筛子sievesievefor(int j=1;jn+1;j+)for(int j=1;jn+1;j+)sie

14、vej=j;sievej=j;/放入数据放入数据int i=1,count=0;int i=1,count=0;第14页/共67页第13页/共67页14while(in)while(in)i+;i+;if(sievei!=0)if(sievei!=0)/尚在筛中尚在筛中coutsetw(5)sievei;coutsetw(5)sievei;count+;count+;if(count%15=0)coutendl;if(count%15=0)coutendl;/每行每行1515数数 for(int k=i;kn+1;k+=i)for(int k=i;kn+1;k+=i)/消去倍数消去倍数siev

15、ek=0;sievek=0;/if/if /while/while coutendl;coutendl;/main/main第15页/共67页第14页/共67页15进一步改进,使用boolbool数组#includeincludevoid main()void main()const int n=1000;const int n=1000;bool sieven+1;bool sieven+1;/筛子sievesieve for(int j=1;jn+1;j+)for(int j=1;jn+1;j+)sievej=true;sievej=true;/放入数据/sievejsievej为true

16、true意味着j j在筛中int i=1,count=0;int i=1,count=0;第16页/共67页第15页/共67页16 while(in)while(in)i+;i+;if(sievei)if(sievei)/i/i尚在筛中尚在筛中 coutsetw(5)i;coutsetw(5)i;count+;count+;if(count%15=0)coutendl;/if(count%15=0)coutendl;/每行每行1515数数 for(int k=i;kn+1;k+=i)for(int k=i;kn+1;k+=i)/消去消去倍数倍数 sievek=false;sievek=fals

17、e;/if/if /while/while coutendl;coutendl;/main/main第17页/共67页第16页/共67页173 3 统计学生成绩 -课本p108p108 输入输入n n个学生的注册号和成绩,计算出平均成绩,并列出成绩最好的前个学生的注册号和成绩,计算出平均成绩,并列出成绩最好的前t t名学生的名学生的注册号和成绩。注册号和成绩。第18页/共67页第17页/共67页18程序执行后的输出结果式样如下(n=6,t=3n=6,t=3时):Input 6 students Reg_Num&Score:Input 6 students Reg_Num&Score:1001

18、88.51001 88.51002 911002 911003 85.51003 85.51004 93.51004 93.51005 851005 851006 961006 96Average score:89.9Average score:89.9 register-number score register-number score1 1006 96.01 1006 96.02 1004 93.52 1004 93.53 1002 91.03 1002 91.0第19页/共67页第18页/共67页19程序如下:#includevoidmain()constintn=6;/共有共有n个学

19、生个学生constintt=3;/欲找出前欲找出前t名最好成绩者名最好成绩者intindexn;/数组数组index,存放存放n个学生的注册号个学生的注册号floatscoren;/数组数组score,存放存放n个学生的成绩个学生的成绩coutInputnstudentsReg_Num&Score:endl;for(inti=0;iindexiscorei;第20页/共67页第19页/共67页20 floatsum=0;/放累加和的sum先置为0for(i=0;in;i+)sum+=scorei;/将n个学生的成绩累加到sum上cout.setf(ios:fixed);/设置以定点数格式输出数

20、据cout.precision(1);/点后保留1位cout“Averagescore:”sum/nendl;/输出平均成绩cout.width(25);coutregister-numberscore;/输出“题头行”第21页/共67页第20页/共67页21/*/*通过通过“for(i=0;it;i+)for(i=0;it;i+)”形式的循形式的循环,找出环,找出前前t t名最好名最好成绩者,并输出其注册号及成绩。成绩者,并输出其注册号及成绩。i=0i=0的循环先使的循环先使score0score0及及index0index0处被交换处被交换成为第一名最好成绩者的成绩及注册号,而后输出;成为

21、第一名最好成绩者的成绩及注册号,而后输出;i=1i=1的循环先使的循环先使score1score1及及index1index1处被交换成为处被交换成为第二名最好成绩者的成绩及注册号,而后输出;第二名最好成绩者的成绩及注册号,而后输出;.,如此做法,直到找出前,如此做法,直到找出前t t名最好成绩者,并输出它名最好成绩者,并输出它们的相关信息。们的相关信息。第第i i次的循环首先次的循环首先找出从找出从scoreiscorei到数组末到数组末scoren-1scoren-1中的中的最大者最大者s s,并记录其并记录其下标下标值到值到j1j1,而后而后将最大者将最大者scorej1scorej1掉

22、换到掉换到scoreiscorei的位置的位置上,上,当然还要当然还要将将indexj1indexj1掉换到掉换到indexiindexi的位置的位置处,处,以使以使indexiindexi总与总与scoreiscorei保持一一对应关系。保持一一对应关系。*/*/第22页/共67页第21页/共67页22 for(i=0;it;i+)/找出前找出前t名最好者名最好者floats=scorei;/从从i i分量始分量始score中的最大者中的最大者sintj1=i;/j1中记录上述最大者的下标中记录上述最大者的下标ifor(intj=i+1;jn;j+)/看还有否比看还有否比s更大的更大的if(

23、si)if(j1i)/若若scoreiscorei到到scoren-1scoren-1中的最大者中的最大者/并非并非scoreiscorei时,要进行交换时,要进行交换scorej1=scorei;scorej1=scorei;scorei=s;scorei=s;/使使scoreiscorei交交换为最大换为最大int tmp int tmp=indexj1;/=indexj1;/交换注册号交换注册号indexj1=indexi;indexj1=indexi;indexi=indexi=tmptmp;第24页/共67页第23页/共67页24cout.width(4);coutendli+1;/

24、输出名次号(前t名的第i+1名)cout.width(11);coutindexi;/输出第i+1名学生的注册号cout.width(12);cout.precision(1);/点后保留1位coutscorei;/输出第i+1名学生的成绩/fori循环体结束coutendl;/main结束第25页/共67页第24页/共67页254.4.5.3 5.3 多维数组与实例 -具有具有两个下标两个下标的数组叫做的数组叫做二维数组二维数组。二维数组经常用。二维数组经常用来表示来表示按行和列格式按行和列格式来存放信息的来存放信息的数据表数据表。要区分表中。要区分表中某个特定的元素,必须指定两个下标。某个

25、特定的元素,必须指定两个下标。第一个下标第一个下标表示表示该元素所在的该元素所在的行行,而,而第二个下标第二个下标则表示该元素所在的则表示该元素所在的列列。按如下格式来按如下格式来说明二维数组说明二维数组:其中的其中的“”及及“”的含义与一维的含义与一维数组相同。方括号中的数组相同。方括号中的“”与与“”用于指用于指定数组的大小定数组的大小,它们必须是整数或整型的常量表达式。它们必须是整数或整型的常量表达式。类似可以说明三维、四维等二维以上的多维数组。类似可以说明三维、四维等二维以上的多维数组。第26页/共67页第25页/共67页26例如:例如:int a34int a34;说明了一个说明了一

26、个二维数组二维数组,数组名为,数组名为a a,具有具有1212个元素个元素(3(3行行4 4列列),元素类型为,元素类型为intint。要访问要访问a a数组的各元素数组的各元素(分量分量),可通过使用下述,可通过使用下述1212个个下标变量下标变量:a00a00,a01a01,a02a02,a03a03,a10a10,a11a11,a12a12,a13a13,a20a20,a21a21,a22a22,a23a23。可可以看出,与一维数组一样,二维数组的两个下标以看出,与一维数组一样,二维数组的两个下标(行下标行下标与列下标与列下标)也都是从也都是从0 0开始的。开始的。每一个每一个下标变量下

27、标变量aijaij的作用与一个的作用与一个intint型简单变型简单变量所能起的作用相同量所能起的作用相同。既是说,对。既是说,对intint型简单变量可施加型简单变量可施加的运算与操作同样可施加到的运算与操作同样可施加到intint型数组元素即下标变量型数组元素即下标变量aijaij上。上。第27页/共67页第26页/共67页27例如:例如:int a34int a34;另外,还可将上述另外,还可将上述3 3行行4 4列的二维列的二维数组数组a a看成是看成是具有具有3 3个一维数组元素个一维数组元素(每个元素为一行,具有(每个元素为一行,具有4 4个个intint型数据)的数组,型数据)的

28、数组,可使用可使用a0a0、a1a1、a2a2来表示这来表示这3 3个一维数组。注意,个一维数组。注意,a0a0、a1a1、a2a2的的“级别级别”与上述与上述1212个下标变量个下标变量aijaij的的“级别级别”完全不同。完全不同。a0a0、a1a1、a2a2的的“级别级别”为具有为具有4 4个个intint型元素的一维数组型元素的一维数组(与一维数组说明处的(与一维数组说明处的“”一一样,它们代表样,它们代表3 3个不同的地址即指针,其中个不同的地址即指针,其中a0a0代表二维数组代表二维数组a a的第一行元的第一行元素的首地址素的首地址,a1a1、a2a2代表第二与第三行元素的首地址)

29、,而下标变量代表第二与第三行元素的首地址),而下标变量aijaij的的“级别级别”为为intint,它代表一个整数。它代表一个整数。第28页/共67页第27页/共67页28 如下的程序片段中对所说明的a a数组的 元素(下标变量)进行了使用:int a34,i=1,j=1;int a34,i=1,j=1;a00=123;a00=123;cina01;cina01;a23=ai-1j-1+2*ai-1j;a23=ai-1j-1+2*ai-1j;couta23=a23endl;couta23=a23a01)if(a00a01)couta01endl;couta01endl;第29页/共67页第28

30、页/共67页29 说明了一个说明了一个intint型的型的二维数组二维数组a a;向数组向数组元素(下标变量)元素(下标变量)a00a00赋了值赋了值;通过通过cincin输入输入下标变量下标变量a01a01的值;使用下的值;使用下标变量标变量ai-1j-1ai-1j-1及及ai-1jai-1j参加参加运算运算,并将运算结果赋值,并将运算结果赋值给给a23a23(下标可以是整型表达式);下标可以是整型表达式);输出输出下标变量下标变量a23a23的值;下标变量还可进行的值;下标变量还可进行比较比较运算。运算。第30页/共67页第29页/共67页30又如:float fa11010,fa223=

31、1.1,float fa11010,fa223=1.1,2.2,-3.3,4.4,-5.5,6.6 ;2.2,-3.3,4.4,-5.5,6.6 ;说明了两个说明了两个floatfloat型二维数组型二维数组fa1(10fa1(10行行1010列列)与与fa2(2fa2(2行行3 3列列),且为,且为fa2fa2数组赋了初值(使用给数组赋了初值(使用给两个一维数组赋初值的形式)。也可使用如下的两个一维数组赋初值的形式)。也可使用如下的另一种格式为另一种格式为fa2fa2数组赋初值数组赋初值 “float float fa223fa223=1.1,2.2,-3.3,4.4,-5.5,6.6;=1

32、.1,2.2,-3.3,4.4,-5.5,6.6;”。第31页/共67页第30页/共67页31 char arr1320=12345,C+OK!,char arr1320=12345,C+OK!,I can do it!,arr21080;I can do it!,arr21080;说明了两个说明了两个charchar型二维数组型二维数组arr1arr1(3 3行行2020列)列)与与arr2arr2(1010行行8080列),并给列),并给arr1arr1数组赋了初值,数组赋了初值,从而使得从而使得arr10arr10、arr11arr11、arr12arr12都成为具有都成为具有了初值的字

33、符串(注意字符串赋初值的方法)。了初值的字符串(注意字符串赋初值的方法)。for(int i=0;i3;i+)for(int i=0;i3;i+)coutarr1iendl;coutarr1iendl;/一次输出一次输出“一一串串”第32页/共67页第31页/共67页32 上述上述forfor语句的执行将输出如下三行结果语句的执行将输出如下三行结果:1234512345C+OK!C+OK!I can do it!I can do it!同理,具有三个下标的数组叫做三维数组,同理,具有三个下标的数组叫做三维数组,具有具有n n个下标的数组叫做个下标的数组叫做n n维数组。通常,将二维维数组。通常

34、,将二维以上的数组统称为多维数组。实际上,多维数组以上的数组统称为多维数组。实际上,多维数组中最常用的只是二维数组。中最常用的只是二维数组。第33页/共67页第32页/共67页33多维数组应用实例1 1 二维数组简单应用二维数组简单应用2 2 二维字符数组二维字符数组3 3 画一个四叶玫瑰线图形画一个四叶玫瑰线图形第34页/共67页第33页/共67页341 1 二维数组简单应用 设有设有4 4行行4 4列的数组列的数组a a,其元素其元素aij=i+jaij=i+j。编程序,实现:编程序,实现:1.1.求第二行求第二行4 4元素之和;元素之和;2.2.求第三列求第三列4 4元素之平均值;元素之

35、平均值;3.3.求最大数,最小数及主对角线求最大数,最小数及主对角线4 4元素元素的平方和。的平方和。第35页/共67页第34页/共67页35 使程序执行后的输出结果为:0 1 2 30 1 2 3 1 2 3 4 1 2 3 4 2 3 4 5 2 3 4 5 3 4 5 6 3 4 5 6-The result-The result-sum_lin2=10sum_lin2=10ave_col3=3.5ave_col3=3.5max_elem=6max_elem=6min_elem=0min_elem=0sum_diag=56sum_diag=56第36页/共67页第35页/共67页36#i

36、nclude include void main()void main()int a44,i,j;int a44,i,j;for(i=0;i4;i+)/for(i=0;i4;i+)/为为a a数组赋值,并显示在屏幕数组赋值,并显示在屏幕上上for(j=0;j4;j+)for(j=0;j4;j+)aij=i+j;aij=i+j;cout aij;cout aij;coutendl;coutendl;/每每4 4数占一行数占一行 cout-The result-endl;cout-The result-endl;第37页/共67页第36页/共67页37 /1./1.求第二行求第二行4 4元素之和元

37、素之和 /(第二行元素为第二行元素为a1j(j=0,1,2,3)a1j(j=0,1,2,3))int sum_lin2=0;int sum_lin2=0;for(j=0;j4;j+)for(j=0;j4;j+)sum_lin2+=a1j;sum_lin2+=a1j;coutsum_lin2=sum_lin2endl;coutsum_lin2=sum_lin2endl;/2./2.求第三列求第三列4 4元素之平均值元素之平均值/(第三列元素为(第三列元素为ai2(i=0,1,2,3)ai2(i=0,1,2,3))int sum_col3=0;int sum_col3=0;for(i=0;i4;i

38、+)for(i=0;i4;i+)sum_col3+=ai2;sum_col3+=ai2;coutave_col3=sum_col3/4.0endl;coutave_col3=sum_col3/4.0endl;第38页/共67页第37页/共67页38 /3./3.求最大数求最大数,最小数及主对角线最小数及主对角线4 4元素的平方和元素的平方和int max_elem=a00,min_elem=a00,int max_elem=a00,min_elem=a00,sum_diag=0;sum_diag=0;/先认为先认为a00a00为最大数为最大数max_elemmax_elem、又为最小数又为最小

39、数min_elemmin_elemfor(i=0;i4;i+)for(i=0;i4;i+)for(j=0;j4;j+)for(j=0;jmax_elem)if(aijmax_elem)max_elem=aij;max_elem=aij;if(aijmin_elem)if(aijmin_elem)min_elem=aij;min_elem=aij;if(i=j)sum_diag+=aij*aij;if(i=j)sum_diag+=aij*aij;/行列下标相等时,行列下标相等时,aijaij为主对角线元为主对角线元素素 coutmax_elem=max_elemendl;coutmax_elem

40、=max_elemendl;coutmin_elem=min_elemendl;coutmin_elem=min_elemendl;coutsum_diag=sum_diagendl;coutsum_diag=sum_diagendl;第39页/共67页第38页/共67页39 2 2 二维字符数组 寻找寻找若干行若干行(字符串字符串)中的最长行并进)中的最长行并进行某些统计:从键盘输入行某些统计:从键盘输入n n个字符串(每串为个字符串(每串为一行,不超过一行,不超过8080个字符,且输入时以回车结个字符,且输入时以回车结束每一行)先存放在一个束每一行)先存放在一个二维字符数组二维字符数组中。

41、中。而后统计出而后统计出每一行中大写字母的出现次数每一行中大写字母的出现次数,并找出这些行中的并找出这些行中的最长行最长行。第40页/共67页第39页/共67页40 程序执行后,屏幕显示结果可为:-Input 4 strings-Input 4 strings-Hello!ABCabc.Hello!ABCabc.12345 67890 OK!OK!ookk!12345 67890 OK!OK!ookk!+*-/%abcde+*-/%abcdeWe are students.NK2004.We are students.NK2004.-The result-The result-count0=4

42、 count0=4 count1=4 count1=4 count2=0 count2=0 count3=3 count3=3maxLenLine:maxLenLine:12345 67890 OK!OK!ookk!12345 67890 OK!OK!ookk!第41页/共67页第40页/共67页41数据部分概要:数据部分概要:const int n=4;const int n=4;/定义常量定义常量n n,共输入并处理共输入并处理n n行字符行字符char strn81;char strn81;/str/str为为charchar型二维数组,用于盛放输入的型二维数组,用于盛放输入的n n行字

43、符行字符 /(每行最多放(每行最多放8080字符另加一结束符)字符另加一结束符)int countn;int countn;/使用使用countcount数组元素记录各行大写字母的出现次数数组元素记录各行大写字母的出现次数 /对应关系为:对应关系为:counticounti记录第记录第i i行中的大写字母个数行中的大写字母个数 char maxLenLine81=0;char maxLenLine81=0;/盛放最长行,初始化为盛放最长行,初始化为“空空”第42页/共67页第41页/共67页42处理部分概述:输入输入n n行字符(每行以回车为结束),依次放于一行字符(每行以回车为结束),依次放

44、于一维字符数组维字符数组stristri中(注意,中(注意,stristri为二维字符数组为二维字符数组strstr的一行),并将记录每行大写字母出现次数的的一行),并将记录每行大写字母出现次数的counticounti均均置为置为0 0(作累加单元用)。(作累加单元用)。编制循环,依次编制循环,依次处理处理已放在已放在str0str0、str1str1、.、strn-1strn-1中的那中的那n n行字符行字符-某行长度超过当前某行长度超过当前maxLenLinemaxLenLine之长度时更换之长度时更换maxLenLinemaxLenLine,并从头到尾寻找并从头到尾寻找各行的大写字母且

45、将累加次数放于各行的大写字母且将累加次数放于counticounti之中。之中。输出输出统计出的各行大写字母个数,并输出最长行。统计出的各行大写字母个数,并输出最长行。第43页/共67页第42页/共67页43#include/use“setw”#include/use“gets”#include/use“strlen”voidmain()constintn=4;/共输入并处理n行charstrn81,ch;/str数组,盛放n行字符charmaxLenLine81=0;/盛放最长行,初始化为“空”intcountn,i,j;/counti记录第i行的大写字母个数for(i=0;in;i+)co

46、unti=0;/将count初始化(累加次数用)cout-Inputnstrings-endl;for(i=0;in;i+)/共输入n行gets(stri);/放于一维数组stri中第44页/共67页第43页/共67页44for(i=0;istrlen(maxLenLine)strcpy(maxLenLine,stri);/更新最长行for(j=0;j=A&ch=Z)/若ch为大写字母counti+;/次数加1/forj/foricout-Theresult-endl;for(i=0;in;i+)/输出每行大写字母个数coutsetw(10)counti=setw(2)countiendl;c

47、outmaxLenLine:endl;coutmaxLenLineendl;/输出最长行第45页/共67页第44页/共67页45 3 3 画一个四叶玫瑰线图形 -课本p114p114实现概述:实现概述:1.1.四叶玫瑰线图形的四叶玫瑰线图形的极坐标方程极坐标方程为:为:p=a*sin(2*angle)p=a*sin(2*angle)其中,其中,angleangle为为极角极角,变化范围从,变化范围从0 0度到度到360360度;度;a a为为常常数数,表表示示所所画画四四叶叶玫玫瑰瑰线线图图形形中中,矩矩极极点的最长距离点的最长距离;p p为为极极径径,与与变变化化范范围围内内的的极极角角an

48、gleangle有有上上述述极坐标方程的关系。极坐标方程的关系。第46页/共67页第45页/共67页46 2.2.在“文本模式”的“字符屏幕”上“画图”的通常实现方法:(1 1)将将“字字符符屏屏幕幕”与与程程序序中中的的一一个个二二维维字字符符数数组组建建立立对对应应关关系系。如如,本本程程序序的的roserose数数组组就就对对应应于于欲欲显显示示的的“字字符符屏屏幕幕”,其其中中的的rose00rose00表表示示“字字符符屏屏幕幕”的的左左上上角角点点,而而roseyxroseyx则则表表示示“字字符符屏屏幕幕”的的第第y+1y+1行行第第x+1x+1列列的的那那一一个个点点(y y值

49、值即即行行号号由由上上往往下下扩扩展展,x x值值即即列列号号由左往右扩展)。由左往右扩展)。(2 2)将将二二维维字字符符数数组组的的各各元元素素均均置置为为“空空”(对对应应于一个于一个“空白字符屏幕空白字符屏幕”)。)。(3 3)按按某某种种计计算算方方法法(或或计计算算公公式式)算算出出应应该该在在“字字符符屏屏幕幕”的的哪哪些些位位置置处处“画画点点”(通通过过往往对对应应字字符符数数组组的某些元素处的某些元素处置置“*”符号符号来完成)。来完成)。(4 4)将将已已准准备备好好的的当当前前字字符符数数组组显显示示到到“字字符符屏屏幕幕”上(在上(在“字符屏幕字符屏幕”上上“画画”出

50、出了所需了所需图形图形)。)。第47页/共67页第46页/共67页473 3 本例的具体实现方法:把把360360度度分分为为足足够够多多的的若若干干份份(本本例例分分为为128128份份),在在每每个个分分定定的的角角度度angleangle处处,按按照照上上述述的的极极坐坐标标方方程程,计计算算出出每每一一个个对对应应的的函函数数值值p p(即即极极径径),从从而而得得到到平平面面上上的的一一批批点点;将将这这批批平平面面点点对对应应到到“字字符符屏屏幕幕”上上(相相应应的的roserose数数组组中中),并并将将每每一一个个点点用用一一个个字字符符“*”来来表表示示并并显显示示到到屏屏幕

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁