当前位置:文档之家› C#结构化编程-值类型与引用类型习题

C#结构化编程-值类型与引用类型习题

C#结构化编程-值类型与引用类型习题
C#结构化编程-值类型与引用类型习题

C#结构化编程-值类型与引用类型

1.以下是一些C#中的枚举型的定义,其中错误的用法有()。(选择两项)

a) public enum var1{ Mike = 100, Nike = 102, Jike }

b) public enum var1{ Mike = 100, Nike=99, Jike }

c) public enum var1{ Mike , Nike = 102, Jike }

d) public enum long var1{ Mike , Nike , Jike }

2.在C#程序中,你需要重载操作符”+”号,代码行编写如下:

Public Static MyStructure (1) +(MyStructure A , MyStructure B)在(1)中需要填写的正确的关键词为().(任选一项)

a)overload

b)override

c)operator

d)new

3.C#的类myClass代码如下:

class myClass {

public void method1( ){ int i = 3; Console.WriteLine(i);}

public void method1(int a){ Console.WriteLine(a);}

public void method1(int a, int b){ Console.WriteLine( a + b);}

public void mehtod1(float a){Console.WriteLine( (a*2).toString());}}

在myClass的Main()函数中,有代码如下:method1( ); 代码执行后,输出为()。(选择一项)

a)0

b)3

c) 非法的方法调用,没有输出

4.在C#中,如果要将数组作为一个方法的参数,则传递的是()。(选择一项)

a)数组中的所有元素

b)数组的第一个元素

c)对象的引用

d)以上皆非

5.在C#的类中,相同的函数名,如果具有(),可以实现方法重载。

a)不同的返回值

b)不同的代码行数

c)不同的参数个数

d)相同的参数类型

6.与C/C++不同,C#允许结构拥有():

a)仅构造函数

b)方法

c)属性

d)构造函数

7.以下C#程序:程序运行将输出()。

static void Main(string[] args){

int val = 2;Test(val);

Console.WriteLine(val);

}

static void Test(int getVal) {

int temp = 10;

getVal = temp * 20;

}

a)2

b)10

c)30

d) 40

8.C#程序可以依据()来进行方法重载。

a)不同的参数的个数

b)不同的参数的名称

c)不同的返回值

d)不同的方法名称

9.在C#类中( )允许相同名称、不同参数个数或者参数类型的方法存在. (选项一项)

a)方法重写

b)方法重载

c)方法取消

d)方法覆盖

10.在C# 程序中,声明一个整数类型变量A,正确的代码为() 选一项

a)int A;

b)Dim A As Integer;

c)New A int ;

d)int;

11.阅读下面的.net代码:

struct Celsius {

public Celsius(float temp) { this.temp=temp; }

public static implicit operator Celsius(float temp)

{ Celsius c; c=new Celsius(temp); return c;

}

public static implicit operator float(Celsius c)

{ return ((((c.temp-32)/9)*5)); }

public float temp;

}

class Temp1App {

public static void main() {

float t; t = 98.6F;

Console.Write("转化{0}为Celsius为",t);

Console.WriteLine((Celsius)t);

Console.WriteLine("t = {0}",t);

Console.ReadLine();

}

}

请问最后的运行结果为()

A)转换98。6成Celsius为:37 t = 98.6

B) 转换98.6成Celsius为:98.6

C) 转换98.6成Celsius为:98.6 t = 98.6

D) 转换98.6成Celsius为:37

E) 以上都不正确

12.下列关于.Net中枚举型的描述正确的是()

A)枚举是引用类型

B)枚举型是值类型,它是一组枚举列表的命名常量组成的独特类型

C)指定分配给每个枚举数的存储大小的基础类型是可以为int,也可以为char类型,还可以为long类型

D)枚举型的默认基础类型为int,第一个枚举数的值必须为0,后面每个枚举型的值依次递增1

13.以上的C#代码段:

public struct Person { string Name; int Age; }

public static void Main() { Hashtable A; Person B; } 以下说法正确的是()。(选择一项)

a).A为引用类型的变量,B为值类型的变量

b).A为值类型的变量,B为引用类型的变量

c).A和B都是值类型的变量

d).A和B都是引用类型的变量

14.C#中,下面是一个类的两个方法,不是方法重载的是()

a)名称相同,参数个数不同,返回类型相同

b)名称相同,参数个数不同,返回类型不同

c)名称相同,参数个数相同,参数类型不同,返回类型相同

d)名称相同,参数个数相同,参数类型相同,返回类型不同

15.下面的C#代码片段定义了两个:String name; Int count;则下列的()说法正确的。(选择二项)

A)在程序编译时,变量name分配在堆上;

B)在程序编译时,变量count分配在堆上;

C)在程序编译时,变量name分配在堆栈上;

D)在程序编译时,变量count分配在堆上;

16.下面关于C#中变量类型的描述正确的是()。(选择一题)

a) 变量类型分成值类型和引用类型,值类型就是指C#内置的数据类型,比如int

b) 变量类型分成值类型和引用类型,值类型变量和引用类型变量存放的都是真正的数据

c) 变量类型分成值类型和引用类型,所有内置的数据类型都是值类型,所有用户定义的数据类型都是引用类型

d) 变量类型公成值类型和引用类型,值类型变量直接存放真正的数据,引用类型变量存放的是指向真正数据的内存地址

17.列关于C#中的结构的描述正确的是()。(选择一项)

A.在C#中,struct可以包含常数,字段,方法,属性和索引器,构造函数,甚至还可以声明默认构造函数

B.结构是引用类型

C.结构是值类型,结构类型适合表示如点,矩形这样的轻量对象

D.结构的实例化必须使用new运算符

18.在C#中,下列代码的运行结果是()。

Int a=30,b=20;

b=a;

a=10;

Console.WriteLine(a);

Console.WriteLine(b); (选择一项)

a)10 10

b)10 30

c)30 20

d)10 20

19.在C#中,下列代码的运行结果是()

Public class Test{

Struct Point {

Public int x;

}

Static void Main(){

Point p1,p2;

p1.x=10;

p2.x=p1;

p1.x=20;

Console.WriteLine(“{0}”,”{1}”,p1.x,p2.x);

}

} (选择一项)

a)10,10

b)10,20

d)20,20

20.在C#中,下列代码输出结果是(); Class Test{

public enum WeekDays{

Mon,Tue,Wed,Thur,Fri,Sta,Sun }

Static void Main(){

WeekDays week =(WeekDays)2; Console.WriteLine(week);

}

}

a)2;

b)Tue

c)Wed

d)编译错误。

21.在c#中,下列代码的运行结果是( ) Public class Teacher{

Public int age;

Public Teacher(int age){

This.age = age;

}

Public void ChangeAge(int age){

Age++;

}

Public void ChangeAge (Teacher tea){ Tea.age++;

}

Public static void Main(){

Teacher tea = new Teacher(18);

Console.WriteLine(tea.age);

Tea.ChangeAge(tea.age);

Console.WriteLine(tea.age);

Tea.ChangeAge(tea);

Console.WriteLine(tea.age);

}

a.18 18 18

b.18 19 20

c.18 18 19

d.18 19 19

22.在c#中,下列代码运行的结果是()

Public struct Point{

Public int x;

Public int y;

Public Point(int x,int y) {

This.x = x;

This.y = y;

}

}

Static void Main(){

Point p1 = new Point (100,100);

Point p2 = p1;

P1.x = 200;

Console.WriteLine(“{0},{1}”,p1,x,p2,x);

}

}

a.100,100

b.100,200

c 200,100

d 200,200

23.在c#中,下列代码的运行结果是() (单选)

Float f = 123.56f

Object o = f;

F = 789.123f;

Console.WriteLine(“f={0}”,f);

Console.WriteLine(“o={0}”,o);

A . f =789.123 o= 123.56

B. f=123.45 o=789.123

c.f=789.123 o=789.123

d .f=123.56 o=123.56

24.在.Net中,一些数据类型为引用类型,当引用类型的值为()时,表明没有引用任何对象。(选择一项)

A)Empty

B)null

C)Nothing

D)0

25.在C#中,下列代码的运行结果是()。

Int a=30, b=20;

b= a;

a=10;

Console.WriteLine(a);

Console.WriteLine(b);

a) 10

10

b) 10

30

c) 30

20

d) 10

20

26.在C#中,可以通过装箱和拆箱实现类型与引用类型之间相互转换,在下列代码中,有()处实现了拆箱。

Int age = 5;

object 0=age;

o=10;

age=(int)o;

object oAge=age;

a) 0

b) 1

c) 2

c) 3

27.阅读以下C#代码片段,在程序编译过程中,下面说法正确的()(请选择一项)。

Int val=100;

Object obj=val;

Int num=(int)obj;

Console.writeLine(“num:{0}”,num);

a) 第1行执行装箱操作

b) 第2行执行装箱操作

c)第2行执行取消装箱操作

d) 第3行执行装箱操作

28.在C#类中,可以通过编写()实现方法重载。(选择两项)

a) 具有不同返回类型的同名函数

b) 具有不同代码行数的同名函数

c) 具有不同参数个数的同名函数

d) 具有不同参数类型的同名函数

29 以下代码段体现了C#中的()概念,该概念使得对象模型变得简单易懂。(选择一项)

Int val = 10;

Object obj = val;

a)继承

b)重载

c)装箱

d)委托

30.在C#中,下列代码的运行结果是()

Class PayBill{

public static int add(int a,int b) {

return a*b;

}

public static int add(int a,int b,int c){

int d=add(a,b);

return d+c;

}

static void Main(){

int a=1,b=3,c=5;

int d=add(a,b+c,c);

Console.WriteLine(d);

}

}

A) 9

B) 12

C) 13

D) 15

31.

32.在C#中,下列代码运行的结果是()。

Float f=123.56f;

Object o=f;

f=789.123F;

Console.writeLine(“f={0}”,f);

Console.writeLine(“o={0}”,o); (请选择一项)

a) f=789.123 o= 123.56

b) f=123.56 o= 789.123

c) f=789.123 o= 789.123

d) f=123.56 o= 123.56

33.在c#中,某程序在一个类中编写了两个同名的方法,代码如下,请问该代码的运用结果是()

Public class musician{

Public void song(){

Console.writeline(“忘记你我做不到”);

}

Public void song (string musicname){

Console.writeline(musicname);

}

Static void main(){

Musician musician = new Musician();

String musicname=”还是觉得你最好”;

Musician.song(“分手总要在雨天”);

}

}

a)忘记你我做不到

b)还是觉得你最好

c)分手总要在雨天

d)没有输出

34.哪种方式传递变量,在方法中修改该变量后在方法外能输出修改后的值?()

a. 向方法按值传递int变量,在方法中修改该变量

b. 向方法按值传递struct对象,在方法中将该对象指向该结构的另一个对象

c. 向方法按值传递struct对象,在方法中修改该对象的int变量

d. 向方法按值传递class对象,在方法中修改该对象的int变量

35.哪种方式传递变量,在方法中修改该变量后在方法外不能输出修改后的值?()

a. 向方法按值传递int[]变量,在方法中修改该数组的第1项后

b. 向方法按值传递class对象,在方法中修改该对象的int变量

c. 向方法按值传递class对象,在方法中将该对象指向该类的另一个对象

d. 向方法按值传递struct的int变量,在方法中修改该变量

36.哪种方式传递变量,在方法中修改该变量后在方法外不能输出修改后的值?()

a. 向方法按值传递string变量,在方法中修改该变量

b. 向方法按值传递StringBuilder变量,在方法中修改该变量

c. 向方法按值传递string[]变量,在方法中修改该数组的第1项

d. 向方法按引用传递string变量,在方法中修改该变量

软件工程随堂练习(习题)

软件工程随堂练习 一、选择题 1.软件工程是()。 A、是结构化程序设计的指导方法 B、是软件开发技术和软件工程管理学为内容的学科 C、是指导计算机软件开发和维护的工程学科 D、是指导软件开发的工程方法。 2.软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的()阶段。 A.各个 B. 前期 C.中期 D.后期 3.原型方法是用户和设计者之间的一种交互过程,选用于()系统。 A. 需求确定的 B. 需求不确定性较高的 C. 管理信息 D. 决策支持 4.要将一个复杂的系统分析清楚,常用方法是结构化分析方法,结构化分析方法就是()。 A、面向数据流自顶向下逐步求精的方法 B、由内向外进行分析的方法 C、先局部后整体的分析方法 D、使用IPO图形工具分析的方法 5.概要设计过程是() A. 先确定系统的实现方案,然后在结构设计阶段中确定软件的模块结构 B. 确定软件的模块结构,再设计出系统的所有程序和数据文件 C. 设计出系统的HIPO 图并对所有模块进行描述 D. 规划出系统的后期设计总体结构 6.程序的三种基本结构是()。 A、过程,子程序,分程序 B、顺序,选择,循环 C、递归,堆栈,队列 D、调用,返回,转移 7.结构化程序设计的一种基本方法是()。 A、筛选法 B、递归法 C、归纳法 D、逐步求精法 8.软件维护的四类维护活动是:() A.改正性维护,适应性维护,完善性维护和预防性维护。 B.适应性维护,完善性维护,抢救性维护和辅助性维护。 C.改正性维护,适应性维护,完善性维护和辅助性维护。 D.适应性维护,完善性维护,抢救性维护和预防性维护。 9.软件开发瀑布模型中的软件定义时期各个阶段依次是:() A.可行性研究,问题定义,需求分析。 B.问题定义,可行性研究,需求分析。 C.可行性研究,需求分析,问题定义。

第4章 结构化设计方法

第4章结构化设计方法 4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗? 在“编写”程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。 4.2 举出3个数据抽象的例子和可以用来操作这些数据抽象的过程抽象的一个例子。 抽象是忽略事物的细节,获取其本质特征的过程。抽象是一种重要的机制,使人们能够对复杂系统能够很好地理解、交流和推理。在软件领域,可以将抽象分为两类,即数据抽象和过程抽象。 在传统的结构化程序设计语言中,就提供了这两种抽象机制。 (1) 数据抽象:在所有的结构化程序设计语言中,用户都可以自定义抽象数据类型。如定义抽象数据类型Student(学生)、Course(课程)、ClassScoreList(班级成绩单)。 (2) 过程抽象:过程抽象也称为是基于方法的抽象。过程抽象使我们关心处理过程的名字和它能做什么,而无需知道如何完成所有实现细节。如求班级总平均分average(ClassScoreList)就是一个过程抽象。 在面向对象的程序设计语言中,抽象与封装的概念密切相关,数据抽象和相关的过程抽象被封装在类中,不同类中相似的过程抽象(方法)又可以进一步抽象,放在接口中。封装是保证事物有明确内外界限的机制。内部是受保护的,与外部事物相隔离。 4.3 应在什么时候把模块设计实现为单块集成软件?如何实现?性能是实现单块集成软件的唯一理由吗? 由于模块之间的调用降低了系统的运行速度,可能会导致满足不了用户的性能要求,这时就需要将软件设计为单块集成软件。但是在设计时,最好按照模块化的原则进行设计,只是没有显式的模块定义而已。这样的程序也具有模块化的优点。性能是实现单块集成软件的唯一理由。 4.4 是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响? 通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。这种情况能够较好地支持模块化的观点,每个子问题用单独的模块去解决,模块之间应该是高内聚、低耦合的,这样才能减少工作量,否则,虽然每个模块的工作简单了,但模块之间的联系很复杂,也增加了问题解决的难度和工作量。

第三讲 数据类型

第三讲数据类型 教学要求: 1.了解值类型和引用类型的区别 2.掌握数据类型转换的几种情况 教学学时: 2H 一.数据类型的分类 在C#中提供的数据类型有两大类:值类型和引用类型。 值类型直接存储数据,不可以为空,也不可以派生出新的类型,包括整型、实型、布尔型、字符型、结构型和枚举型,值类型数据在栈中存储。 static void Main(string[] args) { int x, y; x = 5; y = x; x=10; Console.WriteLine("x={0},y={1}", x, y); y = 20; Console.WriteLine("x={0},y={1}", x, y); Console.ReadKey(); } 引用类型存储对实际数据的引用(地址),引用类型分两步创建: 首先在栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的地址赋给引用变量。 C#有两个内置的引用类型:object类型和string类型。 object类型的变量可以引用任何类型的数据。 string类型的变量只可以引用字符串。 static void Main(string[] args) { string s1 = "agagssa"; string s2 = null; Console.WriteLine("s1={0},s2={1}", s1, s2); s2 = s1; s1 = "512512"; Console.WriteLine("s1={0},s2={1}", s1, s2);

Console.ReadKey(); } 补充知识(内存中的栈与堆的区别) 栈只能由系统自动分配,堆可以由程序员自主申请分配。 栈的空间较小(1M或2M),堆的空间较大(受限于系统有效虚拟内存)。 栈的访问速度快,堆的访问速度慢。 栈的使用不会产生碎片,而堆的使用会产生碎片。 对于使用用户自定义的类或系统定义的类用new关键字来创建一个新的对象时,过程也是这样的。 class Student { public int ID; public string Name; } class Program { static void Main(string[] args) { Student x = new Student(); x.ID = 5; https://www.doczj.com/doc/f717627455.html, = "wang"; Student y; y = x; y.ID = 10; https://www.doczj.com/doc/f717627455.html, = "cheng"; Console.WriteLine("x.ID={0},https://www.doczj.com/doc/f717627455.html,={1}", x.ID, https://www.doczj.com/doc/f717627455.html,); Console.WriteLine("y.ID={0},https://www.doczj.com/doc/f717627455.html,={1}", y.ID, https://www.doczj.com/doc/f717627455.html,); Console.ReadKey(); } } 二.值类型的数据与object类型数据之间的赋值类型转换 1. 将值类型的数据赋值给object类型变量时能自动完成将值类型的数据转换为object类型数据。 int x = 123; object obj1 = x; //相当于object obj1 = (object) x; x = x + 100; Console.WriteLine("x={0}", x); Console.WriteLine ("obj1={0}",obj1); Console.Read(); 输出结果: x=223 obj1=123 说明:

C语言的基本数据类型及其表示

3.2 C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1 常量与变量 1. 常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.4 10-38~3.4 1038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define 标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows 98",可用下面两个宏定义命令: #define PAI 3.1415927 #define W "Windows 98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows 98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

结构化程序设计方法

结构化程序设计方法 设计方法的产生 结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础。 基本要点 1.采用自顶向下,逐步求精的程序设计方法 在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。 2.使用三种基本控制结构构造程序 任何程序都可由顺序、选择、重复三种基本控制结构构造。 (1)用顺序方式对过程分解,确定各部分的执行顺序。 (2)用选择方式对过程分解,确定某个部分的执行条件。 (3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。

(4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。 3. 主程序员组的组织形式指开发程序的人员组织方式应采用由一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据,文档资料管理等)三个为核心,再加上一些专家(如通信专家、数据库专家)、其他技术人员组成小组。 设计语言 C,FORTRAN,PASCAL,Ada,BASIC 设计方法的原则 自顶向下

程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 逐步细化 对复杂问题,应设计一些子目标作为过渡,逐步细化。 模块化设计 一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。 限制使用goto语句 结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。

c#总复习题

一.选择题: 1. C#语言源代码文件的后缀名为______________. A .C# B .C C C .CSP D .CS AN: D 2. 构建桌面应用程序需要.NET提供的类库是_____________. A https://www.doczj.com/doc/f717627455.html, B Windows.Form C XML D https://www.doczj.com/doc/f717627455.html, AN: B 3. 与C++等语言相比,C#中增加的一个类成员访问修饰符是___________. A private B public C protected D internal AN: D 4. C#中程序的入口方法名是____________________. A Main B. main C Begin D using AN: A 5. 关于C#语言的基本语法,下列哪些说法是正确的? A. C#语言使用using 关键字来引用.NET 预定义的名字空间; B. 用C#编写的程序中,Main 函数是唯一允许的全局函数; C. C#语言中使用的名称不区分大小写; D. C#中一条语句必须写在一行内; AN: A 6.在C#中,表示一个字符串的变量应使用以下哪条语句定义? A. CString str; B. string str; C. Dim str as string D. char * str; AN:B 7.C#中的值类型包括三种,它们是____。 A.整型、浮点型、基本类型 B.数值类型、字符类型、字符串类型 C.简单类型、枚举类型、结构类型D.数值类型、字符类型、枚举类型 AN:C 8.枚举类型是一组命名的常量集合,所有整型都可以作为枚举类型的基本类型,如果类型省略,见约定为______。 A.int B.sbyte C.uint D.ulong AN:A 9.C#的引用类型包括类、接口、数组、委托、object和string。其中object______________根类。A.只是引用类型的B.只是值类型的 C.只是string类型的D.是所有值类型和引用类型的 AN:D 10.浮点常量有三种格式,下面_____________组的浮点常量都属于double类型。 A.0.618034,0.618034D, 6.18034E-1

实验二结构化程序设计题目及答案

C语言实验二题目及答案 第一次课(2学时): 必作实验: 1.编写程序,输入一个正整数,计算并显示该整数的各位数字之和,例如,整型数1987 的各位数字之和是1+9+8+7,等于25。 2.编写一个程序,找出被2,3,5整除时余数均为1的最小的10个自然数。 选作实验: 3. 编写一个程序,它打印出个位数是6、且能被3整除的所有三位正整数及其个数。要求一行打印8个数据。 4. 求N内的勾股数(A2+B2=C2)A、B、C。 参考答案: 1、答: #include void main( ) { int i,sum; int k; printf("\nEnter a integer:"); scanf("%d",&i); sum=0; while(i!=0) { k=i%10; /*取数字的最后一位*/ sum=sum+k; /*累加到计数器中*/ i=i/10; /*去掉数字的最后一位*/ } printf("sum is %d\n",sum); } 2、答: 程序如下: #include void main ( ) { int i=1; int count=0; printf ("\n能被2,3,5整除时余数为1的最小10个自然数是:\n"); while (count<=10) { if ((i%2==1)&&(i%3==1)&&(i%5==1)) { count++;

printf ("%d\n",i); } i++; } } 3、【解】题目中要求打印的是三位数,且个位数必须是6。因此可以for循环,它的循环控制变量从106开始,直到996为止,增量为10(因此要保证个位数是6)。由于还要打印这种数据的总个数,因此需要设置一个用于计数的变量,比如是count。发现一个这样的数,它就加1。为了满足一行打印8个数据要求,可以利用计数器count,让这样的数一个个地打印下去。如果count %8= =0,就打印一个回车换行。具体程序如下: #inc lud e void ma in( ) { int cou nt=0,j; for(j=106;j<=996;j+=10) { if(j%3!=0) cont inu e; else { coun t++; prin tf("%d\t",j); if(c oun t%8==0) prin tf("\n"); } } prin tf("\n The co unt is %d\n",co unt); } 运行此程序,输出结果如下图所示。 4、【解析】 (1)分析题意,建立数据模型,设计算法。 该问题可用枚举法实现,直接用C语言描述:

C#引用类型和值类型的区别

实际举例C#引用类型和值类型的区别 我们都知道,c#的两大数据类型分别为值类型和引用类型。很多人或许闭着眼睛都能说出值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等,但是当被问及到二者之间的联系和区别,什么时候用struct什么时候用class时,就常常混淆不清了。为此,了解值类型和引用类型的本质差异就变的很有必要了。 ?值类型直接存储其值,变量本身就包含了其实例数据,而引用类型保存的只是实例数据的内存引用。因此,一个值类型变量就永远不会影响到其他的值类型变量,而两个引用类型变量则很有可能指向同一地址,从而发生相互影响。 ?从内存分配上来看,值类型通常分配在线程的堆栈上,作用域结束时,所占空间自行释放,效率高,无需进行地址转换,而引用类型通常分配在托管堆上,由GC来控制其回收,需要进行地址转换,效率降低,这也正是c#需要定义两种数据类型的原因之一。 ?值类型均隐式派生自System.ValueType,而System.ValueType又直接派生于System.Object,每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,注意所有的值类型都是密封(sealed)的,所以无法派生出新的值类型。而且System.ValueType 本身是一个类类型,而不是值类型,因为它重写了object的Equals()方法,所以对值类型将按照实例的值来比较,而不是比较引用地址。 ?C# 的统一类型系统,使得值类型可以转化为对象来处理,这就是常说的装箱和拆箱。由于装拆箱需要装建全新对象或做强制类型转换,这些操作所需时间和运算要远远大于赋值操作,因此不提倡使用它,同时也要尽量避免隐式装拆箱的发生。 注:栈是操作系统分配的一个连续的内存区域,用于快速访问数据。因为值类型的容量是已知的,因此它可存储在栈上。而托管堆是CLR在应用程序启动时为应用程序预留的一块连续内存区,是用于动态内存分配的内存区,引用类型的容量只有到运行时才能确定,所有用堆来存储引用类型。 C#的两种数据类型延伸之一--嵌套类型的内存分配 对于引用类型嵌套值类型,以及值类型嵌套引用类型的情况下,内存分配可以根据以下两条规律来判断: ?引用类型始终部署在托管堆上; ?值类型总是分配在它声明的地方:作为字段时,跟随其所属的对象存储;作为局部变量时,存储在栈上。 C#的两种数据类型延伸之二--string类型 string是一个很有意思的引用类型,为什么说它很有意思呢?因为它表现了很多值类型的特点。请看一下代码示例: 示例1 string str1 = "abc";

结构化程序设计习题答案

第三章结构化程序设计部分习题 一、选择题 1、设有程序段 int k=10; while(k=0) k=k-1; 则下面叙述中正确的是( ) (A) while循环执行10次 (B) 循环是无限循环 (C) 循环体语句一次也不执行 (D) 循环体语句执行一次 2、设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; cout<

while(n++<=2); cout< void main() { int a,b,t; cin>>a>>b; while( ①) { if(a>b) {t=a; a=b; b=t } cout<>a>>b; } } (A) !a=b (B) a!=b (C) a==b (D) a=b 9、下面程序的运行结果是( ) #include void main() { int i,j,x=0; for(i=0;i<2;i++)

(1)下列选项中不属于结构化程序设计方法的是

(1)下列选项中不属于结构化程序设计方法的是 A)自顶向下B)逐步求精C)模块化D)可复用 (2)下列选项中不符合良好程序设计风格的是() A) 源程序文档化B) 数据说明的次序要规范化 C) 避免滥用GOTO语句D)模块设计要高藕合、低内聚 (3)下面描述中,符合结构化程序设计风格的是______ A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (4)下面概念中,不属于面向对象方法的是 ( ) A. 对象 B. 继承 C. 类 D. 过程调用 (5)结构化程序设计主要强调的是 ( ) A. 程序的规模 B. 程序的易读性 C. 程序的执行效率 D. 程序的可移植性 (6)对建立良好的程序设计风格,下面描述正确的是( ) A.程序应简单、清晰、可读性好 B. 符号名的命名要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无 (7)下面对对象概念描述错误的是( ) A.任何对象都必须有继承性 B.对象是属性和方法的封装体 C.对象间的通讯靠消息传递 D.操作是对象的动态性属性 (8)算法一般都可以用哪几种控制结构组合而成( ) A.循环、分支、递归 B.顺序、循环、嵌套 C.循环、递归、选择 D.顺序、选择、循环 (9)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送( ) A. 调用语句 B.命令 C.口令 D.消息 (10) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是( ) A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

c 复习题

《C#程序设计》期终复习试题2 一、单项选择题 1.C#源程序文件的拓展名是() A vb B c C cpp D cs 2.C#的数据类型有() A 值类型和调用类型 B 值类型和引用类型 C 引用类型和关系类型 D 关系类型和调用类型 3.下列关于异常的描述正确的是() A在C#中一个try块只能有一个catch块 B一个try块可能产生多个异常 C可以使用throws回避方法中的异常 D finally块是异常处理所必需的 4.C#程序中的类myClass中的成员变量var1如下: public class myClass { private int var1; } 则可以访问var1的有()。 A在myClass类中 B myClass的继承类 C myClass的父类 D 和myClass在同一命名空间下的类 5.在C#程序中,使用关键字()来定义静态成员。 A malloc B class C private D static 6.在.NET中,()类提供了操作字符串的方法。 A System.Threading C System.Collections B System.IO D System.String 7.在C#程序中,如果类B要继承类A,类B正确的定义为()。 A public class B inherit A C public class B :: A B public class B : A D public class B from A 8.下面关于C#中值类型和引用类型的描述正确的是()。 A 结构属于引用类型B字符串属于值类型 C 所有内置的数据类型都是值类型,所有用户定义的数据类型都是引用类型 D 值类型变量直接存放真正的数据,引用类型变量存放的是指向真正数据的内存地址 9.class Student{ string type = ”学员”; internal string name = ”李明”; } public class Test{ static void Main(){ Student stu = new Student();//1 Console.WriteLine(stu.type);//2 Console.WriteLine(https://www.doczj.com/doc/f717627455.html,);//3 } }在C#中,关于以上C#代码的描述正确的是()。 A 代码1错误 B 代码2错误 C 代码3错误 D 代码都正确

《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社 习题1参考答案 一、选择题 1. A 2. D 二、填空题 1.BASIC、FORTRAN、AL_GOL60和COBOL 2. 8 3.关键字 4. 编辑、编译、链接和运行 三、简答题 1.答: (1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。 (2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。 (3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。 (4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。 (5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。 (7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。 2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答: (1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

2014-2015-1C#复习题

2014-2015-1《C#桌面程序应用开发》复习题 一、选择题 1、装箱是把值类型转换到( b )类型。 a)数组b)引用c)char d)string 2、下列哪个类型的对象是https://www.doczj.com/doc/f717627455.html,在非连接模式下处理数据内容的主要对象?(d ) a) Command b) Connection c) DataAdapter d) DataSet 3、枚举类型是一组命名的常量集合,所有整型都可以作为枚举类型的基本类型,如果类型 省略,则定义为( a )。 a) int b) sbyte c) uint d) ulong 4、面向对象编程中的“继承”的概念是指( b ) a) 对象之间通过消息进行交互b)派生自同一个基类的不同类的对象具有一些共同特征c)对象的内部细节被隐藏d) 派生类对象可以不受限制地访问所有的基类对象5、在C#的类结构中,class关键字前面的关键字是表示访问级别,下面哪个关键字表示该类只能被这个类的成员或派生类成员访问? ( d )。 a) public b) private c) internal d) protected 6、下列类型中, 哪些不属于引用类型?( b )。 a) String b) int c) Class d) Delegate 7、数组pins的定义如下: int[] pins=new int[4]{9,2,3,1}; 则pins[1]=( b ) a) 1 b) 2 c) 3 d) 9 8、创建数据库连接使用的对象是( a )。 a) Connection b) Command c) DataReader d) DataSet 9、调用方法时,如果想给方法传递任意个数的参数时,应选用哪个关键字( c )。 a) ref b) out c) params d) 无特殊要求 10、C#中TestClass为一自定义类,其中有以下属性定义 public void Property{…}开卷考 使用以下语句创建了该类的对象,并使变量obj引用该对象: TestClass obj = new TestClass(); 那么,可通过什么方式访问类TestClass的Property属性?( a ) a) Obj,Property; b) MyClass.Property; c) obj :: Property; d) obj.Property (); 11、下列关于C#面向对象应用的描述中,哪项是正确的?( c )。 a) 派生类是基类的扩展,派生类可以添加新的成员,也可去掉已经继承的成员 b) abstract方法的声明必须同时实现 c) 声明为sealed的类不能被继承 d)接口像类一样,可以定义并实现方法 12、C#中导入某一命名空间的关键字是( a )。 a) using b) use c)import d) include 13、一般情况下,异常类存放在什么命名空间中?( b )。 a) 生成异常类所在的命名空间b) System.Exception命名空间 c) System.Diagnostics命名空间d) System命名空间 14、若将数据库中的数据填充到数据集,应调用SqlDataAdapter的(c )方法。

值类型和引用类型的区别

值类型和引用类型的区别[转] 似乎“值类型和引用类型的区别”是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还是先来探讨探讨这二者之间有什么区别吧。记得有一次电话面试中,我直接跟面试官说:“值类型是现金,引用类型是存折”,后来想想当时说这话虽是有点儿冲动地脱口而出,但也没什么不妥。我这人不善于背理论的教条,喜欢把书本上那些生硬的话跟现实生活中常见的事物联系起来理解和记忆。 直白点儿说:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。 声明一个值类型变量,编译器会在栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值。引用类型的实例分配在堆上,新建一个引用类型实例,得到的变量值对应的是该实例的内存分配地址,这就像您的银行账号一样。具体哪些类型是值类型哪些是引用类型,大家翻翻书,背一背就好了,不过我想,做过一段时间的开发,即使您背不了书上教条的定义,也不会把值类型和引用类型搞混的。接下来,还是老规矩,咱看码说话吧。 1:public class Person 2: { 3:public string Name { get; set; } 4:public int Age { get; set; } 5: } 6: 7:public static class ReferenceAndValue 8: { 9:public static void Demonstration() 10: { 11: Person zerocool = new Person { Name = "ZeroCool", Age = 25 }; 12: Person anders = new Person { Name = "Anders", Age = 47 }; 13: 14:int age = zerocool.Age; 15: zerocool.Age = 22; 16: 17: Person guru = anders; 18: https://www.doczj.com/doc/f717627455.html, = "Anders Hejlsberg"; 19: 20: Console.WriteLine("zerocool's age:\t{0}", zerocool.Age); 21: Console.WriteLine("age's value:\t{0}", age); 22: Console.WriteLine("anders' name:\t{0}", https://www.doczj.com/doc/f717627455.html,);

值类型和引用类型的区别

区别: 1、值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高。 2、引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该指针来引用实例。 3、值类型继承自ValueType(注意:而System.ValueType又继承自System.Object);而引用类型继承自System.Object。 4、值类型变量包含其实例数据,每个变量保存了其本身的数据拷贝(副本),因此在默认情况下,值类型的参数传递不会影响参数本身;而引用类型变量保存了其数据的引用地址,因此以引用方式进行参数传递时会影响到参数本身,因为两个变量会引用了内存中的同一块地址。 5、值类型有两种表示:装箱与拆箱;引用类型只有装箱一种形式。我会在下节以专门的篇幅来深入讨论这个话题。 6、典型的值类型为:struct,enum以及大量的内置值类型;而能称为类的都可以说是引用类型。 7、值类型的内存不由GC(垃圾回收,Gabage Collection)控制,作用域结束时,值类型会自行释放,减少了托管堆的压力,因此具有性能上的优势。例如,通常struct比class更高效;而引用类型的内存回收,由GC来完成,微软甚至建议用户最好不要自行释放内存。 8、值类型是密封的(sealed),因此值类型不能作为其他任何类型的基类,但是可以单继承或者多继承接口;而引用类型一般都有继承性。 9、值类型不具有多态性;而引用类型有多态性。 10、值类型变量不可为null值,值类型都会自行初始化为0值;而引用类型变量默认情况下,创建为null值,表示没有指向任何托管堆的引用地址。对值为null的引用类型的任何操作,都会抛出NullReferenceException异常。 11、值类型有两种状态:装箱和未装箱,运行库提供了所有值类型的已装箱形式;而引用类型通常只有一种形式:装箱 S:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。 2.1.2 .NET的3C:CTS、CLS和CLR .NET结合Java和COM解决方案两者优点来解决互操作性问题。类似于COM定义的标准二进制格式,.NET定义了一个称为通用类型系统Common Type System(CTS)的类型标准。这个类

结构化设计习题

第四章结构化设计习题(一)名词解释 1. 软件概要设计 2. 模块 3. 模块化 4. 抽象 5. 信息隐蔽 6. 模块独立性 7. 耦合性 8. 数据耦合 9. 标记耦合 10. 控制耦合 11. 公共耦合 12. 内容耦合 13. 内聚性 14. 偶然内聚 15. 逻辑内聚 16. 时间内聚 17. 通信内聚 18. 顺序内聚 19. 功能内聚 20. 软件结构图 21. 结构化设计 22. 变换流 23. 事务流 24. 详细设计 25. 流程图 26. 过程设计语言 (二)填空题

1. 软件结构的设计是以为基础的。 2. 软件设计阶段,是把软件“”的逻辑模型变换为“”的物理模型。 3. 数据库的“概念设计”与“逻辑设计”分别对应于系统开发中的“”与“”,而数据库的“物理设计”与模块的“”相对应。 4. 概要设计文档主要有、、和。 5. 模块具有、、和几种基本属性。 6. 模块化指解决一个复杂问题时逐层把软件系统划分成若干的过程。 7. 衡量软件的独立性有两个定性的度量标准,即和。 8. 模块之间联系越紧密,其就越强,模块的则越差。 9. 模块的耦合性由低到高分为、、、、和。 10. 数据耦合传递的是,标记耦合传递的是,控制耦合传递的是。 11. 软件结构往往用结构的图形来表示。软件结构图是软件系统的 结构。 12. 面向数据流的设计又称,它是以需求分析阶段产生的为基础,按一定的步骤映射成软件结构。 13. 数据流图一般可分为和两类。 14. HIPO图中图用于描述软件总的模块层次结构,图用于说明模块间的信息传递及模块内部的处理。 15. 详细设计也称,它是软件设计的第二阶段,主要确定每个的具体执行过程。 16. 在详细设计阶段,需要对处理过程的和数据库的结构做评审。 17. 任何程序都可由、和 3种基本控制结构构造。这3种基本结构的共同点是、。 18. 详细描述处理过程常用3种工具:、、和。 19. 程序流程图又称,它是历史最悠久、使用最广泛的一种描述程序 结构的工具。 20. 结构化流程图要求3种基本控制结构和而成,不能有相互交叉的情况。 21. PAD图是一种展开的二维结构,PAD图的控制流程为、

Java结构化程序设计

. 昆明理工大学信息工程与自动化学院学生实验报告 ( 2012—2013学年 第 一 学期 ) 课程名称:Java 程序设计 开课实验室:442 2012年 11月 7 日 一、实验目的及内容 目的:掌握和巩固Java 结构化程序设计的概念、方法。 内容: 1. (使用&&、||、^运算符)编写一个程序,该程序让用户输入一个整数,然后判断该整数是否能 同时被5和6整除;是否能被5或6整除;是否能被5或6整除,但不能同时被5和6整除。 例如:在命令行模式下该程序运行可呈现如下结果(注,也可以图形界面方式实现) Enter an integer: 10 Is 10 divisible by 5 and 6? false Is 10 divisible by 5 or 6? true Is 10 divisible by 5 or 6, but not both? true 2. 编写一个程序(利用循环)计算下面式子: 3. 写一个函数,该函数返回一个数组中值最小的元素的索引值,若该数组中值最小的元素多于一 个,则返回索引最小的那个,该函数的声明如下所示,在main 函数中调用并测该函数。 public static int indexOfSmallestElement(int[] list) 二、要求 1. 给出上述程序的流程图、代码和测试结果。 100 999998...433221+++++

内容一: 流程图: .

实验代码 import java.util.Scanner; public class Class1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("Enter an integer:"); int numble=input.nextInt(); boolean numble1=(numble%5==0)&&(numble%6==0); boolean numble2=(numble%5==0)||(numble%6==0); boolean numble3=(numble%5==0)^(numble%6==0); System.out.println("is "+numble+" divisible by 5 and 6?"+numble1); System.out.println("is "+numble+" divisible by 5 or 6?"+numble2); System.out.println("is "+numble+" divisible by 5 or 6,but not both?"+numble3); } } 运行结果: .

C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc

C++笔试题目:将”引用”作为函数返回值类型的格式、好处和需要格式:类型标识符函数名(形参列表及类型说明){//函数体} 好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的因为随着该局部变量生存期的结束,相应的引用也会失效产生runtimeerror! 注意事项: (1)不能返回局部变量的引用。这条可以参照EffectiveC++[l]的Item31。主要原因是局部变量会在函 返回后被销毁,因此被返回的引用就成为了”无所指”的引用,程序会进入未知状态。 (2 )不能返回函数内部ne w分配的内存的引用。这条可以参照Effect i veC++[l]的I tem31。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由n ew分配)就无法释放,造成memoryl eak。 (3)可以返回类成员的引用,但最好是const。这条原则可以参照Eff ect iveC++[l]的I tem30。主要原因是当对

象的属性是与某种业务规则(busines sru le)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。 如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。 (4)流操作符重载返回值申明为“引用”的作用: 流操作符〉,这两个操作符常常希望被连续使用,例如: cout对于返回一个流指针则不能连续使用这个操作符象流操作符一样,是可以连续使用的,例如:x=j=10;或者(x=10)=100 :赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。 例3 ^include in tp ut (intn); in tvals [10]: i nter ror=-l; voi dmain() { put (0)=10 ://以put (0)函数值作为左值,等价于V als[0]二10 ; put (9) =20;//以put (9)函数值作为左值,等价于va ls[9]=20;

相关主题
文本预览
相关文档 最新文档