C#控制台实现数字型回文字符串判断

C#控制台实现数字型回文字符串判断

编制控制台程序实现功能:对于从键盘上输入的一个字符串数据,判断该字符串是否为回文字字符串。(如:123321正读反读都相同的字符串)
分析:
对于数组的赋初值,一般为:在定义时开辟好存储空间和存储容量(数组长度),以for循环以及parse方法将指定个数的字符串转换为指定类型并存于数组空间中。这种做法较简单快捷,但是若每次输入的数据长度不同,则都需要来回改变数组长度。
因此,现定义一个求数组长度的方法length,【对每个数组元素都只在0~9而言】,从输入的一串字符串中获取数组长度L
功能实现分析

  1. 讲原数组A进行clone命令,赋值到一个新数组B,并对新数组进行颠倒(Array.Reverse(操作的数组名));
  2. 对两个数组的元素从第一项开始比较,不相同则直接退出;
  3. 若每一项都相同则为回文字符串。

代码模块

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

namespace norm_program
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一组数字:");
            int i = int.Parse(Console.ReadLine());
            int j = 1, x = 1;//j为数组长度计数;
            int L = length(i, j, x);
            int[] num = new int[L];//完成自行判断数组长度;
            Console.WriteLine("数组的长度为{0}。\n", L);
            for (int m = 0; m < L; m++)
            {
                int k = i / (int)(Math.Pow(10, L - 1 - m));
                num[m] = k;
                i = i - k * (int)(Math.Pow(10, L - 1 - m));
            }//依据计算出来的数组长度,用简单的除法对数组逐一赋值;
            int[] Num;
            Num = (int[])num.Clone();
            Array.Reverse(Num);
            for (int m = 0; m < L; m++)
            {
                if (Num[m] != num[m])
                {
                    Console.Write("该数不是回文数字!");
                    break;
                }
                else if (Num[m] == num[m]&&m==L-1)
                    Console.Write("该数为回文数字。");
            }
            
            Console.ReadLine();
        }
        static int length(int i,int j,int x)//定义一个判断输入数字字符串长度的方法;
        {
            if (i < x||i==x )
                return j-1;//我也不知道为啥要减一,因为每次输入任意一组数据后都被多计算一个长度;
            else
                return length(i,++j,x= x * 10);//形参值要改变,否则会提示无限循环错误;
         }
    }
}

结果展示
结果展示1
结果展示2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值