c-程序设计课后习题与解答1_第1页
c-程序设计课后习题与解答1_第2页
c-程序设计课后习题与解答1_第3页
c-程序设计课后习题与解答1_第4页
c-程序设计课后习题与解答1_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-PAGE14- C#程序设计基础教程第88页共88页第1页共21页习题与解答习题一单项选择题1在VisualStudio.NET窗口中,在__________窗口中可以察看当前项目的类和类型的层次信息。(B)A.解决方案资源管理器B.类视图C.资源视图D.属性2.能作为C#程序的基本单位是(B)。A.字符B.语句C.函数D.源程序文件3.C#语言是微软.NET公共语言运行环境中内置的核心程序设计语言,是一种(B)。 (A)面向过程程序设计语言 (B)面向对象程序设计语言 (C)跨平台程序设计语言 (D)机器语言4.C#语言支持面向对象程序设计概念,(C)。 (A)但不支持继承 (B)而且支持多继承 (C)但仅支持单继承 (D)支持单继承和多继承5.C#应用程序由一个或者多个类组成,一个应用程序的所有程序代码(A)。(A)必须封装在类中 (B)不能封装在类中(C)必须封装在一个类中 (D)必须封装在多个个类中6.C#应用程序中,导入其他系统预定义元素部分可以使用关键字(D)。 (A)use (B)namespace (C)import (D)using7.命名空间是一种在程序中防止标识符命名冲突而引入的逻辑隔离机制,C#中使用关键字(D)表示。 (A)using (B)spacename (C)class (D)namespace8.C#应用程序中,用主方法指明程序执行的开始点,主方法的名字规定为(C)。 (A)class (B)main (C)Main (D)MainWay9.C#中的注释方法有三种,下列注释方法中错误的是(D)。(A)单行注释“//” (B)多行注释“/*和*/” (C)XML注释“///” (D)HTML注释“<!--和-->”10.下列对控制台应用程序描述正确的是(C)。(A)控制台(Console)应用程序就是对设备进行控制的应用程序 (B)控制台(Console)应用程序包含了大量Windows系统的组成元素 (C)控制台(Console)应用程序是C#语言能够开发的应用程序类型之一 (D)控制台(Console)应用程序是基于标准C语言的单片机技术11.在控制台应用程序中,如果在程序开头使用usingSystem;

语句引入了System命名空间,则下列对Read()和ReadLine()方法调用错误的是(D)。(A)System.Console.Read(); (B)Console.Read();(C)Console.ReadLine(); (D)Read();12.在C#的Windows应用程序中,不论任何控件,共同具有的是(B)属性。(A)Text (B)Name (C)ForeColor (D)Caption13.下列语句的输出是________。(B)doubleMyDouble=123456789;Console.WriteLine("{0:E}",MyDouble);A.$123,456,789.00B.1.234568E+008C.123,456,789.0014.下面对Read()和ReadLine()方法的描述,哪些是正确的_____。(A)(D)A.Read()方法一次只能从输入流中读取一个字符B.使用Read()方法读取的字符不包含回车和换行符C.ReadLine()方法读取的字符不包含回车和换行符D.只有当用户按下回车键时,Read()和ReadLine()方法才会返回15.下面对Write()和WriteLine()方法的描述,哪些是正确的____。(A)(B)(D)A.WriteLine()方法在输出字符串的后面添加换行符B.使用Write()输出字符串时,光标将会位于字符串的后面C.使用Write()和WriteLine()方法输出数值变量时,必须要先把数值变量转换成字符串D.使用不带参数的WriteLine()方法时,将不会产生任何输出选择填空题C#语言是一种B、全新的程序设计语言,是微软.NET公共语言运行环境中内置的核心程序设计语言。C#程序设计语言的主要特点有:语法简洁、满足通用语言规范、面向对象、兼容性和灵活性、以及C等。一个C#程序可以存放在一个源程序文件中,也可以存放在多个源程序文件中。一个源程序文件中可以有一个或者多个类,E将一个类拆散存放在不同的源程序文件中。为源程序文件命名J,既可以与类的名字相同,也可以不同。在定义C#语言的标识符构成时,G字母符的大小写形式。备选项:(A)面向过程的 (B)面向对象的 (C)完整的安全性 (D)不需要区分 (E)但不允许 (F)而且允许 (G)需要区分 (H)有限安全性(I)必须与类名一致 (J)不受类名限制6..C++源程序文件的默认扩展名为(cpp)。7.由C++源程序文件编译而成的目标文件的默认扩展名为(obj)。8..C++程序从上机到得到结果的几个操作步骤依次是(编辑、编译、连接、运行)。9.C++语言是在___C______语言的基础上发展起来的。10.行尾使用注释的开始标记符为___//_______。三、思考题1.简述C#语言的语句书写规则。 答案:(1)语法简洁(2)满足通用语言规范(3)面向对象(4)完整的安全性和错误处理(5)兼容性和灵活性(6)版本控制(7)与Web的完美结合2.简述在VS2008集成环境中创建C#控制台应用程序的主要步骤。答案:四个步骤:(1)启动运行“MicrosoftVisualStudio2008”,进入VS2008(2)选择项目类型为控制台应用程序,并指定项目名称及其保存位置;(3)在应用程序编辑环境中输入程序代码;(4)调试运行程序。3.简述在VS2008集成环境中创建C#Windows窗体应用程序的主要步骤。答案:四个步骤:(1)设计用户界面(2)设置对象属性(3)编写对象事件过程代码(4)保存并运行程序(生成可执行代码)4.一个C#控制台应用程序主要由哪几个部分构成?答案:(1)导入其他系统预定义元素部分;(2)命名空间;(3)类;(4)方法(主方法、事件响应处理过程)5.C#程序中可以使用哪些书写注释的方法?它们分别适合用于什么场合?答案:C#中的注释方法有三种:(1)单行注释在一个语句行上,用双斜杠“//”作为引导符,其后的任何内容均为注释信息,编译时被忽略,通常用于注释字符串较短的场合。(2)多行注释从“/*”开始,到“*/”结束,多行注释通常用于需要书写较大量注释的情况(3)XML注释在一个代码行上,用“///”开始,其后的任何内容均为注释信息,编译时被提取出来,形成一个特殊格式的文本文件(XML),用于创建文档说明书。6.什么是托管方式?答案:在.NET系统中,除了C#语言外,还包括C++、VB、Java等程序设计语言,这些语言都遵守通用语言规范。在通用语言规范中,任何语言编写的源程序都被编译成为相同的中间语言(MSIL)代码,然后由通用语言运行环境(CommonLanguageRuntime,CLR)负责执行,这种处理方式称为“托管方式”,因而这样的代码亦称为“托管代码”。习题21.要使窗体刚运行时,显示在屏幕的中央,应设置窗体的___(B)______属性。A.WindowsStateB.StartPostionC.CenterScreenD.CenterParenr2.要使文本框控件能够显示多行而且能够自动换行,应设置它的___(B)______属性。A.MaxLength和MultlineB.Multlineh和WordWrapC.PassWordChar和MultlineD.MaxLength和WordWrap3.窗体中有一个年龄文本框txtAge,下面(D)代码可以获得文本框中的年龄值。A.intage=txtAge;B.intage=txtAge.Text;C.intage=Convert.ToInt32(txtAge);D.intage=int.Parse(txtAge.Text);4.下面(AC)代码能向组合框cboYears添加一项。A.intyear=1997;cboYears.Items.Add(year);B.intyear=1997;cboYears.Add(year);C.intyear=1997;cboYears.Items.Add(year.ToString());D.intyear=1997;cboYears.Add(year.ToString());当ListView的视图为Details时,以下(A)属性可以设置显示的各个列。A.ColumnsB.GroupsC.ItemsD.SubItems2.填空题1)使控件是否可以对用户交互作出响应的属性是_____Enabled_____。2)控制控件是否显示的属性是_______Visible___。3)若要在文本框中输入密码,常指定______PasswordChar____属性。4)若某复选框某时刻CheckState属性的值为Indeterminate,则其属性Checked的值为Unchecked。5)使用___Panel_____或_GroupBox__控件可以将多个RadioButton控件分为两个单选组。6)若不希望用户在ComboBox控件中编辑文本,则应将属性DropDownStyle的属性值设置为___DropDownList____。7)用于设置MenuStrip控件中某菜单项快捷键的属性是____ShortcutKeys___。8)用于控制ListView控件中的各项显示方式的属性是__View____。3.判断题1)控件就是属性、方法和事件的集合封装体。(对)2)TextBox控件只能用于单行文本的输入。(错)3)通过RichTextBox控件只能够与RTF文件进行交互操作。(错)4)CheckBox控件的Checked属性与CheckState属性的值始终是相同的。(错)5)ToolTip组件用于显示某指定控件的自定义提示信息的。(对)4.问答题1.区别TextBox控件、MaskedTextBox控件、RichTextBox控件的使用场合。【解答】TextBox控件一般用于单段文本的编辑,可以设置为单行或多行的输入模式,也可以用作密码的输入;MaskedTextBox控件主要用于特定格式的单段文本编辑,在输入文本不符合格式要求的将会触发其MaskInputRejected事件;RichTextBox控件除了具有TextBox的一般文本编辑功能外,还可以进行多段文本的高级编辑功能,如改变文本、段落的显示格式、在文本中查找特定字符和字符串以及与Rtf文件的交互等。2.简要说明CheckBox控件和RadioButton控件的区别。【解答】CheckBox控件可为用户提供选择功能,常用的是二选一的选择,如“真/假”或“是/否”;但该控件也可以通过属性的设置作三选一的选择。每一个CheckBox所代表的选择都是独立的,若有多个CheckBox控件构成一组选项时,则可以多个同时被选中,相互之间不影响,即复选。RadioButton控件,它与CheckBox控件功能类似,也是用于接收用户的选择,但它是以单项选择的形式出现,即一组RadioButton按钮中只能有一个处于选中状态。一旦某一项被选中,则同组中其他RadioButton按钮的选中状态自动清除。5.编程题1.设计一个Windows应用程序,窗体上有一个TextBox控件、一个Button控件。要求,每当用户单击按钮时,文本框都会增加一行文字来反映单击的次数,例如“第3次单击按钮”。【解答】1)窗体界面如图Ex5-5-1所示;2)窗体中主要控件属性设置如表Ex5-5-1;表Ex5-5-1窗体中的主要控件属性控件Name属性功能其它属性TextBox控件textBox1显示信息ScrollBars=Vertical;Multiline=TrueButton控件Button1触发添加信息事件Button2触发结束添加事件3)主要事件代码。

int

i

=

1;

bool

Add

=

true;

……private

void

button1_Click(object

sender,

EventArgs

e)

{

if(Add)

textBox1.Text

+=

"第"

+

i

+

"次单击按钮\r\n";

i++;

}

private

void

button2_Click(object

sender,

EventArgs

e)

{

Add

=

false;

}6.编写一段程序,向ListBox控件listBox1中,自动添加10个数,每个数占一项。【解答】主要代码如下:以下是引用片段:

public

partial

class

Form1

:

Form

{

int

m

=

1;

……

private

void

button1_Click(object

sender,

EventArgs

e)

{

for

(int

i

=

m

;

i

<

m+10;

i++)

{

listBox1.Items.Add(i);

}

m

=

m

+

10;

}

}习题3.1一、单项选择题1.以下标识符中,正确的是____。(A)A._nNameB.typeofC.6bD.x5#2.以下类型中,不属于值类型的是____。(D)A.整数类型B.布尔类型C.字符类型D.类类型3.在C#中,表示一个字符串的变量应使用以下哪条语句定义?A.CStringstr;B.Stringstr;C.DimstrasstringD.char*str;4.C#程序中用到的数据分为两个大类,它们是(A)。 (A)值类型和引用类型 (B)整型和实型(C)数值类型和字符类型 (D)简单类型和复杂类型5.C#语言中,值类型数据对象占用的存储空间大小(B)。(A)不固定 (B)相对固定 (C)可以任意指定 (D)都是相同的3.C#语言中,引用类数据对象占用的存储空间大小(D)。(A)不得而知 (B)相对固定 (C)都是相同的 (D)随实际需要而定6.C#语言中,基本整型数据类型(int)所占用的存储空间为(C)个字节。 (A)1 (B)2 (C)4 (D)87.C#语言中,双精度实型数据类型(double)所占用的存储空间为(D)个字节。 (A)1 (B)2 (C)4 (D)88.C#语言中,字符数据使用Unicode字符集,其占用的存储空间为(B)个字节。 (A)1 (B)2 (C)4 (D)89.下面的运算符中,优先级别最低的是(D)。 (A)new (B)!= (C)?: (D)=10.设有整型变量x,则表达式x=5/8运算后,变量x的值为(A)。 (A)0 (B)0.625 (C)0.6 (D)0.6311.C#语言中,字符串常量@"123\n456"的长度(有效字符个数)是(C)。 (A)6 (B)7 (C)8 (D)912.为了将字符串str=“123,456”转换成整数123456,应该使用以下哪条语句?(A)A.intNum=int.Parse(str);B.intNum=str.Parse(int);C.intNum=(int)str;D.intNum=int.Parse(str,Globalization.NumberStyles.AllowThousands);13.C#语言中,与赋值运算符“=”实现相同操作的字符串处理方法是(C)。 (A)Compare (B)Concat (C)Copy (D)Substring14.C#应用程序中,标识符用于给程序处理的数据对象命名。组成标识符的字符为字母、数字和下划线,标识符的第一个字符(B)。 (A)必须是字母 (B)必须是字母或者是下划线 (C)必须是下划线 (D)可以是字母或者是下划线15.在程序中如果要使用系统保留字(关键字)作为自定义标识符,必须使用字符(A)作为引导符。 (A)@ (B)$ (C)# (D)~16.下面所列的C#标识符中,错误的是(B)。 (A)myId (B)int (C)@if (D)_int17.下面所列的C#自定义标识符中,正确的是(A)。(A)@double (B)$double (C)#double (D)~double18.C#中所有字符都是使用(A)(A)Unicode编码表示 (B)UTF-8编码表示(C)UTF-16编码 (D)GBK编码19.关于C#程序的书写,下列不正确的说法是____。(D)A.区分大小写B.一行可以写多条语句C.一条语句可写成多行D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法20.在C#语言中,下列能够作为变量名的是____。(C)A.ifB.3abC.a_3bD.a-bc21.在C#语言中,下面的运算符中,优先级最高的是__(A)__。A.%B.++C./=D.>>22.能正确表示逻辑关系“a>=10或a<=0”的C#语言表达式是__(D)__。A.a>=10ora<=0B.a>=10|a<=0C.a>=10&&a<=0D.a>=10||a<=023.在C#中可用作程序变量名的一组标识符是(B)A.a3_b3_123YourNameB.voidnamespace+wordC.for-abcCaseD.2agoodref二、选择填空题1.在C#语言中,值类型数据对象占用的存储空间大小相对固定,在其所占存储空间中直接存放F。2.在C#语言中,引用类数据对象占用的存储空间大小随需要而定,该类数据对象并不真正表示自己所具有的内容,而是表示A。3.在C#程序设计中,定义值类型变量的同时可以对其进行初始化,初始化时提供的初始化数据C。4.在C#的整型常量表示中,可以使用十进制数据和十六进制数据两种形式,其中十六进制数据J。5.布尔数据类型占用一个字节的存储区域,其变量只有两种取值:H。 备选项: (A)自己内容所在存储区域的引用 (B)Yes或No(C)必须在对应变量的取值范围之内 (D)0h或者0H(E)可以在对应变量的取值范围之外 (F)该类数据对象所具有的值(G)“真”或“假” (H)true或false(I)数据对象的名字 (J)使用0x或者0X开头6.一个完整程序中必须有一个名为__Main______的函数。7一个函数的函数体就是一条____复合_____语句。8.在C#程序中,程序的执行总是从____Main______方法开始的。9、在C#中,bool类型只有两种值,分别是___true_______和___false_______。10、在C#中,使用____const______关键字声明符号常量。三、程序设计与分析题1.创建图2-7所示Windows窗体应用程序,在两个文本框中分别输入整数值,然后单击“计算”按钮,就能在标签控件中输出两个整数值相加之和。图2-7计算两个整数相加之和图2-8华氏温度转换为摄氏温度2.已知将华氏温度转换为摄氏温度的公式为:,创建图2-8所示的Windows窗体应用程序,实现将文本框内输入的华氏温度转换为摄氏温度的功能,计算结果在标签控件中输出。3.创建控制台应用程序,在控制台端键盘输入一个半径值,就能计算输出圆的面积。4.根据如下的枚举定义,fruit.peach和fruit.strawberry的值分别是多少?enumfruit:int{apple=5,apricot,banana,peach,pineapple=12,strawberry} 答案:fruit.peach的值为8,fruit.strawberry的值为135.专家认为,成人血压的正常范围是:收缩压90~140mmHg(12.0~18.7kPa)——1kPa=7.5mmHg舒张压60~90mmHg(8.0~12.0kPa)写出判断血压是否正常的逻辑表达式(以mmHg为计量单位)。答案:doublexueya;//血压值 (xueya>=90&&xueya<=140)&&(xueya>=60&&xueya<=90)习题3.23.3单项选择题1.当变量x的值在[1,100]范围内时,下面的C#表达式返回值为“真”的是(D)。 (A)1<=x<=100 (B)x>=1||x<=100(C)x>1&&x<100 (D)x>=1&&x<=1002.下面的C#表达式中,描述了数学关系x≥y≥z的是(B)。(A)(x>=y)AND(y>=z) (B)(x>=y)&&(y>=z)(C)(x>=y>=z) (D)(x>=y)&(y>=z)3.当变量x的值在[1,10]或[200,210]范围内时,下列C#表达式返回值为“真”的是(C)。(A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)(B)(x>=1)||(x<=10)||(x>=200)||(x<=210)(C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)(D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)4.设有C#语句:inta=5,b=4;,则下列表示条件的表达式中值为“假”的是(C)。(A)(a>b)&&(b>0&&a>0) (B)(b>=0)&&(a<=b?a+b:a-b)>0(C)a>0&&!(b>0) (D)(a<=0)||(a%b>0)5.执行C#语句序列:inti;for(i=0;i++<4;);后,变量i的值是(A)。 (A)5 (B)4 (C)1 (D)06.以下程序的输出结果是__(C)__。Usingsystem;ClassExample1{PublicStaticvoidmain(){inta=5,b=4,c=6,d;Console.writeline("{0}",d=a>b?(a>c?a:c):b);}}A.5B.4C.6D.不确定7.以下程序的输出结果是_C___。usingsystem;classExample1{publicstaticvoidMain{inta=5,b=4,c=6,d;d=a>b?(a>c?a:c):b;Console.Writeline(d);}}A.5B.4C.6D.不确定8.写出以下程序的运行结果。usingSystem;classTest{publicstaticvoidMain(){intx=5;inty=x++;Console.WriteLine(y);y=++x;Console.WriteLine(y);}}答案:579.if语句后面的表达式应该是__(A)__。A.逻辑表达式B.条件表达式C.算术表达式D.任意表达式10.有如下程序Usingsystem;ClassExample1{PublicStaticvoidmain(){intx=1,a=0,b=0;switch(x){case0:b++,break;case1:a++,break;case2:a++,b++,break;}Console.Writeline("a={0},b={1}",a,b);}}的输出结果是(C)//代码有误,break前面“,”都改为“;”A.a=2,b=1B.a=1,b=1C.a=1,b=011..有如下程序Usingsystem;ClassExample1{PublicStaticvoidmain(){intx=0,a=0,b=0;switch(x){case0:b++;break;case1:a++;case2:a++;b++;break;}Console.writeline("a={0},b={1}",a,b);}}的输出结果是AA.a=0,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=212已知a,b,c的值分别是4,5,6,执行下面的程序段后,判断变量n的值为____。(C)if(c<b)N=a+b+c;elseif(a+b<c)N=c-a-b;elseN=a+b;A.3B.-3C.9D.1513.以下叙述正确的是__(C)__。A.do….while语句构成的循环不能用其他语句构成的循环来代替B.do….while语句构成的循环只能用break语句退出C.用do….while语句构成的循环,在while后的表达式为true时结束循环D.用do….while语句构成的循环,在while后的表达式应为关系表达式或逻辑表达式14.以下关于for循环的说法不正确的是__(A)__。A.for循环只能用于循环次数已经确定的情况B.for循环是先判定表达式,后执行循环体语句C.for循环中,可以用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来。15.下列代码输出正确的是___(D)namespaceAnswer{classProgram{staticvoidMain(string[]args){intI,j;for(i=1;i>=0;i--)for(j=0;j<=I;j++)Console.WriteLine(“i*j={0}”,i*j);}}}A.i*j=0i*j=0i*j=0B.i*j=1i*j=0i*j=1C.i*j=1i*j=1i*j=0D.i*j=0i*j=1i*j=016.下面对i值的输出结果说法正确的是_____.(A)namespaceAnswer{classProgram{staticvoidMain(string[]args){intido{i++;}while(i<5)Console.WriteLine(“i值的为:{0}”,i)}}}A.i的值为:5B.i的值为:6C.i的值为:7D.i的值为:817)以下程序段的输出结果是AA1B30C1-2D死循环intx=3;do{Console.WriteLine("{0}",x-=2);}while(!(--x>=0));18)以下程序段的输出结果是DA9B1C11D10intk,j=0,s=0;for(k=2;k<6;k=k+2){s=1;for(j=k;j<6;j++)s+=j;}Console.WriteLine("s={0}",s);Console.ReadLine();19)以下程序段的输出结果是CA12B15C20D25inti,j,m=0;for(i=1;i<=15;i+=4)for(j=3;j<=19;j+=4)m++;Console.WriteLine("m={0}",m);Console.ReadLine();20)以下程序段的输出结果是BA10B9C10D9989887876intn=10;while(n>7){n--;Console.WriteLine("m={0}",n);}Console.ReadLine();选择填空题程序设计中,一般用“逻辑与运算”表示某个数据对象的值是否在给定范围之内,而用“逻辑或运算”表示某个数据对象的值I。C#语言中规定:在包含了if语句嵌套结构的程序中,else子句与在它前面距它最近的且Bif配对。C#应用程序中,在一个循环结构的循环体内又包含另外一个A,称为循环的嵌套。break语句是一条限定转移语句,只能在D使用。continue语句是一条限定转移语句,只能在J使用。备选项:(A)完整的循环结构 (B)尚未匹配的(C)是否在给定范围之内 (D)switch语句结构和循环结构中(E)完整的分支结构 (F)if结构或者while结构中(G)已经配对的 (H)while结构中(I)是否在给定范围之外 (J)循环结构的循环体中6、设x为int型变量,请写出描述“-10<=x<=10”的C#语言表达式_-10<=x&&x<=10__7.若k为int整型变量且赋值15.请写出k++后表达式的值A)__15______和变量值B)___16___.8。"10<x≤30"的C语言表达式是___X>=10&&X<=30________。9.C#语言中的关系运算符按优先级分别是____<<=>>=_____,____!===_____________.10.将下列数学式改写成C#语言的关系表达式或逻辑表达式A)_a==b||a<c___.B)_x<-4||x<4___.Aa=b或a<cB|x|>4三写出运行结果题1.运行以下程序段,结果是(150)doublek,t;t=0;for(intn=1;n<=10;n++){for(k=1;k<=5;k++)t=t+k;}Console.WriteLine(t);2.运行以下程序段,结果是(25)usingSystem;classSumw{staticvoidMain(){inti=1,sum=0;while(i<=10){sum+=i;i+=2;}Textbox1.text=“总和为:”+sum.ToString();}}3.以下程序运行后,变量a的值为()inta=100;for(intj=10;j>0;j-=2)a-=j*3;4.以下程序运行后,控件textBox1显示内容为(10)inti;for(i=10;i<=20;i++){if(i%5==0){continue;}textBox1.text+=i.ToString()+”“;}5.给出下列程序的运行结果:(5050)usingSystemClassDome{StaticvoidMain(){intn=1,sum=0;while(n<101){sum+=n;n++;}Console.WriteLine(“1+2+3+…+100=”+sum);}}Console.ReadLine();6.下面代码的输出结果是(57)。intx=5;inty=x++;Console.WriteLine(y);y=++x;Console.WriteLine(y);7.当month等于6时,下面代码的输出结果是(30)。intdays=0;switch(month){case2:days=28;break;case4:case6:case9:case11:days=30;break;default:days=31;break;}Console.WriteLine(days);8如果x=35,y=80,下面代码的输出结果是(报警)if(x<-10||x>30){if(y>=100){Console.WriteLine("危险!");}else{Console.WriteLine("报警!");}}else{Console.WriteLine("安全");}9.下面代码运行后,s的值是()。ints=0;for(inti=1;i<100;i++){if(s>10){break;}if(i%2==0){s+=i;}}10.若打印如下图案,画线处应填入()。***************for(inti=1;i<=5;i++){for(intj=____;j<=5;j++){Console.Write("*");}程序设计题创建图3-20所示Windows窗体应用程序,程序运行时,在“年份”文本框中输入一个正整数,单击“判断”按钮,就能在标签控件中显示判断结果;单击“退出”按钮则结束程序运行。(闰年的计算规则请自行上网查阅)图3-20判断闰年图3-21输出星号组成的图案2.创建控制台应用程序,输入一个正整数之后,输出图3-21所示图案。最顶部一行的星号个数为输入的数。3.创建控制台应用程序,利用下面多项式公式计算出π值,要求最后一项的值小于10-6。4.创建控制台应用程序,利用下面的公式计算e的近似值,要求最后一项的值小于10-6。5.已知两个3位数abc和cba之和为1333(即abc+cba=1333),编写控制台应用程序,求出3个数字a、b和c。6.创建控制台应用程序,求解猴子吃桃问题:猴子第一天摘下桃子若干,当即吃了一半后又多吃了一个;第二天又将剩下的桃子吃掉一半后再多吃一个;以后每天都吃掉前一天剩下的一半零一个。到第10天想再吃时,只剩下一个桃子。求猴子第一天共摘下多少个桃子。7.马克思曾经做过这样一道趣味数学题:有30个人在一家小饭馆用餐,其中每个男人花了3先令,每个女人花了2先令,每个孩子花了1先令,总共花了50先令。问男人、女人和孩子各有多少人?本题有多个解,编写控制台应用程序求出所有的解。8.体操比赛的评分规则是:由7位裁判为每个运动员打分,去掉一个最高分,去掉一个最低分,求出的平均分即为运动员的得分。编写控制台应用程序,计算运动员得分。9.所谓“水仙花数”,指的就是这样一个三位数:其各位数的立方和等于该数。例如:153=13+53+33。编写控制台应用程序,计算输出所有的水仙花数。10.所谓“完备数”,指的就是这样一个数:该数的值恰好等于它的因子之和。例如,6的因子为1、2、3,而6=1+2+3,因而6就是完备数。编写控制台应用程序,找出1~1000之间的所有完备数。11.编写程序,求解以下问题:(1)在窗体上输出100~500之间的所有奇数,并计算它们的和。(2)在窗体上输出100~200之间不能被3整数的所有数。(3)统计1~1000之内既能被5整除,也能被7整除的数的个数,并输出在窗体上。(4)从300开始,找出连续100个既能被3整数又能被5整除的数。(5)计算s=1!+2!+3!+…+n!(其中n是用户输入的正整数)。(6)计算出不大于1000

的10个最大的素数。习题3.43.5单项选择题1.下面所列选项中,能够正确定义具有10个数据元素一维整型数组a的是(A)。 (A)int[]a=newint[10]; (B)inta[10];(C)int[]a=int[10]; (D)int[]a=int(10);2.下面所列选项中,不能正确定义并初始化一维数组b的是(D)。 (A)double[]b=newdouble[5]{1,2,3,4,5};(B)double[]b=newdouble[]{1,2,3,4,5};(C)double[]b={1,2,3,4,5};(D)double[]b=new{1,2,3,4,5};3.始化一维数组的语句,指出其中正确的是____。(D)A.intarr1[]={6,5,1,2,3};B.int[]arr1=newint[];C.int[]arr1=newint[]{6,5,1,2,3};D.int[]arr1;arr1={6,5,1,2,3};4.下面所列选项中,能够正确定义2行3列二维整型数组a的是(B)。(A)int[][]a=newint[2][3]; (B)int[,]a=newint[2,3];(C)int[2][3]; (D)int[,]a=int[2,3];5.下面所列选项中,不能正确定义并初始化二维数组a的是(C)。(A)int[,]a=newint[2,3]{{1,2,3},{4,5,6}};(B)int[,]a=newint[,]{{1,2,3},{4,5,6}};(C)int[,]a=newint[2,3]{1,2,3,4,5,6};(D)int[,]a={{1,2,3},{4,5,6}};6.设有C#数组定义语句:int[]a=newint[5];对数组a元素的正确引用是(B)(A)a[5] (B)a[100-100] (C)a(0) (D)a+16.设有C#数组定义语句序列:double[]myArr;myArr=newdouble[10];数组元素myArr[5]的值为(A)(A)0 (B)'0' (C)null (D)随机值7.有定义语句:int[,]a=newint[5,6];则下列正确的数组元素的引用是____。(C)A.a(3,4)B.a(3)(4)C.a[3][4]D.a[3,4]8.设有C#数组定义语句:float[,]a=newfloat[5,5];对数组a元素的正确引用是(D)。(A)a[3][2] (B)a[4,5] (C)a[5,0] (D)a[0,0]9.在C#语言中,表示数组长度属性的关键字是(D)。(A)Len (B)Size (C)Long (D)Length10.在C#语言中,数组Array实现一维数组由小到大排序的静态方法是(A)。(A)Array.Sort (B)Array.Reverse (C)Array.Long (D)Array.Order12.在C#语言中,Array实现数组逆排序的静态方法Array.Reverse的意思是(D)。(A)实现一维数组由小到大排序 (B)实现一维数组由大到小排序(C)实现二维数组反向排序 (D)实现一维数组反向排序13.在C#中,下列哪条语句能创建一个具有3个初始值为""的元素的字符串数组?(C)A.stringStrList[3]("");B.string[3]StrList={"","",""};C.string[]StrList={"","",""};D.string[]StrList=newstring[3];14.假定int类型变量占用两个字节,若有定义:int[]x=newint[10]{0,2,4,4,5,6,7,8,9,10};则数组x在内存中所占字节数是___(B)。A.6B.20C.4015.以下程序的输出结果是:(C)ClassExample1{PublicStaticvoidmain(){inti;int[]a=newint[10];for(i=9;i>=0;i--)a[i]=10-i;Console.Writeline("{0},{1},{2}",a[2],a[5],a[8]);}}A.2,5,8B.7,4,1C.8,5,2D.3,6,916.下列的数组定义语句,正确的是____。(D)A.inta[]=newint[5]{1,2,3,4,5}B.int[,]a=newinta[3][4]C.int[][]a=newint[3][];D.int[]a={1,2,3,4};17.以下所列的个方法头部中,正确的是___。_(C)A.voidplay(vara:Integer,varb:integer)B.voidplay(inta,b)C.voidplay(inta,intb)D.Subplay(aasinteger,basinteger)18.函数调用不可以(D)。A.出现在一个表达式中B.出现在执行语句中C.作为一个函数的实参D.作为一个函数的形参19.以下正确的描述是(B)。A.函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套20.若用数组名作为函数调用的实参,传递给形参的是(A)。A.数组的首地址B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数21.以下错误的描述是(D)。A.被调用函数中可以不用return语句B.被调用函数中可以用多个return语句C.被调用函数中,如果有返回值,就一定要有return语句D.被调用函数中,一个return语句可返回多个值给调用函数22.下列程序的结果是:(B)Usingsystem;ClassExample1{Staticlongfib(intn){If(n>2)return(fib(n-1)+fib(n-2));Elsererurn(2);}PublicStaticvoidmain(){Console.Writeline(“{0}”,fib(3));}}A.2B.4C.6D.823.下面是几条定义初始化一维数组的语句,指出其中正确的是____。(D)A.intarr1[]={6,5,1,2,3};B.int[]arr1=newint[];C.int[]arr1=newint[]{6,5,1,2,3};D.int[]arr1;arr1={6,5,1,2,3};24.下面是几条定义并初始化而维数组的语句,指出其中正确的是____。(D)A.intarr3[][]=newint[4,5];B.int[][]arr3=newint[4,5];C.intarr3[,]=newint[4,5]D.int[,]arr3=newint[4,5];25.在下列程序空格处填入正确的选项_____(A),能够实现调用函数show().classClass1{staticvoidshow(refinti){i*=15;Console.WriteLine("i={0}",i);}staticvoidMain(string[]args){inttest=10;Console.WriteLine("调用函数show前,test={0}",test);show(______);Console.WriteLine("调用函数show后,test={0}",test);Console.ReadLine();}}A.testB.outtestC.reftestD.paramstest26.下面代码的运行结果是(35和55)。staticvoidMain(string[]args){intnum1=34;intnum2=55;Increase(refnum1,num2);Console.WriteLine("{0}和{1}",num1,num2);Console.ReadLine();}privatestaticvoidIncrease(refintnum1,intnum2){num1++;num2++;}选择填空题C#语言中,数组属于引用数据类型,即数组内容所占用的存储单元是C,数组变量的值是这组存储单元的起始地址。无论是一维数组、多维数组、还是不规则数组,在C#语言中对数组的定义都分为两个步骤:定义数组变量;H。数组在定义时可以进行初始化,即在定义数组时为其指定初始值。C#语言中规定,初始化值序列中的数据个数F。数组元素在程序中使用下标变量的形式表示。作为变量个体而言,下标变量与它同类型的普通变量(简单变量)是等价的,即数组的下标变量和普通变量的A。数组的Rank属性表示规则数组的E。对于交错数组而言,其Rank属性值都是1。备选项:(A)用法相同 (B)行数(C)一组连续的内存区域 (D)用法不相同(E)维数 (F)必须与数组的长度完全一致(G)可以是任意多个 (H)数组变量初始化(I)一组可以不连续的内存区域 (J)数组变量实例化三.阅读程序,写结果题:1给出下列程序的运行结果:(123)456StaticvoidMain(){int[,]twoarray=newint[2,3]{{1,2,3},{4,5,6}};Console.WriteLine("***矩阵***");for(inti=0;i<twoarray.GetLength(0);i++){for(intj=0;j<twoarray.GetLength(1);j++){Console.Write(twoarray[i,j]+"");}Console.WriteLine();}2给出下列程序的运行结果:()usingSystem;publicclasstest{publicintnum;publictest(inti){this.num=i+5;}StaticvoidMain(){testclassone=newtest(10);intx=classone.num;Console.WriteLine(x);}}3.给出下列程序的运行结果:(1)11121StaticvoidMain(){int[,]a=newint[3,3];a[0,0]=1;intj;for(inti=1;i<3;i++){a[i,0]=1;a[i,i]=1;for(j=1;j<i;j++)a[i,j]=a[i-1,j-1]+a[i-1,j];}for(inti=0;i<3;i++){for(j=0;j<=i;j++)Console.Write("{0}\t",a[i,j]);Console.WriteLine();}Console.ReadLine();}11.写出以下程序运行结果。usingSystem;classTest{staticint[]a={1,2,3,4,5,6,7,8};publicstaticvoidMain(){ints0,s1,s2;s0=s1=s2=0;for(inti=0;i<8;i++){switch(a[i]%3){case0:s0+=Test.a[i];break;case1:s1+=Test.a[i];break;case2:s2+=Test.a[i];break;}}Console.WriteLine(s0+""+s1+""+s2);}}答案:9121512.写出以下程序的功能。staticvoidf2(refdouble[]a,intn){inti;doublesum=0; for(i=0;i<n;i++)sum+=a[i]; sum/=n; for(i=0;i<n;i++) if(a[i]>=sum)Console.write(a[i]+““); Console.writeLine();}答案:显示输出数组a中大于等于平均值的所有元素值。13.写出以下程序运行结果。usingSystem;classTest{constintN=5;publicstaticvoidMain(){inta=0;for(inti=1;i<N;i++){intc=0,b=2;a+=3;c=a+b;Console.write(c+““);}}答案:58111414写出以下程序运行结果。usingSystem;classTest{staticvoidLE(refinta,refintb){

intx=a;

a=b;

b=x;

Console.writeLine(a+““+b);}publicstaticvoidMain(){

intx=10,y=25;LE(refx,refy);

Console.writeLine(x+““+y);}}答案:25

10

25

1015.写出以下程序的功能。staticvoidWA(refint[]a,intn){ for(inti=0;i<n-1;i++){ intk=i; for(intj=i+1;j<n;j++) if(a[j]<a[k])k=j; intx=a[i];a[i]=a[k];a[k]=x;}}答案:采用选择排序的方法对数组a中的n个整数按照从小到大的次序重新排列。16.写出以下程序的运行结果。usingSystem;classTest{publicstaticvoidMain(){

int[]a={2,4,6,8,10,12,14,16,18};

for(inti=0;i<9;i++){

Console.write(“”+a[i]);

if((i+1)%3==0)Console.writeLine();

}}}答案:2

4

6 8

10

1214

16

1817.写出以下程序运行结果。usingSystem;classTest{publicstaticvoidMain(){

ints=0;

for(inti=1;

;i++){

if(s>50)break;

if(i%2==0)

s+=i;

}

Console.writeLine("i,s="+i+","+s);}}答案:i,s=15,5618下面代码的输出结果是(12.56)。staticvoidMain(string[]args){intradius=2;doublearea=GetArea(radius);Console.WriteLine(area);Console.ReadLine();}privatestaticdoubleGetArea(intr){return3.14*r*r;}19.staticvoidMain(string[]args){int[]a={25,48,32,85,64,18,48,29};intmax,min; max=min=a[0]; for(inti=0;i<8;i++){if(max>a[i])max=a[i]; if(min<a[i])min=a[i]; } Console.WriteLine("max={0},min={1}",max,min);Console.ReadLine();}max=18min=8520.以下程序的输出结果是__x=-1____.staticvoidMain(string[]args){intx=2;while(x-->0);Console.WriteLine("x={0}",x);Console.ReadLine();}21.constintM=3,N=4;inti,j,s=0; for(i=1;i<=M;i++) for(j=1;j<=N;j++) s+=i*j; Console.WriteLine("s={0}",s);Console.ReadLine();22.constintT=6;inti,j; for(i=1;i<=T;i+=2) for(j=2;j<=T;j+=2){ if(i+j<T)Console.Write("+"); elseConsole.Write("*");}Console.ReadLine();答案:++*+****23.voidmain(){inta,b,c=0; for(a=1;a<4;a++)for(b=6;b>1;b-=2){if((a+b)%2==0)c+=a+b;elsec+=a*b;if(b==2)Console.WriteLine("{0},{1},{2}",a,b,c);}Console.ReadLine(); }}1,2,122,2,303,2,666.constintB=2;voidmain(){constintB=2;intp=1,s=1;while(s<50){p*=B;s+=p;}Console.WriteLine("{0}",s);Console.ReadLine();}答案:6324.inti,j;int[]a={76,83,54,62,40,75,90,92,77,84}; int[]b={60,70,90,101}; int[]c=newint[4]; for(i=0;i<10;i++){ j=0; while(a[i]>=b[j])j++; c[j]=c[j]+1; } for(i=0;i<4;i++)Console.Write("{0},",c[i]); Console.WriteLine();;Console.ReadLine();答案:2,1,5,225.staticvoidfun(){inta=0;intb=2;Console.WriteLine("{0},{1}",a=3+a,a+b);}staticvoidMain(string[]args){constintN=5;fun(); Console.WriteLine();;Console.ReadLine();}答案:3,5四.阅读程序,填空题:1.下面代码实现数组array的冒泡排序,画线处应填入(3-i)。int[]array={20,56,38,45};inttemp;for(inti=0;i<3;i++){for(intj=0;j<_____;j++){if(a[j]<a[j+1]){temp=a[j];array[j]=___a[j+1];_____array[j+1]=temp;}}}2以下程序是从一个整数数组的元素中找出最大的元素,请将该方法补充完整。usingSystem;classarray1{staticvoidMain(){int[]a={26,38,91,63,58,21,65,75};intt=0,max=___a[0]___;for(inti=1;i<=____a.Length__;i++){if(a[i]>max){max=___a[i]___;t=i;}}Console.WriteLine("该数组中最大的数为:{0}",max);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论