.NET实验报告
1.编写一程序,提示用户输入一整数并接受这个整数,然后判断输入的数是否为0、奇数或偶数。将输入的数乘以10,用if语句判断相乘结果是否大于100. 解:第一次编写的代码如下;
using System;
namespace test
{
class Program
{
public static void Main(string[] args)
{ int a,b;
Console.WriteLine("请输入一个整数a:");
a=Console.ReadLine(); //调用ReadLine()方法来输入a的值
//判断a是否为0
if (a==0)
Console.WriteLine("输入的数是0");
else
Console.WriteLine("输入的数不是0");
//判断a的奇偶性
if(a%2==0)
Console.WriteLine("输入的数是偶数");
else
Console.WriteLine("输入的数是奇数");
b=10*a;
Console.WriteLine("b={0}",b):
//判断10*a是否大于100
if(b>100)
Console.WriteLine("相乘结果是否大于100 ?yes");
else
Console.WriteLine("相乘结果是否大于100 ?no");
}
}
}
运行该代码,编译器会显示出现问题如下:
经过查阅相关资料知:ReadLine()只能接收字母,如果需要使用用户输入的数值参与计算,就会出现问题。如要输入数值进行计算,则需将string转换为int32
类型。
可以产用下面的方式修改代码中的错误:
Console.WriteLine("请输入一个整数a:");
string c=Console.ReadLine();
a=Convert.ToInt32(c);
也可以输入和转换合并为一步,如下;
a=Convert.ToInt32(Console.ReadLine());
经过编译,运行程序结果如下:
实验总结:该程序主要是熟练掌握if语句运用,并了解键盘输入数值进行运算的方法,知道运用Convert类实现很多转换包括ToInt32、ToDouble、ToBoolean、ToChar等。
2构建一个抽象类及其抽象方法来实现计算长方形的面积和长方体的面积.
解:
using System;
namespace program
{
public abstract class aa
{
//这些方法是受保护的,对派生类不可见
protected int a;
protected int b;
// 构造器使用两个整数参数来表示输入的长方形的长与宽
public aa(int a,int b)
{
this.a=a;
this.b=b;
}
public abstract void aaa();
} //aa类结束
// bb类派生自aa类
public class bb:aa
{
private int c;//新的成员变量
//构造器增加一个参数
public bb(int a,int b,int d)
:
base(a,b) //调用基类构造器
{
Console.WriteLine("长方体的长为:a={0}",a);
Console.WriteLine("长方体的宽为:b={0}",b);
c=d;
Console.WriteLine("长方体的高为:c={0}",c);
}
//重载方法,调用抽象方法
public override void aaa()
{
int v;
v=a*b*c;
Console.WriteLine("以a、b为底面长与宽c为高的长方体体积为:{0}",v);
}
}//bb类结束
public class cc:aa
{
public cc (int a,int b):base(a,b){}
//重载抽象方法
public override void aaa()
{ int s;
Console.WriteLine("长方形的长为:a={0}",a);
Console.WriteLine("长方形的长为:b={0}",b);
s=a*b;
Console.WriteLine("以a、b为底面长与宽的长方形面积:{0}\n",s);
}
}//cc类结束
public class Tester
{
static void Main ()
{
aa[] aaArray=new aa[2];
aaArray[0]=new bb(3,4,4);
aaArray[1]=new cc(5,6);
for (int i=0; i<2;i++)
{
aaArray[i].aaa();
}//for循环结束
}
}
}
编程过程中遇到的问题:
①在申明数组aaArray时,没有注意C#与C语言的区别,还是像C那样申明数组,如aa aaArray[]=new aa[2],在编译时显示了以下错误:Noname1.cs(52,13): error CS0650: 错误的数组声明符: 若要声明托管数组,秩说明符应位于变量标识符之前。若要声明固定大小的缓冲区字段,请在字段类型之前使
用fixed 关键字。经过翻阅课件知C#中,申明数组只能把[]放在数组名之前,而不能在后面,即把该代码改成:aa[] aaArray=new aa[2];就正确了。
②在程序的编写过程中,我没有注意aa类已经被申明为abstract,犯了该类不能被实例化的错误。将数组中的成员:
aaArray[0]=new bb(3,4,4);
aaArray[1]=new cc(5,6);
把该代码编写成
aaArray[0]=new aa(3,4);
aaArray[1]=new aa(5,6);
程序在编译的过程中产生了以下错误:
writeline输出数值变量而bb类和cc类重写了虚方法,具体实现了aa类,所以该实例化这些类。
输出结果如下图所示:
实验总结:一个类被申明为abstract,那么该类一定不能被实例化,并且所有抽象方法必须被重写后才能够创建派生类的实例。
实验心得
经过三个多小时的实验和尝试,对许多C#基础知识的地方有了一些了解,但实验中还是检验出来自己在许多地方有不足,还要更加深入的学习C#语言。学习编程最好的方法之一是阅读源代码,通过研究别人的代码来巩固自己的知识;还有要好好利用自己的课本,一遍又一遍的看,直到研究透,并要把书上的例子亲手输入到电脑上,再把书中有意义的例子扩充。我在实验过程中,遇到了许多自己不明白的地方,自己编的程序有很到错误,心里很急很焦躁,不愿意继续下去,所以在此我要告诫自己:不论什么时候做什么,不能做一个浮躁的人。还有,在编程过程中,要经常同同学讨论出现的问题,并记录交流时自己的不足和不理解的知识点,即时翻阅资料弄透自己不懂得地方,最后要即时复习和巩固。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论