第1章 绪 论
第1章 课堂实训
1-1. 编写一个简单的C#程序,输出如下内容:
/*********************************************** * How are you ! *
***********************************************/ 1-2. 参考附录A,安装Visual Stdio 2005集成开发环境。 1-3. 参考附录A,安装MSDN。
1-4.定制Visual Stdio.NET的集成开发环境。
习题一
1-1. 选择题
(1) 下面对Read()和ReadLine()方法的描述,哪些是正确的。(A,D)
A. Read()方法一次只能从输入流中读取一个字符 B. 使用Read()方法读取的字符不包含回车和换行符
C. ReadLine()方法读取的字符不包含回车和换行符
D. 只有当用户按下回车键时,Read()和ReadLine()方法才会返回 (2) 下面对Write()和WriteLine()方法的描述,哪些是正确的。(B) A. WriteLine()方法在输出字符串的后面添加换行符
B. 使用Write()方法输出字符串时,光标会位于字符串后面 C. 使用Write()和WriteLine()方法输出数值变量时,必须要先把数值变量转换成字符串
D. 使用不带参数的WriteLine()方法时,将不会产生任何输出 1-2.C#程序从哪儿开始执行?(Main()方法)
1-3. 在C#程序中,using System 是必须的吗?(是)
1-4.C#中有两种注释方法:_//_____适用于单行注释,/* */______适用于多行注释。
第2章
课堂实训
2-1.输入一个3位数的整数,编写一个程序,将它的十位数和百位数互换位置。
习题二
2-1. 选择题
(1) 下列标识符命名正确的是(A,D )
1
第1章 绪 论
A. _int, Int, @int B. using, _using, @using C. NO1, NO_1, NO.1 D. A3, _A3,@A3 (2) 下列变量的声明方式不正确的是( A,B )
A. int a, string b, char c; B. int a=c=b=21;
C. char a; D. string myString =”abc”; (3) 下面的标识符中,合法的是( C )
A. class , public B. 3a, _3a C. a3 D. a#5 (4) 设有说明语句int x=8;则下列表达式中,值为2的是(C ) A. x>8?x=0:x++; B. x/= x+x;
2-2. C#的每条语句都通过___分号“;”___来结束。 2-3. 变量在使用前,必须先__声明或定义_____。
2-4. 通过_加括号_____可以改变运算符的运算顺序,使表达式更加清晰易懂。 2-5. 将下列各式写成C#语言表达式
(1) sinα+cosβ Asin(α)+Acos(β) (2) 4a2+5b3 4*a*a+5*b*b*b
C. x %= x-2; D. x+= 2;
(3) b=b×a b = b*a
(4) 2cos450 2*Acos(3.14/4)
(5) 以知a=15,计算a×100÷8,并将结果赋给变量b。 b= a*100/8
2-6. 求下面算术表达式的值,并编写程序运行,验证其结果。 (1)x+a%3*(int)(x+y)%2/4,其中x=2.5,a=7,y=4.7
(2)x+‘A’+(float)(a+b)/2+x%y,其中a=2,b=3,x=3.5,y=2.5; 2-7.设有说明语句int x=1,y=2,z=-2;计算一下各表达式的值。 (1) (x+3)>4 (0)
(2) x&&y>=z (1) (3) x+y||z (1) (4) x||y>z (1)
第3章
课堂实训
3-1. 某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元,3公里以外,2.1元/公里;富康8元,3公里以外,2.4元/公里;桑塔那9元,3公里以外,2.7元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付车资。
3-2. 打印出所有的“水仙花数”、所谓“水仙花数。是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。
3-3. 关于百钱买百鸡问题的程序。
某人有100元钱,欲买100只鸡。公鸡5元一只,母鸡3元一只,小鸡一元3只,问可买到公鸡、母鸡和小鸡各多少只?
2
第1章 绪 论
习题三
3-1. C#语言有哪几种基本的语句结构?(顺序、分支、循环)
3-2. 在if分支结构中,条件表达式的值必须是__布尔____类型的数据.
3-3. C#所提供的4种循环中,他们之间有什么不同?
3-4. 写一条for语句,计数条件为n从100~200,步长为2,然后再用while语句实现同样的循环。
for( int n =100; n<=200; n += 2) {
****** }
n= 100; While(n<= 200) {
***** n += 2;
}
3-5. 编写一段程序,运行时向用户提问“你考了多少分?(0~100)”,接受输入后判断其等级并显示出来。判断依据如下:
优(90~100)、良(80~89)、中(60~79)和差(0~59)
static void Main(string[] args)
{
Console.WriteLine(\请输入考分(0-100\ string x = Console .ReadLine (); int y = int.Parse (x);
if (y < 0 || y > 100) { Console.WriteLine(\输入错误\ if (y >= 90) Console.WriteLine(\优\ else if(y >= 80) Console.WriteLine(\良\ else if (y >= 60) Console.WriteLine(\中\ else Console.WriteLine(\差\
}
3-6. 输入一个整数,将各位数字反转后输出。
static void Main(string[] args)
{
Console.WriteLine(\请输入一个整数\ string x = Console .ReadLine (); int y = int.Parse (x); for(int i=0;i Console.Write(y); y= y/10; } } 3 第1章 绪 论 3-7. 使用穷举法并分别用for、while、do …while循环语句求出1~100之间的质数。 static void Main(string[] args) { int i,k; for( i=1;i<=100 ;i++) { for (k = 2; k =i)Console.WriteLine(i); } } static void Main(string[] args) { int i=1,k; while ( i<=100) { for (k = 2; k =i)Console.WriteLine(i); i++; } } static void Main(string[] args) { int i=1,k; do { for (k = 2; k < i; k++) if (i % k == 0) break; if (k >= i) Console.WriteLine(i); i++; } while (i <= 100); } 3-8. 求出1~1000之间的所有能被7整除的数,并计算和,且每行输出每5个数。 static void Main(string[] args) { int i,sum=0,k=0; for (i = 1; i <= 1000; i++) { if (i % 7 == 0) { k++; sum += i; Console.Write(\,i); if (k % 5 == 0) Console.WriteLine(); } } 4 第1章 绪 论 Console.WriteLine(\和数={0},\,sum); } 3-9. 计算1+3+3+…+3的值。 static void Main(string[] args) { int i,sum=1,k=1; for (i = 1; i <= 10; i++) { k *= 3; sum += k; } Console.Write(\,sum); } 210 3-10.已知6≤a≤30,15≤b≤36,求满足不定方程2a+5b=126的所有整数解。 static void Main(string[] args) { int a,b; for (a = 6; a <= 30; a++) for (b = 15; b <= 36; b++) { if (2 * a + 5 * b == 126) Console.WriteLine(\, a, b); } } 3-11.编写一个控制台程序,分别输出1~100之间的平方、平方根、自然对数,e指数的数学用表。 第4章 课堂实训 4-1.用一维数组计算Fibonacci数列的前20项。 Fibonacci数列,按如下递归定义: F(1)=1; F(2)=1 F(n)=F(n-1)+F(n-2) n>2 4-2.用冒泡排序法对输入的20个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出数组中对应的下标值。 4-3.试定义一结构,用来描述日期,具体地说,该结构共有三个成员变量,分别描述年、月、日信息。然后再定义该结构类型的一个变量,要求从键盘输入数据,并输出结果。 5 第1章 绪 论 习题四 4-1.选择题 (1) 下面是几条定义并初始化一维数组的语句,指出其中正确的是( C ) A. int arr1[ ] = {1,3,4,5,77}; B. int arr1 = new int[ ]; C. int [ ] arr1 = new int[ ]{1,3,4,5,77}; D. int arr1 = { 1,3,4,5,77} (2) 下面是几条定义并初始化二维数组的语句,指出其中正确的是(D ) A. int arr2[ ][ ] = new int[2,3]; B. int [ ][ ]arr2 = new int[ 2,3]; C. int arr2[ , ] = new int[2,3]; D. int [ , ] a = new int [2, 3]{ {1,2,4}, {6,7,8} }; 4-2. 建立一个一维数组,使用该数组列出所学习的课程名称。 static void Main(string[] args) { string [ ] arr1 = new string []{\高等数学\,\语言程序设计\,\面向对象程序设计\,\英语\}; foreach (string a in arr1) Console.WriteLine(a); } 4-3.编写一个包含学生基本信息的结构类型数据,要求包括姓名、性别、年龄、身高、体重信息。 struct student { public string Name; public string Sex; public int Age; public int Height; public float Weight; } class Program { static void Main(string[] args) { student stuXinXi; stuXinXi.Name = \张三\; stuXinXi.Sex = \男\; stuXinXi.Age = 21; stuXinXi.Height = 175; stuXinXi.Weight = 55.6f; Console.WriteLine(\学生的基本信息:\); Console.WriteLine(\姓名: {0}\, stuXinXi.Name); Console.WriteLine(\性别: {0}\, stuXinXi.Sex); Console.WriteLine(\年龄: {0}\, stuXinXi.Age); Console.WriteLine(\身高: {0}\, stuXinXi.Height); Console.WriteLine(\体重: {0}\, stuXinXi.Weight); } } 6 第1章 绪 论 4-4. 编写程序,将一年中的12个月,建立一个枚举类型数据,并对其进行调用。 第5章 课堂实训 5-1.设计一个表示猫的类,包括猫的颜色,体重,年龄等数据,具有设置猫的颜色,修改和显示猫的体重,年龄等操作。 5-2.设计一个表示学习成绩的类,至少包括3门课程的成绩,可以设置,显示每门课程的成绩,可以计算,显示平均成绩 5-3.使用方法重载设计一个求面积的类,包括圆、三角形和梯形。并设计一个输入成员方法和输出成员方法。 5-4.编写程序,用来判断学生能否通过某个级别的考试,全部操作在来Grade中实现。要求: (1) 在定义对象时指定学生的姓名和分数。 4个学生的姓名和分数分别为: Wang l00 Zhang 90 Li 52 Zhao 0 (2) 编写一个私有成员方法idPass,判断能否通过。 (3) 编写一个成员方法PrintData输出结果,包含学生姓名、分数、是否能通过。 习题五 5-1. 选择题 (1) 下面选项中属于类的数据成员是( A,C )。 A. 字段 B. 方法 C. 属性 D.构造函数 态成员 (2). 方法中的值参数是____A_________的参数。 A. 按值传递 B. 按引用传递 C. 按地址传递 D. 不传递任何值 5-2. 添空题 (1) C#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对__B__进行初始化,静态构造函数只能__A____进行初始化。 A. 静态成员 B. 非静态成员 C. 静态成员或非静态成员 D. 静态成员和非静 (2) 面向对象编程的重要特征有__抽象____,_封装_____,_继承和多态_____等。 (3) 对象是__类____的实例化,它除了具有正常的状态外,其初始化阶段称为__构造____,被删除时清理其占用资源时的阶段称为__析构____。 (4) 类相当于创建对象的模板,定义该类所创建对象的数据和功能,包括__成员变量____和_成员函数_____两类成员。 (5) 类的数据成员主要包括__字段______和__常数____。 7 第1章 绪 论 (6) 类的函数成员包括_方法,属性,事件,构造函数,析构函数__等。 (7) 在C# 中,方法使用__对象____来调动,方法中的参数在传递时一般使用__形式参数____传递类型。 5-3. 阅读下列程序,分析程序运行结果。 namespace Ex { class Myclass { public void MyFuction(ref int x,ref int y,ref int z) { x += y; y-= x; z *= y; Console.WriteLine(\ } } class Program { static void Main(string[] args) { Myclass m = new Myclass(); int a, b, c; a = 20; b = 10; c = 5; m.MyFuction(ref a, ref b, ref c); Console.WriteLine(\ } } } 程序运行结果: a=30, b=-20, c=-100 a=30, b=-20, c=-100 第6章 课堂实训 6-1. 编写一个类Cal1,实现加、减两种运算,然后,编写另一个派生类Cal2。实现乘、除两种运算。 6-2. 建立三个类:居民、成人和官员。其中,居民:包含身份证,姓名,出身日期;成人:成人继承居民,多包含学历,职业两项数据;官员:官员则继承成认,多包含党派,职物,两项数据。要求每个类中都提供数据输入和输出的功能。 6-3.分别使用抽象类,虚方法和接口技术实现第1题。 8 第1章 绪 论 习题六 6-1. 一个类可以继承几个基类,可以实现几个接口。(继承一个基类,实现多个接口) 6-2. 在一个类继承层次结构中,构造函数按照什么顺序调用(先基类构造函数,后派生类构造函数) 6-3. 如何防止类的方法被重写或隐藏?(使用属性) 6-4. 什么是抽象类?抽象一定要包含抽象方法吗? 6-5. 如何判断某个对象是否实现了某个接口 6-6. 接口可以扩展吗?如何实现(可以,通过派生实现) 6-7. 选择题 (1) 在接口的成员中,不能包含( D ) A. 属性 B. 方法 C. 事件 D. 常量 (2) 在C#中定义接口时,使用关键字是( A ) A. interface B. : C. class D. overrides 6-8. 阅读程序,分析运行结果。 namespace Ex6_6 { class Parent { private int i; protected int j; private void Display() { Console.WriteLine(\我是父类\ } protected void Setvalue() { j = 1; i = 4; } public void MyDvalue() { Console.WriteLine(\ } } class Child : Parent { public int k; public void Display() { Console.WriteLine(\我是子类\ } internal void Change() { Setvalue(); MyDvalue(); } } 9 第1章 绪 论 class Program { static void Main(string[] args) { Parent x = new Parent(); Child y = new Child(); x.MyDvalue(); y.Change(); y.Display(); y.MyDvalue(); y.k = 40; Console.WriteLine(\ } } } 运行结果: i=0,j=0 i=4,j=1 我是子类 i=4,j=1 40 第7章 课堂实训 7-1. 修改MyCalculator程序,将RadioButton控件运算类型的选择改换为下拉列表控件ComboBox。 7-2. 进一步完善MyCalculator程序功能,添加普通计算的其它功能。例如,开方、乘方等。 第8章 课堂实训 8-1.完善记事本程序,添加菜单项的状态更新和标记功能。 8-2.完善记事本程序,实现工具栏上按钮的状态更新。 8-3. 完善记事本程序,实现工具栏的显示和隐藏功能。 10 第1章 绪 论 第9章 课堂实训 9-1.利用自定义对话框技术,开发“OpenFileDialog”通用对话框。 9-2.完善如下的页面打印模块,根据行距、字体高度、左边框、顶边框等,正确设计x,y值。 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int x = 20, y = 20; foreach (string line in textLines) { e.Graphics.DrawString(line,new Font(\ y += 15; } } 第10章 课堂实训 10-1.设计制作一张个人名片,要求版面上还含有单位图标和本人彩色相片。 10-2. 完善应用程序MyPlayer,添加暂停、恢复等功能。 10-3. 完善应用程序MyPlayer,添加录音功能。 第11章 课堂实训 11-1. 完善学生信息管理系统,添加记录的删除功能。 提示及要求: 模仿记录查询功能,参考如图11-16所示的删除条件输入界面。 11 第1章 绪 论 图11-16 删除记录对话框 11-2.完善学生信息管理系统,添加记录的修改功能。 提示及要求: 模仿记录编辑和查询功能,参考如图11-17所示的界面。 图11-17 修改记录对话框 11-3. 改进学生信息管理系统,用SQL Sever数据库替换其中的Access数据库。 第12章 课堂实训 12-1.完善MyThread程序,完成功能按钮的激活/禁止状态更新。 12-2.完善MyThread程序,添加主窗体的FormClosing事件方法,编写非正常退出时终止线程代码。 12 第1章 绪 论 12-3.制作一个程序摸拟图书馆中的书籍借阅操作,有两个人几乎同时查阅某一本书是否还有,如果有,就将书的数量减1,如果没有就输出“书籍已经全部借出”。用2种线程同步的方法分别实现程序。 第13章 课堂实训 13-1. 完善客户端程序,添加各功能控件的状态更新。 13-2. 完善客户端程序,添加字体属性。 13-3. 完善聊天室程序,添加聊天时间信息。 13-4. 修改聊天室程序,在客户端,增加客户登入界面。 13