| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 345 人关注过本帖
标题:输入的数中除数组中第一个元素和最后一个元素外的其他元素按相反方向显示数组问题
收藏  订阅  推荐  打印
沿途有鬼
Rank: 2
等级:注册会员
帖子:68
积分:882
注册:2008-7-20
输入的数中除数组中第一个元素和最后一个元素外的其他元素按相反方向显示数组问题

//创建3个函数分别输入数组、显示数组、除数组中第一个元素和最后一个元素外的其他元素按相反方向显示数组

#include<iostream>
using namespace std;

int Fill_array(double ar[],int n);
void Show_array(const double ar[],int n);
int Reverse_array(double ar[],int n,int x);

int main()
{

    int t,p;
    cout<<"Enter how much shuzu: ";
    cin>>t;
    double age[60];
    p=Fill_array(age,t);
    Show_array(age,p);
    Reverse_array(age,p,p);
    Show_array(age,p);

    return 0;




}



int Fill_array(double ar[],int n)
{
    int i;
    double temp;
    for(i=0;i<n;i++)
    {
     cout<<"Enter "<<i+1<<" score: ";
     cin>>temp;
     if(!cin)
     {
         cin.clear();
         while(cin.get()!='\n')
         continue;
         cout<<"Error enter! \n";
         break;
     }
     else if(temp<0)
         break;
     ar[i]=temp;
    }
    return i;
}
void Show_array(const double ar[],int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"#"<<i+1<<": "<<ar[i]<<" ";
    }
cout<<endl;
}
int Reverse_array(double ar[],int n,int x)//这个地方的排序是错误的请帮我改正确(要求除数组中第一个元素和最后一个元素外的其他元素按相反方向显示数组)
{
    double j=0;
    for(int i=0;i<n;i++,x--)
    {
    
        j=ar[i+1];
        ar[i+1]=ar[x-1];
        ar[x-1]=j;
        
    }
    return i;
}
2008-7-25 18:39
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:300
积分:2713
威望:7
注册:2007-10-9

void sort(double ar[],int n)
{
  int temp;
int i;
  for( i = 1 i < n-1; i++) //改一下,应该是n-1/2 这样就ok了
{
   temp = ar[i];
   ar[i] = ar[n-1-i];
   ar[n-1-i] = temp;
}
}
你自己测试一下,随手写的。

[ 本帖最后由 missiyou 于 2008-7-25 21:06 编辑 ]
2008-7-25 20:54
沿途有鬼
Rank: 2
等级:注册会员
帖子:68
积分:882
注册:2008-7-20

引用:
missiyou 在 2008-7-25 20:54 的发言:

void sort(double ar[],int n)
{
  int temp;
int i;
  for( i = 1 i < n-1; i++)
{
   temp = ar;
   ar = ar[n-1-i];
   ar[n-1-i] = temp;
}
}
你自己测试一下,随手写的。
int Reverse_array(double ar[],int n)
{
double j=0;

n=n-2;
for(int i=0;i<=n;n--,i++)
{
j=ar[i+1];
ar[i+1]=ar[n];
ar[n]=j;

}
解决了,谢谢你~

[ 本帖最后由 沿途有鬼 于 2008-7-25 21:44 编辑 ]
2008-7-25 21:01
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:300
积分:2713
威望:7
注册:2007-10-9

你相不相信你的也是换了两次
2008-7-25 21:13
沿途有鬼
Rank: 2
等级:注册会员
帖子:68
积分:882
注册:2008-7-20

引用:
missiyou 在 2008-7-25 21:13 的发言:

你相不相信你的也是换了两次
刚才那个说是换了2次的注释是别人在百度上回答我的,我复制过来忘了消除了,我还是没搞懂什么换了2次,你能解释下吗?
2008-7-25 21:45
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:300
积分:2713
威望:7
注册:2007-10-9

呵呵,一半加上一半等于N 我们要得是前一半,和后一半交换的次数,是1/2、
所以如果交换次数是N这样等于没有交换。
2008-7-25 22:11
jacksonchina
Rank: 1
等级:新手上路
帖子:10
积分:202
注册:2008-5-29

不是很明白哦,既然只是显示而已,那就直接从n-1显示到1,头尾加上不就行了,为什么么还要交换呢。。。浪费很多时间
2008-7-26 13:05
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:300
积分:2713
威望:7
注册:2007-10-9

除数组中第一个元素和最后一个元素外的其他元素按相反方向显示数组

不可教也
2008-7-26 19:27
missiyou
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:300
积分:2713
威望:7
注册:2007-10-9

#include <stdio.h>
#include <stdlib.h>
void sort(int ar[],int n)
{
  int temp;
int i;
  for( i = 1 ;i < (n-1)/2; i++) //改一下,应该是n-1/2 这样就ok了
{
   temp = ar[i];
   ar[i] = ar[n-1-i];
   ar[n-1-i] = temp;
}
}

int main(int argc, char *argv[])
{
  //char *lp="abcdefg";
  int i;
  int am[7]={1,2,3,4,5,6,7};
  sort(am,7);
  for(i=0;i<7;i++)
  printf("%d\n",am[i]);
  //printf("%s\n",am);
  system("PAUSE");    
  return 0;
}
2008-7-26 20:10
jacksonchina
Rank: 1
等级:新手上路
帖子:10
积分:202
注册:2008-5-29

那就是啊,反方向啊,从n-2显示到1那里,头尾加上,结果不是一样的么??还不可教也!!
2008-7-28 12:37
共有 344 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.061426 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved