C#基础入门典型例题(3)

来源:互联网 发布:地外文明知乎 编辑:程序博客网 时间:2024/05/02 04:30

这次的试题可能对初学者有些难度,希望能对你有所帮助。如有疑问可以留言。

1.输入一组成绩(5个),如果是90分往上,评分为A,80-89为B,70-79为C,60-69为D,60分以下为E
2.输入一个多位数,颠倒后输出
3.找出四位整数中,满足下列关系的数字
(ab+cd)(ad+bc)=abcd
例如:(4*1+0*0)*(4*0+1*0)=4*1*0*0
4.求完数,例如6=1+2+3
5.求100以内的素数
6.斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?(hard)

1.输入一组成绩(5个),如果是90分往上,评分为A,80-89为B,70-79为C,60-69为D,60分以下为E

for (int i = 0; i < 5; i++)            {                int sc = Convert.ToInt32(Console.ReadLine());              //将如数的数字赋值给sc                if (sc > 89)                    Console.WriteLine("该生成绩为A");                else if (sc > 79)                                           //else if主要用于范围判断 这里判断的是大于79小于90的成绩                    Console.WriteLine("该生成绩为B");                else if (sc > 69)                    Console.WriteLine("该生成绩为C");                else if (sc > 59)                    Console.WriteLine("该生成绩为D");                else                    Console.WriteLine("该生成绩为E");            }         

2.输入一个多位数,颠倒后输出

Console.WriteLine("请输入一个数字");                       int num;            if (int.TryParse(Console.ReadLine(), out num) == true)          //判断输入的字符串是否为数字            {                string result = "";                while (num != 0)                                                            {                    int temp = num % 10;                    result += temp;                    num /= 10;                }                Console.WriteLine(result);            }            else            {                Console.WriteLine("请输入一个整数");                UpDownNumber();                                             //若输入的不是数字,则重新输入            }

3.找出四位整数中,满足下列关系的数字
(ab+cd)(ad+bc)=abcd
例如:(4*1+0*0)*(4*0+1*0)=4*1*0*0
这道题比较简单,这里就不再过多解释了。

 for (int n = 1000; n < 10000; n++)            {                int sigma = n;                int m = 1000;                int[] result = new int[4];                for (int i = 0; i < 4; i++)                {                    int temp = sigma / m;                    sigma = sigma - temp * m;                    m /= 10;                    result[i] = temp;                }                int a = result[0];                int b = result[1];                int c = result[2];                int d = result[3];                int num = a * b;                int num1 = c * d;                int num2 = a * d;                int num3 = b * c;                int num4 = a * b * c * d;                if ((num+num1)*(num2+num3) == num4)                {                    Console.WriteLine(n);                    Console.Write("({0}*{1}+{2}*{3})",a,b,c,d);                    Console.Write("({0}*{3}+{1}*{2})", a, b, c, d);                    Console.WriteLine("={0}*{1}*{2}*{3}", a, b, c, d);                }            }

4.求完数,例如6=1+2+3(1000以内)
我们首先应该先找出要判断数字的因子,再使该数的所有因子相加,判断他们的和是否与原数字相等。
在这里我们可以将 判断数字的因子,获取该数所有因子相加的字符串,判断他们的和是否与源数字相等,写成三个方法,方法之间互相调用。

public void PerfectNumber()        {            int temp = 0;            for (int i = 0; i < 1000; i++)            {                for (int j = 0; j < i; j++)                {                    temp = GetNumber(i);                //获取该数的因子的和                    if (temp == i)                      //如果该数的因子的和等于该数,那么输出该数                    {                        Console.Write(temp + "=");                        Console.WriteLine(GetResult(i));    //获取该数的所有因子和的字符串并输出                        break;                    }                }            }        }        static int GetNumber(int n)        {            int temp = 0;            for (int i = 1; i < n; i++)            {                if (n % i == 0)                {                    temp += i;                }            }            return temp;        }        static string GetResult(int n)        {            string result = " ";            for (int i = 1; i < n; i++)            {                if (n % i == 0 )                {                    if (i >= n / 2)                        result += i;                    else                        result += i + "+";                }            }            return result;        }

输出结果为: 6,28,496
5.求100以内的素数
素数的定义为除了1和它本身以外不再有其他的因数。
首先我们要判断是否为素数,然后输出出来,我们可以用两个方法来实现。

public void PrimeNumber()        {            for (int n = 1; n < 100; n++)            {                if (getPN(n))                    Console.WriteLine(n);            }        }        bool getPN(int n)        {            bool b = false;            if (n > 1 && n < 4)                b = true;            for (int i = 4; i  < n; i++)            {                if (n % i == 0)                {                    b = false;                    break;                }                else                    b = true;            }            return b;        }

运行结果 2,3,5,6,7,9,11,13…….

在这个算法里面,我们可以精简运算过程,使计算机只计算上述算法过程的根号倍即可,基本原理如下:
如果一个数不是素数, 那它除了1和他本身一定还有别的约数,假如这个数是num
num=m*n 一定可以分解为两个整数相乘
设一个命题 ,num可以分解为两个数相乘且这两个数都大于num在平方根
m>sqrt(num) n>sqrt(num) 根据数学知识可以知道m*n>num 这与命题相反,所以命题是假的
所以合数一定至少有一个不大于sqrt(num)约数,只要找到这个数就可以了。

6.斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?(hard)
在这个经典算法里面最重要的就是明确变量之间的关系,下个月的成年兔子数量等于这个月的幼兔数量加上成兔数量,下个月的幼兔数量等于这个月成兔的数量。明确了以上的关系,我们可以很简单的写出下列代码。

public void FibonacciSequence()        {            int Rabbit=1;            int rabbit = 0;            int sum=0;            for (int month = 1; month <= 1000007; month++)            {                sum = Rabbit + rabbit;                                Console.WriteLine("第{0}个月,幼崽有{1}对,成年兔子有{2}对,总对数为{3}",month,rabbit,Rabbit,sum);                rabbit = Rabbit;                Rabbit = sum;            }                   }

运行结果:
这里写图片描述

0 0
原创粉丝点击