c#的新作完整版

2009年3月22日星期日

c#的新作完整版

以下给出一到五题完整版

不过第二题本人光知道哪有错不知如何改

若有知情人士,请多多指教

1.写出如下程序的运行结果:
using System;
class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public virtual void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
class B:A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
}
class MyApp
{
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2();
b.Fun1();
}
}
主要错误是: a.Fun2()和 b.Fun1()无参数
改正后:

using System;
class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public virtual void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
}
class MyApp
{
public static void Main()
{
int j = 1;//Here j can be given any figures
B b = new B();
A a = new A();
a.Fun2(a);
b.Fun1(j);
Console.Read();

}
}
结果是:
1
5
2//此处结果为:(j+1),即根据不同的j有不同的结果。

2.找出下列代码中的错误并进行修改
public abstract class A
{
private int m_y;
public virtual int X
{
get{return 0;}
}
public virtual int Y
{
get{return m_y;}
set{m_y=value;}
}
public abstract int Z{get;set;}//此行无法被继承
}
public class B:A
{
private int m_z;
public override int X
{
get{return base.X+1;}
}
public override int Y
{
set{base.m_y=value<0?0:value;}
}
public override int Z
{
get{return m_z;}
}
}
3.定义一个车辆(Vehicle)类,具有Speed(速度)、MaxSpeed(最大速度)、Weight(重量)等字段,以及Run、Stop等方法。然后以该类为基类,派生出Bicycle(自行车)、Car(轿车)等类,并编程对派生类的功能进行验证。
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
public class Vehicle
{
public double Speed, MaxSpeed, Weight;
public double Run(double speed,double maxspeed,double weight)
{
Speed = speed;
MaxSpeed = maxspeed;
Weight = weight;
return Speed;
}
public double Stop(double s)
{
Speed=s;
return Speed;

}

}
public class Bicycle : Vehicle
{
public Bicycle()
{
Console.WriteLine("Bicycle run");
}
}
public class Car : Bicycle
{
public Car()
{
Console.WriteLine("Car run");
}
}
public class Test
{
static void Main(string[] args)
{
Vehicle a = new Vehicle();
Console.WriteLine(a.Run(12,13,12));
Console.WriteLine(a.Stop(0));
Bicycle b = new Bicycle();
Console.WriteLine(b.Stop(2));
Car c = new Car();
Console.WriteLine(c.Run(12, 11, 11));
Console.Read();
}
}
}
4.编写一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex)等字段。然后通过对Person类的继承得到一个学生类(Student),该类能够存放学生的5门课程的成绩,并能求出平均成绩,要求对该类构造函数进行重载,至少给出三种形式,最后编程对Student类的功能进行验证。
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{

public class Person
{
public string Name;
public int Age;
public string Sex;
public Person()
{ }

public Person(string name, int age, string sex)
{
Name =name ;
Age=age;
Sex= sex;
}

}
public class Student:Person
{
public string N;
public int A;
public Student(string name)
{
N = name;
}
public Student(int age)
{
A= age;
}
double Class1, Class2, Class3, Class4, Class5,average;
public Student(string name,int age,string sex,double class1, double class2, double class3, double class4, double class5)
{
base.Sex = sex;
base.Name = name;
base.Age = age;
Class1=class1;
Class2 = class2;
Class3 = class3;
Class4 = class4;
Class5 = class5;

}


public double ave()
{
average = (Class1 + Class2 + Class3 + Class4 + Class5) / 5;
return average;
}



}
public class Test
{
static void Main(string[] args)
{




Student a = new Student("zhangsan",16,"male",90,80,70,60,90);
Console.WriteLine(a.Name);
Student b = new Student("lisi");
Student c = new Student(20);
Console.WriteLine("{0} is a student", b.N);
Console.WriteLine("age is {0}",c.A);
Console.WriteLine(a.ave());
Console.Read();



}
}
}
5.定义一个抽象的多边形类,派生出一个三角形类和一个矩形类,利用方法的重载来实现多态性。

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
public abstract class Base
{
public abstract double Bs();
public abstract double Bl();
}
public class Trangle : Base
{
public double s,l;
public double x, y, z;
public Trangle(double X, double Y, double Z)
{
x = X;
y = Y;
z = Z;
}

public override double Bs()
{

s = Math.Sqrt((y + z - x) * (x + z - y) * (x + y - z) * (x + y + z) / 16);
return s;

}
public override double Bl()
{
l = x + y + z;
return l;
}
}
public class Square:Base
{
public double s, l;
public double x, y;
public Square(double X, double Y)
{
x = X;
y = Y;
}
public override double Bs()
{
s = x * y;
return s;
}
public override double Bl()
{
l = 2 * x + 2 * y;
return l;
}
}
public class Test
{
static void Main(string[] args)
{
Console.WriteLine("请输入三角形的边长:");
string X = Console.ReadLine();
double x = Convert.ToDouble(X);
string Y = Console.ReadLine();
double y = Convert.ToDouble(Y);
string Z = Console.ReadLine();
double z = Convert.ToDouble(Z);
Trangle a = new Trangle(x,y,z);
Console.WriteLine("三角形面积是:{0}",a.Bs());
Console.WriteLine("三角形的周长是:{0}",a.Bl());
Console.WriteLine("请输入矩形的边长:");
string H = Console.ReadLine();
double h = Convert.ToDouble(H);
string R = Console.ReadLine();
double r = Convert.ToDouble(R);
Square b = new Square(h, r);

Console.WriteLine("矩形的面积是:{0}", b.Bs());
Console.WriteLine("矩形的面积是:{0}",b.Bl());
Console.Read();
}
}
}

0 评论:

发表评论