C# 经典小例子2(基础语法学习)

(1)

//给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。90分以上为’A’80~90分为’B’,70~79分为’C’,60分以下为’D’。

        static void getGrade()
        {
            Console.WriteLine("put into a score:");
            int score = Convert.ToInt32(Console.ReadLine());
            if (score < 0 && score > 100)
            {
                Console.WriteLine("Score Error! Plase Again!");
            }
            //如果case后面有语句,break不能省略
            //break可以直接跳出switch语句
            //switch语句可以没有default语句
            //default位置是任意的
            //case的位置也可以是任意的
            switch (score / 10)
            {
                case 10:
                    Console.WriteLine("full mark");
                    break;
                case 9:
                    Console.WriteLine("A");
                    break;
                case 8:
                    Console.WriteLine("B");
                    break;
                case 7:
                    Console.WriteLine("C");
                    break;
                case 6:
                    Console.WriteLine("D");
                    break;
                default:
                    Console.WriteLine("fail");
                    break;
            }
        }
(2)

//求1+2!+3!+4!+…+20!...+n!

        //普通方法
        static void getSumFactorial()
        {
            Console.WriteLine("put into a integer,get its factorial");
            int num = Convert.ToInt32(Console.ReadLine());
            int sum = 0;
            for (int i = 1; i <= num; i++)
            {
                int product = 1;
                for (int j = 1; j <= i; j++)
                {
                    product *= j;
                }
                sum += product;
            }
            Console.WriteLine("result ={0}", sum);
        }
        //用递归方法求n!
        static void getSumFactorial1()
        {
            Console.WriteLine("put into a integer,get its factorial");
            int num = Convert.ToInt32(Console.ReadLine());
            int sum = 0;
            for (int i = 1; i <= num; i++)
            {
                int product = factorial(i);
                sum += product;
            }
            Console.WriteLine("result ={0}", sum);
        }

(3)

//求S=a+aa+aaa+...+aaa...aa之值,其中a是一个数字,n表示a的位数

        //法1
        static void getNSum1()
        {

            int sum = 0, a = 0, an = 0, count = 0, n;
            Console.Write("请输入一个数字:");
            a = Convert.ToInt32(Console.ReadLine());
            Console.Write("请输入位数:");
            n = Convert.ToInt32(Console.ReadLine());
            while (count < n)
            {
                an += a;
                Console.WriteLine("an = {0}", an);
                a = a * 10;
                Console.WriteLine("a = {0}", a);
                sum += an;
                Console.WriteLine("sum = {0}", sum);
                ++count;
                Console.WriteLine("count = {0}", count);
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }
        //法2
        static void getNSum()
        {

            Console.WriteLine("put into the integer ,weishu");
            int integer = Convert.ToInt32(Console.ReadLine());
            int weishu = Convert.ToInt32(Console.ReadLine());
            int sum = 0;
            for (int i = 1; i <= weishu; i++)
            {
                sum += integer * getTheNum(i);
            }
            Console.WriteLine(sum);
        }
        static int getTheNum(int value)
        {
            int sum = 0;
            Console.WriteLine("value={0}", value);
            for (int i = 1; i <= value; i++)
            {
                int product = 1;
                for (int j = 1; j <= i; j++)
                {
                    if (j == 1)
                    {
                        product = 1;
                    }
                    else
                    {
                        product *= 10;
                    }
                }
                sum += product;
            }
            Console.WriteLine(sum + "------");
            return sum;
        }

(4)

//输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

        static void getWaterFlowerNum(){
        
            //“水仙花数”是一个 各位数字立方之和等于该数本身。
            for (int i = 101; i <= 999; i++)
            {
                //得到百位上的数字
                int a = i / 100;
                //得到十位上的数字
                int b = (i - a * 100) / 10;
                //得到个位数字
                int c = i % 10;
                //如果各位数字的立方和等于该数本身,则打印该数
                if (a * a * a + b * b * b + c * c * c == i) {
                    Console.WriteLine ("waterflower: " + i);
                }
            }
        }

(5)

//编程将所有“水仙花数”打印出来,并打印其总个数。“水仙花数”是一个 各个位立方之和等于该整数的三位数。

        static void getaterFlower()
        {
            int count = 0;
            for (int i = 100; i < 1000; i++)
            {  
                int n100 = i / 100;
                int n10 = i / 10 % 10;
                int n = i  % 10;
                if (i == n100 * n100 * n100 + n10 * n10 * n10 + n * n * n)
                {
                    Console.WriteLine( i + "是水仙花数 ");
                    count++;
                }
            }
            Console.WriteLine("水仙花总数为:"+ count);
        }

(6)

//一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

        static void getANum()
        {
            int x = 0, y = 0;
            for (int i = 0;; i ++)
            {
               x =(int) Math.Sqrt(i + 100);
                Console.WriteLine("x = "+x);
                y = (int)Math.Sqrt(i + 100 + 168);
                Console.WriteLine("x = "+y);
                if (x * x == i + 100 && y * y == i + 100 + 168)
                {
                    Console.WriteLine("the Num is:{0}",i);
                    break;
                }
            }
        }

(7)

//有一分数序列:2/1,3/2,5/3,8/5,….,21/13,……前二十项之和。

(8)

 //给定某年某月某日,输出其为这一年的第几天。

        //法1
        static void getTheDay1()
        {
            Console.WriteLine("Date:20080808:");
            string str = Console.ReadLine();
            int year = Convert.ToInt32(str.Substring(0,4));
            int month = Convert.ToInt32(str.Substring(4,2));
            int day = Convert.ToInt32(str.Substring(6,2));
            int sum = 0;
            switch (month)
            {
                case 1: sum = 0; break;
                case 2: sum = 31; break;
                case 3: sum = 59; break;
                case 4: sum = 90; break;
                case 5: sum = 120; break;
                case 6: sum = 151; break;
                case 7: sum = 181; break;
                case 8: sum = 212; break;
                case 9: sum = 243; break;
                case 10: sum = 273; break;
                case 11: sum = 304; break;
                case 12: sum = 334; break;
                default: Console.WriteLine("error"); break;
            }
            bool isleapYear = isLeapYear(year);
            if (isleapYear && month > 2)
            {
                sum = sum + 1 + day;
            }
            else
            {
                sum = sum + 1;
            }
            Console.WriteLine("day num:" + sum);
        }
        static void getTheDay2()
        {
            int[] daysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            Console.WriteLine("Date:20080808:");
            string str = Console.ReadLine();
            int year = Convert.ToInt32(str.Substring(0,4));
            int month = Convert.ToInt32(str.Substring(4,2));
            int day = Convert.ToInt32(str.Substring(6,2));
            int sum = 0;
            for(int i = 0 ; i < month; i ++)
            {
                sum += daysInMonth[i];
            }

            bool isleapYear = isLeapYear(year);
            if (isleapYear && month > 2)
            {
                sum = sum + 1 + day;
            }
            else
            {
                sum = sum + 1;
            }
            Console.WriteLine("day num:" + sum);
        }
        //法2
        static bool isLeapYear(int year)
        {

            if (year % 400 == 0 || (year % 4 == 0 && year % 100 == 0)) {
                Console.WriteLine ("{0}year is LeapYear", year);
                return true;
            }
            else
            {
                Console.WriteLine ("{0}year is not  LeapYear", year);
                return false;
            }
        }
(9)

 //找出整型数组中最大和最小值及其所在位置i

        //法1:
        static void getMaxMinAndIndex()
        {
            int[] a={3,5,8,13,47,9};
            int[] b ={-23,45,14,65};
            //分别定义两个变量用来存放两个数组的最大值,初始值分别为两个数组中的第一个元素
            int max1 = a[0];
            int max2 = b[0];
            //定义两个变量用来存放两个数组的最小值,初始值分别为两个数组中的第一个元素
            int min1 = a [0];
            int min2 = b [0];
            //定义变量用来存储数组a中最大值和最小值的位置
            int indexMax1 = 0;
            int indexMin1 = 0;
            //定义两个变量用来存放数组b中最大值和最小值的位置
            int indexMax2 = 0;
            int indexMin2 = 0;
            //用最大值和最小值的初值与数组的其它元素进行比较,以得到最大值和最小值
            for (int i = 1; i < a.Length; i++) 
            {
                //与数组其它元素进行比较,得到最大值
                if (max1 < a [i]) {
                    
                    max1 = a [i];
                    //记录最大值所在数组中的下标
                    indexMax1 = i;
                }
                //最小值分别与数组里面的每个值进行比较,得到最小值
                if (min1 > a [i]) {
                    min1 = a [i];
                    //记录最小值所在数组中的下标
                    indexMin1 = i;
                }
            }
            //由于数组的下标是从0开始的,所以输出进下标值要加1
            Console.WriteLine ("数组a的最大值是:{0},位置是:{1},最小值是{2},位置是{3}",max1,indexMax1+1,min1,indexMin1+1);

            for (int j = 1; j < b.Length; j++)
            {
                //与数组其它元素进行比较,得到最大值
                if (max2 < b [j]) {
                    
                    max2 = b [j];
                    indexMax2 = j;
                }
                //最小值分别与数组里面的每个值进行比较,得到最小值
                if (min2 > b [j]) {
                   
                    min2 = b [j];
                    indexMin2 = j;
                }
            }
            Console.WriteLine ("数组b的最大值是:{0},位置是:{1},最小值是{2},位置是{3}",max2,indexMax2+1,min2,indexMin2+1);
        }

        //法2:先排序
        static void swapSort()
        {

            int [] arr = putintoArry();
            int[] arr1 = new int[arr.Length];
            for (int i = 0; i < arr.Length; i++)
            {
                    arr1[i] = arr[i];
            }
            //交换排序
            for (int i = 0; i < arr.Length - 1; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i] > arr[j])
                    {
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp; }
                }
            }

            printArry(arr);

            for (int i = 0; i < arr1.Length; i++)
            {
                if (arr[0] == arr1[i])
                {
                    Console.WriteLine("数组最小的值为:" + arr[0] + " 在原数组下标为:"+i );
                }
                if(arr[arr.Length - 1] == arr1[i])
                {
                    Console.WriteLine("数组最大的值为:"+arr[arr.Length - 1] + " 在原数组下标为:" + i);
                }
            }
        }
        //输入数组
        static int[] putintoArry()
        {

            Console.WriteLine("输入所要排序的个数:");
            int num = Convert.ToInt32(Console.ReadLine());
            int[] arr = new int[num];
            Console.WriteLine("输入所要排序的数据:");
            for (int i = 0; i < num; i++)
            {
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }
            return arr;
        }
        //打印数组
        static void printArry(int[] arry)
        {
            Console.WriteLine("排序后的顺序:");
            for (int i = 0; i < arry.Length; i ++)
            {
                Console.Write(arry[i]+"  ");
            }
        }
        
        //交换排序优化
        static void swapOptimizeSort()
        {
            Console.WriteLine("put into integers:");
            int num = Convert.ToInt32(Console.ReadLine());
            int[] arr=new int[num];
            for (int i = 0; i < num; i++)
            {
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }
            int now = 0;
            for (int i = 0; i < arr.Length - 1; i++)
            {
                now = i; 
                for (int j = i ; j < arr.Length; j++)
                {
                    if (arr[j] < arr[now])
                    {
                        now = j;
                    }
                }
                int temp = arr[now];
                arr[now] = arr[i];
                arr[i] = temp;
            }
            printArry(arr);
        }

        //冒泡排序
        static void bubbleSort()
        {
            Console.WriteLine("put into integers:");
            int num = Convert.ToInt32(Console.ReadLine());
            int[] arr=new int[num];
            for (int i = 0; i < num; i++)
            {
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }
            for (int i = 1; i < arr.Length - 1; i++)
            {
                for(int j = 0; j < arr.Length -i; j ++)
                {
                    if (arr[j] > arr[j + 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
            printArry(arr);
        }




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值