| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖, 1 人收藏
标题:与人【分享】自己的成果,【求教】更为简洁的代码:大侠们求助!!
只看楼主 加入收藏
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
结帖率:96.15%
收藏(1)
已结贴  问题点数:10 回复次数:2 
与人【分享】自己的成果,【求教】更为简洁的代码:大侠们求助!!
一、题目
编一个程序,定义一个字符串变量s,输入一个字符串,然后把字符串倒置,再输出字符串变量s。

我自己给自己定了两个要求:1、字符串按倒序输出(题目本意);2、字符串按单词倒序输出(提升)。
二、代码
static void Main()
        {
            Console.WriteLine("请输入字符串:");
            string str = Console.ReadLine();
            char[] chr = str.ToCharArray();
            int m = chr.Length;
            Console.WriteLine("m={0}",m);
            Console.WriteLine("倒置输出的结果是:");
            for (int i = m - 1; i >= 0; i--)
            {
                Console.Write("{0}", chr[i]);
            }
            Console.WriteLine("\n按单词倒置输出的结果是:");
            for (int i = m - 1; i >= 0; i--)
            {
                if (chr[i] == ' ')
                {
       //             Console.WriteLine("遇到空格");    //此为了检验遇到空格是否会输出I值
       //             Console.WriteLine("{0}",i);       //此为了找出空格的位置
                    for (int j = i + 1; j < m; j++)
                    {
                        if (chr[j] == ' ')
                        {
                            Console.Write(" ");    //遇到空格退出;
                            break;
                        }
                        
                        Console.Write("{0}",chr[j]);
                        if (j == m-1)
                        {
                            Console.Write(" ");
                        }
                    }
                }   //倒置输出到最后一个空格前的字符串
                if (i == 0)    //
                {
                    for (int k = 0; k < m - 1; k++)
                    {
                        if (chr[k] == ' ')
                        {
                            Console.Write(" ");
                            break;
                        }
                        Console.Write("{0}", chr[k]);
                    }
                }
            }   //倒置输出最后一个空格前的字符串

            Console.ReadLine();
        }

三、提升

经过一天时间的思考,运用数组,终于完成了:1、按字符串倒置输出;2、按单词倒置输出。
例:输入字符串为  I am a teacher I am a student
1、按字符串倒置输出。结果为:tneduts a ma I rehcaet a ma I
2、按单词倒置输出。结果为:student a am I teacher a am I

代码一定可以更简洁,追求最简洁的代码是我孜孜不倦的目标。
求教:请大侠们提供更简洁的代码,以供学习。(用数组)
搜索更多相关主题的帖子: 字符串 单词 
2014-05-27 19:28
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:10 
按算法解估计像楼主那样也就差不多了吧
单词倒置如果使用string[],就是直接按顺序读char[],读出来拼成string,再把string放入string[],最后倒置输出string[],这样代码应该会简洁一点,不过这也不是char算法啦
这里提供一段不用算法的,供楼主参考吧
static void Main(string[] args)
{
    Console.WriteLine("请输入字符串:");
    string str = Console.ReadLine();
    List<char> list = str.ToCharArray().ToList();
    list.Reverse();
    Console.WriteLine("倒置输出的结果是:" + new string(list.ToArray()));
    List<string> list1 = str.Split(' ').ToList();
    list1.Reverse();
    Console.WriteLine("\n按单词倒置输出的结果是:" );
    Array.ForEach(list1.ToArray(), i => Console.Write(i + " "));
    Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
    Console.ReadLine();
}
2014-05-27 21:11
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
收藏
得分:0 
感谢信
---------
感谢yhlvht的指教。非常感谢。

艰难地走在C#自学的路上…………
2014-05-28 13:39
快速回复:与人【分享】自己的成果,【求教】更为简洁的代码:大侠们求助!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020771 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved