| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 900 人关注过本帖
标题:求高手帮编个函数调用程序,马上该交作业了,我还没头绪
只看楼主 加入收藏
天上找神仙
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-8-20
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
求高手帮编个函数调用程序,马上该交作业了,我还没头绪
设有一数列,包含10个数,已按升序排好。现要求编一程序,它能够把从指定位置(p1)开始到指定位置(p2)结束的n个数(p1<p2)按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用函数调用方法。试编程。(例如:原数列为2,4,6,8,10, 12, 14,16,18,20,若要求把从第4个数开始到第8个结束的数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18, 20。)
搜索更多相关主题的帖子: 能够 
2011-08-20 17:31
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:3 
2,4,6,8,10,12,14,16,18,20    p1=3,p2=7,n=5,只要让p1与p2换,p1+1与p2-1换。。。。直到p1+i>p2-i为止
2011-08-20 17:36
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:3 
void change(int begin,int end,int num[])
{
    for(int i=0;i<=(end-begin)/2;i++)
    {
        int temp=num[begin+i];
        num[begin+i]=num[end-i];
        num[end-i]=temp;      
    }
}
2011-08-20 23:30
天上找神仙
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-8-20
收藏
得分:0 
p1与p2和n,3楼没有详细的描述,能与主题再相符一点吗,2楼的太简单了一点
2011-08-20 23:52
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:3 
用递归更好。
2011-08-21 09:41
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:3 
程序代码:
int change(int p1,int p2,int arry[])
{
    if(p1>p2)
    {
        return -1;
    }
    else
    {
        int temp;
        temp=arry[p1];
        arry[p1]=arry[p2];
        arry[p2]=temp;
        return change(p1+1,p2-1,arry);
    }
}


[ 本帖最后由 liangjinchao 于 2011-8-21 10:30 编辑 ]

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-08-21 10:27
Hujc71
Rank: 2
等 级:论坛游民
帖 子:49
专家分:65
注 册:2010-3-31
收藏
得分:3 
其实这个不难!手机不好打大量代码,麻烦!
2011-08-21 16:10
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:3 
我觉得你应该先自己做下,遇到什么不知道的再发问题,不然时间久了会有依赖,看你比较急,我先写了一个复杂点的改变了数组本身值的程序(当然没有写字符判定)
程序代码:
#include<iostream>
using namespace std;
void func(int,int,int a[]);
void main()
{
int p1,p2;
    const int n=10;
    int a[n]={2,4,6,8,10,12,14,16,18,20};
    for(int i=0;i<n;i++)
        cout<<a[i]<<' ';
      cout<<"从第几个数字开始?"<<endl;
        cin>>p1;
        cout<<"从第几个数字结束?"<<endl;
       cin>>p2;
       func(p1,p2,a);
           for(int i=0;i<n;i++)
        cout<<a[i]<<' ';
}
void func(int p1,int p2,int a[])
{
          int x;
          int number=(p2-p1)/2;
          p1--;
          p2--;
        for(int i=0;i<10;i++)
      {
          if(i==p1)
          {
              for(int j=0;j<=number;j++,i++,p2--)
              {  
                  x=a[i];
                  a[i]=a[p2];
                   a[p2]=x;
              }
              cout<<endl;
              break;
          }

      }
}

 ↓面是简单的不改变数组值的代码

[ 本帖最后由 xg5699 于 2011-8-21 19:00 编辑 ]

都不结贴我郁闷那!
2011-08-21 18:47
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
这个程序就比较简单,不像上一个程序是会改变数组本身的值.直接采用输出形式,不改变原数组的值.因为题目中没有要求是否要改原数组,因此这2个方法都可以
想程序优秀些(只针对此题目),就拿这个.
程序代码:
#include<iostream>
using namespace std;
void func(int,int,int a[]);
void main()
{
int p1,p2;
    const int n=10;
    int a[10]={2,4,6,8,10,12,14,16,18,20};
    for(int i=0;i<n;i++)
        cout<<a[i]<<' ';
      cout<<"从第几个数字开始?"<<endl;
        cin>>p1;
        cout<<"从第几个数字结束?"<<endl;
       cin>>p2;
       func(p1,p2,a);
     
}
void func(int p1,int p2,int a[])
{
          int x;
          int number=p2-p1+1;
          p1--;
          p2--;
        for(int i=0;i<10;i++)
      {
          if(i==p1)
          {
              for(int j=0;j<number;j++,i++,p2--)
              {  
                  cout<<a[p2]<<' ';
              }
            
          }
              cout<<a[i]<<' ';
          }
}

 

[ 本帖最后由 xg5699 于 2011-8-21 19:05 编辑 ]

都不结贴我郁闷那!
2011-08-21 18:59
快速回复:求高手帮编个函数调用程序,马上该交作业了,我还没头绪
数据加载中...
 
   



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

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