| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2897 人关注过本帖
标题:数组的交换问题
只看楼主 加入收藏
学好好要饭
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-5-4
结帖率:100%
收藏
 问题点数:0 回复次数:4 
数组的交换问题
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数,c#,c好像要用到指针,没学,我写了一点点,
    int[] numbers = { 1, 2, 3, 4, 5, 6 };
            Console.WriteLine("输入向后移动的几个数");
            int num = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < numbers.Length; i++)
            {
                       
            }
            for (int i = 0; i < numbers.Length; i++)
            {
                Console.Write(numbers[i] + "  ");
            }
            Console.Read();

还有一个问题,虽然解决了,但是感觉不是很优,附上为题和答案
     //输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
            int[] numbers = {2, 1, 3, 4, 5, 6, 7, 9, 8};
            //int max = numbers[0];
            //int min = numbers[8];
            for (int i = 0; i < numbers.Length; i++)
            {
                if (numbers[i] > numbers[0])
                {
                    int temp = 0;
                    temp = numbers[0];
                    numbers[0] = numbers[i];
                    numbers[i] = temp;
                }
                if (numbers[i] < numbers[8])
                {
                    int temp2 = 0;
                    temp2 = numbers[8];
                    numbers[8] = numbers[i];
                    numbers[i] = temp2;
                }
            }
            for (int i = 0; i < numbers.Length; i++)
            {
                Console.WriteLine(numbers[i]);
            }
            Console.ReadKey();
搜索更多相关主题的帖子: numbers 
2016-05-16 16:31
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
第一个问题,先保存好后面的m个数,再从后面的数开始移动,即a[i]=a[i-m],再将m个数复制到前面。
第二个问题,直接遍历数组求最大最小,一次就行,然后直接赋值即可,你上面的方法看起来不行哦。

   唯实惟新 至诚致志
2016-05-16 20:02
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
程序代码:
int[] numbers={1,2,3,4,5,6,7,8,9,0};
int m = Convert.ToInt32(Console.ReadLine());
int[] tmp=new int[m];
int i,j=m-1;

for(i=numbers.Length-1;i>=numbers.Length-1-m;i--)
{
    tmp[j--]=numbers[i];
}

for(i=numbers.Length-1;i>=m;i--)
{
    numbers[i]=numbers[i-m];
}

for(i=0;i<m;++i)
{
    numbers[i]=tmp[i];
}

for(i=0;i<numbers.Length;i++)
{
    Console.Write(numbers[i] + "  ");
}

Console.ReadKey();

   唯实惟新 至诚致志
2016-05-17 09:17
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
程序代码:
int[] numbers={1,3,5,7,9,2,4,6,8,0};
int min=numbers[0];
int max=min;
int minIndex=0;
int maxIndex=0;
int tmp;

for(int i=1;i<numbers.Length;i++)
{
    if(numbers[i]<min)
    {
        min=numbers[i];
        minIndex=i;
    }
    if(numbers[i]>max)
    {
        max=numbers[i];
        maxIndex=i;
    }
}

tmp=numbers[0];
numbers[0]=max;
numbers[maxIndex]=tmp;

tmp=numbers[numbers.Length-1];
numbers[numbers.Length-1]=min;
numbers[minIndex]=tmp;

//output

   唯实惟新 至诚致志
2016-05-17 09:27
学好好要饭
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 3楼 qq1023569223
第六行,测试时,超出索引范围
2016-05-18 19:02
快速回复:数组的交换问题
数据加载中...
 
   



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

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