c#习题1-5附答案解读
{
public B()
{
Console.WriteLine("B");
}
}
public class C : A
{
B newb = new B();
}
class MainClass
{
public static voidMain()
{
C newc = new C();
Console.ReadLine();
//用泛型创建整数链表
Node<Int32> head = new Node<Int32>(5, null);
head = new Node<Int32>(10, head);
head = new Node<Int32>(15, head);
//遍历求和
Int32 sum = 0;
for (Node<Int32> current = head; current != null;
cmd.Connection = conn;
try
{
conn.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read() == true)
{
listBox1.Items.Add(string.Format("{0}级{1}", r[0], r[1]));
{
A newa = new A();
newa.MyMethod(2);
B newb = new B();
newb.MyMethod(2);
Console.ReadLine();
}
}
输出结果:
12
52
5、假设Node类的每一个节点包括有两个字段:m_data(引用节点的数据)和m_next(引用链接列表中的下一项)。这两个字段都是由构造函数方法设置的。该类有两个功能,第一个功能是通过名为Data和Next的只读属性访问m_data和m_next字段。第二个功能是对System.Object的ToString虚拟方法进行重写。试分别用类和泛型两种方法编写程序实现上述功能。
}
}
输出结果:
B
A
如果在C中也创建一个构造函数输出“C”,即添加:
public C()
{
Console.WriteLine("C");
}
则整个程序运行的结果为:
B
A
C
4、编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。
(1)创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。
try
{
conn.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read() == true)
{
listBox1.Items.Add( string.Format("{0} {1} {2} {3}", r[0], r[1], r[2], r[3]));
//Int32 sum = 0;
//for (Node current = head; current != null;
// current = current.Next)
//{
// sum += (Int32)current.Data;
//}
////输出结果
//Console.WriteLine("Sum of nodes = {0}", sum);
在C#中,默认情况下方法不是虚拟的。若要使方法成为虚拟方法,必须在基类的方法声明中使用virtual修饰符。然后,派生类可以使用override关键字重写基类中的虚拟方法,或使用new关键字隐藏基类中的虚拟方法。如果override关键字和new关键字均未指定,编译器将发出警告,并且派生类中的方法将隐藏基类中的方法。
{
listBox1.Items.Add("学号姓名性别成绩");
string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;
//根据连接字符串创建SqlConnection实例
SqlConnection conn = new SqlConnection(connectionString);
【解答】
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//创建SqlCommand实例,并设置SQL语句和使用的连接实例
SqlCommand cmd = new SqlCommand();
mandText =
"Select学号,姓名,性别,成绩From MyTable2 Where (成绩<60)";
cmd.Connection = conn;
public Node<T> Next
{
get { return m_next; }
set { m_next = value; }
}
//获取结点数据描述
public override String ToString()
{
return m_data.ToString();
}
}
//使用结点类型或泛型结点类型
{
listBox1.Items.Add("年级平均成绩");
string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;
//根据连接字符串创建SqlConnection实例
SqlConnection conn = new SqlConnection(connectionString);
//创建SqlCommand实例,并设置SQL语句和使用的连接实例
SqlCommand cmd = new SqlCommand();
mandText = "select substring(学号,1,2) as年级,avg(成绩) as平均成绩from MyTable2 group by substring(学号,1,2)";
{
num += 10;
Console.WriteLine(num);
}
}
public class B : A
{
public override void MyMethod(int num)
{
num += 50;
Console.WriteLine(num);
}
}
class MainClass
{
public static voidMain()
current = current.Next)
{
sum += current.Data;
}
//输出
Console.WriteLine("Sum of nodes = {0}", sum.ToString());
}
}
1、使用保持连接方式编写程序,计算各年级平均成绩,并显示结果。
【解答】
using System;
}
r.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message, "查询成绩失败");
【解答】
using System;
class Node
{
Object m_data;
Node m_next;
public Node(Object data, Node next)
{
m_data = data;
m_next = next;
}
//访问结点数据
public Object Data
{
get { return m_data; }
(2)再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。
(3)在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。
【解答】
using System;
public class A
{
public virtual void MyMethod(int num)
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace习题9_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//添加Button按钮在ListBox中显示结果
private void button1_Click(object sender, EventArgs e)