专题04 一些练习题

在这里插入图片描述
练习题
201409-1相邻数对
(1)代码实现

#include<iostream>
//要用sort、reverse这些函数 别忘了导入头文件哈 
#include<algorithm> 

using namespace std;

int main(){
	//1.老规矩 定义一个一维数组并向其中填充元素 
	int n,a[1001]={0};
	cout<<"您要输入几个数:";
	cin>>n;
	
	cout<<"请输入:";
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	
	//2.采用sort进行升序排序(要想到哦) 
	sort(a,a+n);
	cout<<"输出排序后的数组:";//sort比冒泡什么的简单多了 
	for(int j=0;j<n;j++){
		cout<<a[j]<<" ";
		}
	cout<<endl; 
	
	//3.遍历一下排序后的一维数组 再统计就行了 
	int ans=0;
	for(int i=0;i<n;i++){
		if(a[i]+1==a[i+1]){
			ans++;
		}
	} 
	
	cout<<"一共有:"<<ans<<"对!"<<endl;
	return 0;
} 

(2)运行截图
在这里插入图片描述
201409-3字符串匹配问题
(1)代码实现
(2)运行截图

201503-2数字排序问题
(1)代码实现
(2)运行截图

201604-1 折点计数问题
(1)C++代码实现

#include<iostream>

using namespace std;

int main(){
	//1.首先需要有一个一维数组来存储输入的数据
	//定义变量初始化 养成好习惯 
	int a[1001]={0},n=0;
	cout<<"您要输入几个数:";
	cin>>n;
	
	//如何向一维数组中填充数据 这是固定的手法 建议记住 
	cout<<"开始输入:"; 
	for(int i=0;i<n;i++){
		cin>>a[i];
	} 
	
	/*分析下:
	(1)首先根据题意,第一个和最后一个数据是不可能成为折点的
	(2)然后我们需要遍历一下数组,当满足什么样一个条件时它是折点呢? 
	(3)看看那个图,是不是满足a[i]<a[i-1]&&a[i]<a[i+1] || a[i]>a[i-1]&&a[i]>a[i+1], 
	这个a[i]就是折点了呢 ojbk! 
	*/
	int ans=0;
	cout<<"折点有:"; 
	for(int i=1;i<n-1;i++){//注意这里的初始值哈(见分析) 
		if(a[i]<a[i-1]&&a[i]<a[i+1] || a[i]>a[i-1]&&a[i]>a[i+1]){
			cout<<a[i]<<" ";
			ans++;
		} 
	}
	cout<<"一共有"<<ans<<"个折点"<<endl;
	 
	return 0;
}

(2)运行截图
在这里插入图片描述

201903-1中位数
(1)C++代码实现

#include<iostream>
#include<algorithm>

using namespace std;

int main(){
    //1.一维数组存储数据 相关变量用到的时候再定义
	int n,a[1001]={0},min=0,max=0;
	cout<<"您要输入几个数:";
	cin>>n;
	
	cout<<"请输入:";
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	//2.排序一哈(sort真的好用) 那么最值就很好出来了 
	sort(a,a+n);
	min=a[0];
	max=a[n-1];
	
	//3.如何求中位数:分两种情况
	int med=0,t=0;
	if(n%2!=0){
		med=a[(n-1)/2];
	}else{
		t=(n/2);
		med=(a[t-1]+a[t])/2;//注意数组的起和终点的下标 
	}
	
	//4.输出的顺序(太菜了 写了这么多 应该有优化的写法 先这么写着吧)
	if(med<min){
		cout<<max<<" "<<min<<" "<<med;
	}else if(med>min && med<max){
		cout<<max<<" "<<med<<" "<<min;
	}else{
		cout<<med<<" "<<max<<" "<<min<<endl;
	}
	
	return 0;
	
} 

(2)运行截图
在这里插入图片描述

201909-1种苹果1.0
(1)C++代码

#include<iostream>
#include<math.h>

using namespace std;

int main(){
    //1.根据题目中的输入格式 容易想到用二维数组来存储输入的数据;
	int a[501][501]={0},n,m;
	//cout<<"请输入苹果树棵树和疏果的轮数:";
	cin>>n>>m;
	
	//cout<<"请输入每棵苹果树上苹果个数 和 每次疏果个数:";
	for(int i=0;i<=n-1;i++){
		for(int j=0;j<=m;j++){
			cin>>a[i][j]; 
		}
	}
	
	//2.遍历二维数组来计算剩余苹果总个数 
	int sum=0; 
	for(int i=0;i<=n-1;i++){
		for(int j=0;j<=m;j++){
			sum+=a[i][j];
		}
	}
	
	//3.这是本程序的核心 计算二维数组每行第1~n-1的和并用一维数组来存储(不是每行第0~n-1的和哈) 
	int row[n]={0};
	for(int i=0;i<n;i++){
		for(int j=1;j<m+1;j++){
			row[i]+=a[i][j];
		}
	}
	
	//找出row中疏果最多的树的下标和对应的值(如果不要求下标 直接sort就行了) 
	int min=0,t=0; 
	for(int i=0;i<n;i++){ 
		if(row[i]<min){
			min=row[i];
			t=i+1;
		}else if(row[i]==min){
			min=row[i];
			t=i;
		}
	}
	cout<<sum<<" "<<t<<" "<<abs(min)<<endl;	
	
	return 0;
}

(2)运行截图
在这里插入图片描述
(3)学习文章
二维数组各行各列之和
将数组中最小元素输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值