• C# 水仙花数


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

    namespace NarcissusNumber
    {
    class Program
    {
    public static void Main(string[] args)
    {
    int a;
    string s;
    do
    {
    Console.WriteLine(
    "3----找出三位数所有的水仙花数!");
    Console.WriteLine(
    "4----找出四位数所有的水仙花数!");
    Console.WriteLine(
    "5----找出五位数所有的水仙花数!");
    Console.WriteLine(
    "34---你选择找出三、四位数的水仙花数!");
    Console.WriteLine(
    "45---你选择找出四、五位数的水仙花数!");
    Console.WriteLine(
    "35---你选择找出三、四、五位数的水仙花数!");
    Console.WriteLine(
    "0----退出");
    Console.Write(
    "请选择操作(0,3,4,5, 34, 45, 35):");
    s
    = Console.ReadLine();
    a
    = int.Parse(s);
    switch (a)
    {
    case 0:Console.WriteLine("你选择退出!");
    break;
    case 3:Console.WriteLine("你选择找出三位数的水仙花数!");
    Funtion(a);
    break;
    case 4:Console.WriteLine("你选择找出四位数的水仙花数!");
    Funtion(a);
    break;
    case 5:Console.WriteLine("你选择找出五位数的水仙花数!");
    Funtion(a);
    break;
    case 34: Console.WriteLine("你选择找出三、四位数的水仙花数!");
    Funtion(a);
    break;
    case 45: Console.WriteLine("你选择找出四、五位数的水仙花数!");
    Funtion(a);
    break;
    case 35: Console.WriteLine("你选择找出三、四、五位数的水仙花数!");
    Funtion(a);
    break;
    default: Console.WriteLine("你的输入是不合理的!请重先选择!");
    break;
    }
    Console.WriteLine();
    // Console.Clear(); /*清屏*/
    } while (a!=0);
    }
    /*******************输出水仙花数的算法*******************************/
    static int Funtion(int s)
    {
    int i;
    int j;
    int k;
    int n;
    int m;
    int l;
    if (s==3) /*输出100-999的水仙花数*/
    {
    for(n=100;n<999;n++)
    {
    i
    = n / 100;
    j
    = n / 10 - i * 10;
    k
    = n % 10;
    if (n==Recursion(i,s) + Recursion(j,s) + Recursion(k,s))
    Console.WriteLine(n);
    }
    }
    else if (s == 4) /*输出1000-9999的水仙花数*/
    {
    for (n = 1000; n <= 9999; n++)
    {
    i
    = n / 1000;
    j
    = n / 100 - i * 10;
    k
    = n / 10 - i * 100 - j * 10;
    l
    = n % 10;
    if (n == Recursion(i, s) + Recursion(j, s) + Recursion(k, s) + Recursion(l, s))
    Console.WriteLine(n);
    }
    }
    else if(s==5) /*输出10000-99999的水仙花数*/
    {
    for (n = 10000; n <= 99999; n++)
    {
    i
    = n / 10000;
    j
    = n / 1000 - i * 10;
    k
    = n / 100 - i * 100 - j * 10;
    l
    = n / 10 - i * 1000 - j * 100 - k * 10;
    m
    = n % 10;
    if (n == Recursion(i, s) + Recursion(j, s) + Recursion(k, s) + Recursion(l, s) + Recursion(m, s))
    Console.WriteLine(n);
    }
    }
    else if (s ==34) /*输出100-9999的水仙花数*/
    {
    for (n = 100; n <= 9999; n++)
    {
    i
    = n / 1000;
    j
    = n / 100 - i * 10;
    k
    = n / 10 - i * 100 - j * 10;
    l
    = n % 10;
    if (i != 0 && n==Recursion(i, 4) + Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4))
    Console.WriteLine(n);
    if (n== Recursion(j, 3) + Recursion(k, 3) + Recursion(l, 3))
    Console.WriteLine(n);
    }
    }
    else if(s == 45) /*输出1000-9999的水仙花水*/
    {
    for (n = 1000; n <= 99999; n++)
    {
    i
    = n / 10000;
    j
    = n / 1000 - i * 10;
    k
    = n / 100 - i * 100 - j * 10;
    l
    = n / 10 - i * 1000 - j * 100 - k * 10;
    m
    = n % 10;
    if (i != 0 && n == Recursion(i, 5) + Recursion(j, 5) + Recursion(k, 5) + Recursion(l, 5) + Recursion(m, 5))
    Console.WriteLine(n);
    if (n == Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4) + Recursion(m, 4))
    Console.WriteLine(n);

    }
    }
    else /* 输出100-99999的水仙花数*/
    {
    for (n = 100; n <= 99999; n++)
    {
    i
    = n / 10000;
    j
    = n / 1000 - i * 10;
    k
    = n / 100 - i * 100 - j * 10;
    l
    = n / 10 - i * 1000 - j * 100 - k * 10;
    m
    = n % 10;
    if (i != 0 && n == Recursion(i, 5) + Recursion(j, 5) + Recursion(k, 5) + Recursion(l, 5) + Recursion(m, 5))
    Console.WriteLine(n);
    else if (j != 0 && n == Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4) + Recursion(m, 4))
    Console.WriteLine(n);
    else if (n== Recursion(k, 3) + Recursion(l, 3) + Recursion(m, 3))
    Console.WriteLine(n);
    }
    }
    return 0;
    }
    /*********************用递归求数n的k次方*******************************/
    static int Recursion(int n,int k)
    {
    int m;
    if (k == 1) return n;
    else
    {
    m
    =n*Recursion(n,k-1);
    }
    return m;
    }
    }
    }
  • 相关阅读:
    dlo,学习清单
    OO第一单元优化博客
    BUAA Summer Practice 2017 #1 字符串专场
    OO第一次博客作业
    2018.12.16程设串讲
    助教工作总结 3-22
    软件工程助教3.15总结
    大数据应用技术课程实践--选题与实践方案
    第十五次作业-手写数字识别-小数据集
    第十四次作业-深度学习-卷积
  • 原文地址:https://www.cnblogs.com/beeone/p/1989455.html
Copyright © 2020-2023  润新知