C++期末练手编程题
1、找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小,如果有输出鞍点行列值,没有输出“不存在”
#include<iostream>
#include<vector>
#include<climits>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
vector<int>vec_max;
vector<int>vec_min;
int arr[m][n];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>arr[i][j];
}
}
bool flag3=false;
for(int i=0;i<m;i++){
int x1,y1;
int x2,y2;
bool flag1=false;
bool flag2=false;
int max_num=INT_MIN;
int min_num=INT_MAX;
for(int j=0;j<n;j++){
if(arr[i][j]==max_num) flag1=true;
if(arr[i][j]>max_num){
max_num=arr[i][j];
x1=i;
y1=j;
}
}
for(int j=0;j<m;i++){
if(arr[j][y1]==min_num) flag2=true;
if(arr[j][y1]<min_num){
min_num=arr[j][y1];
x2=j;
}
}
if(!flag71 && !flag2){
if(x2==x1){
flag3=true;
cout<<"行号:"<<x2<<" 列号:"<<y1<<" 值:"<<min_num<<endl;
}
}
}
if(!flag3) cout<<"不存在"<<endl;
}
2、定义一个函数模板求数组元素中的最大值,然后在主函数中调用函数模板并输出结果
#include<iostream>
using namespace std;
template<typename T>
T max_element(T a[],int size){
T max_ele = a[0];
for(int i=1;i<size;i++){
if(a[i]>max_ele) max_ele=a[i];
}
return max_ele;
}
int main(){
int ia[7]={10,7,14,3,25,99,100};
double da[6]={10.2,7.1,14.5,3.2,25.6,16.8};
string sa[5]={"Shanghai","Beijing","Wuhan","Daqing","Xian"};
cout<<max_element<int>(ia,7)<<endl;
cout<<max_element(da,6)<<endl;
cout<<max_element(sa,5);
}
3、定义一个三角形的类,调用类中函数判断能否组成一个三角形,如果能输出周长和面积,如果不能重新输入
主函数
#include<iostream>
#include"triangle.h"
using namespace std;
int main(){
int x1,y1;
int x2,y2;
int x3,y3;
Triangle myTriangle;
bool isTri=false;
while(1){
cin>>x1>>y1>>x2>>y2>>x3>>y3;
myTriangle.create(x1,y1,x2,y2,x3,y3);
isTri = myTriangle.isTri();
if(isTri) break;
else cout<<"错误!请重新输入"<<endl;
}
cout<<"周长:"<< myTriangle.getPeri();
cout<<"面积:"<< myTriangle.getArea();
}
三角形类定义文件 triangle.h
class Triangle {
private:
int x1,y1;
int x2,y2;
int x3,y3;
double a,b,c;
double peri,area;
public:
Triangle(){};
~Triangle(){};
void create(int px1,int py1,int px2,int py2,int px3,int py3);
bool isTri();
void Triangle::getEdgesLength();
double getPeri();
double getArea();
};
三角形类实现文件 triangle.cpp
#include<iostream>
#include"triangle.h"
#include<cmath>
using namespace std;
void Triangle::create(int px1,int py1,int px2,int py2,int px3,int py3){
x1=px1;y1=py1;
x2=px2;y2=py2;
x3=px3;y3=py3;
}
void Triangle::getEdgesLength(){
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
}
bool Triangle::isTri(){
getEdgesLength();
if(a+b<=c||a+c<=b||b+c<=a) return false;
else return true;
}
double Triangle::getPeri(){
peri = a+b+c
return peri;
}
double Triangle::getArea(){
double temp=(a+b+c)/2;
area = sqrt(temp*(temp-a)*(temp-b)*(temp-c));
return area;
}
4、从键盘输入年月日,计算是否是闰年和是今年的第几天
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int year,mon,day;
cin>>year>>mon>>day;
int Mon1[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int Mon2[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int sum=0;
if(year%400==0||(year%4==0&&year%100!=0)){
cout<<"是闰年"<<endl;
for(int i=1;i<mon;i++) {
sum+=Mon2[i];
}
cout<<"是"<<year<<"年的第"<<sum+day<<"天";
}else{
cout<<"不是闰年"<<endl;
for(int i=1;i<mon;i++) {
sum+=Mon1[i];
}
cout<<"是"<<year<<"年的第"<<sum+day<<"天";
}
}