练习题
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)学习文章
二维数组各行各列之和
将数组中最小元素输出