注册 登录
编程论坛 C++教室

求数组内元素的倒置哪里出问题了

suchengjie 发布于 2013-03-19 10:13, 684 次点击
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
    int array[]={1,2,3,4,5,6,7,8,9};
    int temp;
    for(int i=0;i<sizeof(array)/2;i++)
    {
        temp=array[i];
        array[i]=array[sizeof(array)-i];
        array[sizeof(array)-i]=temp;
    }
    for(int j=0;j<sizeof(array);j++)
    {
        cout<<' '<<array[j];
    }
    cout<<endl;
    return 0;
}
4 回复
#2
azzbcc2013-03-19 10:32
i<sizeof(array)/2=18
#3
suchengjie2013-03-19 10:37
回复 2楼 azzbcc
不是等于4.5 吗
#4
rjsp2013-03-19 11:20
程序代码:
#include <iostream>
using namespace std;

// 如果下面这个“求数组元素数目”的代码看不懂的话,你就用 #define COUNTOF(Array) (sizeof(Array)/sizeof(Array[0])) 替换吧
template<typename T, size_t N>
    char (*__COUNTOF(T (&Array)[N]))[N];
#define COUNTOF(Array) sizeof(*__COUNTOF(Array))

int main()
{
    int array[] = {1,2,3,4,5,6,7,8,9};

    for( size_t i=0; i<COUNTOF(array)/2; ++i )
    {
        int temp = array[i];
        array[i] = array[COUNTOF(array)-1-i];
        array[COUNTOF(array)-1-i] = temp;
    }

    for( size_t i=0; i<COUNTOF(array); ++i )
    {
        cout << ' ' << array[i];
    }
    cout << endl;

    return 0;
}
#5
不玩虚的2013-03-19 22:58
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
    int array[]={1,2,3,4,5,6,7,8,9};
    int temp;
    int s,t;
    s=sizeof(array)/4;//整型int占4个字节,如果是其他类型的数组,4换为相应类型占得字节数就可以啦,指针的话待讨论楼主参考
        if(s%2==0)
            t=s/2;
        else t=s/2+1;
    for(int i=0;i<t;i++)
    {
       temp=array[i];
        array[i]=array[s-1-i];
        array[s-1-i]=temp;
    }//只供参考,这种想法很笨
    for(int j=0;j<s;j++)
    {
        cout<<setw(2)<<array[j];
    }
    cout<<endl;
    return 0;
} //
1