C#面向对象练习题

        注意,只有关键代码,如何添加类、接口等请自行完成。之所以每个控制台程序都加一个Console.ReadLine(),是因为有些版本的Visual Studio执行完以后直接退出,加上会暂停在命令提示行窗口。

一、简单题

1、逆序字符串。

        把输入的字符串中的内容逆置,并保存到新字符串,并输出新字符串的内容。

static void Main(string[] args)
{
    Console.Write("请输入字符串:");
    string str1 = string.Format(Console.ReadLine());
    string str2="";
    for (int i = str1.Length - 1; i >= 0; i--) {
        str2 += str1[i];
            }
    Console.WriteLine("{0}的逆序字符串是:{1}",str1,str2);
    Console.ReadLine();
}
2、判断是否构成三角形

        已知三角形三条边长a,b,c,三边由用户输入,编程判断a、b、c的值是否构成三角形,如构成三角形,则计算并输出三角形的面积,否则输出“不能构成三角形”计算三角形面积公式为: 

        s=0.5*(a+b+c) ,area=\sqrt{s*(s-a)*(s-b)*(s-c)}

        求三角形的面积area。

 static void Main(string[] args)
 {
     double s,area;
     Console.Write("请输入第1条边:");
     int a=int.Parse(Console.ReadLine());
     Console.Write("请输入第2条边:");
     int b=int.Parse(Console.ReadLine());
     Console.Write("请输入第3条边:");
     int c=int.Parse(Console.ReadLine());
     if (a + b < c || a + c < b || b + c < a)
     {
         Console.WriteLine("不构成三角形");
     }
     else
     {
         s = 0.5 * (double)(a + b + c);
         area = Math.Sqrt(s * (s - a) * (s - b) * (s - c));
         Console.WriteLine("三角形的面积为:{0}", area);
     }

     Console.ReadLine();
 }

3、删除字符串中的数字

        输入一个字符串str1,删除str1中其中所有的0-9的数字字符,输出处理后的字符串。

 static void Main(string[] args)
 {
     string str1 = "";
     string str2 = "";
     Console.Write("输入一个字符串:");
     str2=str1 =string.Format( Console.ReadLine());
     //方法1,for循环,找到数字并删除
     for (int i = 0; i < str2.Length; i++)
     {
         if (str2[i] >= '0' && str2[i] <= '9')
         {
             str2 = str2.Remove(i,1);
             i--;//回退i
         }
     }
     //方法2,用正则式删除
     //str2 = Regex.Replace(str1, "[0-9]", "", RegexOptions.IgnoreCase);
     Console.WriteLine("原字串:{0},删除数字后:{1}",str1,str2);
     Console.ReadLine();
 }
4、计算平均值并输出低于平均值的数

        输入10个数,计算平均值,统计低于平均值数据个数并把低于平均值的数据输出。

static void Main(string[] args)
{
    int []a=new int[10];
    double ave;
    int count=0,s=0;
    for (int i = 0; i < 10; i++)
    {
        Console.Write("请输入第{0}个数:",i+1);
        a[i] = int.Parse(Console.ReadLine());
        s += a[i];
    }
    ave = s / 10;
    Console.WriteLine("低于平均数的数是:");
    for (int i = 0; i < 10; i++)
    {
        if (a[i] < ave) {
            count++;
            Console.Write("{0} ",a[i]);
        }  
    }
    Console.WriteLine();
    Console.WriteLine("低于平均数的个数:{0}", count);
    Console.ReadLine();
}
5、计算平均值并输出高于平均值的数

        输入10个数,计算平均值,统计高于平均值数据个数并把高于平均值的数据输出。

        方法一:

static void Main(string[] args)
{

    int[] a = new int[10];
    double ave;
    int count = 0, s = 0;
    for (int i = 0; i < 10; i++)
    {
        Console.Write("请输入第{0}个数:", i + 1);
        a[i] = int.Parse(Console.ReadLine());
        s += a[i];
    }
    ave = s / 10;
    Console.WriteLine("高于平均数的数是:");
    for (int i = 0; i < 10; i++)
    {
        if (a[i] > ave)
        {
            count++;
            Console.Write("{0} ", a[i]);
        }
    }
    Console.WriteLine();
    Console.WriteLine("高于平均数的个数:{0}", count);
    Console.ReadLine();
}

        方法二:

static void Main(string[] args)
{
   
    double ave;
    int count = 0, s = 0;
    ArrayList ar = new ArrayList();
    char[] fg = { ',', ' ', ',' };//分割用的符号
    Console.Write("请输入10个数字,用空格或逗号隔开:");
    string st1 = Console.ReadLine();
    ar.AddRange(st1.Split(fg));
    for (int i = 0; i < ar.Count; i++)
    {
        s = s + Convert.ToInt32(ar[i]);

    }
    ave = s / (ar.Count);
    Console.Write("高于平均数的数是:");
    for (int i = 0; i < ar.Count; i++)
    {
        if (Convert.ToDouble(ar[i]) > ave)
        {
            count++;
            Console.Write("{0} ", ar[i]);
        }
    }
    Console.WriteLine();
    Console.WriteLine("高于平均数的个数:{0}", count);
    Console.ReadLine();
}
6、找最大数

        输入一些整数,找出其中最大数和次最大数。

 static void Main(string[] args)
 {
     ArrayList ar = new ArrayList();
     char[] fg = { ',', ' ', ',' };//分割用的符号
     Console.Write("请输入一串数字,用空格或逗号隔开:");
     string st1=Console.ReadLine();
     ar.AddRange(st1.Split(fg));
     ar.Sort();
     Console.WriteLine("输入的最大数是{0}\n输入的次大数是{1}", ar[ar.Count-1], ar[ar.Count - 2]);
     Console.ReadLine();
 }
7、找次大数

        输入一些整数,找出其中最小数和次最小数。

static void Main(string[] args)
{
    ArrayList ar = new ArrayList();
    char[] fg = { ',', ' ', ',' };//分割用的符号
    Console.Write("请输入一串数字,用空格或逗号隔开:");
    string st1 = Console.ReadLine();
    ar.AddRange(st1.Split(fg));
    ar.Sort();//排序
    Console.WriteLine("输入的最小数是{0}\n输入的次小数是{1}", ar[0], ar[1]);
    Console.ReadLine();
}
8、数字去重

        输入若干有序的正整数,对于相同的数据只保留一个,输出保留的数据。例如,输入数据是: 2,2,2,3,3,4,5,5,6,6,8,8,9,9,9,10,10,10 最终的输出结果是: 2,3,4,5,6,8,9,10。

static void Main(string[] args)
{
    ArrayList ar = new ArrayList();
    char[] fg = { ',', ' ', ',' };//分割用的符号
    Console.Write("请输入一串有重复的数字,用空格或逗号隔开:");
    string st1 = Console.ReadLine();
    ar.AddRange(st1.Split(fg));
    for (int i = 0; i < ar.Count - 1; i++)
    {
        for (int j = i + 1; j < ar.Count; j++)//j是i后面的字符
        {
            if (ar[i].Equals(ar[j])) 
            {
                ar.RemoveAt(j);
                j--;//回退j
            }
        }
    }
    Console.Write("去除重复项后的数字:");
    foreach (var v in ar)

    {
        Console.Write("{0} ",v); 
    }

    Console.ReadLine();
}
9、判断并转换整数

        输入一个字符串,判断如果全是数字,将其转换成为一个整数,若包含其他符号,给出错误提示。

方法一:

 static void Main(string[] args)
 {
     //方法1,输入的是连续字符串时可用
     string str;
     Console.Write("请输入一个字符串:");
     str = Console.ReadLine();
     bool flag = true;
     foreach (char x in str)
     {
         if (x < '0' || x > '9')
         {
             flag = false;
             break;
         }
     }
     //if (flag) Console.WriteLine("整数为:{0}", str);//可以直接输出,但不符合题意,未转换为整数
     if (flag) Console.WriteLine($"整数为:{int.Parse(str)}");
         else Console.WriteLine("输入错误!");

     Console.ReadLine();
 }

方法二:

static void Main(string[] args)
{
    //方法2,比较复杂,输入的是用空格或逗号隔开的字符串时可用
    ArrayList ar = new ArrayList();
    char[] fg = { ',', ' ', ',' };//分割用的符号
    Console.Write("请输入一串数字,用空格或逗号隔开:");
    string st1 = Console.ReadLine();
    string st2 = "";
    bool flag = true;
    ar.AddRange(st1.Split(fg));
    foreach (var i in ar)
    {
        if (char.Parse((string)i) < '0' || char.Parse((string)i) > '9')
        {
            flag = false;
            break;
        }
        st2 = st2 + i;
    }
    if (flag) Console.WriteLine("连接后的整数为:{0}", int.Parse(st2));
    else Console.WriteLine("输入错误");

    Console.ReadLine();
}
10、奇数和偶数

        输入20个正整数,分别统计并输出其中的奇数和偶数的个数,并分类输出所有奇数和偶数。

 static void Main(string[] args)
 {
     ArrayList ar = new ArrayList();
     ArrayList or = new ArrayList();
     ArrayList jr = new ArrayList();
     char[] fg = { ',', ' ', ',' };//分割用的符号
     int js = 0, os = 0;
     Console.Write("请输入20个数字,用空格或逗号隔开:");
     string st1 = Console.ReadLine();
     ar.AddRange(st1.Split(fg));
     for (int i = 0; i < ar.Count; i++) 
     {
         if (int.Parse((string)ar[i]) % 2 == 0)
         {
             or.Add(ar[i]);
             os++;
         }
         else
         {
             jr.Add(ar[i]);
             js++; }
     }
     Console.WriteLine("奇数有{0}个,分别是:",js);
     foreach( var i in jr )
     {
         Console.Write("{0} ", i);
     }
     Console.WriteLine();
     Console.WriteLine("偶数有{0}个,分别是:",os);
     foreach (var i in or)
     {
         Console.Write("{0} ", i);
     }
     Console.ReadLine();
 }
11、数字排序

        从终端输入5个数,按从小到大的顺序输出。

方法一:

static void Main(string[] args)
{

    ArrayList ar = new ArrayList();
    char[] fg = { ',', ' ', ',' };//分割用的符号
    Console.Write("请输入5个数字,用空格或逗号隔开:");
    string st1 = Console.ReadLine();
    string[] strings = st1.Split(fg);
    foreach (string s in strings)
    {
        ar.Add(int.Parse(s));//必须转换为数字后再添加到arraylist
    }
    ar.Sort();//排序
    Console.WriteLine("从小到大排序后为:");
    foreach (var i in ar)
    {
        Console.Write("{0} ", i);
    }

    Console.ReadLine();
}

方法二:

static void Main(string[] args)
{
    int[] num = new int[5];
    int temp;
    Console.WriteLine("请输入5个数");
    for (int i = 0; i < num.Length; i++)
    {
        Console.Write("输入第{0}个数:", i + 1);
        num[i] = int.Parse(Console.ReadLine());
    }
    for (int i = 0; i < num.Length - 1; i++)
    {
        for (int j = i + 1; j < num.Length; j++)
        {
            if (num[i] > num[j])
            {
                temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
    }
    Console.Write("从小到大顺序输出为:");
    //for (int i = 0; i < num.Length; i++) Console.Write("{0} ", num[i]);//for循环输出
    foreach (int i in num)//foreach循环输出
    {
        Console.Write("{0} ", i);
    }

    Console.ReadLine();
}
12、计算负数

        从键盘读入20个数据到数组中,统计其中负数的个数,并计算这些负数之和。

方法一:

static void Main(string[] args)
{
    //方法1,输入的时候比较麻烦
    int[] num = new int[20];
    int sum = 0, count = 0;
    Console.WriteLine("请输入20个整数");
    for (int i = 0; i < num.Length; i++)
    {
        Console.Write("请输入第{0}个数字:",i+1);
        num[i] = int.Parse(Console.ReadLine());
        if (num[i] < 0)
        {
            sum += num[i];
            count++;
        }
    }
    Console.WriteLine("负数的个数为:{0},和为:{1}", count, sum);

    Console.ReadLine();
}

方法二:

static void Main(string[] args)
{
    //方法2,略复杂,但可以随意输入
    char[] fg = { ',', ' ', ',' };//分割用的符号
    int count = 0;
    int sum = 0;
    Console.Write("请输入20数字,用空格或逗号隔开:");
    string st1 = Console.ReadLine();
    string[] strings = st1.Split(fg);
    foreach (string s in strings)
    {
        if (int.Parse(s) < 0)
        {
            count++;
            sum += int.Parse(s);
        }
    }
    Console.WriteLine("共有负数{0}个,它们的和是:{1}", count, sum);

    Console.ReadLine();
}
13、找出不能同时被2和5整除的数

        求n以内(不包括n)不能同时被2和5整除(能被2或者5整除但不能同时被整除)的所有自然数之和的平方根s,n从键盘输入。

static void Main(string[] args)
{
    Console.Write("请输入n:");
    int sum = 0;int n;
    n=int.Parse(Console.ReadLine());
    for(int i = 0; i < n; i++) 
    {
        if ((i % 5 == 0 && i % 2 != 0) || (i % 5 != 0 && i % 2 == 0))
        //if(((i % 2 == 0) || (i % 5 == 0)) && !((i % 2 == 0) && (i % 5 == 0)))
        {
            sum += i;
        }
    }
    Console.WriteLine("{0}以内不能同时被2和5整除的自然数和为{1},和的平方根是{2}",n,sum,Math.Sqrt(sum));
    Console.ReadLine();
}
14、数字转星期

        输入1~7之间的一个数字,输出它对应的星期几。例如输入1 输出Monday。

 static void Main(string[] args)
 {
     Console.Write("请输入1到7的数字:");
     int w=int.Parse(Console.ReadLine());
     switch(w)
     {
         case 1:
             Console.WriteLine("星期一Monday");
             break;
         case 2:
             Console.WriteLine("星期二Tuesday");
             break;
         case 3:
             Console.WriteLine("星期三Wednesday");
             break;
         case 4:
             Console.WriteLine("星期四Thursday");
             break;
         case 5:
             Console.WriteLine("星期五Friday");
             break;
         ca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值