经典实例

综合实例


水仙花数(Narcissistic number):

也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 水仙花数
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请按任意键继续:");
            Console.ReadLine();
            Console.WriteLine("100到1000之间的水仙花数为:");
            for (int i = 100; i < 1000;i++ )
            {
                int gw = i % 10;                    //求个位
                int sw = i / 10 % 10;               //求十位
                int bw = i / 100 % 10;              //求百位
                if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)   //判断是否为水仙花数
                {
                    Console.WriteLine(i);
                }
            }
            Console.ReadKey();
        }
    }
}

100-999中的水仙花数


桃子问题(经典问题):

条件桃子3元一个,3个桃核可以换一个桃子

金额(可以由用户自己输入):100元,求出最多吃多少个桃子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 买桃问题
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {

                //提示并储存输入的数字
                Console.WriteLine("请输入你的金钱(桃子3元一个):");
                int input = int.Parse(Console.ReadLine());

                //把输入给钱,单价定义为3,定义exchan:1次机会等于3个桃核
                int money = input, price = 3, exchange = 3;
                int eated, kernel;

                //eated:第一次换取得数量
                //kerner:第一次吃完后的桃核数量

                eated = money / price;
                kernel = eated;

                //当kerner大于机会的要求时,进入循环
                while (kernel >= exchange)
                {
                    int peach = kernel / exchange;          //peach:用桃核换取得桃子数量
                    int left = kernel % exchange;           //left:换桃子后的桃核余数(肯定小于3)
                    eated += peach;                         //累加吃的桃子数量
                    kernel = left + peach;                  //累加桃核数量
                }
                Console.WriteLine("最多可以吃到" + eated + "个桃子");  //输出
            }
        }
    }
}


哥德巴赫猜想(世界近代三大数学难题之一):

哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明。[1]  因现今数学界已经不使用“1也是素数”这个约定,原初猜想的现代陈述为:任一大于5的整数都可写成三个质数之和。欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。今日常见的猜想陈述为欧拉的版本。把命题"任一充分大的偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b"。1966年陈景润证明了"1+2"成立,即"任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和"。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 买桃问题
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {

                //提示并储存输入的数字
                Console.WriteLine("请输入你的金钱(桃子3元一个):");
                int input = int.Parse(Console.ReadLine());

                //把输入给钱,单价定义为3,定义exchan:1次机会等于3个桃核
                int money = input, price = 3, exchange = 3;
                int eated, kernel;

                //eated:第一次换取得数量
                //kerner:第一次吃完后的桃核数量

                eated = money / price;
                kernel = eated;

                //当kerner大于机会的要求时,进入循环
                while (kernel >= exchange)
                {
                    int peach = kernel / exchange;          //peach:用桃核换取得桃子数量
                    int left = kernel % exchange;           //left:换桃子后的桃核余数(肯定小于3)
                    eated += peach;                         //累加吃的桃子数量
                    kernel = left + peach;                  //累加桃核数量
                }
                Console.WriteLine("最多可以吃到" + eated + "个桃子");  //输出
            }
        }
    }
}


斐波那契数列(Fibonacci sequence):

又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 斐波拉数列
{
    class Program
    {
        static void Main(string[] args)
        {
            //获取用户输入的长度
            Console.WriteLine("请输入斐波拉数列的长度:");
            int input = int.Parse(Console.ReadLine());

            //创建一个数组
            int[] arr = new int[input];
            for (int i = 0; i < arr.Length; i++)
            {

                //i=0或1,输出1
                if (i <= 1)
                {
                    arr[i] = 1;
                    Console.Write(arr[i] + "\t");
                }

                //数组索引为i的元素值=数组索引为i-1的值+数组索引为i-2的值
                else
                {
                    arr[i] = arr[i - 1] + arr[i - 2];
                    Console.Write(arr[i] + "\t");
                }
            }

            Console.ReadLine();

        }
    }
}


分解质因数:

每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 分解质因数
{
    class Program
    {
        static void Main(string[] args)
        {

               Console.WriteLine("请输入非质数后回车!");
               int inNumber = int.Parse(Console.ReadLine());//将输入转换为int类型

               string texRet = inNumber.ToString() + " = ";//将inNumber转换为字符串+等号

               //i为被除数,一直增加,直到找到能被除的数
               for (int i = 2; i <= inNumber; i++)
               {
                   if (inNumber % i == 0)
                   {
                       texRet += i.ToString() + "*";//texRet=texRet+i转换成字符串+*号
                       inNumber = inNumber / i;//将inNumber重新取值
                       i--;
                   }
               }
               texRet = texRet.Substring(0, texRet.Length - 1);
               Console.WriteLine(texRet);
               Console.ReadKey();

            /*
            while (true)
            {
                Console.WriteLine("请输入一个非质数:");
                Console.ReadLine();
                int num = Convert.ToInt32(Console.ReadLine());
                for (int i = 2; i < num; i++)//循环  1没有质因数
                {
                    while (num != i)//num==i的话跳出循环当然num==i你也进不去
                    {
                        if (num % i == 0)//num%i为0就继续执行
                        {
                            Console.Write(num+"="+i + "*");//输出质数i的值
                            num /= i;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                Console.WriteLine(num);//这个是跳出循环的值,没得求了,不跳出来不行啊,当然也是质数
            }
*/

        }
    }
}


反序输出:

用户输入字符串后,字母反序输出。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 反序输出
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输出一个字符串:");
            string input = Console.ReadLine();

        //定义一个空字符串reverse
            string reverse = "";

        //从大到小循环
            for (int i = input.Length - 1; i >= 0; i--)
            {
                //索引从大到小存入新字符串内
                reverse = reverse + input[i];
            }

            Console.WriteLine(reverse + ":串字符个一出输请");
            Console.ReadLine();
        }
    }
}


日历控制台:

C#基本的知识实现日历的输出

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 控制台日历
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {

                int year, month;

                //死循环只有全部输对才能跳出进行下一步
                while (true)
                {
                    Console.WriteLine("请输入年份(1900-2100):");
                    year = int.Parse(Console.ReadLine());
                    if (year < 1900 || year > 2100)
                    {
                        Console.WriteLine("年份输入错误,请重新输入");
                        Console.ReadLine();
                        Console.Clear();
                    }
                    else
                    {
                        Console.WriteLine("请输入月份(1-12):");
                        month = int.Parse(Console.ReadLine());
                        if (month < 1 || month > 12)
                        {
                            Console.WriteLine("月份输入错误,请重新输入:");
                            Console.ReadLine();
                            Console.Clear();
                        }
                        else
                        {
                            break;//跳出循环

                        }
                    }
                }

                //定义一个集合
                List<string> dates = new List<string>();

                //计算从1900到输入的年份一共有多少年
                int crossDayOfYear = 0;
                for (int i = 1900; i < year; i++)
                {
                    if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
                    {
                        crossDayOfYear += 366;
                    }
                    else
                    {
                        crossDayOfYear += 365;//并且累加天数
                    }
                }

                //计算从1月到输入的月份一共有多少个月
                int crossDayMonth = 0;
                for (int i = 1; i < month; i++)
                {

                    //2月里面有闰年和平年两种情况
                    if (i == 2)
                    {
                        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                        {
                            crossDayMonth += 29;
                        }
                        else
                        {
                            crossDayMonth += 28;
                        }
                    }

                    //大月的情况
                    else if (i <= 7 && i % 2 != 0 || i >= 7 && i % 2 == 0) { crossDayMonth += 31; }

                    //小月的情况
                    else { crossDayMonth += 30; }
                }

                int crossDays = crossDayMonth + crossDayOfYear;//crossDays:月份加年份一共有多少天
                int dayOfweek = crossDays % 7 + 1;//计算是星期几
                int space = dayOfweek - 1;//日历前面的空白数量

                for (int i = 0; i < space; i++)
                {
                    dates.Add("");//循环space次,并添加space次空白
                }

                //年和月计算了,现在计算用户输入的几号的天数
                int days;
                if (month == 2)
                {
                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { days = 29; }
                    else { days = 28; }
                }
                else if (month <= 7 && month % 2 != 0 || month >= 7 && month % 2 == 0) { days = 31; }
                else
                {
                    days = 30;
                }

                //添加几号进集合
                for (int i = 1; i < days; i++)
                {
                    dates.Add(i.ToString());

                }

                //输出
                Console.WriteLine("*********************************************************");
                Console.Write("一\t二\t三\t四\t五\t六\t日");
                for (int i = 0; i < dates.Count; i++)
                {
                    //到7位是换行,日历一排七位
                    if (i % 7 == 0) { Console.WriteLine("\t"); }
                    Console.Write(dates[i] + "\t");
                }
                Console.WriteLine();
                Console.WriteLine("*********************************************************");

                Console.WriteLine("按回车键继续");
                Console.ReadLine();
                Console.Clear();
            }
        }
    }
}



经典实例

时间: 2024-10-27 12:40:45

经典实例的相关文章

iptables经典实例

Q:一局域网192.168.1.0/24,有web和ftp服务器192.168.1.10.192.168.1.11,网关linux,内网eth0,IP为192.168.1.1,外网eth1,IP为a.b.c.d,怎样作NAT能使内外网都能访问公司的服务器? A:# web# 用DNAT作端口映射iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10# 用SNAT作源地址转换(关键),

php之复制文件——php经典实例

php之复制文件--php经典实例 <?php function dirCopy($dir1,$dir2){ //判断是否目录存在 if(!file_exists($dir2) || !is_dir($dir2)){ //不是文件或目录 就创建 mkdir($dir2); } //打开 $dd=opendir($dir1); //遍历 while(false !== ($f=readdir($dd))){ //过滤 if($f=="." || $f==".."

JavaScript 实现的checkbox经典实例分享

JavaScript 实现的checkbox经典实例分享 本文主要给大家分享的是JavaScript实现checkbox多项选择的经典代码,非常的简单实用,有需要的小伙伴可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5

《C#并发编程经典实例》笔记

1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期研读了不少书籍,其中<C#并发编程经典实例>给我的印象还是比较深刻的.当然,这可能是由于近段日子看的书大多嘴炮大于实际,如<Head First设计模式><Cracking the coding interview>等,所以陡然见到一本打着"实例"旗号的

《PHP经典实例(第2版)》

PHP经典实例(第2版)能够为您节省宝贵的Web开发时间.有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解.<PHP经典实例(第2版)>将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序.在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,<PHP经典实例(第2版)>中内容涵盖了:表单处理:Session管理:数据库交互:使用Web服务. 从初学者常见的问题到高级Web编程技术,这本包含了丰富的.具有实际应用价值的

c#初学-多线程中lock用法的经典实例

本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待.这是通过在代码块运行期间为给定对象获取互斥锁来实现的. 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问

php简单文件管理器——php经典实例

<html> <head> <title>文件管理</title> <meta charset='utf-8' /> </head> <body> <?php //定义要查看的目录 $dir="/"; //先判断$_GET['a']是否已经传值 防止NOTICE错误 if(isset($_GET['a'])){ //选择判断要执行的操作 switch($_GET['a']){ case 'crea

Clojure经典实例

这篇是计算机类的优质预售推荐>>>><Clojure经典实例> 功能性编程全面指南 编辑推荐 本书涵盖150多个具体实例,展示了有经验的Clojure开发者如何用这门JVM语言完成各种编程任务.解决方案全面广泛:从构建动态网站和应用数据库到网络通信.云计算.高级测试策略等,面面俱到.这些实例源于全球60多名顶级Clojure开发者. 本书的每个实例不仅可以即学即用,而且其中提供的关于解决方案原理的讨论,让读者可以在模式.方法和技巧上举一反三,从而在遇到本书未提及的其他编

Python机器学习经典实例(高清中文版PDF+高清英文版PDF+源代码)

最新出版的Python机器学习经典实例.高清中文版和高清英文版对比学习, 带目录书签,可复制粘贴:讲解详细并配有源代码. 下载:https://pan.baidu.com/s/170qEhYJ4T4IlQwuwASRIfA 一块儿学习探讨,支持正版书籍. 在博客写python学习心得. 原文地址:http://blog.51cto.com/3215120/2300021