C++ 第一次上机作业

时间:2024-07-03 12:36:50

今天完成了C++第一次上机作业,感觉比较简单。

题目:

  1. 求2个数或3个正整数中的最大数,用带有默认参数的函数实现。
  2. 对3个变量按由小到大顺序排序,要求使用变量的引用。
  3. 编写一个程序,用同一个函数名对几个数据进行从小到大排序,数据类型可以是整型、浮点型。用重载函数实现。
  4. 对第4题改用函数模板实现,并与第4题程序进行对比分析。

第一题代码:

 #include<iostream>
using namespace std; void max(int a=,int b=,int c=)
{
a= a>b ? a : b;
a= a>c ? a : c;
cout<<a<<endl;
} int main()
{
max(,);
max(,,);
return ;
}

第二题代码:

#include<iostream>
using namespace std; void sort(int &a,int &b,int &c)
{
int tmp;
if(a>b) {tmp=a;a=b;b=tmp;}
if(b>c) {tmp=b;b=c;c=tmp;}
if(a>b) {tmp=a;a=b;b=tmp;}
} int main()
{
int a1=,a2=,a3=;
sort(a1,a2,a3);
cout<<a1<<" "<<a2<<" "<<a3<<endl;
}

第三题代码:

 #include<iostream>
using namespace std; void sort(int* a){ //冒泡排序
int t;
for(int j=;j>;j--)
for(int i=;i<=j-;i++)
if(a[i]>a[i+])
{t=a[i];a[i]=a[i+];a[i+]=t;}
for(int i=;i<;i++)
cout<<a[i]<<" ";
} void sort(float* a){
float t;
for(int j=;j>;j--)
for(int i=;i<=j-;i++)
if(a[i]>a[i+])
{t=a[i];a[i]=a[i+];a[i+]=t;}
for(int i=;i<;i++)
cout<<a[i]<<" ";
} int main()
{
int a[]={,,,,};
float b[]={5.1,4.1,2.1,1.1,3.1};
sort(a);
sort(b);
return ;
}

第四题代码:

 #include<iostream>
using namespace std;
template<typename T>
int Partition(T* cp,int low,int high)
{
T tmp=cp[low];
T pivotkey=cp[low];
while(low<high)
{
while(low<high&&cp[high]>=pivotkey) --high;
cp[low]=cp[high];
while(low<high&&cp[low]<=pivotkey) ++low;
cp[high]=cp[low];
}
cp[low]=tmp;
return low;
}
template<typename T>
void Qsort(T* cp,int low,int high) //快速排序
{
if(low<high)
{
int pivotloc=Partition(cp,low,high);
Qsort(cp,low,pivotloc-);
Qsort(cp,pivotloc+,high);
}
}
int main()
{
int a[]={,,,,};
float b[]={5.1,4.1,2.1,1.1,3.1};
Qsort(a,,);
Qsort(b,,);
for(int i=;i<;i++)
{
cout<<a[i]<<" "<<b[i]<<endl;
}
return ;
}

******