第1个回答 2009-03-15
1.你的程序没什么问题,如果说有点问题的话,最好把float改为double类型,因为5.5..是常double类型,但是不改也可以,因为这里float类型的精度已经足够了。
double b[5]={2.4, 7.6, 5.5, 6.6, -2.3 };
2.另外,你的程序还应该注意编码规范:每个for()循环后最好用大括号{}括起来,这样程序结构才清晰。if..else等语句也最好加{}。
2.这个程序的目的是学习C++的函数模板,实现函数重载,参看下面程序,是不是简便多了?
#include <iostream>
using namespace std;
template <class T> //定义函数模板,T相当于“通用数据类型”
void sort(T a[])
{
int i,j;
T t;
for (i=0;i<5;i++) //排序
{
for(j=0;j<5;j++)
{
if (a[i]<a[j])
{
t=a[i]; a[i]=a[j]; a[j]=t;
}
}
}
cout<<"the sorted numbers :"<<endl;
for(i=0;i<5;i++) //输出
{
cout<<a[i]<<" ";
}
cout<<endl<<endl;
}
int main()
{
int a[5]={1,9,0,23,-45};
double b[5]={2.4,7.6,5.5,6.6,-2.3};
long int c[5]={10100,-123567,1198783,-165654,3456};
sort(a);
sort(b);
sort(c);
return 0;
}
第2个回答 2009-03-14
对不对,上机试一试不就知道了。
这是C++中的基本用法。
粗看了下,你的程序问题蛮多的。
void sort(int *p);
void sort(float *p);
void sort(long *p);
int main()
{
int a[5]={1,9,0,23,-45};
float b[5]={2.4, 7.6, 5.5, 6.6, -2.3 };
long int c[5]={10100,-123567, 1198783,-165654, 3456};
sort(a);
sort(b);
sort(c);
return 0;
}
。。。
去上机试一试
第3个回答 2009-03-14
#include<iostream>
#include<stdlib.h>
using namespace std;
void sort(int *);
void sort(float *);
void sort(double *);
int n;
int main()
{int i;
cout<<"输入n:"<<endl;
cin>>n;
int *p= (int *)malloc(n*sizeof(int));
float *q= (float *)malloc(n*sizeof(float));
double *r=(double *)malloc(n*sizeof(double));
cout<<"输入int类n个元素:"<<endl;
for(i=0;i<n;i++)
cin>>p[i];
cout<<"输入float类n个元素:"<<endl;
for(i=0;i<n;i++)
cin>>q[i];
cout<<"输入double类n个元素:"<<endl;
for(i=0;i<n;i++)
cin>>r[i];
sort(p);
sort(q);
sort(r);
delete []p;
delete []q;
delete []r;
return 0;
}
void sort(int *cp)
{
int i,j;
int temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(cp[j]>cp[j+1])
{temp=cp[j];
cp[j]=cp[j+1];
cp[j+1]=temp;}
}
for(i=0;i<n;i++)
cout<<cp[i]<<" ";
cout<<endl;
}
void sort(float *cp)
{
int i,j;
float temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(cp[j]>cp[j+1])
{temp=cp[j];
cp[j]=cp[j+1];
cp[j+1]=temp;}
}
for(i=0;i<n;i++)
cout<<cp[i]<<" ";
cout<<endl;
}
void sort(double *cp)
{
int i,j;
double temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(cp[j]>cp[j+1])
{temp=cp[j];
cp[j]=cp[j+1];
cp[j+1]=temp;}
}
for(i=0;i<n;i++)
cout<<cp[i]<<" ";
cout<<endl;
}
第4个回答 2009-03-14
程序应该是对的。。