C#程序设计
一、实验名称:C#实验
二、实验目的:通过上机实际操作将平时课堂所学具体实现,通过该实验来检查自己的学习成功,并且发现平时学习中没有注意到的问题并解决之,从而加深对该门课程的以及C#语言的了解。
三、实验步骤:
实验一:C#编程环境
实验目的:
1. 熟悉掌握C#开发环境的安装与配置
2. 熟悉开发环境,编写控制台和窗口两个版本的hello world范例程序
实验内容:
实验1-1:编写一个控制台程序,并且输出“hello world!”
相关主要代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace hello_world
{
class SY1_2
{
static void Main(string[] args)
{
厉害的编程代码Console.WriteLine("Hello World!");
}
}
}
抓图结果:
实验1-2:编写一个Windows应用程序,并且输出“hello world!”
相关主要代码:
namespace hello_world2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Hello World", "Message from C#");
}
}
}
抓图结果:
实验二:C#编程基础
实验目的:
1.熟悉掌握C#的各种数据类型,常量、变量的表达形式;
2.熟悉掌握C#的运算符和表达式;
3.熟悉掌握C#的语言,会使用顺序、选择、循环等语句结构编写程序;
4.熟悉掌握C#的数组,学会数组的定义、初始化以及数组的应用。
实验内容:
实验2-1:有红、黄、黑、白四球各一个,放置在一个编号为1、2、3、4的四个盒子中,每个盒子放置一只球,它们的顺序不知。
甲、乙、丙三人猜测放置顺序如下:
甲:黑球在1号盒子,黄球在2号盒子;
乙:黑球在2号盒子,白球在3号盒子;
丙:红球在2号盒子,白球在4号盒子。
结果证明甲、乙、丙三人各猜中了一半,给出四球放置在盒中的情况。
相关的主要代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace SY2_1
{
class Program
{
static void Main(string[] args)
{
int a, 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之间的质数。
相关主要代码:
using System;
public class TestNumSort
{
public static void Main()
{
int sieve, w;
int i, j, p, k;
bool flg = true;
sieve = ~0x0;
p = 3;
for (i = 0; i < 32; i++)
{
w = 0x1 << i; w <<= p; j = p;
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为止。
相关主要代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace SY2_3
{
class Program
{
static void Main(string[] args)
{
double sum = 0.5, t, t1, t2, t3, p = 0.5 * 0.5;
int odd = 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。
相关的主要代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace SY2_4
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入一个4位整数");
string s = Console.ReadLine();
int num = Convert.ToInt32(s);
int[] each = new int[4];
int max, 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 的分数形式表示,然后对其进行排序
相关的主要代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace SY2_5
{
class Program
{
static void Main(string[] args)
{
int[] A = new int[11];
int [ ,]Fraction=new int[2,11];
float []B=new float [10];
int i,n,j,pos,temp;
float ftemp;
A[0]=A[1]=1;
Console .Write ("\n请输入n(n<=10)值:");
string s=Console .ReadLine ();
n=Convert .ToInt32 (s);
for(i=2;i<n+1;i++)
A[i]=A[i-2]+2*A[i-1];
for(i=0;i<n;i++)
{
B[i]=(float)A[i]/A[i+1];
Fraction[0, i] = A[i];
Fraction[1, i] = A[i+1];
}
for(i=0;i<n-1;i++)
{
for(j=(pos=i)+1;j<n;j++)
if(B[j]<B[pos])
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;i<n;i++)
Console .Write ("{0}/{1}  ",Fraction [0,i],Fraction [1,i]);
Console .Read();
}
}
}
抓图的结果:
实验三:C#面向对象程序基础
实验目的:
1. 加深理解面向对象编程的概念,如类、对象、实例化等;
2. 熟练掌握类的声明格式,特别是类的成员定义,构造函数,初始化对象等;
3. 熟练掌握方法的声明,理解并学会使用方法的参数传递,方法的重载等
实验内容:
实验3-1:阅读程序
相关程序代码:
using System;
using System.
Collections.Generic;
using System.Text;
namespace SY3_1
{
class Program
{
class CRect
{
private int top, bottom, left, right;
public static int total_rects = 0;
public static long total_rect_area = 0;
public CRect()
{
left = top = right = bottom = 0;
total_rects++;
total_rect_area += getHeight() * getWidth();
Console.WriteLine("CRect()Contructing rectangle number{0}", total_rects);
Console.WriteLine("Total rectangle areas is:{0}", total_rect_area);
}
public CRect(int x1, int y1, int x2, int y2)
{
left = x1;
top = y1;
right = x2;
bottom = y2;
total_rects++;
total_rect_area += getHeight() * getWidth();
Console.WriteLine("CRect(int,int,int ,int)Constructing rectangle number{0}", total_rects);
Console.WriteLine("Total rectangle areas is :{0}", total_rect_area);
}
public CRect(CRect r)
{
left = r.left;
right = r.right;
top = r.top;
bottom = r.bottom;
total_rects++;
total_rect_area += getHeight() * getWidth();
Console.WriteLine("CRect(CRect&)Constructing rectangle number{0}", total_rects);
Console.WriteLine("Total rectangle areas is :{0}", total_rect_area);
}
public int getHeight()
{
return (top > bottom ? top - bottom : bottom - top);
}
public int getWidth()
{
return right > left ? right - left : left - right;
}
public static int getTotalRects()
{
return total_rects;
}
public static long getTotalRectangle()
{
return total_rect_area;
}
}
public class Test3_1
{
static void Main(string[] args)
{
CRect rect1 = new CRect(1, 3, 6, 4), rect2 = new CRect(rect1);//拷贝构造,通过重载
Console.Write("Rectangle 2:Height:{0}", Height());
Console.WriteLine(",Width:{0}", Width());
{
CRect rect3 = new CRect();
Console.Write("Rectangle 3:Height:{0}", Height());
Console.WriteLine(",Width:{0}", Width());
}
Console.Write("Total_rects={0}", al_rects);
Console.WriteLine(",total_rect_area={0}", al_rect_area);
Console.Read();
}
}
}
}
抓图的结果:
验3-2:设计一个图书卡片类Card,用来保存图书馆卡片分类记录。这个类的成员包括书名、作者、馆藏数量。至少提供两个方法,store书的入库处理,show显示图书信息,程序运行时,可以从控制台上输入需要入库图书的总量,根据这个总数创建Card对象数组,然后输入数据,最后可以选择按书名、作者、入库量排序
相关的主要代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace SY3_2
{
class Card
{
private string title, author;
private int total;
public Card()
{
title = "";
author = "";
total = 0;
}
public Card(string title, string author, int total)
{
this.title = title;
this.author = author;
}
public void store(ref Card card)//使用ref关键字进行引用传递,似乎是它的拷贝构造
{
title = card.title;
author = card.author;
total = al;
}
public void show()
{
Console.WriteLine("Title:{0},Author:{1},Total:{2}", title, author, total);
}
public string Title//Title的属性可读可写
{
get { return title; }
set { title = value; }
}
public string Author
{
get { return author; }
set { author = value; }
}
public string Total
{
get { return Total; }
set { total = int.Parse (value); }
}
}
public class Test3_2
{
static void Main(string[] args)
{
Test3_2 T = new Test3_2();
Card[] books;
int[] index;
int i, k;
Card card = new Card();
Console.Write("请输入需要入库图书的总数:");
string sline = Console.ReadLine();
int num = int.Parse(sline);
books = new Card[num];
for (i = 0; i < num; i++)
books [i]= new Card();
index = new int[num];
for (i = 0; i < num; i++)
{
Console.Write("请输入书名:");
card.Title = Console.ReadLine();
Console.Write("请输入作者:");
card.Author = Console.ReadLine();
Console.Write("请输入入库量:");
sline = Console.ReadLine();
card.Total = sline;
books[i].store(ref card);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。