常用C#源代码.docx
《常用C#源代码.docx》由会员分享,可在线阅读,更多相关《常用C#源代码.docx(82页珍藏版)》请在冰豆网上搜索。
常用C#源代码
C#程序设计
一、实验名称:
C#实验
二、实验目的:
通过上机实际操作将平时课堂所学具体实现,通过该实验来检查自己的学习成功,并且发现
平时学习中没有注意到的问题并解决之,从而加深对该门课程的以及C#语言的了解。
三、实验步骤:
实验一:
C#编程环境
实验目的:
1.熟悉掌握C#开发环境的安装与配置
2.熟悉开发环境,编写控制台和窗口两个版本的helloworld范例程序
实验内容:
实验1-1:
编写一个控制台程序,并且输出“helloworld!
”
相关主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespacehello_world
{
classSY1_2
{
staticvoidMain(string[]args)
{
Console.WriteLine("HelloWorld!
");
}
}
}
抓图结果:
实验1-2:
编写一个Windows应用程序,并且输出“helloworld!
”
相关主要代码:
namespacehello_world2
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
MessageBox.Show("HelloWorld","MessagefromC#");
}
}
}
抓图结果:
实验二:
C#编程基础
实验目的:
1.熟悉掌握C#的各种数据类型,常量、变量的表达形式;
2.熟悉掌握C#的运算符和表达式;
3.熟悉掌握C#的语言,会使用顺序、选择、循环等语句结构编写程序;
4.熟悉掌握C#的数组,学会数组的定义、初始化以及数组的应用。
实验内容:
实验2-1:
有红、黄、黑、白四色球各一个,放置在一个编号为1、2、3、4的四个盒子中,每个盒子放置一
只球,它们的顺序不知。
甲、乙、丙三人猜测放置顺序如下:
甲:
黑球在1号盒子,黄球在2号盒子;
乙:
黑球在2号盒子,白球在3号盒子;
丙:
红球在2号盒子,白球在4号盒子。
结果证明甲、乙、丙三人各猜中了一半,给出四色球放置在盒中的情况。
相关的主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceSY2_1
{
classProgram
{
staticvoidMain(string[]args)
{
inta,b,c,d;
for(a=1;a<=4;a++)
for(b=1;b<=4;b++)
for(c=1;c<=4;c++)
if(a!
=b&&b!
=c&&c!
=a)
{
d=10-a-b-c;
if((c==1&&b==4)&&(a==2&&d==3))
{
Console.Write("红球放置在{0}号,黄球放置在{1}号,",a,b);
Console.WriteLine("黑球放置在{0}号,白球放置在{1}号",c,d);
}
}
Console.Read();
}
}
}
抓图结果:
实验2-2:
采用筛选法求2-64之间的质数。
相关主要代码:
usingSystem;
publicclassTestNumSort
{
publicstaticvoidMain()
{
intsieve,w;
inti,j,p,k;
boolflg=true;
sieve=~0x0;
p=3;
for(i=0;i<32;i++)
{
w=0x1<
while(j+i<32)
{
sieve&=~w;
w<<=p;j+=p;
}
k=i+1;
while(((sieve>>k)&0x01)==0)
{
k++;i++;
}
p=p+2;
}
Console.WriteLine("2到64之间的素数有");
Console.Write("{0,4}",2);
p=3;w=1;
for(i=0;i<32;i++)
{
if((sieve>>i&0x01)!
=0)
Console.Write("{0,3}",p);
p+=2;
}
Console.WriteLine();
Console.Read();
}
}
抓图结果:
实验2-3:
根据给出的公式编程计算兀的值,直至所加项小于1E-10为止。
相关主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceSY2_3
{
classProgram
{
staticvoidMain(string[]args)
{
doublesum=0.5,t,t1,t2,t3,p=0.5*0.5;
intodd=3,even=2,k;
t=t1=t2=1.0;
t3=1/2.0;
while(t>1e-10)
{
even+=2;
t2=1.0/odd;
t1=t1*(odd-2)/(even-2);
odd+=2;
t3=t3*(1/2.0)*(1/2.0);
t=t1*t3*t2;
sum+=t;
}
Console.WriteLine("\nPI={0,10:
f8}",sum*6);
Console.Read();
}
}
}
抓图结果:
实验2-4:
编程进行卡布列克运算。
所谓卡布列克运算,是指任意一个四位数,只要它们各个位上的数字不
全相同,就有这样的规律:
1)把组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大数字
2)把组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数
3)求出以上两数之差,得到一个新的四位数
重复以上过程,总能得到最后的结果是6174。
相关的主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceSY2_4
{
classProgram
{
staticvoidMain(string[]args)
{
Console.Write("请输入一个4位整数");
strings=Console.ReadLine();
intnum=Convert.ToInt32(s);
int[]each=newint[4];
intmax,min,i,j,temp;
while(num!
=6174&&num!
=0)
{
i=0;
while(num!
=0)
{
each[i++]=num%10;
num=num/10;
}
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
if(each[j]>=each[j+1])
{
temp=each[j];
each[j]=each[j+1];
each[j+1]=temp;
}
min=each[0]*1000+each[1]*100+each[2]*10+each[3];
max=each[3]*1000+each[2]*100+each[1]*10+each[0];
num=max-min;
Console.WriteLine("{0}-{1}={2}",max,min,num);
}
Console.Read();
}
}
}
抓图的结果:
实验2-5:
数列A={1,1,3,7,17,41……}有以下性质:
a=a=1;
a=a+2a(i>1)
对于给定的n,数列的各个元素值由数列A的元素生成即以a/a的分数形式表示,然后对其进行排序
相关的主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceSY2_5
{
classProgram
{
staticvoidMain(string[]args)
{
int[]A=newint[11];
int[,]Fraction=newint[2,11];
float[]B=newfloat[10];
inti,n,j,pos,temp;
floatftemp;
A[0]=A[1]=1;
Console.Write("\n请输入n(n<=10)值:
");
strings=Console.ReadLine();
n=Convert.ToInt32(s);
for(i=2;iA[i]=A[i-2]+2*A[i-1];
for(i=0;i{
B[i]=(float)A[i]/A[i+1];
Fraction[0,i]=A[i];
Fraction[1,i]=A[i+1];
}
for(i=0;i{
for(j=(pos=i)+1;jif(B[j]
pos=j;
if(i!
=pos)
{
ftemp=B[pos];
B[pos]=B[i];
B[i]=ftemp;
temp=Fraction[0,pos];
Fraction[0,pos]=Fraction[0,i];
Fraction[0,i]=temp;
temp=Fraction[1,pos];
Fraction[1,pos]=Fraction[1,i];
Fraction[1,i]=temp;
}
}
for(i=0;iConsole.Write("{0}/{1}",Fraction[0,i],Fraction[1,i]);
Console.Read();
}
}
}
抓图的结果:
实验三:
C#面向对象程序基础
实验目的:
1.加深理解面向对象编程的概念,如类、对象、实例化等;
2.熟练掌握类的声明格式,特别是类的成员定义,构造函数,初始化对象等;
3.熟练掌握方法的声明,理解并学会使用方法的参数传递,方法的重载等
实验内容:
实验3-1:
阅读程序
相关程序代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceSY3_1
{
classProgram
{
classCRect
{
privateinttop,bottom,left,right;
publicstaticinttotal_rects=0;
publicstaticlongtotal_rect_area=0;
publicCRect()
{
left=top=right=bottom=0;
total_rects++;
total_rect_area+=getHeight()*getWidth();
Console.WriteLine("CRect()Contructingrectanglenumber{0}",total_rects);
Console.WriteLine("Totalrectangleareasis:
{0}",total_rect_area);
}
publicCRect(intx1,inty1,intx2,inty2)
{
left=x1;
top=y1;
right=x2;
bottom=y2;
total_rects++;
total_rect_area+=getHeight()*getWidth();
Console.WriteLine("CRect(int,int,int,int)Constructingrectanglenumber{0}",
total_rects);
Console.WriteLine("Totalrectangleareasis:
{0}",total_rect_area);
}
publicCRect(CRectr)
{
left=r.left;
right=r.right;
top=r.top;
bottom=r.bottom;
total_rects++;
total_rect_area+=getHeight()*getWidth();
Console.WriteLine("CRect(CRect&)Constructingrectanglenumber{0}",
total_rects);
Console.WriteLine("Totalrectangleareasis:
{0}",total_rect_area);
}
publicintgetHeight()
{
return(top>bottom?
top-bottom:
bottom-top);
}
publicintgetWidth()
{
returnright>left?
right-left:
left-right;
}
publicstaticintgetTotalRects()
{
returntotal_rects;
}
publicstaticlonggetTotalRectangle()
{
returntotal_rect_area;
}
}
publicclassTest3_1
{
staticvoidMain(string[]args)
{
CRectrect1=newCRect(1,3,6,4),rect2=newCRect(rect1);//拷贝构造,通过
重载
Console.Write("Rectangle2:
Height:
{0}",rect2.getHeight());
Console.WriteLine(",Width:
{0}",rect2.getWidth());
{
CRectrect3=newCRect();
Console.Write("Rectangle3:
Height:
{0}",rect3.getHeight());
Console.WriteLine(",Width:
{0}",rect3.getWidth());
}
Console.Write("Total_rects={0}",CRect.total_rects);
Console.WriteLine(",total_rect_area={0}",CRect.total_rect_area);
Console.Read();
}
}
}
}
抓图的结果:
实验3-2:
设计一个图书卡片类Card,用来保存图书馆卡片分类记录。
这个类的成员包括书名、作者、馆藏数
量。
至少提供两个方法,store书的入库处理,show显示图书信息,程序运行时,可以从控制台上输入需要
入库图书的总量,根据这个总数创建Card对象数组,然后输入数据,最后可以选择按书名、作者、入库量排
序
相关的主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceSY3_2
{
classCard
{
privatestringtitle,author;
privateinttotal;
publicCard()
{
title="";
author="";
total=0;
}
publicCard(stringtitle,stringauthor,inttotal)
{
this.title=title;
this.author=author;
this.total=total;
}
publicvoidstore(refCardcard)//使用ref关键字进行引用传递,似乎是它的拷贝构造
{
title=card.title;
author=card.author;
total=card.total;
}
publicvoidshow()
{
Console.WriteLine("Title:
{0},Author:
{1},Total:
{2}",title,author,total);
}
publicstringTitle//Title的属性可读可写
{
get{returntitle;}
set{title=value;}
}
publicstringAuthor
{
get{returnauthor;}
set{author=value;}
}
publicstringTotal
{
get{returnTotal;}
set{total=int.Parse(value);}
}
}
publicclassTest3_2
{
staticvoidMain(string[]args)
{
Test3_2T=newTest3_2();
Card[]books;
int[]index;
inti,k;
Cardcard=newCard();
Console.Write("请输入需要入库图书的总数:
");
stringsline=Console.ReadLine();
intnum=int.Parse(sline);
books=newCard[num];
for(i=0;ibooks[i]=newCard();
index=newint[num];
for(i=0;i{
Console.Write("请输入书名:
");
card.Title=Console.ReadLine();
Console.Write("请输入作者:
");
card.Author=Console.ReadLine();
Console.Write("请输入入库量:
");
sline=Console.ReadLine();
card.Total=sline;
books[i].store(refcard);
index[i]=i;//应该表示第几本书
}
Console.Write("请选择按什么关键字排序(1.按书名,2.按作者,3.按入库量)");
sline=Console.ReadLine();
intchoice=int.Parse(sline);
switch(choice)
{
case1:
T.sortTitle(books,index);
break;
case2:
T.sortAuthor(books,index);
break;
case3:
T.sortTotal(books,index);
break;
}
for(i=0;i{
k=index[i];
books[k].show();//和给出的程序不同
}
Console.Read();
}
voidsortTitle(Card[]book,int[]index)
{
inti,j,m,n,temp;
for(m=0;m{
for(n=0;n{
i=index[n];
j=index[n+1];
if(string.Compare(book[i].Title,book[j].Title)>0)
{
temp=index[n];
index[n]=index[n+1];
index[n+1]=temp;
}
}
}
}
voidsortAuthor(Card[]book,int[]index)
{
inti,j,m,n,temp;
for(m=0;mfor(n=0;n{
i=index[n];
j=index[n+1];
if(string.Compare(book[i].Author,book[j].Author)>0)
{
temp=index[n];
index[n]=index[n+1];
index[n+1]=temp;
}
}
}
voidsortTotal(Card[]book,int[]index)
{
inti,j,m,n,temp;
for(m=0;mfor(n=0;n{
i=index[n];
j=index[n+1];
i