C#几个基础知识训练

显示三角(数清楚该输出几个空格,该输出几个星星就行,两个循环)

ContractedBlock.gif ExpandedBlockStart.gif Code
 public static void Main()
    {
        Console.Write(
"请输入行数:");
        
int lines = int.Parse(Console.ReadLine());
        Console.WriteLine(
"");

        
for (int i = 1; i <= lines; i++)
        {
            
for (int k = 1; k <= lines - i; k++)
                Console.Write(
" ");

            
for (int j = 1; j <= i * 2 -1; j++)
                Console.Write(
"*");
            Console.WriteLine(
"");
        }

        Console.ReadLine();
    }

1+到100(编程之美)

ContractedBlock.gif ExpandedBlockStart.gif Code
   public static void Main()
    {
        
int sum = 0;
        
for (int i = 1; i <= 100; i++)
            sum 
+= i;
        Console.WriteLine(sum);
        
        Console.ReadLine();
    }

递归!,阶乘

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

class Factor
{
    
public static void Main()
    {
        Console.Write(
"请输入数字:");
        
int num = int.Parse(Console.ReadLine());

        Console.WriteLine(
"{0} 的阶乘是 {1}", num, Factorial(num)); Console.ReadKey();
    }
    
public static long Factorial(long n)
    {
        
if (n == 1)
            
return 1;
        
else
            
return n * Factorial(n - 1);
    }
}

冒泡(两层循环,第一层依次过一遍,第二层互换)

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

class ArraySort
{
    
public static void Main()
    {
        
int[] d = { 1015214317982746310 };
        
int temp;

        
//冒泡法排序
        for (int i = 0; i < d.Length; i++)
            
for (int j = i + 1; j < d.Length; j++)//这个循环下来,最大的留在了最左边
                if (d[i] < d[j])//小的往上升
                {
                    temp 
= d[i];
                    d[i] 
= d[j];
                    d[j] 
= temp;
                }
        
//输出排序结果
        foreach (int i in d)
            Console.Write(
"{0}, ", i); Console.ReadKey();
    }
}

 

找质数(数学问题,一个数除以它的平方根以下的--1上以的正整数,余数都不=0就是质数)

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

class Factor
{
    
public static void Main()
    {
        
for (int i = 2; i < 100; i++)
            
if (IsPrame(i))
                Console.Write(i 
+ ","); Console.ReadKey();
    }
    
public static bool IsPrame(int n)
    {
        
for (int j = 2; j <= Math.Sqrt(n); j++)
            
if (n % j == 0)
                
return false;
        
return true;
    }
}

99表(输出的应用)

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

public class JiuJiuBiao
{
    
public static void Main(string[] args)
    {
        
int i,j;
        
for(i=1; i<10; i++)
        {
            
for(j=1; j<10; j++)
            {
                Console.Write(
"{0:D1}*{1:D1}={2,2}  ", i, j, i*j);
            }
            Console.WriteLine(
"");
        }
        Console.ReadLine();
    }
}
------------------------------------------------------------------------------------------
 
public static void Main()
    {
        
int i = 0;
        
int j = 0;

        
for (int n = 1; n <= 9; n++)
        {
            
for (int m = 1; m <= n; m++)
            {
                Console.Write(
"{0}*{1}={2} ",n,m,m*n);
            }
            Console.WriteLine(
""); 
        } 
        Console.ReadKey();
    }

参数类型分为 in(实参值不变), ref(改变实参值), out(改变实参值) 三种,默认为 in

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

class MethodCall
{
    
public static void Main()
    {
        
/*
         * 参数类型分为 in, ref, out 三种,默认为 in。
         * in 类型在子方法中修改了对应变量后,主方法中的值不会发生改变。
         * ref 类型在子方法中修改了对应变量后,主方法中的值也会发生改变。
         * out 主方法中对应的变量不需要初始化。
         
*/
        
int a = 3, b = 4, c;
        Console.WriteLine(
"Before Method Call : a = {0}, b = {1}, c 未赋值", a, b);
        AMethod(a, 
ref b, out c);
        Console.WriteLine(
"After  Method Call : a = {0}, b = {1}, c = {2}", a, b, c);
        Console.ReadKey();
    }

    
public static void AMethod(int x, ref int y, out int z)
    {
        x 
= 7;
        y 
= 8;
        z 
= 9;
    }
}

方法重载:方法名相同,参数列表不同,根据传递的参数决定用哪个方法。

多态,看下面:

ContractedBlock.gifExpandedBlockStart.gifCode
using System;

class Car
{
    
public virtual void Drive()
    { Console.WriteLine(
"Car"); }
}
class Truck : Car
{
    
public override void Drive()
    { Console.WriteLine(
"Truck"); }

}
class Client
{
    
public static void Main()
    {
        Car c 
= new Truck();
        c.Drive();    
//多态性决定着将调用Truck的Drive方法
        Console.ReadKey();
    }
}

输出:Truck

构造函数(对象实例化的时候就调用构造函数!!new的时候)

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

public class Person
{
    
public string name = "";
    
public int age = 0;

    
//默认构造函数
    public Person()
    {
        ShowInfo();
    }

    
//构造函数重载(1)
    public Person(int Age)
    {
        
this.age = Age; 
        ShowInfo();
    }

    
//构造函数重载(2)
    public Person(int Age, string Name)
    {
        
this.age = Age;
        
this.name = Name; 
        ShowInfo();
    }

    
public void ShowInfo()
    {
        Console.WriteLine(
"The name is : " + name);
        Console.WriteLine(
"The age is:" + age);
    }
}

class Client
{
    
public static void Main()
    {
        Person p1 
= new Person();
        
//p1.ShowInfo();

        Console.WriteLine(
"==========================");

        Person p2 
= new Person(30);
       
// p2.ShowInfo();

        Console.WriteLine(
"==========================");
        Person p3 
= new Person(30"Tom");
        
//p3.ShowInfo(); 
        Console.ReadKey();
    }
}

类的字段,属性,(私有字段出了类就访问不了了,只能类内的共有属性或者方法访问了,属性可以写成只读,只写,可读可写)

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

class Account
{
    
private double balance = 0;        //字段
    public double Balance            //属性
    {
        
get { return balance; }
        
set { balance = value; }
    }
    
/*=============================================================
     * 我们可以通过修改get、set方法达到控制存取的目的。
     * 例如:
     * 
     * 1)只读属性
     * public double Balance            //属性
     * {
     *    get { return balance; }
     *    set { }
     * }
     * 
     * 2)读写控制
     * public double Balance
     * {
     *    get 
     *    {
     *       if(Console.ReadLine()=="1234")
     *          return balance;
     *       else
     *          return -9999999;
     *    }
     *    set { }
     * }
     * =============================================================
     
*/

    
public void Deposit(double n)
    { 
this.balance += n; }

    
public void WithDraw(double n)
    { 
this.balance -= n; }
}

class Client
{
    
public static void Main()
    {
        Account a 
= new Account();
        a.Balance 
= 1000;    // 可以读写属性,因为属性Balance是public型的
        
//a.balance = 1000;    //不可以读写字段,因为字段balance是private型的
        Console.WriteLine(a.Balance);
        a.WithDraw(
500); Console.WriteLine(a.Balance);
        a.Deposit(
2000);
        Console.WriteLine(a.Balance); Console.ReadKey();
    }
}

属性,方法的作用范围

(1、自身类可以访问自己任何访问权限的属性

2、子类可以访问父类的共有属性,保护属性,不能访问私有属性

3、client类中不能访问base类的保护属性和私有属性)

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;

class Base
{
    
/*
     * public 的可访问范围是所有类
     * private 的可访问范围是当前类
     * protected 的可访问范围是当前类及其子类
     
*/
    
public string name = "Tom";
    
private double salary = 1500;
    
protected int age = 20;

    
public virtual void ShowInfo()
    {
        Console.WriteLine(
this.name);    //可以,因为name是 public 型的
        Console.WriteLine(this.salary);    //可以,salary是private型,在Base类中可以访问
        Console.WriteLine(this.age);    //可以,因为age是protected型,在子类中可以访问
    }
}

class Derived : Base
{
    
public override void ShowInfo()
    {
        Console.WriteLine(
this.name);    //可以,因为name是 public 型的
        
//Console.WriteLine(this.salary);    //不可以,salary是private型,超出Base就无法访问
        Console.WriteLine(this.age);    //可以,因为age是protected型,在子类中可以访问
    }
}

class Client
{
    
public static void Main()
    {
        Base b 
= new Base();
        Console.WriteLine(b.name);    
//可以,因为name是 public 型的

        
//Console.WriteLine(b.salary); //不可以!!!!!!!!!
        
//Console.WriteLine(b.age);//不可以!!!!!!!!!!

        
//Console.WriteLine(this.salary);    //不可以,salary是private型,超出Base就无法访问
        
//Console.WriteLine(this.age);    //不可以,因为age是protected型,Client不是Base的子类

        Console.WriteLine(
"==========================");
        b.ShowInfo();
        Console.WriteLine(
"==========================");
        Derived d 
= new Derived();
        d.ShowInfo();


        Console.ReadKey();
    }
}

继承接口IComparable的person类排序

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections;

public class Person : IComparable
{
    
public int ID;
    
public string Rank;
    
public Person(int id, string rank)
    { 
        
this.ID = id; this.Rank = rank;
    }
#region IComparable Members
    
/*
     * IComparable 接口只有一个方法: CompareTo。CompareTo方法 
     * 只接收一个object类型的参数,这意味着它可以接收任何类
     * 型的数据(object是所有类的父类),这个方法会返回一
     * 整型数值,含义如下:
     * 
     * 1) 小于零,当前实例(this)小于obj对象 
     * 2) 等于零,当前实例(this)等于obj对象
     * 3) 大于零,当前实例(this)大于obj对象 
     * 
     * Int32,Int16dot.gif,String,Decimal等数据类型都已经实现了IComparable接口
     
*/
    
public int CompareTo(object obj)
    {
        Person p 
= (Person)obj;
        
return this.ID.CompareTo(p.ID);
    }
    
#endregion
}

class SortArrayList
{
    
static void Main(string[] args)
    {
        ArrayList list 
= new ArrayList();
        list.Add(
new Person(8"排长"));
        list.Add(
new Person(5"团长"));
        list.Add(
new Person(1"司令"));
        list.Add(
new Person(4"旅长"));
        list.Add(
new Person(7"连长"));
        list.Add(
new Person(2"军长"));
        list.Add(
new Person(6"营长"));
        list.Add(
new Person(3"师长"));

        list.Sort();

        Console.WriteLine(
"After Sorting");
        
foreach (Person person in list)
        {
            Console.WriteLine(
"ID: " + person.ID.ToString() + ", Rank: " + person.Rank);
        } Console.ReadKey();
    }
}

再麻烦一点:()

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections;

public enum enuSortOrder

    IDAsc, IDDesc, RankAsc, RankDesc
}

public class Person : IComparable
{
    
public static enuSortOrder intSortOrder = enuSortOrder.IDAsc;

    
public int ID;
    
public string Rank;

    
public Person(int id, string rank)
    { 
        
this.ID = id;
        
this.Rank = rank;
    }

    
#region IComparable Members

    
/*
     * IComparable 接口只有一个方法: CompareTo。CompareTo方法 
     * 只接收一个object类型的参数,这意味着它可以接收任何类
     * 型的数据(object是所有类的父类),这个方法会返回一
     * 整型数值,含义如下:
     * 
     * 1) 小于零,当前实例(this)小于obj对象 
     * 2) 等于零,当前实例(this)等于obj对象
     * 3) 大于零,当前实例(this)大于obj对象 
     * 
     * Int32,Int16dot.gif,String,Decimal等数据类型都已经实现了IComparable接口
     
*/
    
public int CompareTo(object obj)
    {
        Person p 
= (Person)obj;
        
switch ((int)intSortOrder)
        {
            
case (int)enuSortOrder.IDAsc:
                
return this.ID.CompareTo(p.ID);
            
case (int)enuSortOrder.IDDesc:
                
return p.ID.CompareTo(this.ID);
            
case (int)enuSortOrder.RankAsc:
                
return RankCompare(this.Rank, p.Rank);
            
case (int)enuSortOrder.RankDesc:
                
return RankCompare(p.Rank, this.Rank);
            
default:
                
return this.ID.CompareTo(p.ID);
        }
    }

    
private int RankCompare(string rank1, string rank2)
    {
        
int intRank1 = ConvertRankToInt(rank1);
        
int intRank2 = ConvertRankToInt(rank2);
        
if (intRank1 < intRank2)
            
return -1;
        
else if (intRank1 == intRank2)
            
return 0;
        
else
            
return 1;
    }

    
private int ConvertRankToInt(string rank)
    {
        
if (rank == "司令")
            
return 8;
        
else if (rank == "军长")
            
return 7;
        
else if (rank == "师长")
            
return 6;
        
else if (rank == "旅长")
            
return 5;
        
else if (rank == "团长")
            
return 4;
        
else if (rank == "营长")
            
return 3;
        
else if (rank == "连长")
            
return 2;
        
else
            
return 1;
    }

    
#endregion

    
#region IComparable 成员

    
int IComparable.CompareTo(object obj)
    {
        
throw new Exception("The method or operation is not implemented.");
    }

    
#endregion
}

class SortArrayList
{
    
static void Main(string[] args)
    {
        ArrayList list 
= new ArrayList();
        list.Add(
new Person(8"排长"));
        list.Add(
new Person(5"团长"));
        list.Add(
new Person(1"司令"));
        list.Add(
new Person(4"旅长"));
        list.Add(
new Person(7"连长"));
        list.Add(
new Person(2"军长"));
        list.Add(
new Person(6"营长"));
        list.Add(
new Person(3"师长"));

        list.Sort();
        Console.WriteLine(
"Sort By ID Asc:");
        
foreach (Person person in list)
        {
            Console.WriteLine(
"ID: " + person.ID.ToString() + ", Rank: " + person.Rank);
        }

        Console.WriteLine(
"----------------------------");
        Console.WriteLine(
"Sort By ID Desc:");

        Person.intSortOrder 
= enuSortOrder.IDDesc;
        list.Sort();
        
foreach (Person person in list)
        {
            Console.WriteLine(
"ID: " + person.ID.ToString() + ", Rank: " + person.Rank);
        }

        Console.WriteLine(
"----------------------------");
        Console.WriteLine(
"Sort By Rank Asc:");

        Person.intSortOrder 
= enuSortOrder.RankAsc;
        list.Sort();
        
foreach (Person person in list)
        {
            Console.WriteLine(
"ID: " + person.ID.ToString() + ", Rank: " + person.Rank);
        }

        Console.WriteLine(
"----------------------------");
        Console.WriteLine(
"Sort By Rank Desc:");

        Person.intSortOrder 
= enuSortOrder.RankDesc;
        list.Sort();
        
foreach (Person person in list)
        {
            Console.WriteLine(
"ID: " + person.ID.ToString() + ", Rank: " + person.Rank);
        }
        Console.ReadKey();
    }
}

转载于:https://www.cnblogs.com/jianlinglo/archive/2009/05/19/1460027.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值