中国大学mooc面向对象与数据分析(c#)(2021春)试题及答案-凯发k8天生赢家 网课问答 2478
2 数据类型与表达式 单元测试 1、在c#中,以下描述错误的是() a、关系运算符的运算结果是布尔值 b、逻辑运算符的运算结果是布尔值 c、关系运算符用于比较两个操作数的大小 d、逻辑运算符用于比较两个操作数的大小 2、下列运算附中属于关系运算符的是( ) a、= b、 = c、-= d、== 3、以下表示“a>3 或 a<0”的c#表达式的是( ) a、a>3 or a<0 b、a>3 || a<0 c、a>3 && a<0 d、a>3 | a<0 4、如果定义的变量表示的是银行的存款,则最好选( )类型 a、int b、float c、double d、decimal 5、以下变量名不合法的是( ) a、yamaha b、123nameis c、_hebi d、名字 6、以下赋值语句错误的是() a、int i=’a’; b、decimal d1=1.0m; c、char ch=9; d、var name=“张龙”; 7、以下赋值语句合法的是( ) a、int x==1; b、int x=1;y=1; c、int x=y=1; d、int x,y; x= y=1; 8、以下代码执行后,不会报错的是( ) int i = 0; decimal d = 0; float f = 0; char ch=’\0’; a、console.writeline(10/i); b、console.writeline(10/d); c、console.writeline(10/f); d、console.writeline(10/ch); 9、c#中的数值0表示bool类型的false,数值1表示bool类型的true。 10、char类型的本质上是整数。可以直接赋值给int,long型变量。 11、char.isupper和char.islower分别用来判断字符是大写还是小写。 12、枚举类型的元素默认值类型是int。每个元素的值按照定义的顺序依次加1必须连续。 13、convert类支持数据类型的显示转换。如convert.toint32(1.5)的结果是1。 14、int a=1; int b=a ; b的值是2。3 面向对象的编程 第3周单元测验 1、面向对象思想的三大基本特征是 a、抽象,继承,派生 b、类,对象,方法 c、继承,封装,多态 d、对象,属性,方法 2、以下描述中,错误的是 a、封装隐藏了实现细节,使代码模块化。 b、继承可使派生类继承基类的属性和方法。 c、多态是通过继承实现的不同对象调用相同的方法,表现出不同的行为。 d、继承就是派生类继承了基类的所有方法。 3、关于类成员的访问修饰符,描述错误的是 a、在类前添加访问修饰符,声明了类内部成员对该类的访问权限。 b、private私有成员和私有字段成员只能被类内部的方法使用和修改。 c、在类声明时,访问修饰符是可选部分。 d、public修饰的方法,在类实例化调用时,可用“类名.方法名()”调用。 4、下面关于var关键字的描述,错误的是 a、var关键字并不是某种特别类型的符号,它只是句法上的速记,表示任何可以从初始化的右边推断出的类型。 b、能用于局部变量和全局变量。 c、只能在变量声明中包含初始化时使用。 d、一旦编译器推断出变量的类型,它就是固定且不能改变的。 5、关于静态字段的描述,错误是 a、一个类的所有对象共享静态字段。 b、static修饰符声明的字段为静态字段。 c、静态函数成员能访问实例成员和静态成员。 d、如果静态字段的值被一个实例改变,所有实例都可见。 6、关于属性的使用正确的是 a、private int num; public string num { get{return num;} set{num=value;} } b、private int num; public int num { get{return num;} set{num=value;} } c、private int num; public int num { get{num=value;} set{return num;} } d、private int num; private int num { get{return num;} set{num=value;} } 7、c#中的数据类型的描述,错误的是 a、c#中的数据类型分为值类型和引用类型。 b、类类型属于引用类型,默认值是null。 c、int类型的默认值是0,bool类型默认值是false。 d、简单类型如int,double,float,bool,string等是值类型。 8、关于值类型和引用类型,描述正确的是 a、struct属于引用类型 b、string属于值类型 c、所有内置的数据类型都是值类型,所有用户定义的数据类型都是引用类型 d、值类型变量直接存放真正的数据,引用类型变量存放的是指向真正数据的内存地址 9、以下的描述错误的是 a、类的关键字是class。 b、new关键字的作用是类的实例化。 c、类的默认访问修饰符是public。 d、c#没有全局变量,所有的变量都是在类中声明。 10、关于属性的描述,正确的是 a、属性的get方法能修改实例变量的值。 b、用private声明的属性,只能由声明它的类访问。 c、属性的声明必须同时包含get方法和set方法。 d、属性的set方法能够修改实例变量的值。 11、console.readline读取字符,遇换行符停止,然后将这些字符做为string返回。 12、在调用方法时,实参个数和类型必须与被调用的方法声明参数表中的参数个数和类型一致。 13、局部变量的作用域在声明它的方法内。 14、按照约定,方法名的第一个字母小写,后续所有单词的首字母大写。 15、const修饰的常量在声明中可以初始化也可以不初始化。 16、类实例的值类型成员,分配内存中的栈空间。 17、static字段的值在运行时才能确定。 18、关键字readonly表明对象或者变量在初始化后不能修改。5 数组 单元测验 1、下面对数组的描述错误的是( ) a、数组是一种数据结构,它由相同类型的相关数据项组成 b、数组是固定长度的实体,一旦创建,就会保持长度不变 c、数组是值类型 d、数组的元素可以是值类型或引用类型 2、c#数组有三种形式,它们是:( ) a、一维数组、二维数组、三维数组 b、一维数组、二维数组、多维数组 c、整形数组、浮点型数组、字符型数组 d、一维数组、多维数组、交错数组 3、数组scores定义如下: int[] scores=new int[5]{65,71,90,68,80}; 则scores[1]=( ) a、65 b、71 c、80 d、未知,编译报错 4、下面声明和创建数组的语句错误的是( ) a、int[] a=new int[12]; b、int[] c; c=new int[12]; c、int[] n={1,2,3,4,5}; d、int[] array = new int[3] {1,2}; 5、关于多维数组的描述正确的是( ) a、二维数组用来表示值表,它将信息存放在行和列中,为了确定某个表元素,必须指定两个索引 b、矩阵数组用行和列的形式表示表信息,每行的列数可以不同 c、交错数组各行长度必须相同 d、用arrayname[row,column]形式可以访问到交错数组中的元素 6、在调用方法时,如果想给方法传递任意个数的参数时,应选哪个关键字() a、ref b、params c、any d、无法实现 7、有关对foreach语句描述不正确的是( ) a、foreach语句的语法为: foreach(type identifier in arrayname) {statement;} b、其中type和identifier分别表示迭代变量的类型和名称,arrayname表示要迭代的数组 c、foreach语句只能用来访问数组元素 d、可以在foreach语句体中改变迭代变量的值 8、有一个定义了变长实参的方法,其方法头为: public static double getaverage(params double[] numbers){…} 下面调用该方法正确的是:( ) a、double d1= getaverage (1); b、double d2= getaverage (10.0,20.0,30.0); c、double[] arraydouble={1.0,2.0,3.0,4.0}; double d4= getaverage(arraydouble); d、以上写法都正确 9、下面代码是实现数组array冒泡排序的片段,划线处应填入( ) int[] array = { 60, 56, 38, 45 }; int temp; for (int i = 0; i < 3; i ) { for (int j = 0; j < __________; j ) { if (array[j] < array[j 1]) { temp = array[j]; array[j] = array[j 1]; array[j 1] = temp; } } } a、i b、i 1 c、4-i d、3-i 10、下面程序的输出结果是( ) string str = "a123bc456d"; string result = ""; for (int i = 0; str[i] >= 'a' && str[i] <= 'z'; i = 1) { result = str[i] result; console.writeline(result); } a、abcd b、123456 c、a d、编译出错,无法运行4 控制结构 第4单元测验 1、以下描述中,错误的是 a、c#有三种控制语句:顺序、选择、循环。 b、选择结构有if语句,if...else…语句,switch语句三种。 c、if语句条件为false时,跳过if语句块{},执行else语句块,若没有else语句,顺序执行后面的语句。 d、switch语句中的break语句是必须的,和case语句成对儿出现。 2、以下if…else…结构执行结果是 int x=80; int y=30; if ( x <0 || x>75 ) { if(y>=80) { console.write(“晴”); } else { console.write(“晴转阴”); } } else { console.write(“ 阴”); } a、晴 b、晴转阴 c、晴 阴 d、晴转阴 阴 3、以下for语句的表示方法,错误的是 a、int i=0; for(i; i<10; i ){} b、for( int i=0, i<10, i ){} c、int i; for(i=0; i<10; i ){} d、for(int i=0; i<10; ){} 4、以下描述正确的是 for( ; ; ) {循环体;} a、不执行循环体; b、一直执行循环体,死循环; c、执行循环体一次; d、程序不符合 5、如果month=4,下面代码的输出结果是 int days=0; switch(month) { case 2: days=28; break; case 4: case 6: case 9: case 11: days=30; break; default: days=31; break; } console.writeline(days); a、0 b、28 c、30 d、31 6、在下面循环语句中循环体执行的次数是 for(int i=n; i>0; i--) if(i a、(n 5)/2 b、n/2 1 c、n/2-1 d、n-1 7、下面对数组的描述错误的是 a、数组是一种数据结构,它由相同类型的相关数据项组成。 b、数组是固定长度的实体,一旦创建,就会保持长度不变。 c、数组是值类型。 d、数组的元素可以是值类型或引用类型。 8、下面声明和创建数组的语句错误的是 a、int[] a=new int[12]; b、int[] c; c=new int[12]; c、int[] n={1,2,3,4,5}; d、int[] array = new int[3] {1,2}; 9、有关对foreach语句描述不正确的是 a、foreach语句的语法为:foreach(type identifier in arrayname){statement;} b、其中type和identifier分别表示迭代变量的类型和名称,arrayname表示要迭代的数组。 c、foreach语句只能用来访问数组元素。 d、可以在foreach语句体中改变迭代变量的值。 10、有一个定义了变长实参的方法,其方法头为: public static double getaverage(params double[] numbers){…} 下面调用该方法不正确的是 a、double d1= getaverage (1); b、double d2= getaverage (10.0,20.0,30.0); c、double[] arraydouble={1.0,2.0,3.0,4.0};double d4= getaverage(arraydouble); d、都正确 11、下面程序的输出结果是 string str = "a123bc456d"; string result = ""; for (int i = 0; str[i] >= 'a' && str[i] <= 'z'; i = 1) { result = str[i] result; console.writeline(result); } a、abcd b、123456 c、a d、编译出错,无法运行 12、以下哪种循环语句的循环体可能被执行0次 a、while b、do…while c、for d、foreach 13、关于跳转语句break和continue,以下说法正确的是 a、break是中断本次循环,进入下一次的循环。 b、continue是中断本次循环,进入下一次的循环。 c、break是中断整个循环。 d、continue是中断整个循环。 14、switch语句的关键字case后面的表达式可以是整形、字符型、字符串型。 15、while循环语句,一定要有修改循环条件的语句,否则会造成死循环。 16、while,do…while,for和foreach循环语句的循环体只有当条件为真时才执行。 17、foreach语句用于遍历数组中的元素,也可改变元素的值。 18、switch语句中的default语句是可选的,也可有多个。 19、c#数组有三种形式,它们是:一维数组、多维数组、交错数组。 20、交错数组各行长度必须相同。6 方法 单元测验 1、在下列代码中,有( )处实现了拆箱。 int score=5; object o= score; o=10; score =(int)o; object oscore = score; a、0 b、1 c、2 d、3 2、下面控制对成员访问描述错误的是( ) a、访问修饰符public和private控制着对类的变量、方法和属性的访问 b、类的私有变量、属性和方法时类的对象无法直接访问的 c、如果一个类试图去使用另一个类的私有成员,则编译器会产生错误消息,提示这些私有成员无法访问 d、如果类的成员没有用访问修饰符声明,则默认为共有的 3、有关this引用访问当前对象成员的描述正确的是() a、每个对象都可以用关键字this引用自己 b、调用特定对象的的非静态方法时,方法体会显式用this引用这个对象的实例变量、其他方法和属性 c、如果方法包含与字段同名的局部变量,则方法将引用字段而不是局部变量 d、方法中的参数名或局部变量名应尽可能和字段名保持一致,方便阅读 4、有关构造函数的说法,错误的是( ) a、要重载构造函数,只需提供具有不同签名的多个构造函数声明 b、当实现类的方法时,应使用类的属性来访问类的私有数据,这样可以减少代码维护的工作量,降低出错的可能性 c、每个类都必须至少有一个构造函数 d、不管是否显式的声明了构造函数,编译器都会创建默认的构造函数 5、有关析构函数和内存回收的描述正确的是() a、在内存回收期回收对象的内存之前,析构函数由内存回收期调用,执行终止清理工作。析构函数和构造函数类似,可以重载 b、析构函数的名字由符号“~”加类名组成,其中“~”可以省略 c、析构函数没有任何修饰符、没有任何参数、也不返回任何值 d、析构函数可以被自动调用,也可以主动显示的调用 6、下面对readonly和const修饰的实例变量不正确的是( ) a、静态常量(const)是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。 b、动态常量(readonly)的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。 c、const修饰的常量在声明的时候必须初始化; readonly修饰的常量则可以延迟到构造函数初始化。 d、const是静态常量,所以必须要手动再为const增加一个static修饰符。 7、假设student类定义了name,classinfor,stunumber,利用对象初始化器student类的一个对象并初始化它的属性,下面写法正确的是() a、student s1 =new student{name=”zhangsan”, classinfor =”it201801”, stunumber =”10000001”}; b、student s2 =new student{ classinfor =”it201801”, name=”zhangsan”, stunumber =”10000001”}; c、student s3 =new student{stunumber =”10000001”}; d、以上写法均正确 8、在visual studio窗口中,在( )窗口中可以查看当前项目的类和类型的层次信息 a、资源视图 b、类视图 c、凯发k8天生赢家的解决方案管理器 d、属性 9、包装代码的三种常见途径是方法、类和名字空间。 10、递归方法的定义是“直接调用自己的方法”。 11、基类的构造函数不被派生类继承。8 类-继承 单元测验 1、在c#中定义接口时,使用的关键字是( ) a、interface b、class c、abstract d、overrides 2、下列说法正确的是( ) a、接口可以实例化 b、类只能实现一个接口 c、接口的成员前面可以加访问修饰符 d、接口的成员都必须是未实现的 3、关于虚方法实现多态,下列说法错误的是( ) a、关键字virtual可以与override一起使用 b、定义虚方法使用关键字virtual c、虚方法是实现多态的一种应用形式 d、派生类是实现多态的一种应用形式 4、下列哪一个不是面向对象编程的特征() a、继承 b、多态 c、封装 d、统一接口 5、下列有关抽象类和虚方法的描述中,正确的是( ) a、抽象类可以实例化其对象 b、抽象类是指具有抽象方法的类 c、虚方法是一个非成员方法 d、虚方法是一个static类型的成员方法 6、下列描述是抽象类的特征是( ) a、可以定义虚函数 b、可以进行构造函数重载 c、可以定义友元函数 d、不能实例化其对象 7、有关对运算符重载的描述正确的是( ) a、所有运算符都能被重载 b、每个运算符都可以被重载成成员函数 c、运算符被重载时,它们的优先级与结合性不会发生改变 d、当需要时,可以自定义一个运算符进行重载 8、关于委托,下面描述错误的是( ) a、委托是一种类的成员 b、委托不一定定义在类中 c、定义委托需使用delegate关键字 d、委托是一种数据类型 9、语句“list list01 = new list();”是我们常说的c#中的哪种技术( ) a、泛型 b、委托 c、引用 d、覆盖 10、调用重载方法时,系统根据( )来选择具体方法。 a、方法名 b、参数名和参数个数 c、方法的返回值类型 d、参数个数和类型 11、利用多态,根据方法调用的对象类型,相同的方法名和签名引起的行为相同。 12、抽象类中的所有方法都必须被声明为抽象的。 13、抽象基类的每个具体派生类,必须为基类的抽象方法和属性提供具体实现。 14、被sealed关键字修饰的方法不能被继承。9 类-多态 单元测验 1、在c#中定义接口时,使用的关键字是 a、interface b、class c、abstract d、overrides 2、下列说法正确的是 a、接口可以实例化 b、类只能实现一个接口 c、接口的成员前面可以加访问修饰符 d、接口的成员都必须是未实现的 3、关于虚方法实现多态,下列说法错误的是 a、关键字virtual可以与override一起使用 b、定义虚方法使用关键字virtual c、虚方法是实现多态的一种应用形式 d、派生类是实现多态的一种应用形式 4、下列哪一个不是面向对象编程的特征 a、继承 b、多态 c、封装 d、统一接口 5、下列有关抽象类和虚方法的描述中,正确的是 a、抽象类可以实例化其对象 b、抽象类是指具有抽象方法的类 c、虚方法是一个非成员方法 d、虚方法是一个static类型的成员方法 6、下列描述是抽象类的特征是 a、可以定义虚函数 b、可以进行构造函数重载 c、可以定义友元函数 d、不能实例化其对象 7、有关对运算符重载的描述正确的是 a、所有运算符都能被重载 b、每个运算符都可以被重载成成员函数 c、运算符被重载时,它们的优先级与结合性不会发生改变 d、当需要时,可以自定义一个运算符进行重载 8、调用重载方法时,系统根据( )来选择具体方法 a、方法名 b、参数名和参数个数 c、方法的返回值类型 d、参数个数和类型 9、利用多态,根据方法调用的对象类型,相同的方法名和签名引起的行为相同。 10、抽象类中的所有方法都必须被声明为抽象的。 11、抽象基类的每个具体派生类,必须为基类的抽象方法和属性提供具体实现。 12、被sealed关键字修饰的方法不能被继承。12 windows form 编程 单元测试 1、构建windows窗体以及其所使用空间的所有类的命名空间是() a、system.io b、system.data c、system.text d、system.windows.forms 2、所有windows窗体控件都是从system.windows.forms.control类继承而来,它公开的成员不包含( ) a、属性 b、事件 c、方法 d、窗体 3、改变窗体\控件的标题,需要修改的属性是 a、text b、name c、title d、index 4、在c#中,可以标识不同的对象的属性是 a、text b、name c、title d、index 5、winforms程序中,如果复选框控件的checked属性值设置为true,表示 a、该复选框被选中 b、该复选框不被选中 c、不显示该复选框的文本信息 d、显示该复选框的文本信息 6、当鼠标悬停在控件上方时,触发的事件是 a、mouseenter b、mouseup c、mousehover d、mousemove 7、以下哪个控件可以将其他控件进行分组 a、groupbox b、textbox c、combobox d、label 8、以下哪个选项不属于listbox控件item属性的方法 a、add() b、insert() c、count() d、remove() 9、windows窗体应用程序的编程模型主要由( )三部分组成。 a、窗体 b、控件 c、事件 d、元素 10、button控件的属性clickmode可以获取click事件,这里的click模式有( ) a、经过 b、悬停 c、按下 d、释放 11、所有的窗体、组件和控件都是类。 12、在c# winform程序中,新建的窗体后台cs代码自动继承了form窗体。 13、所有的鼠标事件都使用mouseeventargs类。 14、timer控件的interval属性,用来指定时钟空间触发时间的时间间隔,单位是毫秒。 15、让控件可用的属性是visible,可见的属性是enabled。 16、图片框picturebox中用于定义图片路径的属性是imagepath。13 gdi 绘图系统 单元测验 1、图形设备接口的缩写是下述哪项() a、mdi b、gdi c、sdi d、clr 2、定义一个画笔对象,下列哪项错误() a、pen mypen=new pen(color.red) b、pen mypen=new pen(new solidbrush(color.red)) c、pen mypen=new pen(color.red,5) d、pen mypen=new pen(new bitmap(“e:\\1.jpg”)) 3、以下哪一个方法不是graphics类中提供的绘图方法() a、drawarc b、drawcircle c、drawline d、drawrectangle 4、下列代码完成的功能,哪项表述正确() pen mypen = new pen(color.blue, 2); graphics g = e.graphics; g.drawrectangle(mypen, 10, 10, 200, 10); a、用蓝色的画笔画了一个左上角坐标为(10,10),右下角坐标为(200,10)的矩形 b、用蓝色的画笔画了一个左上角坐标为(10,10),宽为200,高为10的矩形 c、用蓝色的画刷填充了一个左上角坐标为(10,10),右下角坐标为(200,10)的矩形 d、用蓝色的画刷填充了一个左上角坐标为(10,10),宽为200,高为10的矩形 5、使用gdi 绘图接口可以在窗体上进行绘图,但不能在控件上进行绘图。 6、在gdi 绘图接口中,必须先创建graphics对象,才能用gdi 进行绘图操作。 7、drawstring是绘制文本的方法,确定所绘制文本的颜色是一个pen对象参数。1 c#概述 单元测试 1、关于c#和.net的关系描述错误的是( )。 a、.net是微软开发的一个硬件平台 b、c#是一个程序设计语言,运行在.net平台上用于创建应用程序 c、clr是公共语言运行时,是提供内在管理,代码安全性检测等功能 d、visual studio是一个集成开发环境,可用于c#语言和.netframework的交互 2、.net语言不包括以下哪种语言( ) a、visual basic b、visual c c、visual c# d、java 3、在c#中任何( )都是对象 a、任何类型 b、任何事物 c、任何技术 d、任何代码 4、对象包含数据和( )的方法 a、调用 b、函数调用 c、传递参数 d、该数据上工作 5、以下描述错误的是( ) a、namespace描述了一个类库 b、using语句引用名字空间后,代码中可省略名字空间 c、namespace限定了类的作用域 d、可以自己定义namespace 6、以下描述正确的是( ) a、console是c#系统的输出类 b、console.readline()方法的返回值为字符串 c、consle.write是向控制台输出一个字符 d、以上都正确 7、执行下列代码,如果在控制台输入123,以下描述正确的是( ) int x; x=console.readline(); a、x的值是整形123 b、x的值是字符串"123" c、报错,无法将string类型隐式转换为int d、报错,无法将int类型隐式转换为string 8、执行以下代码,以下描述正确的是() console.writeline("现在的得分是比{1}","2","3"); a、现在的得分是0比1 b、现在的得分是0比2 c、现在的得分是2比3 d、现在的得分是2比1 9、执行c#代码的过程包括( )。 a、选择编译器 b、将代码编译为msil c、将msil编译为本机代码 d、运行代码 10、用c#写的应用程序就是.net程序。 11、clr是公共语言运行时,独立于cpu的指令集,可以被转换为特定与某种cpu的代码。 12、c#源程序的后缀名是.cs。 13、visual studio的凯发k8天生赢家的解决方案资源管理器,包含一个项目的所有文件和组件。