3《C#程序设计基础入门教程》_习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型
的声
明、在方法中不能使用 return 语句返回一个值。
2、面向对象的三大特性:封装、继承、多态。封装是将对象的特性和行为封装起来,不需要外界只 具 体的实现细节,使用时直接调用即可。继承主要用来描述类与类之间的关系,通过继承可以复用已有 的代码并在此基础上进行扩展。多态是指同一操作用于不同对象,会产生不同的执行结果。 六、编程题 1、参考答案
2、 .NET 平台是一个环境,而 C#只是一门语言,并不是它的一部分。C#语言编写的程序可以在.NET 平台上运行。
四、编程题
1、参考答案
class Program
{
static void Main(string[] args)
{
Console.WriteLine("这是我的第一个 C#程序!");
1、 void 2、 方法名相同、方法签名不同 3、 自身 4、 params 5、 逐语句、逐过程 6、 帕斯卡命名规范 7、 结束条件 8、 9 9、 断点 10、 6 二、判断题 1、 对 2、错 3、对 4、对 5、错 三、选择题 1、 AC 2、BC 3、C 4、B 5、B 6 、BD 7、 C 8、A 四、程序分析题 1、 编译不通过,Say()方法没有返回值。 2、 编译不能通过,在给 TestFunc()方法传参时必须加上 ref。 3、 编译不能通过,参数为 out 类型的方法,必须在方法内对参数赋值。
六、编程题 1、参考答案
class Program {
public static void Main(string[] args) {
int sum = Func(99); Console.WriteLine("sum = " + sum); Console.ReadKey(); } public static int Func(int n) { int sum = n; if (n < 1) {
2、参考答案
class SingleExample {
private static SingleExample instance; private SingleExample(){} //无参构造方法 public static SingleExample Method() {
if(instance==null) {
} public static int Result(int x) {
if (x > 0) {
return x + 3; } else if (x < 0) {
return x * x - 1; } else {
return 0; } } }
3、参考答案
class Program { public static void Main(string[] args) { int[] arr = { 25, 24, 12, 76, 101, 96, 28 }; Console.Write("冒泡排序前:"); PrintArray(arr); //打印数组元素 BubbleSort(arr); //调用排序方法 Console.Write("冒泡排序后:"); PrintArray(arr); //打印数组元素 Console.ReadKey(); } //定义打印数组的方法 public static void PrintArray(int[] arr) { //循环遍历数组的元素 for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i] + " "); //打印元素和空格 } Console.WriteLine(); } //定义对数组排序的方法 public static void BubbleSort(int[] arr) { //定义外层循环
三、选择题 1、B 2、C 3、ABD 4、ABCD 5、C 6、AC 7、C 8、ACD 9、A 10、B
9、AC
10、A
五、简答题 1、方法重载是指:允许在一个类中同名方法的存在,但是方法的参数列表必须不同。实现重载的条 件是方法名必须相同,参数类型或个数必须不同。当调用该方法时,根据参数的不同可以产生不 同的结果。 2、ref 参数是用于传递参数的引用,而不是参数的值。out 参数则用于将值从方法体内传到方法体。 ref 参数必须在方法调用前赋值,out 参数必须在方法内进行赋值。 3、逐语句调试会进入方法的内部调试,单步执行方法体的每一句带代码。 逐过程调试就是不会进入方法体内部,而是把方法当做一行代码来执行。
《C#程序设计基础入门教程》习题答案
第 1 章 C#开发入门
一、填空题
1、 .dll、 .exe
2、 CLR 3、 编译、运行 4、 互操作性
5、 Console.WriteLine() 二、选择题
1、 C 2、B 三、问答题
3、C
4、A
5、D
1、 它是一个全新的、集成的、面向对象的开发平台,它以公共语言运行时(Common Language Runtime, 简写 CLR)为基础,支持多种编程语言。
2、 编译不通过。这是因为 y 是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用, 在使用 y = x;语句时已经超过了 y 变量的作用域,所以编译无法通过。
3、 编译不通过。因为 switch 语句中的每个分支语句之间需要使用 break 关键字隔开,如果没有 break
语句就会报错。
1、 错 2、错 3、错 4、对 5、错 三、选择题
1、 AD 2、BCD 3、C 4、C 5、C 6 、A 7、AC 8、AC 9、BD 10、A
四、程序分析题
1、 编译不通过。int 值 4 和 b 相加时,由于变量 b 的类型为 byte,取值范围没有 int 类型大,存不下 int
类型的值,因此编译不通过。
2、 在 while 循环中,条件表达式中的变量都会定义在 while 语句的外面,而在 for 循环中,
六、编程题
条件表达式中的变量都会定义在 for 语句中。
1、参考答案
public class Test01
{
public static void Main(string[] args)
{
int x = 5;
而 bool b = x < y & x / 2 > 0 是不会出现这种异常的,因为 x < y 为 false,表达式 x / y 不会执行。
3、相同点: 1、二者都可以多次执行循环体。
2、二者都可以进行循环次数确定的循环操作。
不同点:
1、 在循环次数不确定的情况下,一般会使用 while 循环。
Instance=new SingleExample(); } } }
第 5 章 面向对象高级
一、填空题 1、继承 2、抽象方法、抽象类 3、using 4、派生类或子类 5、base 6、sealed 7、new 8、Object 9、try、catch 10、virtual、override
二、判断题 1、错 2、对 3、错 4、对 5、对
第 4 章 面向对象基础
一、填空题
1、封装、继承、多态
2、new 3、成员变量、局部变量
4、类
5、静态的
6、模板
7、静态方法 类名.方法名
8、内部类
9、字段 private 10、对象初始化器
二、判断题
1、对 2、对 3、错 4、对 5、错
三、选择题
1、B 2、D 3、B 4、ABC 5、ABCD 6、ACD 7、ABCD 8、ABCD 9、D 10、D
class Student {
private String name; private double grade; public Student() { } public Student(String name, double grade) {
this.name = name; this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getGrade() { return grade; } public void setGrade(double grade) { this.grade = grade; } } public class Test01 { public static void main(String[] args) { Student stu1 = new Student(); stu1.setName("zhangsan"); stu1.setGrade(99); Student stu2 = new Student("lisi", 100); } }
Console.ReadKey();
}
}
第 2 章 C#编程基础(上)
一、填空题
1、 class 2、 true 和 false 3、 5 4、 值数据类型、引用数据类型 5、 1、4 6、 & && | || 7、 0 8、 单行注释、多行注释、文档注释 9、 break
10、 1000 二、判断题
ຫໍສະໝຸດ Baidu
for (int i = 0; i < arr.Length - 1; i++) {
//定义内层循环 for (int j = 0; j < arr.Length - i - 1; j++) {
if (arr[j] > arr[j + 1]) //比较相邻元素 {
//下面的三行代码用于交换两个元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } }
if (x % 2 != 0)
{
Console.WriteLine("x 是一个奇数");
}
else
{
Console.WriteLine("x 是一个偶数");
} Console.ReadKey(); } }
2、参考答案
public class Test02 {
public static void Main(string[] args) {
四、程序分析题
1、程序不能编译通过,因为在类 A 中的成员变量 secret 用 private 修饰,所以在类 Test1 中无法访问。 2、程序不能编译通过,因为在静态方法 method()中不能访问非静态成员变量 x。
3、程序能够编译通过,运行的结果为“inner”。
五、简答题
1、构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时
sum += 1; } else {
sum += Func(n - 2); } return sum; } }
2、参考答案
class Program { public static void Main(string[] args) { int result=0; Console.Write("请输入 x 的值:"); int input=int.Parse(Console.ReadLine()); result = Result(input); Console.WriteLine("y 的结果为:{0}",result); Console.ReadKey();
4、 打印结果为:
9
8
7
五、问答题
1、标识符可以由任意顺序的大小写字母、数字、下划线(_)和@符号组成,但标识符不能以数字开 头,且不能是 C#中的关键字。
2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。
如果使用“&&”进行连接,当“&&”左边的表达式为 false,则不会执行其右边的表达式。例如 定义 int x = 2,y = 0; bool b = x < y & x / 2 > 0 表达是会发生被 0 除异常,因为 x / y 的表达式执行了。
int sum=0; for (int i = 1; i <=99; i++) {
if (i % 2 != 0) {
sum += i; } } Console.WriteLine("1-99 之间的奇数和为:"+sum); Console.ReadKey(); } }
第 3 章 C#编程基础(下)
一、填空题