第一篇:C#程序设计案例评语
C#程序设计案例评语:
优秀:该生在课程实习过程中,能够按照实习任务书的要求,完整的开发记事本及计算器程序,设计过程中能主动查阅资料,独立完成程序开发,软件设计界面良好,功能完整,实习报告内容详细。实习过程中表现突出。
良好:该生在课程实习过程中,能够按照实习任务书的要求,完整的开发记事本及计算器程序,设计过程中能独立完成程序开发,软件设计界面良好,功能完整,实习报告内容详细。实习过程中表现良好。
中等:该生在课程实习过程中,能够按照实习任务书的要求,比较完整的开发记事本及计算器程序,设计过程中能在老师的指导下完成程序开发,功能完整,实习报告内容完整。实习过程中表现一般。
及格:该生在课程实习过程中,基本能够按照实习任务书的要求,比较完整的开发记事本及计算器程序,设计过程中能在老师和同学的指导下完成程序开发,功能基本完整,实习报告内容完整。实习过程中表现一般。
第二篇:C#程序设计实验报告
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。
实验报告书写说明
实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
金陵科技学院实验报告
实验项目名称: C#基础编程 实验学时: 6 同组学生姓名: 实验地点: 1318 实验日期: 10月5日-10月19日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验1 C#基础编程
一、实验目的
1、熟悉Visual Studio.NET开发环境。
2、掌握C#应用程序的基本操作过程。
3、掌握C#的数据类型,运算符以及表达式的使用。
4、掌握分支和循环语句的使用方法。
5、掌握一维数组,二维数组及数组型数组的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意。
2、根据题目要求,新建项目。
3、编写并输入相关的程序代码。
5、运行与调试项目。
6、保存项目。
五、实验内容
1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace one.first {
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(“我叫王蕾!”);
}
} }
2、编写一个简单的Windows应用程序,在窗体Load事件中书写代码,标签中显示你的姓名。
using System;using System.Collections.Generic;using System.ComponentModel;
金陵科技学院实验报告
using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace one.second {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = “Windows 程序”;
Label lblShow = new Label();
lblShow.Location = new Point(20, 30);
lblShow.AutoSize = true;
lblShow.Text = “王蕾!”;
this.Controls.Add(lblShow);
}
} }
3、编写一个一个程序,用来判断输入的是大写字母,小写字母,数字还是其他的字符。
using System;using System.Collections.Generic;using System.Text;
namespace one.third {
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“请输入一个字符:”);
char c = Convert.ToChar(Console.ReadLine());
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
Console.WriteLine(“这是一个字母”);
if(char.IsDigit(c))
Console.WriteLine(“这是一个数字”);
金陵科技学院实验报告
}
} }
4、分别用while,do-while,for循环求1到100的和。
using System;using System.Collections.Generic;using System.Text;
namespace one.forth.one {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
while(i <= 100)
{
sum = sum + i;
i++;
}
Console.WriteLine(“1到100的自然数之和为:” + sum);
}
} } using System;using System.Collections.Generic;using System.Text;
namespace one.forth.two {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
do
{
sum = sum + i;
i++;
}
while(i <= 100);
Console.WriteLine(“1到100的自然数的和为:” + sum);
}
}
金陵科技学院实验报告
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.three {
class Program
{
static void Main(string[] args)
{
int i , sum = 0;
for(i = 1;i <= 100;i++)
{
sum = sum + i;
}
Console.WriteLine(“1到100的自然数的和为:” + sum);
}
} }
5、定义一个一维数组,用随机数为此赋值,用foreach循环输出其中的内容。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.five {
class Program
{
static void Main(string[] args)
{
int[] a = {0,1,2,3,4};
foreach(int i in a)
{
Console.WriteLine(a[i]);
}
}
} }
6、实现二维数组的输入和输出。
using System;using System.Collections.Generic;using System.Linq;
金陵科技学院实验报告
using System.Text;
namespace first.six {
class Program
{
static void Main(string[] args)
{
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
{
for(int i = 0;i < 2;i++)
{
for(int j = 0;j < 3;j++)
{ Console.WriteLine(a[i, j]);}
}
}
}
} }
7、实现数组型数组的输入和输出。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.seven {
class Program
{
static void Main(string[] args)
{
int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
for(int i = 0;i < a.Length;i++)
{
for(int j = 0;j < a[i].Length;j++)
{
Console.WriteLine(a[i][j]);
}
}
}
} }
六、实验体会(遇到问题及解决办法,编程后的心得体会)
刚开始编程的时候觉得无从下手,尽管我们已经学了好几种高级编程语言,但每个都
金陵科技学院实验报告
有其独特的地方,稍不留神就会混淆。
通过这次实验,我体会到课后复习巩固的重要性。在编程的时候,很多内容都不记得,需要去翻书。不得不说,实验是巩固课程的好方法!本次实验,我熟悉Visual Studio.NET开发环境;掌握了C#应用程序的基本操作过程;掌握了C#的数据类型,运算符以及表达式的使用;掌握了分支和循环语句的使用方法以及一维数组,二维数组及数组型数组的使用。
金陵科技学院实验报告
实验项目名称: 类与对象 实验学时: 6 同组学生姓名: 实验地点: 1318 实验日期: 10月26日-11月9日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验2 类与对象
一、实验目的、要求
(1)掌握类的定义和使用;
(2)掌握类的数据成员,属性的定义和使用;
(3)掌握方法的定义,调用和重载以及方法参数的传递;(4)掌握构造函数的定义和使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意;
2、根据题目要求,新建项目;
3、编写并输入相关的程序代码;
5、运行与调试项目;
6、保存项目。
五、实验内容
1、定义一个方法,实现两个数的交换(分别把参数按值传递和按引用传递)。
using System;using System.Collections.Generic;using System.Text;
namespace second.one {
class Program
{
static void Main(string[] args)
{
Swaper s = new Swaper();
Console.WriteLine(“输入x的值:”);
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“输入y的值:”);
int b=Convert.ToInt32(Console.ReadLine());
金陵科技学院实验报告
Console.WriteLine(s.Swap(a, b));
Console.WriteLine(s.Swap(ref a,ref b));
}
class Swaper
{
public string Swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return 后:x={0},y={1}“,x,y);
}
public string Swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(”按引用传参交换之后:x={0},y={1}“, x, y);
}
}
} }
2、定义一个方法,实现数组的排序。using System;using System.Collections.Generic;using System.Text;
namespace second.two {
class Program
{
string.Format(”
按
值
传
参
交
换
之
金陵科技学院实验报告
public class sort
{
public void change(int[] a)
{
Console.WriteLine(“排序前,数组顺序为:”);
show(a);
int i, j, m;
for(i = 0;i < 10;i++)
{
m = a[i];
j = ib;
}
}
static void Main(string[] args)
{
sum s = new sum();
int a = 10;
int b = 3;
int m, n;
s.ab(out m, out n, a, b);
Console.WriteLine(“{0}+{1}={2};{0}-{1}={3}”,a,b,m,n);
金陵科技学院实验报告
}
} }
5、用构造函数重载,实现矩形的面积,圆的面积,梯形的面积;
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace secong.five {
class Program
{
public class square
{
public double area;
public square(){ }
public square(double a)
{
area = a * a * 3.14;
}
public square(double a, double b)
{
area = a * b;
}
public square(double a, double b, double h)
{
area =(a + b)/ 2 * h;
}
}
static void Main(string[] args)
{
double a, b, h,area;
a = 2;b = 5;h = 3;
金陵科技学院实验报告
square s = new square(a,b);
Console.WriteLine(“求矩形面积,长为a={0},宽为b={1},面积area={2}”,a,b,s.area);
square i = new square(a);
Console.WriteLine(“求圆形面积,半径a={0},面积area={1}”, a, i.area);
square j = new square(a, b, h);
Console.WriteLine(“求梯形面积,上底为a={0},下底为b={1},高为h={2}面积area={3}”, a, b,h, j.area);
}
} }
6、设计一个windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号,姓名,语文,数学和英语成绩,要求:
1)能查询每个学生的总成绩。2)能显示全班前三名的名单。
3)能显示单科成绩最高分和不及格的学生名单。4)能统计全班学生的平均成绩。
5)能显示各科成绩不同分数段的学生人数的百分比。
Student类: using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class Student
{
public string stuNo;
public string name;
public double chinese;
public double math;
public double english;
public double sumScore
{
金陵科技学院实验报告
get { return chinese + math + english;}
}
} } StudentList类: using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class StudentList:Student
{
int snums;
public Student[] stu=new Student[50];
public StudentList()
{
snums = 0;
}
public void addstu(Student s)
{
stu[snums] = s;
snums++;
}
public int searchstu(string name)
{
int i;
for(i = 0;i < snums;i++)
{
if(stu[i].name == name)break;
}
if(i == snums)return-1;
else return i;
}
//给所有成绩排序,用后面实现前三名的排名
金陵科技学院实验报告
public void ProThree()
{
for(int i = 0;i < snums;i++)
{
int k = i;
for(int j = i + 1;j < snums;j++)
if(stu[j].sumScore > stu[k].sumScore)k = j;
if(k!= i)
{
Student temp;
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
}
//显示单科成绩的最高分
public int HighScore(int k)
{
int p = 0;
if(k == 0)
{
for(int i = 1;i < snums;i++)
if(stu[i].math > stu[p].math)p = i;
}
else if(k == 1)
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
else
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
金陵科技学院实验报告
}
return p;
}
//显示不及格名单
public string BuhgName(int k)
{
string name=“ ”;
if(k == 0)
{
for(int i = 0;i < snums;i++)
if(stu[i].math < 60)name +=stu[i].name+“n”;
}
else if(k == 1)
{
for(int i = 0;i < snums;i++)
if(stu[i].chinese < 60)name += stu[i].name + “n”;
}
else
{
for(int i = 0;i < snums;i++)
if(stu[i].english < 60)name += stu[i].name + “n”;
}
return name;
}
public string getHL()
{
string Maxer = “ ”, Loser = “ ”;
Maxer += “单科数学最高:” + stu[HighScore(0)].name + “n”;
Maxer += “ 单科语文最高:” + stu[HighScore(1)].name + “n”;
Maxer += “ 单科英语最高:” + stu[HighScore(2)].name + “n”;
Loser += “单科数学挂科名单:” +BuhgName(0)+ “n”;
Loser += “单科语文挂科名单:” + BuhgName(1)+ “n”;
Loser += “单科英语挂科名单:” + BuhgName(2)+ “n”;
金陵科技学院实验报告
return Maxer + “n” + Loser;
}
//全班的平均成绩
public string SumScore()
{
double sum = 0;
double avg=0;
for(int i = 0;i < snums;i++)
{
sum = sum + stu[i].sumScore;
}
avg = sum / snums;
return “班级总分平均分:”+avg;
}
//各科成绩不同分数段的学生百分比
//英语成绩各分数段百分比
public string PerC()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].chinese > 90)&&(stu[i].chinese <= 100))
{
sumC1++;
}
else if((80 <= stu[i].chinese)&&(stu[i].chinese < 90))
{
sumC2++;
}
金陵科技学院实验报告
else if((70<=stu[i].chinese)&&(stu[i].chinese < 80))
{
sumC3++;
}
else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))
{
sumC4++;
}
else
{sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return “语文成绩百分比:”+“n”+“90~100:”+per1+“ 80~90:”+per2+“ 80~70:”+per3+“ 70~60:”+per4+“ 60以下的:”+per5;
}
//数学成绩各分数段百分比
public string PerM()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].math> 90)&&(stu[i].math <= 100))
{
sumC1++;
}
else if((80 <= stu[i].math)&&(stu[i].math < 90))
{
金陵科技学院实验报告
sumC2++;
}
else if((70 <= stu[i].math)&&(stu[i].math < 80))
{
sumC3++;
}
else if((60 <= stu[i].math)&&(stu[i].math < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “ 80~90:” + per2 + “ 80~70:” + per3 + “ 70~60:” + per4 + “ 60以下的:” + per5);
}
//英语成绩各分数段百分比
public string PerE()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].english > 90)&&(stu[i].english <= 100))
{
sumC1++;
金陵科技学院实验报告
}
else if((80 <= stu[i].english)&&(stu[i].english < 90))
{
sumC2++;
}
else if((70 <= stu[i].english)&&(stu[i].english < 80))
{
sumC3++;
}
else if((60 <= stu[i].english)&&(stu[i].english < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “ 80~90:” + per2 + “ 80~70:” + per3 + “ 70~60:” + per4 + “ 60以下的:” + per5);
}
} } From窗体代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;
金陵科技学院实验报告
using System.Windows.Forms;namespace Test2_6 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public StudentList sl = new StudentList();
private void btnAdd_Click(object sender, EventArgs e)
{
Student s = new Student();
s.stuNo = txtStuNo.Text;
s.name = txtName.Text;
s.chinese = Convert.ToDouble(txtChina.Text);
s.math = Convert.ToDouble(txtMath.Text);
s.english = Convert.ToDouble(txtEng.Text);
sl.addstu(s);
MessageBox.Show(“添加成功”);
}
private void btnSearch_Click(object sender, EventArgs e)
{
int pos = sl.searchstu(this.textBox1.Text);
if(pos!=-1)
{
label7.Text = this.textBox1.Text + “的总成绩:sl.stu[pos].sumScore;
}
else { MessageBox.Show(”不存在这个人!“);}
}
private void btnFinish_Click(object sender, EventArgs e)
{
label7.Text = ”前3名:“+”n“;
” + 金陵科技学院实验报告
for(int i = 0;i < 3;i++)
{
sl.ProThree();
label7.Text+= sl.stu[i].name+“n”;
}
label7.Text += sl.getHL()+“n”;
label7.Text += Convert.ToString(sl.SumScore())+“n”;
label7.Text += sl.PerC()+“n”;
label7.Text += sl.PerM()+“n”;
label7.Text += sl.PerE()+“n”;
}
} }
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我掌握了类的定义与使用;掌握了类的数据成员,属性的定义和使用;掌握了方法的定义,调用和重载以及方法参数的传递以及构造函数的定义和使用。值得注意的是:本次实验中return的使用以及所在的位置,类型转换时也经常用到
金陵科技学院实验报告
实验项目名称: 继承与多态 实验学时: 6 同组学生姓名: 实验地点: 1318 实验日期: 11月16日-11月30日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验3 继承与多态
一、实验目的、要求
(1)掌握类的继承性与多态性;
(2)掌握虚方法的定义以及如何使用虚方法实现多态;(3)掌握抽象类的定义以及如何使用抽象方法实现多态;
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意;
2、根据题目要求,新建项目;
3、编写并输入相关的程序代码;
5、运行与调试项目;
6、保存项目。
五、实验内容
1、设计一个Windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生派生类,当输入相关数据,单击不用的按钮时,将分别创建不同的学生类对象,并输出当前学生的总人数,该学生的姓名,学生类型,平均成绩。
Student类: using System;using System.Collections.Generic;using System.Text;namespace Test3_1 {
public abstract class Student
{
protected string name;
protected int age;
public static int number;
public Student(string name, int age)
{
this.name = name;
this.age = age;
金陵科技学院实验报告
number++;
}
public string Name
{
get { return name;}
}
public abstract double Average();
}
public class Pupil : Student
{
protected double chinese;
protected double math;
public Pupil(string name, int age, double chinese, double math)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
}
public override double Average()
{
return(chinese + math)/ 2;
}
}
public class Middle : Student
{
protected double chinese;
protected double math;
protected double english;
public Middle(string name, int age, double chinese, double math, double english)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
金陵科技学院实验报告
this.english = english;
}
public override double Average()
{
return(chinese + math + english)/ 3;
}
}
public class College : Student
{
protected double required;
protected double elective;
public College(string name, int age, double required, double elective)
: base(name, age)
{
this.required = required;
this.elective = elective;
}
public override double Average()
{
return(required + elective)/ 2;
}
} } Form窗体内的代码:
using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_1 {
public partial class Form1 : Form
{
金陵科技学院实验报告
public Form1()
{
InitializeComponent();
}
private void btnSmall_Click(object sender, EventArgs e)
{
Pupil),Convert.ToDouble(txtMath.Text));
lblShow.Text += “总人数:” +Convert.ToString(Student.number)+ “,” + “姓名:” + p.Name + “,” + “小学生” + “,” + “平均成绩为:” + p.Average()+“n”;
}
private void btnMiddle_Click(object sender, EventArgs e)
{
Middle Convert.ToInt32(txtAge.Text),m
=
new
Middle(txtName.Text,Convert.ToDouble(txtChinese.Text), p
=
new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.TextConvert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));
lblShow.Text += “总人数:” + Convert.ToString(Student.number)+ “,” + “姓名:” + m.Name + “,” + “中学生” + “,” + “平均成绩为:” + m.Average()+ “n”;
}
private void btnBig_Click(object sender, EventArgs e)
{
College Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtMath.Text));
lblShow.Text += “总人数:” + Convert.ToString(Student.number)+ “,” + “姓名:” + c.Name + “,” + “大学生” + “,” + “平均成绩为:” + c.Average()+ “n”;
}
}
c
=
new
College(txtName.Text,Convert.ToDouble(txtChinese.Text),金陵科技学院实验报告
}
2、设计一个Windows应用程序,在该程序中定义平面图形抽象类和派生类圆,矩形和三角形。
Figure类代码: using System;using System.Collections.Generic;using System.Text;namespace Test3_2 {
public abstract class Figure
{
public abstract double Area();
}
public class Circle:Figure
{
double radius;
public Circle(double r)
{
radius = r;
}
public override double Area()
{
return radius * radius * 3.14;
}
}
public class JUxing:Figure
{
double chang;
double kuan;
public JUxing(double c, double k)
{
this.chang = c;
this.kuan = k;
}
金陵科技学院实验报告
public override double Area()
{
return chang * kuan;
}
}
public class San:Figure
{
double bian;
double heigth;
public San(double b, double h)
{
this.bian = b;
this.heigth = h;
}
public override double Area()
{
return bian * heigth / 2;
}
} } Form窗体代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_2 {
public partial class Form1 : Form
{
public Form1()
{
金陵科技学院实验报告
InitializeComponent();
}
private void btnCircle_Click(object sender, EventArgs e)
{
Circle c=new Circle(Convert.ToInt32(TxtChang.Text));
lblShow.Text = “圆的面积为:” + c.Area();
}
private void btnJu_Click(object sender, EventArgs e)
{
JUxing
j
=
new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “矩形的面积为:” + j.Area();
}
private void btnSan_Click(object sender, EventArgs e)
{
San
s
=
new
San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “三角形的面积为:” + s.Area();
}
} }
3、定义一个Person类,包含姓名字段和一个方法,早上8:30学生开始上课,教师开始讲课。分别用new关键字,虚方法,抽象类实现多态性。
New关键字: using System;using System.Collections.Generic;using System.Text;
namespace third.three {
class Program
{
static void Main(string[] args)
金陵科技学院实验报告
{
Student s=new Student(“学生”);
Teacher t=new Teacher(“教师”);
Console.WriteLine(s.name+s.work());
Console.WriteLine(t.name+t.work());
Console.ReadLine();
}
}
public class Person
{
public string name;
public interface method
{ string work();}
}
public class Student:Person
{
public Student(string name)
{ this.name = name;}
public string work()
{ return “早上8:30开始上课”;}
}
public class Teacher:Person
{
public Teacher(string name)
{ this.name = name;}
public string work()
{ return “开始讲课”;}
} } 虚方法: using System;using System.Collections.Generic;using System.Text;
金陵科技学院实验报告
namespace third.three.two {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
PersonWork(s);
Teacher t=new Teacher(“李斯”,“教师”);
PersonWork(t);
}
private static void PersonWork(Person Person)
{ Console.WriteLine(Person.Work());}
}
public class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public virtual string Work()
{ return string.Format(“Person{0}:早上8:30开始”,name);}
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:早上8:30开始上课”, name);
}
}
public class Teacher : Person
金陵科技学院实验报告
{
private string type;
public Teacher(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
} }
抽象类: using System;using System.Collections.Generic;using System.Text;
namespace third.three.three {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”, “学生”);
PersonWork(s);
Teacher t = new Teacher(“李斯”, “教师”);
PersonWork(t);
}
private static void PersonWork(Person person)
{
Console.WriteLine(person.Work());
}
}
public abstract class Person
金陵科技学院实验报告
{
public string name;
public Person(string name)
{ this.name = name;}
public abstract string Work();
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:早上8:30开始上课”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
} }
金陵科技学院实验报告
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我理解了类的继承性与多态性;掌握了虚方法的定义以及如何用虚方法来实现多态;掌握了抽象类的定义以及如何用抽象方法来实现多态。这次实验与前两次不同,采用Windows应用程序,既涉及到代码段也涉及到界面的设计。所以,勉强通过实验。
金陵科技学院实验报告
实验项目名称: 接口、文件和流 实验学时: 6 同组学生姓名: 实验地点: A205 实验日期: 12月7日-12月21日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验4 接口、文件和流
一、实验目的
(1)掌握接口的定义及使用方法;
(2)掌握流,序列化和反序列化的概念和使用方法;(3)掌握流文件的读写操作类及其使用方法;
(4)掌握OpenFileDialog,SaveFileDialog等控件的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意;
2、根据题目要求,新建项目;
3、编写并输入相关的程序代码;
5、运行与调试项目;
6、保存项目。
五、实验内容
1、定义一个Person类,包含姓名字段和一个方法,早上8:30学生开始上课,教师开始讲课。用接口来实现。
using System;using System.Collections.Generic;using System.Text;namespace Test4_1 {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
Console.WriteLine(s.Work());
Teacher t = new Teacher(“李四”,“老师”);
Console.WriteLine(t.Work());
}
金陵科技学院实验报告
public abstract class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
interface IPerson
{
string type { get;}
string Work();
}
public class Student :Person, IPerson
{
public string type
{
get { return string.Format(“老师”);}
}
public Student(string name, string type)
: base(name)
{
this.name=name;
}
public string Work()
{
return string.Format(“Person{0}:早上8:30开始上课”, name);
}
}
public class Teacher :Person, IPerson
{
public string type
{
金陵科技学院实验报告
get { return string.Format(“学生”);}
}
public Teacher(string name, string type)
: base(name)
{
this.name = name;
}
public string Work()
{
return string.Format(“Person{0}:早上8:30开始讲课”, name);
}
}
} }
2、声明一个接口Iplayer,包含5个接口方法:播放,停止,暂停,上一首和下一首。在该程序中定义一个MP3播放器类和一个AVI播放器类,以实现该接口。
MP3类(包含Iplayer接口,AVI类): using System;using System.Collections.Generic;using System.Text;namespace Test4_2 {
interface IPlayer
{
string Play();
string Stop();
string Pause();
string Pre();
string Next();
}
public class MP3:IPlayer
{
public string Play()
金陵科技学院实验报告
{
return “正在播放MP3歌曲!”;
}
public string Stop()
{
return “停止播放MP3歌曲!”;
}
public string Pause()
{
return “暂停播放MP3歌曲!”;
}
public string Pre()
{
return “播放上一首MP3歌曲!”;
}
public string Next()
{
return “播放下一首MP3歌曲!”;
}
}
public class AVI : IPlayer
{
public string Play()
{
return “正在播放AVI歌曲!”;
}
public string Stop()
{
return “停止播放AVI歌曲!”;
}
public string Pause()
{
return “暂停播放AVI歌曲!”;
}
金陵科技学院实验报告
public string Pre()
{
return “播放上一首AVI歌曲!”;
}
public string Next()
{
return “播放下一首AVI歌曲!”;
}
} } Form窗体里代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test4_2 {
public partial class Form1 : Form
{
IPlayer iplayer;
MP3 mp3;
AVI avi;
public Form1()
{
InitializeComponent();
}
private void btnMp3_Click(object sender, EventArgs e)
{
mp3 = new MP3();
iplayer =(IPlayer)mp3;
}
金陵科技学院实验报告
private void btnPlay_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Play();
}
private void btnUp_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Pre();
}
private void btnStop_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Stop();
}
private void btnPause_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Pause();
}
private void btnNext_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Next();
}
private void btnAvi_Click(object sender, EventArgs e)
{
avi = new AVI();
iplayer =(IPlayer)avi;
}
} }
3、实现对文本文件的读写操作,用文件操作控件打开和保存文件。
using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace Test4_3
金陵科技学院实验报告
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
StreamWriter
sw = StreamWriter(saveFileDialog1.FileName,true);
sw.WriteLine(DateTime.Now.ToString());
sw.WriteLine(txtSource.Text);
sw.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
StreamReader sr = StreamReader(saveFileDialog1.FileName);
txtShow.Text = sr.ReadToEnd();
sr.Close();
}
} }
4、实现对二进制文件的读写操作。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;
new
new
金陵科技学院实验报告
namespace Test4_4 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
FileStream
fs
= FileStream(@“d:Datastudent.dat”,FileMode.Append,FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(Int32.Parse(txtStuNo.Text));
bw.Write(TxtName.Text);
bool isMale;
if(rdoMan.Checked)
isMale = true;
else
isMale = false;
bw.Write(isMale);
fs.Close();
bw.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
lstShow.Items.Clear();
lstShow.Items.Add(“学号t姓名t性别”);
FileStream
fs
= FileStream(@“d:Datastudent.dat”,FileMode.Open,FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
fs.Position = 0;
while(fs.Position!= fs.Length)
{
new
new
金陵科技学院实验报告
int s_no = br.ReadInt32();
string name = br.ReadString();
string sex = “";
if(br.ReadBoolean())
sex = ”男“;
else
sex = ”女“;
string
result String.Format(”{0}t{1}t{2}“,s_no,name,sex);
lstShow.Items.Add(result);
}
br.Close();
fs.Close();
}
} }
5、实现对象序列化和反序化。
Student类: using System;using System.Collections.Generic;using System.Text;namespace Test4_5 {
[Serializable]
public class Student
{
public int sno;
public string name;
public bool sex;
public Student(int s_no, string name, bool isMale)
{
this.sno = s_no;
this.name = name;
this.sex = isMale;
=
金陵科技学院实验报告
}
} } StudentList类: using System;using System.Collections.Generic;using System.Text;namespace Test4_5 {
[Serializable]
public class StudentList
{
private Student[] list = new Student[100];
public Student this[int index]
{
get
{
if(index < 0 || index >= 100)
return list[0];
else
return list[index];
}
set
{
if(!(index < 0 || index >=100))
list[index] = value;
}
}
} } Form下的代码: using System;using System.Collections.Generic;using System.ComponentModel;
金陵科技学院实验报告
using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace Test4_5 {
public partial class Test9_32 : Form
{
private StudentList list = new StudentList();
private int i = 0;
public Test9_32()
{
InitializeComponent();
}
private void Test9_32_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
string file = @”d:datastudent.dat";
Stream
stream
= FileStream(file,FileMode.OpenOrCreate,FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(stream,list);
stream.Close();
}
private void btnAdd_Click(object sender, EventArgs e)
{
int sno = Int32.Parse(txtStuNo.Text);
bool isMale;
if(rdoMan.Checked)
isMale = true;
new
第三篇:C#程序设计教程期末复习题及答案
习题 1
一、选择题
1.在C#中 B 都是对象。
A 任何类型 B 任何事物 C 任何代码 D 任何技术 2.对象包含数据和 A 的方法。
A 在该数据上工作 B 调用 C 函数调用 D 传递参数 3.一个类是 D 的蓝本。
A 数据集合 B 函数集合 C 方法集合 D 给定功能集合 4..NET构架包含公用语言运行时期和 B。5..NET的核心是 A。
A CLR B Windows2000 C DNA D 分解平台 6.C#程序以 B 扩展名保存编写的程序。A.CS B.PS C.CSS D.SC 7.System是 B 的命名空间。
A 存储系统类 B 控制台类 C I/O操作 D 新项目 8.namespace用于声明 B。
A 新项目 B 一个命名空间 C 类与方法 D 指令 9.每个C#程序必须有一个 D 方法。A 类方法 B 构造方法 C Main D 重载方法
二、问答题
1.面向对象编程的三大原则是什么? 答:封装、继承和多态性。2.封装是什么?
答:封装是用于隐藏对象实际的制作细节。3.继承是什么?
答:继承是在建立新的特定对象时,可以使用现有对象的功能性。4.多态性是什么?
答:多态性是程序代码能够依据实际对象所需而进行不同的行为。5..NET的核心构件包括哪些? 答:(1).NET构造块服务或有计划的访问某些服务。
(2)将在新的Internet设备上运行的.NET设备软件。(3).NET用户经验。6.CLR的作用是什么?
答:CLR是.NET的核心,它是一个运行时期环境,在该环境中,以不同语言编写的应用程序均能始终运行。
三、编程题
使用.NET代码编辑器编写一个C#应用程序,以在屏幕打印出:
C# is the Component-oriented language in C and C++ family of language.要求:
(1)使用using System命名空间,即定位System命名空间的Console类。(2)不使用using System命名空间,即System命名空间的Console类。(3)使用using指令的别名,即使用using创建using的别名。答案:(1)
//Example1.cs Using System;Class Example1 { Public static void Main(){ Console.Write(“C# is the Component-oriented language ”);Console.WriteLine(“in C and C++ family of language.”);} }(2)
//Example2.cs Class Example1 { Public static void Main(){ System.Console.Write(“C# is component-oriented language”);System.Console.WriteLine(“in C and C++ family language.”);
} }(3)Example3.cs Using output=System.Console;Class Example1
Public static void Main(){ Output.Write(“C# is component-oriented language”);}
习题2
一、选择题
1.C#的数据类型有 A 和 C 两种。
A 值类型 B 调用类型 C 引用类型 D 关系类型 2.C#的值类型包括 A、B 和 D 三种。A 枚举 B 基本类型 C 整形 D 结构 E浮点型 F 字符型
3.C#的引用类型包括 A、B、C、F、G 和 H 六种。
A string B object C 类 D float E char F 数组G 代表 H 4.装箱是把值类型转换到 B 类型。
A 数组 B 引用 C char D string 5.拆箱是引用类型返回到 C 类型。
A string B char C 值 D 数组 6. A 类型是所有类型的根。
接口 A System.Object B object C string D System.Int32 7.从派生类到基类对象的转换是 B 类型转换。A 显示 B 隐式 C 自动 D 专向 8.从基类到派生类对象的转换是 D 类型转换。A 隐式 B 自动 C专向 D 显示 9.强制转换对象可以使用 B 关键字实现。A is B as C this D object 10.命名空间用于定义 A 的作用域。
A 应用程序 B 有关类型 C 多重源代码 D 层次结构 11.using关键字用于 B 命名空间中的Console对象。A Console B System C Object D Int32
二、填空题
1.下列程序的运行结果是 99.44。//Exam1.cs using System;class Using { public static void Main(){ int i=918;float f=10.25f;short sh=10;double d=11.19;Console.WriteLine(i+f+sh+d);} } 2.下列程序的运行结果是 25.5。//Exam2.cs using System;class Using { public static void Main(){ int i=5;float f=5.1f;Console.WriteLine(i*f);} }
二、编程题
1. 已知a=1,b=2,c=3,x=2,计算y=ax+bx+c之值。2. 已知圆的半径Radius=2.5,计算圆的面积。(PI=3.14159)要求:
(1)使用基本方法;(2)使用装箱与拆箱;
(3)输出以double,float,int,decimal,short表示;(4)使用object类与类型转换;(5)使用派生类与as。答案: 1. 方案一: //YValue.cs using System;class Using { public static void Main(){ int a=1,b=2,c=3,x=2,y;y=(a*x+b)*x+c;Console.WriteLine(“y={0}”,y);} } 方案二:
//YValue1.cs using System;class Using { public static void Main(){ int a=1,b=2,c=3,x=2;Console.WriteLine(“y={0}”,(a*x+b)*x+c);} } 2.
(1)使用基本方法 方案一:
//CircleAreaApp.cs using System;class CircleAreaApp { public static void Main(){ double Radius=2.5,Area;Area=3.14159*Radius*Radius;Console.WriteLine(“Area={0}”,Area);} } 方案二:
//CircleAreaApp1.cs using System;class CircleAreaApp { public static void Main(){ double Radius=2.5;Console.WriteLine(“Area={0}”,3.14159*Radius*Radius);} }(2)使用装箱与拆箱 //CircleAreaApp2.cs using System;class CircleAreaApp { public static void Main(){ double Radius=2.5;double Area=3.14159*Radius*Radius;Console.WriteLine(“Area={0}”,Area);object obj=Area;Console.WriteLine(“Area={0}”,(double)obj);} }(3)输出以double,float,int,decimal,short表示 //CircleAreaApp3.cs using System;class CircleAreaApp { public static void Main(){ double Radius=2.5;double Area=3.14159*Radius*Radius;Console.WriteLine(“Area={0}”,Area);Console.WriteLine(“Area={0}”,(float)Area);Console.WriteLine(“Area={0}”,(int)Area);Console.WriteLine(“Area={0}”,(decimal)Area);Console.WriteLine(“Area={0}”,(short)Area);} }(4)使用object类与类型转换 //CircleAreaApp4.cs using System;class Circle { public double Radius=2.5;} class CircleAreaAPP { public static void Main(){ Circle cir=new Circle();double Area=3.14159*cir.Radius*cir.Radius;Console.WriteLine(“Area={0}”,Area);Console.WriteLine(“Area={0}”,(float)Area);object obj=(float)Area;Console.WriteLine(“Area={0}”,(float)obj);} }(5)使用派生类与as //CircleAreaApp5.cs using System;class Circle {} class CircleAreaAPP:Circle { public static void Main(){ double Radius=2.5;double Area=3.14159*Radius*Radius;Console.WriteLine(“Area={0}”,Area);Console.WriteLine(“Area={0}”,(float)Area);object obj=(float)Area;Console.WriteLine(“Area={0}”,(float)obj);Circle cir=new Circle();Console.WriteLine(“cir={0}”,cir==null?“null”:cir.ToString());CircleAreaAPP cirA=new CircleAreaAPP();cirA=cir as CircleAreaAPP;Console.WriteLine(“cirA={0}”,cirA==null?“null”:cirA.ToString());} }
习题3
一、选择题
1.字符串的输入使用 B 方法。
A)Cosole.Read()B)Cosole.ReadLine()C)Cosole.Write()D)Cosole.In.read()2.用于格式化输出十进制数的符号是 C。
A)C B)E C)D D)G E)N F)X 3.用于格式化输出浮点数的符号是 D。A)C B)D C)G D)F E)N F)X 4.用于格式完整日期/时间模式(长时间)的符号是 A。A)D B)F C)G D)M E)R F)S 5.用于格式完整日期/时间模式(短时间)的符号是 C。A)D B)f C)g D)d E)F F)G
二、编程题
1.从键盘输入一个小写字母,然后输出所输入的小写字母后其对应单代码值。2.从键盘输入两个浮点数,然后输出这两个数相加的结果(要求小数后取4位)。3.从键盘输入年、月、日的数值,然后用完整的日期事件格式化输出。答案: 1.
//CharValue.cs using System;public class CharValue { public static void Main(){ Console.Write(“Enter an char:”);char ch = char.Parse(Console.ReadLine());//or char ch=(char)Console.Readline();Console.WriteLine(ch);Console.WriteLine((int)ch);} }
2.//TwoFloatAddition.cs using System;public class TwoFloatAddition { public static void Main(){ Console.Write(“Enter a float:”);float f1= float.Parse(Console.ReadLine());Console.Write(“Enter a float:”);float f2 = float.Parse(Console.ReadLine());Console.WriteLine(“Result of addition for two float is: {0:F4}”,f1+f2);} }
3.//DateTimeFormat.cs using System;using System.Globalization;public class DateTimeFormat { public static void Main(String[] args){ Console.Write(“Enter year month day: ”);string s = Console.ReadLine();DateTime s1 = DateTime.Parse(s);Console.WriteLine(“d {0:d}”,s1);Console.WriteLine(“D {0:D}”, s1);Console.WriteLine(“f {0:f}”, s1);Console.WriteLine(“F {0:F}”, s1);Console.WriteLine(“g {0:g}”, s1);Console.WriteLine(“G {0:G}”, s1);Console.WriteLine(“m {0:m}”, s1);Console.WriteLine(“M {0:M}”, s1);Console.WriteLine(“r {0:r}”, s1);Console.WriteLine(“R {0:R}”, s1);Console.WriteLine(“s {0:s}”, s1);} }
习题4 1.以下运算符的运算符优先级,D 最高,E 最低。A)+ B)<< C)| D)()E)|| F)++ 2.以下运算符中,A 是三目运算符。
A)?: B)--C)= D)<= 3.在堆栈上创建对象和调用构造函数时,通常使用 B 关键字。A)typeof B)new C)as D)is 4. A 用于获取系统的System.Type类型。
A)typeof B)new C)sizeof D)is
二、写出下列程序执行结果。1.运行结果。//Increment1.cs using System;public class Increment1 { public static void Main(){ int i1=1993,i2=11,i3=19;Console.WriteLine(“i1={0},i2={1},i2={2}”,i1,i2,i3);i1=i3;Console.WriteLine(“i1={0},i2={1},i2={2}”,i1,i2,i3);i3+=i2;Console.WriteLine(“i1={0},i2={1},i2={2}”,i1,i2,i3);i1=i2+i3;Console.WriteLine(“i1={0},i2={1},i2={2}”,i1,i2,i3);i1++;++i2;i3=i1++ + ++i2;Console.WriteLine(“i1={0},i2={1},i2={2}”,i1,i2,i3);} }
2.运行结果:。//Increment2.cs using System;public class Increment2 { public static void Main(){ int a,b;a = b = 1;b = a / ++b;Console.WriteLine(“a={0} b={1}”,a,b);b = a++-i1);Console.WriteLine(---i1);Console.WriteLine(i2---i3);Console.WriteLine(i4---i5);Console.WriteLine(-i6---i7);Console.WriteLine(i8++/ ++i9*--i10);Console.WriteLine(++i11/i12++ *--i13);Console.Read();} }
三、编程题
1.输入两个整数,输出它们(实数除)的商,并输出商的第2位小数位(例如:5/18.0=1.875, 1.875的第二位小数是7)。
2.输入圆球的半径,计算圆球的表面积(4πr)和体积(4πr/3),其中π=3.14159。3.输入秒数,把它转换为用小时、分、秒表示。例如,输入7278秒,则输出2小时1分18秒。4.计算x=ab+5ln(1+c)要求:
(1)输出结果以科学表示法、定点表示法(小数点后保留两位)和普通表示法表示。(2)输出结果以整数表示并指明当前工作的日期和时间。
5.计算答案: 1.
//RealDivide.cs using System;public class RealDivide
3223 { public static void Main(){ Console.WriteLine(“Enter two integers:”);string[] s = Console.ReadLine().Split();;int a = int.Parse(s[0]);int b = int.Parse(s[1]);float f = 1.0f * a / b;int c=(int)(f*100)%10;Console.WriteLine(“Result of real divide is : {0}”,f);Console.WriteLine(“Second place of decimals is : {0}”,c);} }
2.//SphereA.cs using System;public class Sphere { public static void Main(){ Console.Write(“Enter the radius of sphere: ”);string s = Console.ReadLine();double radius = double.Parse(s);double surfaceArea = 4 * Math.PI * radius * radius;double Volume = 4 * Math.PI * radius * radius * radius / 3;Console.WriteLine(“SurfaceArea={0}”,surfaceArea);Console.WriteLine(“Volume={0}”,Volume);} }
3.//HourMinuteSecond.cs using System;public class HourMinuteSecond { public static void Main(){ int hour, minute, second;Console.Write(“Enter numbers of second:”);string s = Console.ReadLine();second = int.Parse(s);hour = second / 3600;second %= 3600;minute = second / 60;second = second % 60;Console.WriteLine(“{0} hour {1} minute {2} second”,hour,minute,second);} }
4. //ValueX.cs using System;using System.Globalization;public class ValueX { public static void Main(){ double a, b, c, x;Console.Write(“Enter three numbers: ”);string[] s = Console.ReadLine().Split();a = double.Parse(s[0]);b = double.Parse(s[1]);c = double.Parse(s[2]);x = a * Math.Pow(b, 3)+ 5 * Math.Log(1 + c * c);Console.WriteLine(“x={0:E}ttx={1:F2}ttx={2:G}”, x, x, x);Console.WriteLine(“x={0:D}”,(int)x);DateTime NowTime = DateTime.Now;Console.WriteLine(“{0:D}”, NowTime);} }
5.//MathTestA.cs using System;public class MathTestA { public static void Main(){ double alpha, beta, y;Console.Write(“Enter value of alpha: ”);string s = Console.ReadLine();alpha = double.Parse(s);Console.Write(“Enter value of beta: ”);s = Console.ReadLine();beta = double.Parse(s);y = Math.Pow(Math.Abs(Math.Log(Math.Sqrt(1 + alpha * alpha))a)*(sc)));Console.WriteLine(“Area of triangle is :{0:F2}n”, Area);} else { Console.WriteLine(“can't construct triangle!n”);} Console.ReadLine();}
} 运行结果:
2.//Prime.cs
class Prime { public static void Main(){ int a, n, m = 0, i, j;bool flag;for(i = 2;i <= 50;i++){ flag = true;j = 2;a =(int)Math.Sqrt((double)i);while(flag && j <= a){ if(i % j == 0)flag = false;j++;} if(flag){ Console.Write(“{0:D2} ”, i);m++;if(m % 4 == 0)Console.WriteLine();} } Console.WriteLine();Console.ReadKey();} } 运行结果:
3.//CountDigit.cs class CountDigit { public static void Main(){ int num = 0;char ch;Console.Write(“Enter chars:”);while(true){ if((ch =(char)Console.Read())== 'b')if((ch =(char)Console.Read())== 'y')if((ch =(char)Console.Read())== 'e')break;if(ch >= '0' && ch <= '9')num++;} Console.WriteLine(“Numbers of digit is:{0}n”, num);Console.Read();Console.ReadKey();} } 运行结果:
4.//ForSinCosTan.cs class ForSinCosTan { public static void Main(){ float sinx, cosx, tanx;double x;Console.WriteLine(“xtsinxtcosxttanx”);for(int i = 2;i <= 10;i += 2){ x = i * Math.PI / 180;sinx =(float)Math.Sin(x);cosx =(float)Math.Cos(x);tanx =(float)Math.Tan(x);Console.WriteLine(“{0}tt{1:F6}tt{2:F6}tt{3:F6}”, i, sinx, cosx, tanx);} Console.Read();Console.ReadKey();} } 运行结果:
5.//Factorial.cs
class Factorial { static int n, Fact;public static void Main(){ n = 0;Fact = 1;Console.WriteLine(“Use while loop:”);while(++n <= 5){ Fact *= n;Console.WriteLine(“ {0}!= {1}”, n, Fact);} Console.WriteLine(“Use do-while loop:”);n = 1;Fact = 1;do { Fact *= n;Console.WriteLine(“ {0}!= {1}”, n, Fact);} while(++n <= 5);Console.WriteLine(“Use for loop: ”);Fact = 1;for(n = 1;n <= 5;n++){ Fact *= n;Console.WriteLine(“ {0}!= {1}”, n, Fact);} Console.ReadKey();} } 运行界面:
习题6
一、填空题
1.C#类的成员包括 域、方法、属性、常量、索引、事件与运算符
2.用于指定类的成员是否可访问的修饰符有public、protected、private及internal。3.类最常用的方法是Main 4.构造方法实例化对象的形式是 类名 对象=new 类名(构造方法参数)5.从另一个类,继承一个类的语法是 class 派生类:基类 6.sealed类用于 确保一个类永不作为基类
二、编程题
1输入一个数值作为正方形的边长,计算正方形的面积,并输出到屏幕上。要求:
(1)定义一个类,在类中定义无参的构造方法和主方法。(2)定义一个类,在类中定义带参的构造方法和主方法。
2、重复输入数据,计算分段函数
|x|r0y=
22|x|rrx要求:
(1)定义两个类,在一个类中定义无参的构造方法,在另一个类中定义主方法。(1)定义两个类,在一个类中定义带参的构造方法,在另一个类中定义主方法。
3.从键盘读入边数(side),然后按输入的边数画出一组由排列紧凑的星号组成的正方形。例如,side为4则画出: * * * * * * * * * * * * 要求:
(1)定义一个类,在类中定义无参的构造方法。
(2)定义有两个类,在一个类中定义带参的构造方法,在另一个类中定义主方法。4.打印一个ASCⅡ码表。
要求定义两个类,在一个类中定义无参的构造方法,在另一个类中定义主方法。5.重复输入数据计算正方形、长方形与任意三角形面积(要求使用单一继承)。
答案 1.(1)答案
namespace ConsoleApplication1 { class Square { Square(){ Console.Write(“Enter length of side for square:”);double len = double.Parse(Console.ReadLine());Console.WriteLine(“Area={0}”, len * len);} public static void Main(){ for(;;){ Square obj = new Square();Console.Write(“Do you want to continue?(y/n)”);string s = Console.ReadLine();if(s.Equals(“n”))break;}
} } }
运行结果:
(2)答案 namespace ConsoleApplication1 { class Square { public static readonly int N = 3;public Square(double len){ Console.WriteLine(“Area={0}”, len * len);} public static void Main(){ for(int i=1;i<=N;i++){ Console.Write(“Enter length of side for square: ”);string s=Console.ReadLine();double length=double.Parse(s);Square obj=new Square(length);} Console.ReadKey();} } } 运行结果:
2.题(1)答案
namespace ConsoleApplication3 { class Function { public Function(){ Console.Write(“Enter value of x and r;”);string[] s = Console.ReadLine().Split();double x = double.Parse(s[0]);double r = double.Parse(s[1]);double y = Math.Abs(x)>= r ? 0 : Math.Sqrt(r * ry;} } static void Main(string[] args){ int x = 30, y = 50, a, b;fun(x, y out a ,out b)Console.WriteLine(“a=”+a +“b=”+b);} } A)50,30 B)30,50 C)80,—20 D)80,20
二、填空题
下面程序的执行结果是()//FunApp2.cs Using System;class FunApp2 { int x = 888, y = 777, z = 666;public FunApp2(){ x++;y++;z++;} public FunApp2(int a, int b, int c){ x = a;y = b;z = c;} } public class FunApp { static void Main();FunApp2 obj1=new FunApp2();Console.Write Line(obj1.x);Console.Write Line(obj1.y);Console.Write Line(obj1.z);FunApp2 obj2=new FunApp2();Console.Write Line(obj2.x);Console.Write Line(obj2.y);Console.Write Line(obj2.z);} }
二、编程题
1,重复输入任意数据,计算y=
0
r2x2
|x|r
|x|r要求:
(1)使用值参数方法:(2)使用ref参数方法;(3)使用out参数方法;(4)使用ref与out参数方法;(5)使用重载方法;(6)使用重载构造方法;(7)使用可变参数方法;(8)使用静态方法。
(1)答案: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1 { //YestA
class YTest { public void yMethod(double x, double r){ Console.WriteLine(“y={0}”, Math.Abs(x)> r ? 0 : Math.Sqrt(r * rx * x);} } class YTest {
第四篇:浅谈C#程序设计课程的创新教学方法
浅谈C#程序设计课程的创新教学方法
【摘要】本文主要讨论高职软件技术专业C#程序设计课程的教学方法,拟将创新学习的理论和实践应用于课程教学中,分析了接受性学习和创新学习各自的特点和适用知识的范围。并对课堂教学模式、课后作业布置模式等教学环节提出了一些创新性的看法。
【关键词】教学方法主动学习创新学习课件开发教师学习
【中图分类号】G71 【文献标识码】A 【文章编号】2095-3089(2014)06-0249-01
1.序言
现在很多高职院校的软件技术专业一般都开设了微软公司开发的C#程序设计这门课程。学生对C#程序设计课程的学习都存在一定的问题。这门课程和那些传统的知识型课程对比,有很多不一样的创新思维过程在里面。因此这门课程的教学肯定不能像其它知识型课程那样教学,我们必须另想办法来解决。笔者先后多次担任《C#程序设计》课程的教学,在教学过程中积累了一些实际的教学心得体会。
2.创新教学的理论
对于C#程序设计课程而言,其语法格式、变量、方法、属性、封装、继承、多态等基本的程序设计技巧和方法都属于可以采用接受性学习方式的概念性知识。而程序设计实例则是一项典型的创新活动,其主要的知识内涵是如何在现有的知识和方法论的基础上设计出不存在的知识作品(程序)。这就需要创新教学方法来使学生跟随你的教学方式。
所谓创新教学并不是与把学生接受性学习绝对对立的,它必须以接受性学习为基础和前提。创新教学的主要特征就是让学生以掌握知识的全部内涵为目的,运用逻辑思维,通过再创新教学内容的方式进行,将知识的学习过程变为知识的创新过程。
3.创新教学的实际应用
笔者在实际教学过程中,对于那些理论性的知识,如语法结构、程序结构、触发事件服务等,笔者采用大量真实有趣的生活实例进行案例教学方法。最后用一个综合性的简单程序实例来联系整门课程的大部分理论和实践知识,并且将这个实例程序的编写过程录制成屏幕录像形式的动画文件,在动画中用注解的方式将教师的讲解融入其中,程序设计中的注意事项,要掌握的组件属性、方法和事件以及其中蕴含的编程技巧、程序的扩展思路和思考问题都在动画中得以体现。教师上课时可以播放动画并作针对性讲解,这样就完全避免了这类课程在教学时教师边操作、边讲解的手足无措的现象。更重要的是,有些学生在上课时经常开小差或请假,下课又搞不懂,他就可以通过下载动画课件文件在课后反复观看,就把老师在课堂上的讲解重现出来方便学习。这样就可以将课堂教学直接延伸到了课堂之外,使得教师的知识教学和学生的自主学习可以达到高效而持续的教学目的。笔者的演示课件一般是课堂主要实例的编制全过程录像加上文字解说,采用的屏幕录像软件是由天狼星软件工作室开发的《屏幕录像专家》。《屏幕录像专家》和一般屏幕录像软件的最大区别是给制作者更大的灵活性,可以全过程录制也可以手动选择重点知识需要的画面进行录制,录制完后还可以很方便地任意剪辑、添加帧以及加入有趣的注解形式,并且在后期还可以适当加入部分配音。更难得的是《屏幕录像专家》可以生成Flash格式的动画文件,使得课件文件存储空间大大减小,一般一个45分钟的屏幕录像课件不到5MB。而其他AVI格式的屏幕录像软件制作出来的动画文件则动辄几十MB甚至一百多BM。
对于软件技术专业的当代大学生来说,自学是获取知识的另一次要途径,它的重要性有时甚至超过课堂学习。笔者指导学生自学主要采用的是专业学习网站和图书馆资料。很多专业教学网站上都包括教材全部的知识点和实例的讲解、源代码甚至习题,学生可以通过这个网站完成初步自学的过程,这就大大减轻了教师课堂教学的压力。另外通过兴趣教学和扩展性很强的课后作业可以督促学生充分地利用互联网和图书馆等多种途径去学习课程中所没有的知识点、方法和技巧,使学生的创新学习能力得到很大的培养。
在最后两周的实训教学中,笔者采用的是一种模块化的教学方式,将最后的那个程序项目分为若干个有序而独立的子模块让学生自己思考,解决了一个子模块的同学可以上讲台演示和讲解,然后在此基础上进入下一个子模块,直至问题全部解决,完整的可执行的软件应用程序项目也就呈现出来。最后,教师对整个过程进行点评。在此过程中,每一个解决模块的学生必须根据上一个学生的思路来进行,也可以修正上一个同学的不合理的编码,台下的同学可以自由参与讨论或借鉴别人的经验,最终目的是让每个学生完成一个完整的程序作品并上交教师,让学生觉得心理有很大的满足感和成就感。
再探索过程是通过课后作业环节来实现的。作业的选题主要包含课程的知识点且有时要高于知识点,其中作业要求也是分层次的,学生能够做什么就做什么层次的作业。这些层次都是循序渐进、环环相扣的,既体现了程序设计的趣味性又将面向对象的编程思想融入到作业中,更重要的是学生从这些作业的创新编程过程中体会到编程的乐趣和成就感,加深了他们对于程序设计的热爱,提高了他们的创新思维能力。在笔者的教学实施过程中,课后作业这一环节是非常重要的,它是培养学生学习能力和解决问题能力最主要的教学环节。
4.教师的创新学习
教师的智能结构包括知识结构和能力结构两方面。创造型教师的知识结构是一种三维立体结构模式,它由知识的广度、深度和获取知识的方法三个维度变量组成。知识的广度意味着创造型教师要具备广博的科学基础知识,特别是新兴的或边缘学科知识,能从多角度对自己的专业知识进行审视分析、类比演绎,并且能在多学科交叉的“无人区”发现新问题,开拓新领域。知识的深度意味着创造型教师要具备精深的专业知识,对本专业的新动向和新成果有清晰的了解,并对本专业的课题有一定深度的见解,引导学生进行科学研究与发明创造。获取知识的方法意味着教师不仅教给学生固定的知识,而且主要的是要教会学生获得知识的方法。创新型教师就应当具备科学的方法论知识,让学生更快更有效地学习好科学文化知识。
笔者在任课程教学的之余,经常加强学习,从软件工程、UML、软件测试等到各种程序设计语言的各个领域,除此之外,还多次利用暑假的时间深入软件公司进行真实项目开发,有效拓宽了自己的知识面和研究创新能力,形成扎实的技术功底,在课堂面对学生时才能自信而游刃有余,也才有能力带领学生进入深入的创新学习的思维中。同时在自己的学习过程中尝试运用创新方法,使创新方法在课堂的实践可以循着一条可行的思路,做到有据可依。
5.结论
知识是教师教学和学生学习的共同载体,将知识划分为理论性知识和程序性知识而采取不同的学习和教学方法,是创新教学法在高职教育中的重要应用原则。接受性学习和创新教学各自适用于不同的知识内涵,而创新教学和教师的创造能力是教学中培养学生创新能力的重要因素。
第五篇:《C#程序设计基础教程与实训》习题答案
附录Ⅰ 各章习题答案
第1章 C#语言概述
一、判断题
1、√
2、×
3、√
4、×
5、√
6、√
7、×
8、×
二、选择题
1、C
2、B
3、C
4、A
5、A
6、B
7、B
8、B
三、填空题
1、最新的;面向对象
2、C和C++;JAVA
3、先进设计思想;安全性能
4、灵活性
5、集成开发环境(IDE)——Visual Studio.NET
6、Microsoft.NET Framework(微软.NET框架体系)
7、最基本的通用语言运行时库CLR(Common Language Runtime);一些提供了具体功能的类库
8、需要开发和设计的项目文件;应用程序或组件
四、简答题
1、① 简洁易用的语法。② 自动的资源回收机制。③ 与Web的紧密结合。④ 完整的安全性与错误处理。⑤ 版本处理技术。⑥ 灵活性和兼容性。
2、C#程序必须包含一个Main方法,Main方法是程序的入口点,程序控制在该方法中开始和结束。该方法用来执行任务,并在任务完成后返回信息。
第2章 常用标准控件
一、判断题
1、×
2、×
3、√
4、×
5、√
6、×
7、√
8、√
二、选择题
1、A
2、C
3、B
4、D
5、A
6、B
7、B
8、D
三、填空题
1、输入/输出信息
2、属性
3、事件
4、TextAlign
5、Click
6、文本框(TextBox)
7、保证数据标准化
8、Show
四、简答题
1、简述生成控件的操作过程。
(1)单击工具箱中相应的工具按钮,这一按钮呈现被按下状态,表明被选定。
(2)移动鼠标到窗体上,这时鼠标的指针变成十字形,在需要放置控件的左上角位置按下鼠标左键。
(3)在窗体范围内向下向右拖动鼠标,这时窗体上会显示一个矩形框,当其大小合适时,松开鼠标左键,窗体上就会显示一个相应大小的这种控件。
另外一种快捷的方法是在工具箱中相应的工具按钮上双击此按钮,窗体上就会出现一个系统默认大小的所选按钮。
2、消息框有多少种Button参数设置? OK:只显示“确定”按钮
OKCancel:显示“确定”和“取消”按钮
AbortRetryIgnore:显示“终止”、“重试”和“忽略”按钮 YesNoCancel:显示“是”、“否”和“取消” YesNo:显示“是”和“否”
RetryCancel:显示“重试”和“取消”
第3章 数据类型
一、填空题
1、-2,147,483,648 到 2,147,483,647
2、单精度;双精度 3、16 4、1 5、99 6、2.2
7、false
8、隐式转换;显式转换
二、判断题
1、√
2、×
3、×
4、√
5、×
6、×
7、×
8、×
三、选择题
1、A
2、C
3、D
4、A
5、B
6、B
7、D
8、C
四、简答题
1.请说明C#标识符命名规则。
(1)不能跟系统关键字重名。(2)标识符由字母、下划线“_”、数字或中文组成。(3)标识符应以字母、中文或下划线开头。(4)标识符中间不能包含空格。(5)C#标识符大小写敏感。
2.请简单说明银行家舍入法。
银行家的舍法与四舍五入只有一点不同,对.5的舍入上,采用取偶数的方式。例:1.25最近的两个只有1位小数的数字为1.2和1.3,舍入的结果将选择最后一位为偶数的数字1.2。同理,也可以推断出1.35舍入后为1.4。
如果在求和计算中使用四舍五入,一直算下去,误差有可能会越来越大。机会均等才公平,也就是向上和向下各占一半才合理。在大量计算中,从统计角度来看,高一位分别是偶数和奇数的概率正好是50% : 50%。
第4章 运算符和表达式
一、填空题
1、?:
2、0 3、1.1 4、2 5、2 6、2 7、18
8、true
9、false 10、2970
二、判断题
1、×
2、√
3、×
4、√
5、√
6、×
7、×
8、×
三、选择题
1、B
2、D
3、B
4、A
5、C
6、C
7、D
8、B
四、简答题
1.试阐述逻辑运算符 & 和条件运算符 &&之间的区别。
&& 运算符与 & 运算符的区别在于,&& 运算符不能对整型进行计算。另外,对于表达式 x && y 如果 x 为 false,则不计算 y(因为不论 y 为何值,“与”操作的结果都为 false)。这被称作为“短路”计算。也就是说使用 && 运算符进行条件计算,比使用 & 运算符速度更快些。
2.请从高到低排列【&& 和 ||】、【算术运算符】、【赋值运算符】、【!(非)】、【关系运算符】的优先级顺序。答:由高到低的顺序为:【!(非)】【算术运算符】【关系运算符】【&& 和 ||】【赋值运算符】 第5章 条件判断语句
一、判断题
1、×
2、√
3、×
4、√
5、√
6、×
7、×
8、√
二、选择题
1、A
2、C
3、A
4、C
5、B
6、D
7、A
8、C
三、填空题
1、条件判断语句、循环语句
2、关系表达式、逻辑表达式
3、bool
4、执行大括号里的语句块;跳过语句块,执行大括号后面的语句
5、都将会执行
6、只要找到为真的表达式就执行相应的语句块并跳出整个判断语句
7、if;switch
8、break
四、简答题
1、简单描述if语句的几种形式。(1)if语句的一般表示形式为: if(表达式){ 语句块 }(2)当一个判断语句只存在两种可能的结果时,可以使用if…else语句来表达。它的表现形式为:
if(表达式){ 语句块1 }else { 语句块2 }(3)当一个判断语句存在多种可能的结果时,可以使用if...else if...语句来表达。它的表现形式为:
if(表达式1){ 语句块1 } else if(表达式2){ 语句块2 }...else if(表达式n){ 语句块n }
2、在switch语句时需要注意什么?
(1)switch关键字后面的表达式,其值的类型必须是字符串或整数(char、int、long)都属于整数类型。
(2)case标签后面的值必须是常量表达式,不允许使用变量。(3)case和default标签以冒号而非分号结束。
(4)case标签后面的语句块,无论是单条语句还是多条语句,都无需用括号包围。
(5)default标签可以有,也可以没有。case子句的排放顺序是无关紧要的,甚至可以把default子句放在最前面。
第6章 循环控制语句
一、填空题
1、顺序结构;选择结构;循环结构
2、false
3、执行循环体;判断条件是否为真
4、循环的嵌套
5、-5 6、18 7、16 8、1
二、判断题
1、√
2、×
3、√
4、√
5、√
6、√
7、√
8、×
三、选择题
1、C
2、B
3、C
4、D
5、B
6、C
7、D
8、B
四、简答题
1、请说明do...while语句的表现形式。do { 语句块 } while(表达式);
当流程到达do后,立即执行语句块,然后再对表达式进行测试。若表达式的值为真,则返回do重复循环,否则退出执行后面的语句。这里特别需要注意的是跟while语句不同,do...while语句的表达式后面要加上分号。
2、for语句的一般表现形式为: for(表达式1;表达式2;表达式3){ 语句块 } for语句的执行顺序如图所示,其中,当表达式2的值为假时,则直接跳出循环。表达式1:一般情况下用于给循环变量赋初值。
表达式2:返回值必须是一个bool值,作为循环是否继续执行的条件。表达式3:一般情况下用于给循环变量增值。
第7章 数组
一、选择题
1、D
2、B
3、A
4、C
5、B
6、A
7、D
8、C
二、填空题
1、类型
2、零
3、new
4、大括号“{}”
5、动态数组
6、引用
7、地址
8、行,列
三、判断题
1、√
2、×
3、√
4、√
5、√
6、×
7、√
8、×
四、简答题
1.请简述什么是数组?
答:数组是具有相同类型的一组数据。数组按照数组名、数据元素的类型和维数来进行描述。当访问数组中的数据时,可以通过下标来指明。
2.请简述Array和ArrayList主要的区别?
(1)Array 的容量是固定的,而 ArrayList的容量可根据需要自动扩充。
(2)ArrayList提供添加、插入或移除某一范围元素的方法。在 Array 中,您只能一次获取或设置一个元素的值。
(3)Array 可以具有多个维度,而 ArrayList始终只是一维的。
第8章 GDI+图形
一、填空题
1、GDI+
2、Graphics
3、Pen,Brush
4、Rectangle,RectangleF
5、Point
6、DrawPolygon,FillPolygon
7、椭圆
8、Paint
二、判断题
1、√
2、×
3、×
4、×
5、√
6、√
7、×
8、×
三、选择题
1、B
2、B
3、A
4、D
5、C
6、A
7、A
8、D
四、简答题
1.试阐述Graphics图形对象的几种创建方法。
(1)用某控件或窗体的CreateGraphics方法来创建Graphic对象,该对象表示该控件或窗体的绘图表面。如果想在已存在的窗体或控件上绘图,则可以使用此方法。
(2)接收对图形对象的引用,该对象为窗体或控件的Paint事件中PaintEventArgs的一部份。在为控件创建绘制代码时,通常使用此方法来获取对图形对象的引用。
2.请简述使用虚拟画布绘图的步骤。(1)在内存中建立一块“虚拟画布”如:(2)获取这块内存画布的Graphics引用:(3)在这块内存画布上绘图:(4)将内存画布画到窗口中:
第9章 方法
一、选择题
1、B
2、D
3、A
4、C
5、C
6、A
7、B
8、D
二、填空题
1、return
2、void
3、值参数
4、数组型
5、重载
6、形参,实参
7、成员变量
8、递归
三、判断题
1、√
2、√
3、√
4、√
5、×
6、√
7、×
8、×
四、简答题
1.请简述用方法构造代码的好处?
(1)方法允许将程序分为不连续的逻辑单元。调试单独的单元与调试不包含方法的整个程序相比要容易的多。
(2)可以在其他程序中使用为某个程序开发的方法,而通常只需要进行少量修改,甚至不需修改。
2.请简述什么是递归?
答:在方法中直接或间接地调用自己叫方法的递归调用。树型关系问题的求解往往需要使用到递归算法。
3.请简述什么是方法的重载?
答:当定义两种或多种具有相同名称的方法时,就称作重载。在调用时,编译器会根据不同的方法签名调用相应的方法。
第10章 窗体与控件
一、选择题
1、B
2、C
3、C
4、D
5、B
6、A
7、D
8、C
二、填空题
1、窗体
2、Maximized
3、Load
4、true
5、CheckedChanged
6、ListBox
7、Image
8、Interval
三、判断题
1、√
2、×
3、√
4、√
5、×
6、×
7、√
8、×
四、简答题
1.请简述组合框的使用特点?
答:当需要用户在多个选项中选择一项时,除可以使用单选按钮外,还可以使用组合框(ComboBox)。组合框是TextBox与ListBox的组合,具有列表框和文本框的大部份属性。组合框在列表框中列出可供用户选择的项,另外还有一个文本框。当列表框中没有所需选项时,允许在文本框中用键盘输入用户自定义的内容。
2.请列出图片框(PictureBox)支持哪几种类型的图像?并进行简单的说明。a)位图(bitmap):是将图像定义为像素的图案,这种图像格式体积很大,未经压缩。位图文件的扩展名是.bmp或.dib。b)图标(icon):是特殊类型的位图。图标的最大尺寸为32×32像素。图标文件的扩展名是.ico。
c)Windows文件(metafile):将图形定义为编码的线段和图形。普通图元文件扩展名为.wmf,增强图元文件扩展名为.emf。
d)GIF:由CompuServe开发的一种压缩位图格式,是Internet上流行的一种文件格式。e)JPEG:是一种支持8位和24位颜色的压缩位图格式。也是Internet上流行的一种文件格式。
第11章 界面设计
一、选择题
1、C
2、B
3、C
4、D
5、C
6、D
7、A
8、B
二、填空题
1、单文档(SDI)应用程序,多文档(MDI)应用程序
2、ShowIcon,ShowInTaskbar,FormBorderStyle3、DialogResult4、非模式
5、菜单栏,菜单标题,菜单项
6、MenuItem,ComboBox,Separator,TextBox
7、MDI 子窗口
8、Cascade,TileHorizontal
三、判断题
1、×
2、√
3、√
4、×
5、√
6、×
7、×
8、√
四、简答题
1.请简述非模式窗体和模式窗体的区别。
(1)打开一个非模式窗体后,用户可以跟应用程序的其他部分交流,而模式窗体不行。这意味着,程序在执行到创建模式窗体的代码时,会停下来等待模式窗体关闭后再继续往下执行。而程序在打开非模式窗体的同时会继续往下执行后面的代码。(2)非模式窗体没有返回值,模式窗体有返回值。
(3)关闭非模式窗体会直接在内存中释放窗体,而模式窗体则不会。
(4)非模式窗体使用Show方法创建,模式窗体使用ShowDialog方法创建。
2.简述创建一个MDI应用程序的方法。
(1)把作为MDI父窗体的窗体的IsMDIContainer 属性设置为True。(2)新建一个窗体(假设窗体名为Form2)作为MDI子窗体。(3)在MDI父窗体中调用如下代码即可显示一个MDI子窗体。
Form2 f2 = new Form2();f2.MdiParent = this;f2.Show();第12章 异常处理
一、选择题
1、B
2、B
3、D
4、A
5、C
6、A
7、D
8、C
二、填空题
1、try,catch,finally
2、try-catch3、一个,一个或多
4、Exception
5、改变编译器的设置,使用校验(checked)语句
6、The operation overflows at complie time in checked mode
7、异常处理程序,清理代码
8、显式地标明了它所作用的语句块或表达式不需要进行溢出检查
三、判断题
1、×
2、×
3、√
4、×
5、√
6、√
7、√
8、√
四、简答题
1.导致代码失败的具体原因有哪些?
答:算术溢出、堆栈溢出、内存不足、参数越界、数组索引越界、试图访问已经释放的资源(例如访问一个已经关闭的文件)等。
2.在catch语句里可以使用哪几种方法处理异常来获得不同的执行路径? a)不写任何跳转代码:这种方法使得系统忽略异常,程序会继续往下执行。b)使用return语句:它使得程序直接跳出方法体,回到调用方法的地方。c)使用throw 语句:它使得异常再次被抛出,表示当前异常处理代码无法处理此类异常,将异常转给更上一级的异常处理程序进行处理
d)使用System.Environment.Exit(1)语句:它将直接关闭应用程序,一般情况下不使用这样的方法