| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:switch case中的goto问题
只看楼主 加入收藏
西安郑鑫
Rank: 7Rank: 7Rank: 7
来 自:陕西
等 级:黑侠
帖 子:163
专家分:624
注 册:2013-9-26
结帖率:61.9%
收藏
已结贴  问题点数:16 回复次数:3 
switch case中的goto问题
题目是这样的:在键盘上接收用户输入的15个整数数值,输入完成后,接收用户输入的指令,   
   
 如果用户输入a(大小写不区分)升序排列,如果输入d(大小写不区分)降序排列,否则提示

用户重新输入指令,输出排序前与排序后的数列内容。
环境VS2010 C#
程序代码:
namespace ConsoleApplication16
{ 
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new int[15];
            Console.WriteLine("请输入15个整数");
            //初始化
            for (int i = 0; i < 15; ++i)
            {
                if (!int.TryParse(Console.ReadLine(), out arr[i]))
                    Console.WriteLine("输入有误");
            }
            //复制原数组
            int[] arr1 = (int[])arr.Clone();
            //获取指令,根据指令调用函数
            Order:
            Console.WriteLine("请输入指令");
            char order;
            order = (char)Console.Read();
            switch (order)
            {
                case 'a': fun1(arr);
                    break;
                case 'A': fun1(arr);
                    break;
                case 'd': fun2(arr);
                    break;
                case 'D': fun2(arr);
                    break;
                default:
                    Console.WriteLine("请重新输入指令");
                    goto Order;
            }
            //打印原数组
            Console.Write("原序列为:");
            for (int i = 0; i < 15; ++i)
                Console.Write(arr1[i] + ",");
            Console.WriteLine();
            //打印新数组
            Console.Write("新序列为:");
            for (int i = 0; i < 15; ++i)
                Console.Write(arr[i] + ",");
            Console.WriteLine();
        }

        //a或者A指令
        public static void fun1(int[] arr)
        {
            for(int i = 0; i < 14; ++i)
                for(int j = 0; j < 14 - i; ++j)
                {
                    int temp;
                    if(arr[j] > arr[j+1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
        }
        //d或者D指令
        public static void fun2(int[] arr)
        {
            for(int i = 0; i < 14; ++i)
                for(int j = 0; j < 14 - i; ++j)
                {
                    int temp;
                    if(arr[j] < arr[j+1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
        }
    }
}

这个是我的测试
图片附件: 游客没有浏览图片的权限,请 登录注册

请问指令输入那里为什么出现循环?
搜索更多相关主题的帖子: color 键盘 用户 
2014-01-15 17:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
样子像c# 而不是c额

DO IT YOURSELF !
2014-01-15 18:10
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:8 
表示不是C, 看不懂代码 , 不过你的问题应该是第一次输入指令e后的回车符导致的, 建议你在输入指令的后面加一个清除缓存的动作。
2014-01-15 19:52
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:4 
你来错地方了,去专门的地方问问去

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-01-16 16:52
快速回复:switch case中的goto问题
数据加载中...
 
   



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

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