1、C程序设计简明教程-第2章C语言基础字符串与数组vstring对象的值是该有序集合的内容,并且该值是不可变的,根据字符在字符串中的不同位置,字符在字符串中有一个索引值,可以通过索引值获取字符串中的某个字符。字符在字符串中的索引从0开始。看下面的示例:vstaticvoidMain(string args)vv string str=字符与字符串;v Console.WriteLine(字符串str中第一个字符是:0,str0);v /输出字符串中的第一个字符-字v Console.WriteLine(字符串str中第二个字符是:0,str1);v /输出字符串中的第二个字符-符 v Conso
2、le.Read();vv字符串运算除了可以用连接运算符+把两个字符连接在一起外,还常常用到下面几个方法v(1)compare方法v 用来比较两个字符串是否相等,使用格式如下:v int string.Compare(string str1,string str2)v其中Str1,str2是两个比较的字符串。如果str1str2的话,返回1;str1=str2返回0;str1str2返回1;相同返回0;小于返回1v(3)IndexOf方法v 该方法的作用是查找一个字符在一个字符串第一次出现的位置,使用格式为:v 格式:字符串.(字符)v 它还有另一个作用是查找一个字符在一个字符串最后一次出现的位
3、置。使用格式:v 字符串.LastIndexOf(字符)(4)Substring方法该方法可以截取字符串中指定位置和指定长度的字符,使用格式:字符串.Substring(int startindex,int length)其中startindex为子字符串开始位置,length为要取的字符串长度。例:stringstrA=字符串截取函数Substring测试示例;stringstrB=;strB=strA.Substring(5,6);(5)Insert方法 用于向字符串的任意位置插入新元素,使用方法:字符串.Insert(int startIndex,string value);其中star
4、tindex为要插入字符的位置,value为要插入的字符串。例:string strA=字符串示例;string strInsert=插入;string strResult=strA.Insert(3,strInsert);(6)求字符串长度:字符串.Length;(7)大小写转换 字符串.ToLower();/转小写 字符串.ToUpper();/转大写(8)删除首尾空格 字符串.Trim();1.一维数组的定义、分配与使用一维数组的定义、分配与使用 所谓一维数组是指只有一个下标的数组。数组在使用之前必须先定义(或称声明)和分配空间,然后才能使用数组元素。(1)格式:数据类型符 数组名=ne
5、w 数据类型符长度;二、二、数组数组 数组是一些具有相同类型的数据按一定顺序组成的序列,数组中的每一个数据都可以通过数组名及唯一一个索引号(下标)来存取。例如,有下列语句:int a=new int 10;/定义了一个数组a,该数组的数据类型是int,具有10个元素。其实数组的声明与分配可以写成两条语句,上述语句也可以写成:int a;/定义数组a=new int 10;/给数组分配存储空间 与C/C+不同的是,C#中的数组的大小可以动态确定,如有以下语句:int AL=6;int a=new intAL;这两条语句定义了一个长度为6的数组a。2定义数组时对数组元素进行初始化 例如,有下列语句
6、:int x=1,2,3,4;该语句定义了具有4个元素的数组x,并依次给x0、x1、x2和x3赋初值1、2、3和4。上述语句也可以写成:int x=new int 1,2,3,4;或int x=new int4 1,2,3,4;格式:数据类型符 数组名=初值列表;3数组元素的引用引用一维数组元素的一般形式如下:数组名下标例如,有定义语句:int a=new int 5;那么a数组具有元素a0、a1、a2、a3和a4。【例】循环显示数组各元素。程序如下:v补充:求一组数中的最大值及下标vusing System;vclass A_1v public static void Main()v con
7、st int N=10;/定义一个常量用来表示数组元素个数v int a=new int N;/定义具有N个元素的数组av int i,max,max_i;/max变量用来记最大值,max_i变量用来记最大值的下标v Random randObj=new Random();/生成随机数变量v for(i=0;iN;i+)v ai=randObj.Next(10,99);/*产生随机数并赋值给数组元素*/v max=a0;max_i=0;/*首先认为最大值为第一个元素*/v for(i=2;iN;i+)/*该循环求最大值与最大值的位置*/v if(maxai)max=ai;max_i=i;v f
8、or(i=0;i 0)i=m%10;k1=k1*10+i;m=m/10;label1.Text=;if(k1=k)label1.Text=k.ToString()+是回文数;else label1.Text=k.ToString()+不是回文数;再看C#的做法vint i=0,len;v int t=1;v string s=textBox1.Text;v len=s.Length;v while(ilen/2)v v if(si!=slen-1-i)t=0;v i+;v v label1.Text=;v if(t=1)v label1.Text=s.ToString()+是回文数;v els
9、ev label1.Text=s.ToString()+不是回文数;v 一维数组的典型应用:【例】随机产生十个两位数,然后利用选择法把它们从小到大排序。程序如下:v先声明数组int a;v接下来a申请内存空间v a=new int10;/av Random s=new Random();/定义一个随机变量sv string str=;v for(int i=0;i 10;i+)/把十个随机数打印出来v v ai=s.Next(10,100);/每次产生一个2位数v str=str+ai.ToString();v v label1.Text=10个数是:+str;v int min,min_i,
10、t;v int i,j;v for(i=0;i 9;i+)/*外层循环用来控制一共需排几次*/v v min=ai;min_i=i;/*每轮首先认为该轮的第一个元素为最小值*/v for(j=i+1;j aj)min=aj;min_i=j;v /*最小值与后面的元素比较,若后面的元素值小,则记下它的值和它的下标*/v if(min_i!=i)/*如果最小值不是该轮的第一个元素,则交换*/v t=amin_i;amin_i=ai;ai=t;v v /下面是排好后v string str=;v for(i=0;i 1000是退出循环。是退出循环。分析:该例属于循环中语句转移的情况,本例分析:该例属
11、于循环中语句转移的情况,本例中使用中使用listBox控件用于显示控件用于显示sum的值,使的值,使用用button控件实现该事件。程序设计如图控件实现该事件。程序设计如图6-12所示。所示。章节目录章节目录上一页上一页下一页下一页图6-12 计算sum的值【计算】按钮的【计算】按钮的Click(单击)事件代码为:(单击)事件代码为:private void button1_Click(object sender,System.EventArgs e)int k=1;int sum=0;while(k1000)break;章节目录章节目录上一页上一页下一页下一页2 组合框(组合框(ComboB
12、ox)组合框是一个文本框和一个列表框的组合。与组合框是一个文本框和一个列表框的组合。与列表框不同的是列表框只能在给定的列表项中选列表框不同的是列表框只能在给定的列表项中选择,而组合框除了可在给定的列表项中选择还可择,而组合框除了可在给定的列表项中选择还可以直接在文本框中输入(以直接在文本框中输入(DropDownStyle属性被属性被设置设置DropDownList时除外)。时除外)。1.ComboBox常用属性和事件常用属性和事件P116-117vcomboBox1.Items.Add增加项目v comboBox1.Items.Remove移走项目 其余的与列表框类似其余的与列表框类似2.C
13、omboBox应用实例应用实例章节目录章节目录上一页上一页下一页下一页【例【例6-12】要求单击【开始】按钮,将两个组合框】要求单击【开始】按钮,将两个组合框中指定的年份范围内的所有闰年输出到列表框中。中指定的年份范围内的所有闰年输出到列表框中。图图6-14为显示为显示19552005年之间的所有闰年的结年之间的所有闰年的结果。果。章节目录章节目录上一页上一页下一页下一页 图图6-14 程序运行结果程序运行结果(1)设计程序界面。设计程序界面。(2)设置对象属性。设置对象属性。(3)编写程序代码。编写程序代码。private void btnStart_Click(object sender,
14、System.EventArgs e)/如果任一组合框中没有选定年份,则不执行任何如果任一组合框中没有选定年份,则不执行任何操作操作 if(cboStart.SelectedIndex=-1|cboEnd.SelectedIndex=-1)return;章节目录章节目录上一页上一页下一页下一页 int yearStart=int.Parse(cboStart.SelectedItem.ToString();int yearEnd=int.Parse(cboEnd.SelectedItem.ToString();if(yearStartyearEnd)return;lstOut.Items.Cl
15、ear();/清除上次判断显示的内容清除上次判断显示的内容 for(int i=yearStart;i=yearEnd;i=i+1)if(i%4=0&i%100!=0|i%400=0)lstOut.Items.Add(i);/将闰年的年份追加到列表框将闰年的年份追加到列表框章节目录章节目录上一页上一页下一页下一页【清除】按钮被单击时执行的事件代码如下:【清除】按钮被单击时执行的事件代码如下:private void btnClear_Click(object sender,System.EventArgs e)lstOut.Items.Clear();/清空列表清空列表章节目录章节目录上一页上
16、一页下一页下一页三三、多维数组的定义、分配与使用多维数组的定义、分配与使用 一维数组只有一个下标,多维数组具有多个下标,要引用多维数组的数组元素,需要使用多个下标。多维数组中最常用的是二维数组。所谓二维数组,就是有两个下标的数组,适合处理如成绩报告表、矩阵等具有行列结构的数据。与C/C+不同的是,C#的二维数组的每一行的数组元素个数可以相等,也可以不相等。每行数组元素个数相等的二维数组称为方形二维数组,各行数组元素个数不同的称参差数组。(1)定义与分配格式:数据类型符 ,数组名=new 数据类型符长度1,长度2;例如,有下列语句:int,a=new int 3,4;/定义了一个数组a,该数组的
17、数据类型是int,具有12个元素。其实上述数组的声明与分配可以写成两条语句上述语句也可以写成:int ,a;/定义数组a=new int 3,4;/给数组分配存储空间二维数组的逻辑结构 (2)赋初值 格式:数据类型符 ,数组名=初值列表1,初值列表2,初值列表n;例如,有下列语句:int,b=1,2,3,4,5,6,7,8,9,10,11,12;上述语句也可以写成:int,a=new int 3,41,2,3,4,5,6,7,8,9,10,11,12;(3)元素引用引用方形二维数组元素的一般格式如下:数组名下标1,下标2 /注与C语言不同如a2,3=4;【实例求每个人平均分】某班有M名同学,本
18、学期开了N门课,期末考试后,要统计每个学生的平均分。请你编写一个程序实现该功能。(实例)数组列表ArrayListv ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:v动态的增加和减少元素 v灵活的设置数组的大小 v首先,必须增加空间v using System.Collectionsv如何使用如何使用ArrayList对象对象()增加对象()增加对象 ArrayList对象对象.Add(对象)v()移除对象 ArrayList对象对象.Remove(对象)v()插入对象 ArrayList对象对象.Insert(对象)v(4)排序Array
19、List对象对象.Sort();v(5)清除内容ArrayList对象对象.Clear();v引用 ArrayList对象下标或对象下标或 ArrayList对象对象v最简单的例子:ArrayList List=new ArrayList();for(int i=0;i10;i+)/给数组增加10个Int元素List.Add(i);例:ArrayList使用 章节目录章节目录上一页上一页下一页下一页 Sort方法ArrayList对象的Sort方法可以将数组中的元素按升序排列。数组与数组列表都具有Sort方法,但使用的格式不同。数组的Sort方法使用格式为:Array.Sort(数组名称数组名称);数组列表ArrayList对象的Sort方法使用格式为:数组列表对象数组列表对象.Sort();