C#常见算法题目

博客给出多个 C# 相关的算法和程序设计题目,包括求数列第 30 个数、设计程序实现猫叫老鼠逃主人醒、字符串反转、判断学生参赛情况,还有将数字字符串转为整数等题目,部分题目转载自其他博客。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    //冒泡排序
    public class bubblesorter
    {
        public void sort(int[] list)
        {
            int i, j, temp;
            bool done = false;
            j = 1;
            while ((j < list.Length) && (!done))
            {
                done = true;
                for (i = 0; i < list.Length - j; i++)
                {
                    if (list[i] > list[i + 1])
                    {
                        done = false;
                        temp = list[i];
                        list[i] = list[i + 1];
                        list[i + 1] = temp;
                    }

                }

                    j++;
            }

        }

    }

    //选择排序
    public class selectionsorter
    {
        private int min;
        public void sort(int[] list)
        {
            for (int i = 0; i < list.Length - 1; i++)
            {
                min = i;
                for (int j = i + 1; j < list.Length; j++)
                {
                    if (list[j] < list[min])
                        min = j;
                }

                int t = list[min];
                list[min] = list[i];
                list[i] = t;
            }

        }

    }

    //插入排序
    public class insertionsorter
    {
        public void sort(int[] list)
        {
            for (int i = 1; i < list.Length; i++)
            {
                int t = list[i];
                int j = i;
                while ((j > 0) && (list[j - 1] > t))
                {
                    list[j] = list[j - 1];
                    --j;
                }

                list[j] = t;
            }

        }

    }

 

2.有一列数1,1,2,3,5,........求第30个数.

 

public class MainClass
{
    public static void Main()
    {
        Console.WriteLine(Foo(30));
    }

    public static int Foo(int i)
    {
        if (i <= 0)
            return 0;
        else if (i > 0 && i <= 2)
            return 1;
        else return Foo(i - 1) + Foo(i - 2);
    }

}

 

3. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

 

    public delegate void SubEventHandler(); 
    public abstract class Subject 
    
        public event SubEventHandler SubEvent; 
        protected void FireAway() 
        
            if (this.SubEvent != null) 
                this.SubEvent(); 
        }
   
    }
 
    public class Cat : Subject 
    {  
        public void Cry() 
        
            Console.WriteLine(cat cryed.); 
            this.FireAway(); 
        }
 
    }
 
    public abstract class Observer 
    
        public Observer(Subject sub) 
        
            sub.SubEvent += new SubEventHandler(Response); 
        }
 
        public abstract void Response();    
    }
 
    public class Mouse : Observer 
    
        private string name; 
        public Mouse(string name, Subject sub) : base(sub) 
        {   
            this.name = name; 
        }
 
        public override void Response() 
        
            Console.WriteLine(name +  attempt to escape!); 
        }
 
    }
 
    public class Master : Observer 
    
        public Master(Subject sub) : base(sub){} 
        public override void Response() 
        
            Console.WriteLine(host waken); 
        }
 
    }
 
    class Class1 
    
        static void Main(string[] args) 
        
            Cat cat = new Cat(); 
            Mouse mouse1 = new Mouse(mouse1, cat); 
            Mouse mouse2 = new Mouse(mouse2, cat); 
            Master master = new Master(cat); 
            cat.Cry(); 
        }
 

    }
 

 

4.有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。

 

5.A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
  人参加了竞赛:

   (1)A参加时,B也参加;

   (2)B和C只有一个人参加;

   (3)C和D或者都参加,或者都不参加;

   (4)D和E中至少有一个人参加;

   (5)如果E参加,那么A和D也都参加。

        static void Main(string[] args)
        {

            char[] name={'A','B','C','D','E'};
            int[] value = new int[5];
            for (value[0]=0;value[0]<2;value [0]++)
                for (value[1]=0; value[1] < 2; value[1]++)
                    for (value[2]=0; value[2] < 2; value[2]++)
                        for (value[3]=0; value[3] < 2; value[3]++)
                            for (value[4]=0; value[4] < 2; value[4]++)
                            {
                                if ((value[1] >= value[0]) && (value[1] + value[2] == 1) && (value[2] == value[3]) && (value[3] + value[4]==1) && (value[4]==0 || value[4]==1 && value[0]==1 && value[3]==1))
                                {
                                    for (int i = 0; i < 5; i++)
                                    {
                                        if (value[i]==1)
                                        {
                                            Console.WriteLine("{0}参加", name[i]);
                                        }

                                        else
                                        {
                                            Console.WriteLine("{0}不参加", name[i]);
                                        }

                                    }

                                }

                            }

}

 

6.题目:
a user entered an integer value into a text box. Without using a buit-in library, convert the numeric string to its integer representation.

 

static int StringTolnt(string s)
        {
            int sum = 0;
            for (int i = 0; i < s.Length; i++)
                sum = sum * 10 + (s[i] - '0');
            return sum;
        }

 

恋花望月轻轻唱 听雨随风悄悄追

转载于:https://www.cnblogs.com/zhangchenliang/p/3699644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值