C程序设计简明教程-第2章C语言基础(字符串与数组)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1章节目录上一页下一页第2章C#语言基础(字符串与数组)一、字符串除了具体char类型外,C#还具备了string类型,专门用于处理一个以上的字符即字符串,使用非常方便,string字符串常量用双引号引起来。定义两种方法:stringst=abckjh;char[]st={'I','a','m'};2string对象的值是该有序集合的内容,并且该值是不可变的,根据字符在字符串中的不同位置,字符在字符串中有一个索引值,可以通过索引值获取字符串中的某个字符。字符在字符串中的索引从0开始。看下面的示例:staticvoidMain(string[]args){stringstr=字符与字符串;Console.WriteLine(字符串str中第一个字符是:{0},str[0]);//输出字符串中的第一个字符--字Console.WriteLine(字符串str中第二个字符是:{0},str[1]);//输出字符串中的第二个字符--符Console.Read();}字符串运算除了可以用连接运算符+把两个字符连接在一起外,还常常用到下面几个方法3(1)compare方法用来比较两个字符串是否相等,使用格式如下:intstring.Compare(stringstr1,stringstr2)其中Str1,str2是两个比较的字符串。如果str1str2的话,返回1;str1=str2返回0;str1str2返回-1。(2)compareto方法它的含义与compare一样,不过使用方法不一样,该方法是某个string对象的方法,使用格式为:str1.CompareTo(str2)如果str1str2返回1;相同返回0;小于返回-1(3)IndexOf方法该方法的作用是查找一个字符在一个字符串第一次出现的位置,使用格式为:格式:字符串.(‘字符’)它还有另一个作用是查找一个字符在一个字符串最后一次出现的位置。使用格式:字符串.LastIndexOf(‘字符’)4(4)Substring方法该方法可以截取字符串中指定位置和指定长度的字符,使用格式:字符串.Substring(intstartindex,intlength)其中startindex为子字符串开始位置,length为要取的字符串长度。例:stringstrA=字符串截取函数Substring测试示例;stringstrB=;strB=strA.Substring(5,6);(5)Insert方法用于向字符串的任意位置插入新元素,使用方法:字符串.Insert(intstartIndex,stringvalue);其中startindex为要插入字符的位置,value为要插入的字符串。例:stringstrA=字符串示例;stringstrInsert=插入;stringstrResult=strA.Insert(3,strInsert);5(6)求字符串长度:字符串.Length;(7)大小写转换字符串.ToLower();//转小写字符串.ToUpper();//转大写(8)删除首尾空格字符串.Trim();61.一维数组的定义、分配与使用所谓一维数组是指只有一个下标的数组。数组在使用之前必须先定义(或称声明)和分配空间,然后才能使用数组元素。(1)[格式]:数据类型符[]数组名=new数据类型符[长度];二、数组数组是一些具有相同类型的数据按一定顺序组成的序列,数组中的每一个数据都可以通过数组名及唯一一个索引号(下标)来存取。7例如,有下列语句:int[]a=newint[10];//定义了一个数组a,该数组的数据类型是int,具有10个元素。其实数组的声明与分配可以写成两条语句,上述语句也可以写成:int[]a;//定义数组a=newint[10];//给数组分配存储空间8与C/C++不同的是,C#中的数组的大小可以动态确定,如有以下语句:intAL=6;inta[]=newint[AL];这两条语句定义了一个长度为6的数组a。92.定义数组时对数组元素进行初始化例如,有下列语句:int[]x={1,2,3,4};该语句定义了具有4个元素的数组x,并依次给x[0]、x[1]、x[2]和x[3]赋初值1、2、3和4。上述语句也可以写成:int[]x=newint[]{1,2,3,4};或int[]x=newint[4]{1,2,3,4};[格式]:数据类型符[]数组名={初值列表};3.数组元素的引用引用一维数组元素的一般形式如下:数组名[下标]10例如,有定义语句:int[]a=newint[5];那么a数组具有元素a[0]、a[1]、a[2]、a[3]和a[4]。【例】循环显示数组各元素。程序如下:11补充:求一组数中的最大值及下标usingSystem;classA_9_1{publicstaticvoidMain(){constintN=10;//定义一个常量用来表示数组元素个数int[]a=newint[N];//定义具有N个元素的数组ainti,max,max_i;//max变量用来记最大值,max_i变量用来记最大值的下标RandomrandObj=newRandom();//生成随机数变量for(i=0;iN;i++)a[i]=randObj.Next(10,99);/*产生随机数并赋值给数组元素*/12max=a[0];max_i=0;/*首先认为最大值为第一个元素*/for(i=2;iN;i++)/*该循环求最大值与最大值的位置*/if(maxa[i]){max=a[i];max_i=i;}for(i=0;iN;i++)//输出整个数组Console.Write({0},a[i]);Console.WriteLine();/*输出最大值与最大值的位置*/Console.WriteLine(最大值为:{0},最大值位置为:{1},max,max_i+1);}}133.数组与数组列表属性A.求数组元素的个数:格式:数组名.LengthLength属性表示数组包含多少个元素。B.分割字符串为数组字符串.Split('分割字符')实例:Stringstring1=How-are-you?;string[]s=string1.Split('-');//foreach(stringscins)label1.Text=label1.Text+s.Length.ToString();//+\n+sc;14实例:判断一个数是否为回文数理解回文数,如12321,121,11,123321等先看传统的做法:longi,m;longk,k1=0;;k=Convert.ToInt32(textBox1.Text);m=k;while(m0){i=m%10;k1=k1*10+i;m=m/10;}label1.Text=;if(k1==k)label1.Text=k.ToString()+是回文数;elselabel1.Text=k.ToString()+不是回文数;15再看C#的做法inti=0,len;intt=1;strings=textBox1.Text;len=s.Length;while(ilen/2){if(s[i]!=s[len-1-i])t=0;i++;}label1.Text=;if(t==1)label1.Text=s.ToString()+是回文数;elselabel1.Text=s.ToString()+不是回文数;}16一维数组的典型应用:【例】随机产生十个两位数,然后利用选择法把它们从小到大排序。程序如下:17先声明数组int[]a;接下来a申请内存空间a=newint[10];//aRandoms=newRandom();//定义一个随机变量sstringstr=;for(inti=0;i10;i++)//把十个随机数打印出来{a[i]=s.Next(10,100);//每次产生一个2位数str=str++a[i].ToString();}label1.Text=10个数是:+str;18intmin,min_i,t;inti,j;for(i=0;i9;i++)/*外层循环用来控制一共需排几次*/{min=a[i];min_i=i;/*每轮首先认为该轮的第一个元素为最小值*/for(j=i+1;j10;j++)//每次剩下的选一个最小的放在前面if(mina[j]){min=a[j];min_i=j;}/*最小值与后面的元素比较,若后面的元素值小,则记下它的值和它的下标*/if(min_i!=i)/*如果最小值不是该轮的第一个元素,则交换*/{t=a[min_i];a[min_i]=a[i];a[i]=t;}}//下面是排好后stringstr=;for(i=0;i10;i++){str=str++a[i].ToString();}label2.Text=排好后:+str;19C#专门提供了一种用于遍历数组的foreach循环语句。foreach循环语句的格式为:foreach(类型名称变量名称in数组名称){循环体}语句中的“变量名称”是一个循环变量,在循环中,该变量依次获取数组中各元素的值。因此,对于依次获取数组中各元素值的操作,使用这种循环语句就很方便。要注意,“变量名称”的类型必须与数组的类型一致。例:int[]a=newint[]{1,3,4,5,7,9};foreach(intiina){label1.Text=label1.Text+i.ToString()+;}Stringst=Howareyou?;foreach(charcinst){label1.Text=label1.Text+c.ToString()+;}4、foreach循环语句20提前讲:列表框和组合框1列表框(ListBox)ListBox控件为用户提供了选项的列表,用户可以从列表中进行选择输入。如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条,它是一种规范输入的好工具。1.列表框的常用属性、方法和事件P112-113章节目录上一页下一页21若要在ListBox控件中添加或删除项,可使用ListBox1.Items.Add(项).Items.Insert(位置,项).Items.Clear()或.Items.Remove(ListBox1.SelectedItem)方法。或者在设计时使用Items属性向列表添加项。其中listBox1.Items.Count为列表框中的项目数,而listBox1.SelectedItems.Count为选中的项目数(多选时)listBox1.SelectedIndex为选中项的序号,值为-1时代表什么都没选listBox1.Text;//listBox1.SelectedItem.Tostring()为选中项;22例6计算并输出从sum=1+…+(k-1)+k。满足sum1000是退出循环。分析:该例属于循环中语句转移的情况,本例中使用listBox控件用于显示sum的值,使用button控件实现该事件。程序设计如图6-12所示。章节目录上一页下一页图6-12计算sum的值23【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intk=1;intsum=0;while(k100){sum=sum+k;listBox1.Items.Add(0+…+k.ToString()+=+sum.ToString());k=k+1;if(sum1000)break;}}章节目录上一页下一页242组合框(ComboBox)组合框是一个文本框和一个列表

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功