} }
9.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
using System; public class Exe6 {
public static void Main() { int i,j;
for(i=0; i<10;i++) {
j=i*10+6; if ( j%3!=0 ) continue;
Console.WriteLine(\,j); } } }
10.用插入法对数组a进行降序排列,请填空。 Using System; public class Exe7 {
Public static void Main() {
Int[]a={4,7,1,2,5,8,9,10,3,6}; Int I,j,m;
for(i=1;i<10;i++) { m=a[i];
j= (1)i+1 ; while(j>=0 && m>a[j]) { (2) ; j--;
}
(3) =m; }
For (i=0;i<10;i++)
{console.writeLine(“{0}”,a[i]);} Console.writeLine(); } }
第三章 面向对象编程基础习题
1、C#语言的核心是面向对象编程(OOP),所有OOP语言都应至少具有三个特性: A A、封装、继承和多态 B、类、对象和方法 C、封装、继承和派生 D、封装、继承和接口
2、C#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对静态成员和非静态成员进行初始化,静态构造函数只能对静态成员进行初始化。
3、C#实现了完全意义上的面向对象,所以它没有全局变量、全局常数和全局方法,任何数据域和方法都必须封装在类体中。
4、方法中的值参数是__A______的参数。
A、按值传递 B、按引用传递 C、按地址传递 D、不传递任何值 5、以下关于ref和out的描述哪些项是不正确的 D
A.ref和out参数传递方法相同,都是把实在参数的内存地址传递给方法,实参与形参指向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值。
B.ref是将实参传入形参,out只能用于从方法中传出值,而不能从方法调用出接收实参数据 C ref和out参数传递的是实参的地址所以要求实参和形参的数据类型必须一致。
D.ref和out参数要求实参和形参的数据类型的数据类型必须一致,或者实参能被隐式地转化为形参。
6、假设class Mclass类的一个方法的简明为:public void Max(out int max, params int[] a),m1是Mclass类的一个对象,maxval是一个int类型的值类型变量,array A是一个int类型的数组对象,则下列调用该方法有错的是 C
A m1.Max(out maxval) B m1.Max(out maxval,4,5,3) C m1.Max(out maxval,ref array A ) D m1.Max(out maxval,3,3,5)
7、填空
1、析构函数不能由程序显示的调用,而是由系统在 释放对象时 时调用,如果这个对象是一个派生类对象,那么在调用构希函数时,除了执行派生类的析构函数,也会执行基类的析构函数,其执行顺序与构造函数 正好相反 。
2、在类中,如果一个数据成员被定义为static的,则说明这个类的所有势力都共享static数
据成员,在类体外,static成员不能通过 继承 来访问,他必须通过 构造函数 来访问。
3.程序运行结果 using System; public class Test {
public void change1(string s) {
s=s+”Change1”;
}
public void change2(ref string s) {
s=s+”Change2”; }
public void change3(string s1,out string s2) {
s1=s1+”Change3”;
s2=s1; }
}
Public class Exe8 {
Public static void Main(){ String s1,s2; S1=”Hello,”;
Test t1=new Test(); t1.change1(s1);
Console.WriteLine(“s1 after call to change1 is {0}”, s1); t1.change2( ref s1);
Console.WriteLine(“s1 after call to change2 is {0}”, s1); t1.change3(s1,out s2);
Console.WriteLine(“s1 after call to change3 is {0}”, s1); Console.WriteLine(“s2 after call to change3 is {0}”, s2); Console.Read(); } }
4.程序运行结果 using System; public class Test {
public void change(string s) {
s=s+”change1”; }
Public void change( ref string s) {
s=s+”change2” }
public void change(string s1,out string s2) {
s1=s1+”Change3”; s2=s1; } }
public class Exe9 {
Public static void Main() {
string s1,s2; s1=”Hello,”;
Test t1=new Test();
t1.change1(s1);
Console.Write(“s1 is {0}”, s1); t1.change2( ref s1);
Console.Write(“s1 is {0}”, s1); t1.change3(s1,out s2);
Console.Write(“s1 is {0}”, s2 is {1}”, s1,s2); Console.Read(); } }
8、定义全班学生成绩类,包括姓名,学号,C++成绩,英语成绩,数学成绩,和平均成绩,设计下列4个方法
1、全班成绩的输入
2、求每一个同学的平均成绩 3、按平均成绩的升序排列 4、输出全班成绩
using System;
using System.Collections.Generic; using System.Text; namespace hanxu {
class Program {
static void Main(string[] args) {
int t = 0; int k = 1;
Console.Write(\请输入全班同学的人数:\); t = Convert.ToInt32(Console.ReadLine()); score[] stu = new score[t];
Console.WriteLine(\请输入全班同学的信息:\); for (int i = 0; i < t; i++) {
Console.WriteLine(\请输入第{0}个学生信息:\, k++); stu[i] = new score(); stu[i].init(); stu[i].AVG(); }
Console.WriteLine(\按学号排序学生信息:\);
Console.WriteLine(\ 姓名 学号 C++ 英语 数学 平均成绩\); for (int j = 0; j < t; j++) {
stu[j].display(); }
Console.WriteLine(\排序后的学生信息:\);
相关推荐: