《C#程序设计基础入门教程》课后习题答案
- 格式:docx
- 大小:58.33 KB
- 文档页数:22
《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、 .NET平台是一个环境,而C#只是一门语言,并不是它的一部分。C#语言编写的程序可以在.NET平台上运行。
四、编程题
1、参考答案
class Program
{
staticvoid Main(string[] args)
{
Console.WriteLine("这是我的第一个C#程序!");
Console.ReadKey();
}
}
第2章 C#编程基础(上)
一、填空题
1、 class
2、 true和false
3、 5
4、 值数据类型、引用数据类型
5、 1、4
6、 & && | ||
7、 0
8、 单行注释、多行注释、文档注释
9、 break 10、 1000
二、判断题
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、 编译不通过。这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y = x;语句时已经超过了y变量的作用域,所以编译无法通过。
3、 编译不通过。因为switch语句中的每个分支语句之间需要使用break关键字隔开,如果没有break语句就会报错。
4、 打印结果为:
9
8
7
五、问答题
1、标识符可以由任意顺序的大小写字母、数字、下划线(_)和@符号组成,但标识符不能以数字开头,且不能是C#中的关键字。
2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义int x = 2,y = 0; bool b = x < y & x / 2 > 0表达是会发生被0除异常,因为x / y的表达式执行了。而bool b = x < y & x / 2 > 0是不会出现这种异常的,因为x < y为false,表达式x / y不会执行。
3、相同点:
1、二者都可以多次执行循环体。
2、二者都可以进行循环次数确定的循环操作。
不同点:
1、 在循环次数不确定的情况下,一般会使用while循环。
2、 在while循环中,条件表达式中的变量都会定义在while语句的外面,而在for循环中,条件表达式中的变量都会定义在for语句中。
六、编程题
1、参考答案
public class Test01
{
public static void Main(string[] args)
{
int x = 5;
if (x % 2 != 0)
{
Console.WriteLine("x是一个奇数");
}
else
{
Console.WriteLine("x是一个偶数"); }
Console.ReadKey();
}
}
2、参考答案
public class Test02
{
public static void Main(string[] args)
{
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#编程基础(下)
一、填空题
1、 void
2、 方法名相同、方法签名不同
3、 自身
4、 params
5、 逐语句、逐过程
6、 帕斯卡命名规范
7、 结束条件
8、 9
9、 断点
10、 6
二、判断题
1、 对2、错3、对4、对5、错
三、选择题
1、 AC2、BC3、C4、B5、B6 、BD 7、C8、A9、AC10、A
四、程序分析题
1、 编译不通过,Say()方法没有返回值。
2、 编译不能通过,在给TestFunc()方法传参时必须加上ref。
3、 编译不能通过,参数为out类型的方法,必须在方法内对参数赋值。
五、简答题
1、方法重载是指:允许在一个类中同名方法的存在,但是方法的参数列表必须不同。实现重载的条件是方法名必须相同,参数类型或个数必须不同。当调用该方法时,根据参数的不同可以产生不同的结果。
2、ref参数是用于传递参数的引用,而不是参数的值。out参数则用于将值从方法体内传到方法体。ref参数必须在方法调用前赋值,out参数必须在方法内进行赋值。
3、逐语句调试会进入方法的内部调试,单步执行方法体的每一句带代码。
逐过程调试就是不会进入方法体内部,而是把方法当做一行代码来执行。
六、编程题
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)
{
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(); }
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)
{
//定义外层循环 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;
}
}
}
}
}
第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
四、程序分析题
1、程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问。
2、程序不能编译通过,因为在静态方法method()中不能访问非静态成员变量x。
3、程序能够编译通过,运行的结果为“inner”。
五、简答题
1、构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。