• 373.00 KB
  • 2022-04-22 11:51:11 发布

《C#程序设计易懂易会教程习题》解答.doc

  • 50页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'·52·第1章程序设计简述第1章程序设计简述习题1-1程序设计经历了几个发展阶段?答:经历了机器语言、汇编语言、面向过程程序设计语言、面向对象程序设计语言。1-2下列说法正确的是()。A.机器语言是唯一计算机直接能识别的语言,其他语言编写的程序最终都要编译生成机器语言形式才能被计算机识别。B.机器语言现在已经淘汰了,已经完全没有用了。C.汇编语言程序中的效率最高是指编程者需要编写的代码数量最少。D.面向过程的程序设计比面向对象的程序设计复杂,所以,现在都学习面向对象的程序设计。E.类是面向对象的程序设计的重要概念,现实中先有对象后有类,面向对象程序设计先设计类再通过类定义对象,即先有类后有对象。答:A、E1-3请简单说明控制台C#应用程序的构成。答:控制台C#应用程的序的最简单构成为:publicclassP1_1//定义类{publicstaticvoidMain()//Main方法是程序的入口也是出口{System.Console.WriteLine("我在学习C#.");//执行的语句}}还可以定义多个类,各个类可以放在一个或多个命名空间中。现在的程序主要是Windows应用程序和WEB应用程序,为了避开设计窗体和控件学习C#程序设计,通常采用的方法是从控制台应用程序入门。1-4完成控制台应用程序的设计,输出一行文字“Hello!”。答:程序为:publicclassClass1//定义类{publicstaticvoidMain(){System.Console.WriteLine("Hello!");}}1-5完成控制台应用程序的设计,用消息框输出一行文字“VisualC#”。 ·52·第1章程序设计简述答:在编写程序前先在项目中引用System.Windows.Forms命名空间usingSystem;usingSystem.Windows.Forms;classClass1{//Main方法可以没有public关键字修饰staticvoidMain(string[]args){//用命名空间Forms中的消息框类MessageBox的方法成员ShowMessageBox.Show("我有信心学好C#!");}}1-6完成一个Windows窗体的程序设计,窗体中有一个按钮和一个标签,按钮上显示“PressMe”,标签上先显示“Hello!”。当程序执行后单击按钮,标签显示“ThisismyWindows.”。答:(程序代码略)操作:建一个Windows窗体应用程序,向窗体中拖放一个按钮一个标签,在按钮的属性Text设置为“PressMe”,在标签的属性Text设置为“Hello!”,双击按钮,在所在方法中添加代码:this.label1.Text="ThisismyWindows.";第2章程序设计基础习题2-1什么是变量?变量的作用域是怎样的?变量和常量有什么区别?答:变量是程序设计中值可以改变的量。变量的作用域为,从变量定义的位置开始至所在语句块结束,在该域内的下层语句块中可见。常量是程序设计在编译时就规定了值,不能再改变的量,变量和常量在程序的作用域内均可以读出所保存的值,不同的是常量对保存的值不能改变,变量对保存的值可以改变。2-2在C#编程语言中,变量为什么要先定义后使用?答:变量只有定义了才分配内存空间,有了存放数据的内存空间后,使用变量才有意义,所以,变量要先定义后使用。2-3试述下列程序段中存在的问题。程序段1:usingSystem;classTest{publicstaticvoidMain(){ ·52·第1章程序设计简述intb;if(b<0){intb=5;console.WriteLine("b="+b);}}}程序段2:classTest{publicvoidMain(){inta=5;if(a>0){intb=5;intc=a+b;}System.Console.writeLine("c="+c);}}答:程序段1中错误:1、b变量未赋值就在if语句表达式中进行运算;2、console.WriteLine第一个字母应大字;3、b变量在if语句块中重复定义。程序段2中错误:1、Main方法不是静态方法;2、变量c的使用超出了作用域。(放到外面定义也会出错,赋值为0,就可以了,想一想?3、writeLine第一个字母应大字;2-4求下面表达式的值。①x*10+y%8/2(设x=2,y=34)②(int)(a+b)>0&&c==0(设a=1.3,b=5,c=-2)答:①21 ·52·第1章程序设计简述②False2-5下面的字符组合不能作为标识符的是()。A.#_typeB.publicC._boolD.2008yearE.DoubleF.EnglishG.a12345678H.new答:A、B、D、H2-6编写程序求正方形的面积,要求从键盘输入边长,显示适当的输出信息。答:程序:usingSystem;classClass1{staticvoidMain(){doublesize;Console.Write("请输入正方形的边长:");strings=Console.ReadLine();size=double.Parse(s);doublearea=size*size;Console.WriteLine("正方形的面积为{0}",area);}}第3章数据类型习题3-1试述值类型和引用类型的主要区别。答:值类型和引用类型的区别在于:值类型变量直接存储数据,引用类型变量存储数据存放的位置(引用)。3-2试述枚举类型的用途。答:通过枚举类型可以方便地表达有关常量集合的信息,枚举类型的变量值不会超出常量集合范围。如:星期日、星期一~星期六等。3-3下面数据类型是值类型的有()。A.浮点数类型B.字符串类型C.数组类型D.接口类型E.小数类型  F.布尔类型G.object类型H.枚举类型答:A、E、F、H3-4下面哪一种类型是所有类型的基类类型?()A.值类型B.类类型C.委托类型D.object类型E.Int32类型F.引用类型G.基本类型H.System类型 ·52·第1章程序设计简述答:D3-5下面有关数据类型转换的说法正确的是()。A.结构类型和类类型主要的区别在于结构是值类型,类是引用类型。B.字符类型和数值类型是不能进行相互转换的。C.整数类型至双精度类型必须显示转换。D.浮点数类型到整数类型的显示转换可以进行,但可能会丢失数据。答:A、D3-6下面关于引用类型的说法正确的是()。A.委托可以封装一个方法的引用,进行适当处理就可以执行被封装的方法。B.结构类型是值类型,但结构中成员可以是引用类型。C.接口中只能有方法说明,而无方法的实现。D.类和结构的主要区别是类可以有方法,而结构不能有方法。答:A、B、C3-7下面有关数组的说法正确的是()。A.数组中元素必须是同一种类型。B.字符数组和字符串是一样的,只是叫法不同。C.字符串变量可以用与字符数组类似的方法读取字符串中字符。D.数组元素如果是值类型,则该数组就为值类型。答:C3-8下列程序的运行结果是()。usingSystem;classTest{publicstaticvoidMain(){constdoublePI=3.14;intradius=1;intarea=radius*radius*(int)PI;Console.WriteLine("area="+area);}}答:运行结果为:area=3Pressanykeytocontinue3-9编写程序,用两个数组保存26个大写字母和26个小写字母。答:程序:usingSystem;classTest ·52·第1章程序设计简述{publicstaticvoidMain(){char[]a=newchar[26];char[]b=newchar[26];inti=0;for(charc="a",d="A";c<="z";c++,d++,i++){a[i]=c;b[i]=d;}for(i=0;i=1&&t<=10))Console.Write("不在1~10内,请重新输入:");}while(!(t>=1&&t<=10)); ·52·第1章程序设计简述Console.WriteLine("您输入的数为:"+t);}}4-7编写程序,有三个整型变量,各有专门用途,变量的值不允许进行交换,试用if语句和输出语句按变量从小至大的顺序输出变量值。答:程序:usingSystem;classTest{publicstaticvoidMain(){inta=int.Parse(Console.ReadLine());intb=int.Parse(Console.ReadLine());intc=int.Parse(Console.ReadLine());if(ay)returnx;elsereturny;}}第6章字符串和数组习题6-1编写程序,要求生成一个新的有序(字符值由小至大)字符串,新字符串由一个已知字符串元素构成。答:程序:usingSystem;publicclassTest{publicstaticvoidMain(){stringstr="Administrator"; ·52·第1章程序设计简述char[]ch=str.ToCharArray();for(inti=0;ich[j]){chartemp=ch[i];ch[i]=ch[j];ch[j]=temp;}}}for(inti=0;ix[i]){doubletemp=x[i];x[i]=x[0]; ·52·第1章程序设计简述x[0]=temp;}}for(inti=0;i0){m=m/10;k++;}m=n;int[]x=newint[k];for(inti=0;i0){if(m%2==0)p++; ·52·第1章程序设计简述elseq++;m=m/10;}m=n;int[]x=newint[p];int[]y=newint[q];intii=0,jj=0;for(inti=0;in)Console.WriteLine("大了点!");elseConsole.WriteLine("小了点!");}} ·52·第1章程序设计简述if(right)Console.WriteLine("猜对了。你真行!");elseConsole.WriteLine("该数为:{0},再加油!",n);}}第7章类和对象习题7-1什么是类?什么是对象?答:类是对一组具有相同特征(数据成员)和相同行为(方法成员)的对象的抽象描述。对象就是指世界上的万事万物。7-2类和对象之间的关系是怎样的?答:世界上的万事万物形态各异,一个对象是一个独立的单位,人们经过对对象的认识,将具有相同属性和行为的对象归为一类。人们的认识过程是先有对象再归类。程序设计要模拟客观现实,开发人员通过仿造人类对类的认识设计类,并通过类来定义产生对象。即程序设计是先有类后有对象。7-3类的数据成员有哪些?类的方法成员有哪些?答:类的数据成员有常数和字段)。类的方法成员有方法、属性、事件、索引器、实例构造方法、静态构造方法等)。7-4构造方法有什么特点?答:构造方法是类对象的初始化方法。每新建一对象,都会自动调用构造方法来完成对对象的初始化操作。7-5面向对象程序设计有哪三大特征?答:封装、继承、多态7-6试找出生活中的两种对象进行数据抽象和行为抽象。答:(自己找可仿照下列)时钟(Clock)数据抽象:inthour;intminute;intsecond;行为抽象:TimeRun();ShowTime();SetTime();TimeAlarm();狗(dog)数据抽象:stringname;boolsex;intage;intheight;stringfurColor;行为抽象:Eat();Walk();Run();Yaff();Guard();Smell();人(Person)数据抽象:stringname;boolsex;intage;intheight ·52·第1章程序设计简述行为抽象:Eat();Walk();Run();Work();Study();7-7试列举生活中封装的实例。答:电视机、洗衣机等家用电器的外壳。7-8试找出一例有继承关系的事物,并画出分类层次图。答:(自己找可仿照下列)交通工具分类层次图,如图一所示图一图形分类层次图,如图二所示。图二7-9试述类的属性和索引器的区别?答:属性和索引器都是有方法的方式访问类的数据成员,属性主要用于访问的是非集合类型的数据成员,索引器主要访问的是集合类型的数据成员。一个类可以没有属性和索引器,但只可以有多个属性,最多只能有一个索引器。属性和索引器都是C#程序设计的方法机制,并不规定一定只能访问数据成员,但一般使用都是对数据成员的访问,也建议这样使用,因为可提高程序的可读性。属性和索引器都有set、get两个访问器,分别可用于读和写。7-10什么是多态性?多态性指同一事物在不同的条件下表现出不同的形态,包括两个方面:编译多态性和运行时多态性。 ·52·第1章程序设计简述7-11定义有公有访问权限的Dog类,为该类添加下列字段和方法。●公有定段sex,代表雌雄,数据类型为bool。●公有字段age,代表年龄,数据类型为int。●构造方法Dog(bool,int),设置为雌性,2岁。●无返回值方法Speak(),用于介绍动物:当sex的值为true,方法返回一个字符串“IamamaleDog!”;当sex的值为false,方法返回一个字符串“IamafemaleDog!”;另外再定义一个类Test,包含有Main()方法,Main()方法中定义Animal对象,执行Speak()方法。答:程序:usingSystem;publicclassTest{publicstaticvoidMain(){Doganimal=newDog(true,2);animal.Speak();}}publicclassDog{publicboolsex;publicintage;publicDog(boolsex,intage){this.sex=sex;this.age=age;}publicvoidSpeak(){if(this.sex){Console.WriteLine("IamamaleDog!");}else{Console.WriteLine("IamafemalDog!");}}} ·52·第1章程序设计简述7-12设计一个猫类,有猫的颜色、体重、年龄等数据成员;允许设置和读取猫的颜色、体重属性,添加两个构造方法,添加一个Show()方法,用于显示猫的信息,并简单地编写Main()方法,达到可以正常运行。答:程序:usingSystem;publicclassTest{publicstaticvoidMain(){Catcat1=newCat("white",1,2);cat1.Show();}}publicclassCat{stringfurColor;publicintage;intweight;publicCat(){this.furColor="yellow";this.age=1;this.weight=5;}publicstringFurColor{set{this.furColor=value;}get{returnthis.furColor;}}publicintWeight{set ·52·第1章程序设计简述{this.weight=value;}get{returnthis.weight;}}publicCat(stringfurColor,intage,intweight){this.furColor=furColor;this.age=age;this.weight=weight;}publicvoidShow(){Console.WriteLine("The{0}catis{1}yearsold.It"sweightis{2}kg.",this.FurColor,this.age,this.Weight);}}7-13用面向对象的方法,求长方形(rectangle)的周长(perimeter)。答:程序:usingSystem;publicclassTest{publicstaticvoidMain(){Rectanglerec=newRectangle(3,2);rec.Perimeter();}}publicclassRectangle{publicintlongth;publicintwidth;publicintperimeter;publicRectangle(){ ·52·第1章程序设计简述this.longth=1;this.width=1;}publicRectangle(intlongth,intwidth){this.longth=longth;this.width=width;}publicvoidPerimeter(){this.perimeter=this.longth*this.width;Console.WriteLine("Therectangle"sperimeteris{0}",this.perimeter);}}7-14用索引器完成程序编写,用面向对象的方法完成6个正方形的类的定义。要求有适当的数据成员、构造方法和一般方法,必须有一求正方形面积的方法成员。主方法中分别求6个正方形的面积。答:程序:usingSystem;publicclassTest{publicstaticvoidMain(){int[]x=newint[]{2,4,6,8,10};Squaresq=newSquare(x);for(inti=0;i=0&&score<=100)){thrownewMyException("数据不在0-100之间!");}}catch(MyExceptione){Console.WriteLine(e.Message);conti=true;}catch(FormatExceptione){Console.WriteLine(e.Message);conti=true;}catch(Exceptione){Console.WriteLine(e.Message);conti=true;}}while(conti); ·52·第1章程序设计简述}}publicclassMyException:System.ApplicationException{publicMyException(stringmessage):base(message){}}答:程序:usingSystem;publicclassTestException{publicstaticvoidMain(){try{Personperson=newPerson(25);Console.WriteLine("该人的年龄为:"+person.Age);person.Age=int.Parse(Console.ReadLine());Console.WriteLine("修改后,该人的年龄为:"+person.Age);}catch(Exceptione){Console.WriteLine(e.Message);}}}publicclassPerson{publicPerson(){}publicPerson(inta){this.age=a;}privateintage;publicintAge{get{returnthis.age; ·52·第1章程序设计简述}set{if(value<=0||value>150){Console.WriteLine("年龄设置错误!");}else{this.age=value;}}}}第12章文件操作习题12-1类用于目录管理。A.System.IOB.DireatoryC.FileD.Stream答:B12-2类用于对文件进行创建、删除、复制、移动、打开等操作。A.File和FileStreamB.FileC.StreamD.System.IO答:A12-3类可用于按文本方式读写文件。A.StreamReaderB.StreamWriterC.StreamReader和StreamWriterD.File答:C12-4类可用于以二进制方式读写文件。A.BinaryReader和BinaryWriterB.StreamWriterC.StreamReaderD.Stream答:A12-5使用FileStream类以独占方式打开文件,FileShare需要使用。A.NoneB.ReadC.ReadWriteD.Write答:A12-6编写一个程序,从键盘接受学生的姓名和学号,并写入文本文件中。 ·52·第1章程序设计简述答:程序:usingSystem;usingSystem.IO;namespaceWriterText{publicclassMainClass{staticvoidMain(string[]args){Studentst=newStudent();st.name=Console.ReadLine();st.no=Console.ReadLine();StreamWriterstrm=newStreamWriter("D:\test.txt");strm.WriteLine(st.name);strm.WriteLine(st.no);strm.Close();}}publicclassStudent{publicstringname;publicstringno;publicStudent(){}publicStudent(stringname,stringno){this.name=name;this.no=no;}}}12-7编写一个程序,从二进制文件中读取数据并以文本方式写入到另一个文件。答:程序1:先建一个二进制文件保存一个数组的值。usingSystem;usingSystem.IO;namespaceWriteFile{classClass1{ ·52·第1章程序设计简述staticvoidMain(string[]args){byte[]bytes={1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200};FileStreamstrm=newFileStream("D:\MyData.txt",FileMode.OpenOrCreate,FileAccess.Write);foreach(bytebNextinbytes){strm.WriteByte(bNext);}strm.Close();}}}程序2:再从二进制文件中读取数据并以文本方式写入到另一个文件。usingSystem;usingSystem.IO;namespaceReadFile{classClass1{staticvoidMain(string[]args){FileStreamfstrm=newFileStream("D:\MyData.txt",FileMode.Open);byte[]x=newbyte[20];fstrm.Read(x,0,20);fstrm.Close();StreamWriterstrm=newStreamWriter("D:\test.txt");for(inti=0;i