第1个回答 2012-05-28
既然是C++实现还是用面向对象的方法写比较好。
//main.cpp
#include <iostream>
#include "myarray.h"
using namespace std;
int main()
{
int a[10] = {4,7,9,3,1,2,5,6,8,0};
MyArray myArray(a, 10);
myArray.getAVG();//求平均值
myArray.ascendingSort();//升序排列
myArray.saveTo2dimensionalArray();//存到2维数组
return 0;
}
//myarray.h
#ifndef MYARRAY_H
#define MYARRAY_H
class MyArray
{
public:
MyArray(int *tmpArray, int arraySize);
~MyArray();
//下面三个成员函数分别实现了你要的三个功能
void getAVG();
void ascendingSort();
void saveTo2dimensionalArray();
private:
void initAscArray();
void printArray(int *tmpArray);
int m_size;
int *m_array;
int *m_ascArray;
};
#endif // MYARRAY_H
//myarray.cpp
#include "myarray.h"
#include <iostream>
using namespace std;
MyArray::MyArray(int *tmpArray, int arraySize)
{
m_array = tmpArray;
m_size = arraySize;
m_ascArray = new int[m_size];
initAscArray();
}
MyArray::~MyArray()
{
delete m_array;
delete m_ascArray;
}
void MyArray::initAscArray()
{
for (int i = 0; i < m_size; i++)
{
m_ascArray[i] = m_array[i];
}
}
void MyArray::getAVG()
{
double sum = 0;
for (int i = 0; i < m_size; i++)
{
sum += m_array[i];
}
cout<< sum/m_size <<endl;
}
void MyArray::ascendingSort()
{
for (int i = 0; i < m_size; i++)
{
for (int j = i+1; j < m_size; j++)
{
if (m_ascArray[i] > m_ascArray[j])
{
m_ascArray[i] += m_ascArray[j];
m_ascArray[j] = m_ascArray[i] - m_ascArray[j];
m_ascArray[i] -= m_ascArray[j];
}
}
}
printArray(m_ascArray);
}
void MyArray::printArray(int *tmpArray)
{
for (int i = 0; i < m_size; i++)
{
cout<< tmpArray[i] << " ";
}
cout << endl;
}
void MyArray::saveTo2dimensionalArray()
{
int a[2][m_size];
for (int i = 0; i < m_size; i++)
{
a[0][i] = m_ascArray[i];
a[1][i] = m_array[i];
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < m_size; j++)
{
cout<< a[i][j] << " ";
}
cout<< endl;
}
}
第2个回答 2012-05-28
#if 1
//设计一个程序,用一维数组描述一个数据集合(包含10个整数),采用指针方式完成数组元素的三种操作:
//1)求数组中各元素的平均值;
//2)按升序排列数组中的各元素;
//3)将一维数组升序排列的数据元素,一维数组原数据元素保存到一个新的2行10列二维数组中,并分行输出该二维数组元素值。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
void createArr(int * arr,int size);/* 创建一个随机数组 */
void printArr(int * arr,int size);/* 打印数组 */
void sortArr(int * arr,int size);/* 冒泡算法对数组进行排序 */
int main(void)
{
int arr[SIZE];
int arr2[2][SIZE];
createArr(arr,SIZE);
//将未排序的数据放入arr2的第二行
for (int i=0;i<SIZE;i++)
{
arr2[1][i]=arr[i];
}
//进行排序
sortArr(arr,SIZE);
//将排序后的数据放入arr2的第一行
for (int j=0;j<SIZE;j++)
{
arr2[0][j]=arr[j];
}
//分别打印两行
printArr(arr2[0],SIZE);
printArr(arr2[1],SIZE);
return 0;
}
void createArr( int * arr,int size )
{
int i,j,temp,f=0;
srand((unsigned int)time(0));//真随机数
for (i=0;i<size;)
{
f = 0;//代表不重复
temp = rand()%100;
for (j=0;j<i;j++)
{
if(temp==arr[j])
{
f=1;//发现重复
break;
}
}
if(!f)
{
arr[i] = temp;
i++;
}
}
}
void printArr( int * arr,int size )
{
printf("arr = [");
for (int i=0;i<size-1;i++)
{
printf("%d,",arr[i]);
}
printf("%d]\n",arr[size-1]);
}
void sortArr( int * arr,int size )
{
while(true){
int count = 0;
int i;
for(i=size-1;i>0;i--){
int flag = arr[i]<arr[i-1];
if(flag){
int temp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = temp;
count ++;
}
}
if(count==0){//如果交换次数为0则排序完毕
break;
}
}
}
#endif本回答被网友采纳