实验内容和答案.docx
《实验内容和答案.docx》由会员分享,可在线阅读,更多相关《实验内容和答案.docx(21页珍藏版)》请在冰点文库上搜索。
![实验内容和答案.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/2f7a8422-3845-452f-932e-08e2ae4df66f/2f7a8422-3845-452f-932e-08e2ae4df66f1.gif)
实验内容和答案
实验三
1.编程实现数组的属性和方法
a)getLength()
b)Rank
c)Length
d)Sort()
e)Copy()
classSample
{
publicstaticvoidMain()
{
stringstr1="abcdasdasda";
Console.WriteLine("1)str1='{0}'",str1);
Console.WriteLine(str1.Length);
Console.WriteLine("Copy...");
stringstr2=String.Copy(str1);
Console.WriteLine("2)str2='{0}'",str2;
int[,]a=newint[,]{{10,11},{12,11},{11,22}};
Console.WriteLine(a.Length);
Console.WriteLine(a.GetLength(0));
Console.WriteLine(a.Rank);
Console.Read();
}
}
2.枚举类型题目
classProgram
{enumdirection{east=1,north,south,west}
structname
{publicintnumber;publicintdistance;}
staticvoidMain(string[]args)
{nameq;q.number=0;q.distance=0;
Console.WriteLine("请输入方向");
q.number=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入距离");
q.distance=Convert.ToInt32(Console.ReadLine());
directionnumber=(direction)q.number;
Console.WriteLine("您输入的方向是{0},您输入的距离是{1}",number,q.distance);
Console.Read();
}
}
3.编程实现:
12+22+…+2002
(实现过程中请使用foreach)
classProgram
{
staticvoidMain(string[]args)
{
int[]p=newint[200];
intsum=0;
for(inti=1;i<=200;i++)
p[i-1]=i*i;
foreach(intiinp)
{
sum+=i;
}
Console.WriteLine(sum);
Console.Read();
}
}
4.使用多维数组实现以下表格,统计每个系各个职称的平均教师人数,以及每个职称在各个系的平均教师人数。
计算机
英语
中文
思政
教授
4
5
2
4
讲师
9
10
8
9
助教
11
9
7
10
classProgram
{
staticvoidMain(string[]args)
{
int[,]sum={{4,5,2,4},{9,10,8,9},{11,9,7,10}};
string[]coureses={"计算机","英语","中文","思政"};
string[]teacher={"教授","讲师","助教"};
ints=0;
Console.WriteLine("各职称\t\t平均人数");
for(inti=0;i{
s=0;
for(intj=0;j(1);j++)
s+=sum[i,j];
sole.WriteLine("{0}\t\t{1}",coureses[i],s/sum.GetLength
(1));
}
Console.WriteLine("\n\n个系数\t\t平均人数");
for(inti=0;i(1);i++)
{
s=0;
for(intj=0;js+=sum[j,i];
Console.WriteLine("{0}\t{1}",teacher[i],s/sum.GetLength(0));
}
Console.Read();
}
}
实验四
1.优化上次的枚举题目,要求用户输入的方向一定是在1-4之间,否则提示用户继续输入,直到用户输入正确为止。
classProgram
{
structGPS
{
publicobjectx;
publicdoubley;
}
enumdisrection{north=1,south,east,west}
staticvoidMain(string[]args)
{
Console.WriteLine("1)north,\n2)south,\n3)east,\n4)west,");
GPSt;
Console.WriteLine("你将有五次输入机会(数字为1—4的正整数):
");
for(inti=1;i>0;i++)
{
inta=Convert.ToInt16(Console.ReadLine());
if(a>0&&a<5)
{
Console.WriteLine("请输入距离:
");
doubleb=Convert.ToDouble(Console.ReadLine());
t.x=(disrection)a;
t.y=b;
Console.WriteLine("您所在的方位是:
{0},距离为:
{1}KM!
!
!
",t.x,t.y);
i=-1;
}
elseConsole.WriteLine("请重新输入一个数:
");
}
Console.ReadKey();
}
}
2.试试看:
随机产生5个数,求其中最大值。
(提示:
Randomnumber=newRandom();
number.Next()产生下一个数)
classProgram
{staticvoidMain(string[]args)
{int[]s=newint[5];//s数组中存放着需要的数字
Randomnumber=newRandom();
for(inti=0;i<5;i++)//遍历数组显示结果
{s[i]=number.Next();
Console.WriteLine(s[i]);}
intmax=s[0];
for(inti=1;i<=4;i++)
{if(s[i]>=max)
{max=s[i];}
}
Console.WriteLine(max);
Console.ReadKey();}}}
3.求一个3阶数字矩阵对角线的和,数字矩阵如下:
123
456
789
要求先显示这个矩阵,然后再显示结果,此例结果应该为25.
classProgram
{staticvoidMain(string[]args)
{
inti,j,sum=0;
int[,]a={{1,2,3},{4,5,6},{7,8,9}};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{Console.Write("{0}",a[i,j]);
Console.Write("");
}
Console.Write("\n");
}
for(intz=0;z<3;z++)
sum=sum+a[z,z];
sum=sum+a[0,2];
sum=sum+a[2,0];
Console.WriteLine("{0}",sum);
Console.ReadKey();
}
}
实验六
1.定义两个整型变量i=1,j=2,通过调用swap(intx,inty)来交换这两个变量的值,使得在主函数中输出交换后的值:
i=2,j=1.
classswap
{
publicinti;
publicintj;
publicswap(intx,inty)
{
j=x;
i=y;
}
publicstringDisplay()
{
returnString.Format("i={0},j={1}",i,j);
}
}
classProgram
{
staticvoidMain(string[]args)
{
swapswaps=newswap(1,2);
Console.WriteLine(swaps.Display());
Console.ReadKey();
}
}
}
2.定义一个数组sores={95,98,89,69,100,78,60,68,49},通过调用MaxMinScore(int[]s)这个方法返回数组中的最大值和最小值,并在主函数中输出。
classsores
{
publicvoidMaxMinScore(int[]s,outintmax,outintmin)
{
max=s[0];
min=s[0];
for(inti=1;i{if(max
max=s[i];
elseif(min>s[i])
min=s[i];
}
}
}
classProgram
{
staticvoidMain(string[]args)
{
int[]sores={95,98,89,69,100,78,60,68,49};
soresa=newsores();
intm,n;
a.MaxMinScore(sores,outm,outn);
Console.WriteLine("最高分为{0}",m);
Console.WriteLine("最低分为{0}",n);
Console.ReadKey();
}
}
}
3.已知整型数组a={1,2,3};要求调用函数F(),输出a的长度以及a中的各个元素,当整型数组变为b={10,20,30,40},再次调用函数F(),输出b的长度以及b中的各个元素.(params运用)
classProgram
{
publicstaticvoidF(paramsint[]args)
{
Console.WriteLine("个数:
{0}",args.Length);
foreach(intiinargs)Console.Write("{0}",i);
Console.WriteLine();
Console.ReadKey();
}
staticvoidMain()
{
int[]a={1,2,3};
F(a);
F(10,20,30,40);
}
}
4.使用索引器初始化MyClass类中的publicstring[]FriendName=newstring[4]这个字段以及输出这个数组里的每一个元素。
classProgram
{
staticvoidMain(string[]args)
{
Testt=newTest();
t[0]="小红";
t[1]="小黑";
t[2]="小绿";
t[3]="小桃";
for(inti=0;i<4;i++)
{
Console.WriteLine(t[i]);
}
}
}
classTest
{
publicstring[]myData=newstring[4];
publicstringthis[intindex]
{
get{returnmyData[index];}
set{myData[index]=value;}
}
}
classMyClass
{
publicstring[]FriendName=newstring[4];
publicstringthis[intn]
{
get{returnFriendName[n];}
set{FriendName[n]=value;}
}
}
试一试:
试编程实现使用非整数下标访问索引器,在主函数中赋值如下:
tt["som"]=1234;
并在控制台输出这个值。
实验七
1.编写代码,定义一个基类MyClass,其中包含虚拟方法GetString().这个方法应返回存储在受保护字段myString中的字符串,该字段可以通过只写公共属性ContainedString来初始化。
(初始化请通过控制台由用户来输入)
2.从类MyClass中派生一个类MyDerivedClass.重写GetString()方法,使用该方法的基类执行代码从基类中返回一个字符串,但在返回的字符串中添加文本”outputfromderivedclass”.
classProgram
{
staticvoidMain(string[]args)
{
MyDerivedClasscc=newMyDerivedClass();
MyClassss=cc;
ss.ContainedString=Console.ReadLine();
Console.WriteLine(ss.GetString());
Console.Read();
}
classMyClass
{
protectedstringmyString;
publicvirtualstringGetString(){returnmyString;}
publicstringContainedString{set{myString=value;}}
}
classMyDerivedClass:
MyClass
{
publicoverridestringGetString()
{returnbase.GetString()+"(outputfromderivedclass)";}
}}
3.利用多态性计算圆和三角形的面积以及周长。
(半径、底以及高的值都通过实例化派生类的同时来指定)
classProgram
{
staticvoidMain(string[]args)
{Circlecc=newCircle
(1);
Shapess=cc;
Console.WriteLine("圆面积:
{0}",ss.GetArea());
Console.WriteLine("圆周长:
{0}",ss.GetPerimeter());
Cmjff=newCmj(1,3);
Smjmj=ff;
Console.WriteLine("三角形面积:
{0}",mj.Getmj());
Czczz=newCzc(1,2,3);
Szczc=zz;
Console.WriteLine("三角形周长:
{0}",zc.Getzc());
Console.ReadKey();
}}
classShape
{protecteddoubleradius;
publicShape(doubler){radius=r;}
publicvirtualdoubleGetArea(){return0;}
publicvirtualdoubleGetPerimeter(){return0;}
publicvirtualstringType{get{return"Shape";}}
publicstringDisplay()
{returnString.Format(Type,GetArea(),GetPerimeter());
}}
classCircle:
Shape
{publicCircle(doubler):
base(r){}
publicoverridedoubleGetArea()
{returnMath.PI*radius*radius;
}
publicoverridedoubleGetPerimeter()
{returnMath.PI*radius*2;
}
publicoverridestringType
{get
{return"圆";}}}
classSmj
{protecteddoubledd,hh;
publicSmj(doubled,doubleh){dd=d;hh=h;}
publicvirtualdoubleGetmj(){return0;}
publicvirtualdoubleGetzc(){return0;}
publicvirtualstringType{get{return"Smj";}}
publicstringDisplay()
{returnString.Format(Type,Getmj());}}
classCmj:
Smj
{publicCmj(doubled,doubleh):
base(d,h){}
publicoverridedoubleGetmj()
{returndd*hh/2;}
publicoverridestringType
{get
{return"三角形";}
}}
classSzc
{protecteddoubleaa,bb,cc;
publicSzc(doublea,doubleb,doublec){aa=a;bb=b;cc=c;}
publicvirtualdoubleGetzc(){return0;}
publicvirtualstringType{get{return"Smj";}}
publicstringDisplay()
{returnString.Format(Type,Getzc());}}
classCzc:
Szc
{publicCzc(doublea,doubleb,doublec):
base(a,b,c){}
publicoverridedoubleGetzc()
{returnaa+bb+cc;}
publicoverridestringType
{get
{return"三角周长";}}}
4.利用抽象方法和抽象类编程实现圆和正方形的面积。
(半径、长、宽的值通过实例化派生类的同时来指定)
实验八
1.试着编程实现使用接口实现多态性:
车辆有很多种,有自行车、三轮车、吉普车,当是自行车时,能够知道它有二个轮子,当是三轮车时能够知道它有三个轮子,而当是吉普车时,有四个轮子。
classProgram
{
publicstaticvoidMain()
{
cheliangcl=newbicyle();
cl.wheel();
cl=newsanluan();
cl.wheel();
cl=newjeep();
cl.wheel();
Console.ReadKey();
}
}
interfacecheliang
{
voidwheel();
}
classbicyle:
cheliang
{
publicvoidwheel()
{
Console.WriteLine("thisistwowheels");
}
}
classsanluan:
cheliang
{
publicvoidwheel()
{
Console.WriteLine("thisisthreewheels");
}
}
classjeep:
cheliang
{
publicvoidwheel()
{
Console.WriteLine("thisisfourwheels");
}
}
2.定义一个泛型类栈Stack,包含四个成员:
一个私有的数组items,一个pop方法,一个push方法实现进栈、出栈,一个构造函数,用来对数组items的大小进行初始化。
接着在主函数中进行调用,第一次压栈:
4,8,然后分别出栈,第二次压栈“aa”,”bb”,然后分别出栈。
classProgram
{
publicstaticvoidMain()
{
Stackstack=newStack(100);
stack.Push
(2);
stack.Push(4);
Console.WriteLine(stack.Pop());
Console.WriteLine(stack.Pop());
Stackstack2=newStack(100);
stack2.Push("aa");
stack2.Push("bb");
Console.WriteLine(stack2.Pop());
Console.WriteLine(stack2.Pop());
Conso