C++期末练手编程题

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];//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

//三角形类定义文件  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


//三角形类实现文件 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<<"天"; 
	} 
} 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bwywb_3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值