学习软件设计——C#练习(4)

本文提供了三个C#编程练习示例,包括矩形类定义及计算、点类构造函数与距离计算、学生类实例化及统计,适合初学者实践。

C#练习(1~8)源代码下载请到http://download.youkuaiyun.com/detail/hsttmht/3751088

引用请注明http://blog.youkuaiyun.com/hsttmht

 

1、定义一个类矩形,定义四个double类型的变量,分别表示矩形的左下角的坐标和右上角的坐标,在定义一个无参构造函数初始化所有变量为0;定义一个有参构造函数对这四个变量进行赋值。另外定义一个求面积的和一个求周长的公有方法,在Main()方法中从控制台输入四个坐标点,然后调用方法输出面积和周长


2、构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数,另外在该类中提供一个方法计算两个点的直线距离,传入参数为Point类实例,然后设计一个测试类来对Point类进行使用。


提示:先定义两个变量来存数Point点的X,Y坐标;无参的构造函数将X,Y坐标赋值为0;有参的构造函数将传入的参数分别赋给X,Y坐标。
3、实验要求
定义学生类,
字段:学号(字符串类型)
姓名(字符串类型)
性别(枚举类型)
年龄(整形类型) 
学生个数(静态整形 用于统计学生实例个数 )
函数:
构造函数:参数为前四个字段; 
静态函数:无参数,返回值为整形即学生实例个数

在Main函数中使用定义的构造函数实例化4个学生类对象,在创建每一个学生实例后立即输出学生信息,并调用静态函数输出学生实例个数,注意静态字段、静态函数的使用。


using System;
using System.Collections.Generic;
namespace PointNameSpace 
{ 
	public class Point
	{
		public double X1; 
		public double Y1;
		public double X2; 
		public double Y2; 
		
		public Point() 
		{ 
			X1 = 0.0; 
			Y1 = 0.0; 
			X2 = 0.0; 
			Y2 = 0.0; 
		}
		
		public Point(double x1, double y1) 
		{ 
			X1 = x1; 
			Y1 = y1; 
			//X2 = x2; 
			//Y2 = y2; 
		}
		
		public static double zhouchang(Point A, Point B)
		{
			return 2*((A.X2 - B.X1) + (A.Y2 - B.Y1));
		}
		
		public static double mianji(Point A, Point B)
		{
			return (A.X2 - B.X1)*(A.Y2 - B.Y1);
		}
		
		public static void Main(string[] args) 
		{ 
			//第一个点
			double x1, y1; 
			x1 = double.Parse(Console.ReadLine()); 
			y1 = double.Parse(Console.ReadLine()); 
			Point point1 = new Point(x1,y1);
			//第二个点
			double x2, y2; 
			x2 = double.Parse(Console.ReadLine()); 
			y2 = double.Parse(Console.ReadLine()); 
			Point point2 = new Point(x2,y2);
			//传入
			double f = Point.zhouchang(point1,point2); 
			Console.WriteLine("周长:{0}",f); 
			double a = Point.mianji(point1,point2); 
			Console.WriteLine("面积:{0}",a); 
			
			Console.ReadLine();
		} 
	}	
}


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

namespace PointNameSpace 
{ 
    public class Point 
    { 
        public double X; 
        public double Y; 
		
		//两个公有的构造函数
        public Point() 
        { 
            X = 0.0; 
            Y = 0.0; 
        } 
        public Point(double x, double y) 
        { 
            X = x; 
            Y = y; 
        } 
		
		//提供一个方法计算两个点的直线距离
        public static double s(Point A, Point B)
        {
            return Math.Sqrt((A.X - B.X) * (A.X - B.X) + (A.Y - B.Y) * (A.Y - B.Y));
        }

		//传入参数为Point类实例,然后设计一个测试类来对Point类进行使用。
        public static void Main(string[] args) 
        { 
			//第一个点
            double x1, y1; 
            x1 = double.Parse(Console.ReadLine()); 
            y1 = double.Parse(Console.ReadLine()); 
            Point point1 = new Point(x1,y1);
			//第二个点
            double x2, y2; 
            x2 = double.Parse(Console.ReadLine());
            y2 = double.Parse(Console.ReadLine());
            Point point2 = new Point(x2,y2);
			//传入s
            double f = Point.s(point1,point2); 
            Console.WriteLine(f); 
			Console.ReadLine ();
        } 
    } 
} 


using System;
using System.Collections.Generic;

public class Student
    {
        string studentid;//学号(字符串类型)
        string studentname;//姓名(字符串类型)
        string studentsex;//性别(枚举类型)
        public enum thestudentsex  
        {
            boy,
            girl
        }
        int studentage;//年龄(整形类型)
        static int studentnum;//学生个数(静态整形 用于统计学生实例个数 )
        public Student(string id,string name,thestudentsex sex,int age)//构造函数实例化4个学生类对象
        {
            studentid = id;
            studentname = name;
            if(sex==thestudentsex.girl)
            {
                studentsex = "女";
            }
            else
            {
                studentsex = "男";
            }
            studentnum++;//统计学生
            studentage = age;

        }
        private static int GetStudentNum()
        {
            return studentnum;
        }
        static void Main(string[] args)
        {
            //实例化4个学生类对象
            Student stu1 = new Student("0901110101", "A", thestudentsex.boy, 22);
            Console.WriteLine("学号:" + stu1.studentid + "  姓名:" + stu1.studentname+"  性别:"+stu1.studentsex+"  年龄:"+stu1.studentage.ToString());
            Student stu2 = new Student("0901110102", "B", thestudentsex.girl, 22);
            Console.WriteLine("学号:" + stu2.studentid + "  姓名:" + stu2.studentname + "  性别:" + stu2.studentsex + "  年龄:" + stu2.studentage.ToString());
            Student stu3 = new Student("0901110103", "C", thestudentsex.boy, 22);
            Console.WriteLine("学号:" + stu3.studentid + "  姓名:" + stu3.studentname + "  性别:" + stu3.studentsex + "  年龄:" + stu3.studentage.ToString());
            Student stu4 = new Student("0901110104", "D", thestudentsex.girl, 22);
            Console.WriteLine("学号:" + stu4.studentid + "  姓名:" + stu4.studentname + "  性别:" + stu4.studentsex + "  年龄:" + stu4.studentage.ToString());
            Console.WriteLine("定义了"+GetStudentNum().ToString()+"个学生");
            Console.ReadLine();

        }
    } 
















1. 声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。扩展(*):不使用第三个变量如何交换? 2. 用方法来实现:将上题封装一个方法来做,方法有两个参数分别为num1,num2,将num1与num2交换。提示:方法有两个参数n1,n2,在方法中将n1与n2进行交换,使用ref。(*) 3. 请用户输入一个字符串,计算字符串中的字符个数,并输出。 4. 用方法来实现:计算两个数的最大值。思考:方法的参数?返回值?扩展(*):计算任意多个数间的最大值(提示:使用可变参数,params)。 5. 用方法来实现:计算1-100之间的所有整数的和。 6. 用方法来实现:计算1-100之间的所有奇数的和。 7. 用方法来实现:判断一个给定的整数是否为“质数”。 8. 用方法来实现:计算1-100之间的所有质数(素数)的和。 9. 用方法来实现:有一个整数数组:{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 },找出其中最大值,并输出。不能调用数组的Max()方法。 10. 用方法来实现:有一个字符串数组:{ "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" },请输出最长的字符串。 11. 用方法来实现:请计算出一个整型数组的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }。要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。Math.Round() 12. 请通过冒泡排序法对整数数组{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }实现升序排序。 13. 有如下字符串:【"患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?” 患者:“七十五岁。” 大夫:“二十岁咳嗽吗”患者:“不咳嗽。” 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。” 大夫:“那现在不咳嗽,还要等到什么时咳嗽?”"】。需求:①请统计出该字符中“咳嗽”二字的出现次数,以及每次“咳嗽”出现的索引位置。②扩展(*):统计出每个字符的出现次数。 14. 将字符串" hello world,你 好 世界 ! "两端空格去掉,并且将其中的所有其他空格都替换成一个空格,输出结果为:"hello world,你 好 世界 !"。 15. 制作一个控制台小程序。要求:用户可以在控制台录入每个学生的姓名,当用户输入quit(不区分大小写)时,程序停止接受用户的输入,并且显示出用户输入的学生的个数,以及每个学生的姓名。效果如图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值