收藏 分销(赏)

CSharp_03_数组与字符串.ppt

上传人:pc****0 文档编号:13169033 上传时间:2026-01-29 格式:PPT 页数:55 大小:3.17MB 下载积分:10 金币
下载 相关 举报
CSharp_03_数组与字符串.ppt_第1页
第1页 / 共55页
CSharp_03_数组与字符串.ppt_第2页
第2页 / 共55页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Visual C#.NET,天津农学院 计算机科学与信息工程系,许晓华,第,3,讲 数组与字符串,一维数组,字符串,多维数组,数组的定义,int,num=new int10;,int,num1=new int31,2,3;,int,num1=1,2,3;,/,此两行等价,string name=“Jim”,“John”;/,定义字符串数组,数组的默认值,数组元素会自动初始化为默认值,static void,Main(string,args,),int,i=new int5;,float f=new float5;,char c=new char5;,bool,b=new bool5;,Console.WriteLine(i0);,Console.WriteLine(f0);,Console.WriteLine(c0);,Console.WriteLine(b0);,面试题:开灯问题,对一批编号为,1,100,,全部,关,着的灯进行以下操作:,凡是,1,的倍数反方向拨一次开关;,2,的倍数反方向又拨一次开关;,3,的倍数反方向又拨一次开关,100,的倍数反方向又拨一次开关,问:最后哪些灯是,开,着的。,例,3-1,开灯问题,有,n,盏灯,编号为,1n,。,第一个人把所有灯打开,第二个人按下,2,的倍数的灯的开关,第三个人按下,3,的倍数的灯的开关,一共,k,个人,最后有哪些灯开着?,输入,n,和,k,,输出开着的灯的编号。,k=n=1000,常量数组,static,readonly,int,arr,=new int51,2,3,4,5;,static,readonly,int,arr,=1,2,3,4,5;,不能用,const,了,字符型的常量数组可定义成字符串,static,readonly,char RMB=,零,壹,贰,叁,肆,伍,陆,柒,捌,玖,;,static,readonly,string RMB=,零壹贰叁肆伍陆柒捌玖,;,const string RMB=,零壹贰叁肆伍陆柒捌玖,;,数组的常用操作技巧,数组派生自,Array,类。,Array,类提供的属性与方法对于数组同样适用。,常用的如下:,Length-,数组长度,Array.Sort,()-,对数组元素升序排序,Array.Reverse,()-,对数组元素进行反转,例,3-2,求数组元素个数,int,a=1,2,3,4,5;,Console.WriteLine(a.Length,);,例,3-3,数组的遍历,int,a=1,2,3,4,5;,for(,int,i=0;i,a.Length;i,+),Console.WriteLine(ai,);,int,a=1,2,3,4,5;,foreach,(,int,i in a),Console.WriteLine(i,);,在,C#,里等价于:,例,3-4,对数组元素升序排序,int,a=3,7,2,6,10;,Array.Sort(a,);,foreach,(,int,i in a),Console.WriteLine(i,);,例,3-5,反转数组元素,Array.Sort,与,Array.Reverse,结合,可实现降序排列,int,a=4,7,1,9,6,3;,Array.Sort(a,);,Array.Reverse(a,);,foreach(int,i in a),Console.WriteLine(i,);,例,3-5,程序设计中,用什么变量保存身份证号码呢?长整数可以吗?不可以!,因为有人的身份证最后一位是,X,实际上,除了最后一位的,X,,不会出现其它字母!,身份证号码,18,位,=17,位,+,校验码,校验码的计算过程:,例如:身份证前,17,位,=ABCDEFGHIJKLMNOPQ,AQ,每位数字乘以权值求和(每位数字和它对应的“权”相乘后累加),17,位对应的权值分别是:,7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2,求出的总和再对,11,求模,然后按下表映射:,余数,0 1 2 3 4 5 6 7 8 9 10,校验码:,1 0 X 9 8 7 6 5 4 3 2,编写程序,输入身份证号前,17,位,输出最后,1,位校验码。,作业:,有这样一个,3,位数,组成它的,3,个数字阶乘之和正好等于它本身。,即:,abc,=a!+b!+c!,这个数字是,145,。,请编程求出满足上述规则的,5,位数。,作业:十进制转换为十六进制,输入一个十进制正整数,输出其十六进制形式。,例如:输入,254,,应该输出,FE,字符串,Length,属性,-,字符串中字符的个数,Equals(),方法,-,判断两个字符串是否相同,Format(),方法,-,格式化字符串,Split(),方法,-,将字符串分割成字符数组,Join(),方法,-Split(),的相反操作,“”,、,string.Empty,、,null,的区别,string.Empty,等价于,”,string,str,=”;,表示,str,指向首元素为,0,(字符串结束标志)的字符数组。会分配内存空间,但是该内存空间的首位为,0,。,TextBox1.Text,的默认值为零长度字符串,。,string,str,=null;,表示,str,是一个值为,0,的指针。不分配任何内存空间。,面试题:判定字符串为空的几种写法,哪种最快?,(A),s.Length,=0,(B)s=,string.Empty,(C)s=,注意:以上方法不能用来判断字符串为,NULL,,否则会出现“未将对象引用设置到对象的实例”的错误,若判断判断字符串是否为空(包含,NULL,的情况)用,String.IsNullOrEmpty,(,str,),;,知识线,3-,效率改善技巧,判定字符串为空,最快的是,if(,s.Length,=0),例,3-6,判断两个字符串是否相同,static void,Main(string,args,),string s1=Hello;,string s2=World;,bool,b=Equals(s1,s2);,/,bool,b=s1.Equals(s2);,Console.WriteLine(b,);,例,3-7,格式化字符串,放在第一节课。这节课再讲,string.Format,Console.WriteLine(“0”,12345678);/,无任何格式,Console.WriteLine(0,10:F,12);/,正数右对齐,负数左对齐,Console.WriteLine(0:N,12345678);/,每,3,位数字用逗号隔开,等价于,string s=string.Format(0:N,12345678);,Console.WriteLine(s,);,例,3-7,格式化字符串(续),string s=string.Format(“0:F”,1234);/,保留小数点后两位,string s=string.Format(0:E,12345678);/,科学计数法,string s=string.Format(0:P,0.64);/,百分比的形式,string s=string.Format(0:x,255);/16,进制小写,string s=string.Format(0:X,255);/16,进制大写,string s=string.Format(“0:X4”,255);/4,位,16,进制,string s=string.Format(“0:F”,1234);/,保留小数点后两位,string s=string.Format(0:C,9999);/,货币格式,默认,2,位小数,string s=string.Format(0:C4,255);/,货币格式,,4,位小数,例,3-8,面试题,double,或,decimal,变量,比如,122235401.21644,,作为货币的值如何按各个不同国家的习惯来输出。,比如美国用,$122,235,401.22,英国则为,122,235,401.22,例,3-9,格式化日期时间字符串,static void,Main(string,args,),string s1=,DateTime.Now.ToString,();,Console.WriteLine(s1);,string s2=string.Format(0:yyyy-MM-dd,HH:mm:ss,DateTime.Now,);,Console.WriteLine(s2);,string s3=,string.Format,(,今天是,0:M,月,dd,日,DateTime.Now,);,Console.WriteLine(s3);,string s4=,string.Format,(,现在时间是,0:HH,点,mm,分,DateTime.Now,);,Console.WriteLine(s4);,例,3-10,数组与字符串综合示例,输入一组用逗号或空格隔开的数据,对数据进行降序排列并输出显示,join,刚才的例题再加上这两行代码。,把,split,出来的东东,再用,连接,string s=,string.Join(,stringArray,);,Console.WriteLine(s,);,作业,(,某公司面试题,),题目:输入一句英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如:输入“,I am a boy.”,,则输出“,boy.a am I”,。,C#,如何换行?,一条语句如果太长,怎办?,C#,中的换行符就是回车。,但是不能在方法名和字符串常量中间换行,那字符串太长怎么办?,用,+,连接多行,推荐一个好网站,欧拉计划,|Project Euler,例,3-11,:欧拉计划第,8,题,欧拉计划,|Project Euler,中文翻译站,目前翻译,200,道题了。,欧拉计划第,8,题中文翻译,例,3-12,:键盘错位,敲键盘时,经常会向右错,1,位。,比如想敲,”,iloveyou,”,,敲成了,”,o;pbrupi,”,输入错位的字符串,输出其本意。,(,不考虑空格,不考虑英文大写,),作业:,Caesar,加密,据说凯撒大帝是最初发明了加密的人,用于军队传递消息。方法是将字母表中的字母,用其后的第,5,个字母代替。,ABCDEFGHIJKLMNOPQRSTUVWXYZ,对应的密文分别是:,FGHIJKLMNOPQRSTUVWXYZABCDE,编写加密和解密程序。,输入原文,进行加密,输出密文。,再对密文进行解密,输出原文。,知识线,1-,知识点,6,如何阴影显示所有的某变量?,双击其中任意一个即可,作业:人民币大写,输入不超过,12,位的十进制整数,将其转换为人民币大写输出。,进阶:,考虑小数点,考虑对,0,的处理,两个,0,以上连在一起如何处理?,人民币大写,考虑小数点,考虑,0,的处理,两个以上连续的,0,特殊位为,0,:亿,万,元,最高位为,0,只有,0,多维数组,Multi-Dimensional Array,矩形数组,-Rectangular array,交错数组,-Jagged array,又叫锯齿数组、不规则数组、数组的数组,矩形数组,内加上逗号,表示定义矩形数组。,string ,names;,double ,scores;,string ,names=new string2,2“John”,”Mary”,“Arlen”,”bill”;,锯齿数组,一个数组中的元素也是数组,也称锯齿数组。,int,array;,int,array=new,int,2 new,int,3 5,6,4,new,int,4 1,2,3,4;,二维数组打印杨辉三角形,锯齿数组打印杨辉三角形,二维数组与锯齿数组效率比较,二维数组与锯齿数组效率比较,锯齿数组的效率瓶颈在于创建和销毁上。但编译器对其存取操作进行了优化。,所以应该尽量采用锯齿数组。,知识线,3-,知识点,2,采用锯齿数组代替二维数组,杨辉三角,详解九章算法,中记载的表,杨辉三角形的应用,若规定杨辉三角形从第,0,行开始。,它的第,N,行就是二项式,(,a+b),N,的展开项系数,(a+b),0,=1,(a+b),1,=,a+b,(a+b),2,=a,2,+2ab+b,2,(a+b),3,=a,3,+3a,2,b+3ab,2,+b,3,它的系数,也是组合数。,比如:第,3,行的第,2,个元素,就是,C,2,3,总结,1.,关于初始化,变量必须先赋值再使用,否则报错,数组元素自动初始化为默认值,可以直接使用,上机实习题:一个很好的题,输入汉字,进行过滤,将屏蔽的汉字显示为,*,比如输入民主与自由,是我们追求的目标。,输出,*,与,*,,是我们追求的目标,Split,的好例题,输入一个,IP,地址,输出是,ABCDE,哪一类的。,5,子棋的作业可以放在这里,欧拉计划第,13,题,Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.,找出以下,100,个,50,位数之和的前十位数字。,C#精,品课,许晓华,pain past is pleasure,philiasophia,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服