40 条题解
-
0
新手驾到🎉️ 思路:遍历数组找最大、最小值
我的做法:先输出最小值,从第二个值循环输出a[i],在最小、最大值处,输出a[0]或a[n-1],最后输出最大值。
/#include<iostream> using namespace std; int main() { int n , a[100] , max = 0, min = 100000000; cin >> n; for (int i = 0; i < n;i++) { cin >> a[i]; if (a[i] > max)//最大值 { max = a[i]; } if (a[i] < min)//最小值 { min = a[i]; } } cout << min << " ";//首先输出最小值(别忘记空格) for (int i = 1;i < n - 1; i++)//从第二个值开始,到第n-1个值 { if (a[i] == min) { cout << a[0] << " "; continue;//因为输出之后就不需要输出a[i]了,所以使用continue语句 } if (a[i] == max) { cout << a[n-1] << " "; continue;//这里也一样 } cout << a[i] << " "; } cout << max;最大值 return 0; }
食用前点个赞吧
-
0
#include <iostream> using namespace std; int main() { int n,a,b; long long c[100]; cin >> n; for(int i = 0;i < n;i++) { cin >> c[i]; } a = 0;//最大 b = n;//最小 for(int i = 0; i < n;i++) { if(a < c[i]) { a = c[i]; } if(b > c[i]) { b = c[i]; } } for(int i = 0;i < n;i++) { if(i == 0) { cout << b << " "; continue; } if(c[i] == a) { cout << c[n-1] << " "; continue; } if(i == n - 1) { cout << a << " "; continue; } if(c[i] == b) { cout << c[0] << " "; continue; } cout << c[i] << " "; } return 0; }//已AC
-
0
#include<iostream> using namespace std; int main() { int n,a[1000],minn=100000,s,maxx=0,l;//定义变量 cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; if(a[i]<minn) { minn=a[i]; s=i; } if(a[i]>maxx) { maxx=a[i]; l=i; } } swap(a[1],a[s]); swap(a[n],a[l]); for(int i=1;i<=n;i++) { cout<<a[i]<<" "; } }
-
0
直接看吧,代码如下
#include <bits/stdc++.h> using namespace std; int main() { int n,min=10000000,max=0;//定义n和最小数min、最大数max cin>>n;//输入n int a[n+1];//根据n来判断数组a的大小 for(int i=1;i<=n;i++)//输入+寻找min、max { cin>>a[i];//输入 if(a[i]<min)//如果a[i]比min小,刷新min { min=a[i]; } if(a[i]>max)//如果a[i]比max大,刷新max { max=a[i]; } } for(int i=1;i<=n;i++) { if(a[i]==min)//找到跟min相等的a[i]的值 { a[1]^=a[i]; a[i]^=a[1]; a[1]^=a[i];//利用异或运算符完成改变 break; } } for(int i=1;i<=n;i++) { if(a[i]==max)//找到跟max相等的a[i]的值 { a[n]^=a[i]; a[i]^=a[n]; a[n]^=a[i];//利用异或运算符完成改变 break; } } for(int i=1;i<=n;i++)//输出改变后的数组 { cout<<a[i]<<" "; } return 0; }
这里用到了异或运算符,简单来讲,就是把参与运算的两个数据转成二进制,然后再看每一位,只要数字不同,结果就为1,否则为0
-
0
有注释自己看
#include <bits/stdc++.h>//如果想用swap啥的建议还是用万能函数,除非你愿意多写个导入 using namespace std; int main() { int minn=1,maxx=1,n,a[105];//这里maxx不要设为0,除非数组a是全局变量(别问我怎么知道的,问就是经验) cin >> n; for (int i=1;i<=n;i++) { cin >> a[i];//这里注意不要把i给写成n了,比如我就经常犯这种低级错误【大悲】 if (a[minn]>a[i]) { minn=i; } if (a[maxx]<a[i]) { maxx=i; } //这里输入的时候就可以顺便把最小值和最大值给比出来就懒得多写个for了 } int c; c=a[minn]; a[minn]=a[1]; a[1]=c; c=a[maxx]; a[maxx]=a[n]; a[n]=c; for (int i=1;i<=n;i++) { cout << a[i] << " "; } //当然学过了L6的可以直接用min,max和swap,这里就不多赘述了 return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int n,a[107],maxx=0,minn=10000007,xx,yy; int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>a[i]; if (a[i]<minn) { minn=a[i]; xx=i; } if (a[i]>maxx) { maxx=a[i]; yy=i; } } int xxx=a[1],yyy=a[n]; a[1]=minn,a[xx]=xxx,a[yy]=yyy,a[n]=maxx; for (int i=1;i<=n;i++) cout<<a[i]<<" "; return 0; }
-
0
废话不多说,直接上代码。
#include <bits/stdc++.h> using namespace std; int sum2 , num1 , num2; int main() { int n , a[110] , sum1 = 999999; cin >> n; for (int i = 1;i <= n;i++) { cin >> a[i]; } for (int i = 1;i <= n;i++) { if (a[i] < sum1) { sum1 = a[i]; num1 = i; } else if (a[i] > sum2) { sum2 = a[i]; num2 = i; } } a[num2] = a[n]; a[n] = sum2; a[num1] = a[1]; a[1] = sum1; for (int i = 1;i <= n;i++) { cout << a[i] << " "; } return 0; }
制作不易,求个赞。
-
0
其实这题非常简单 首先,定义两个用来比较的变量,一个尽量大一个尽量小(比如maxn,minn),方便后面比较。(注意:不要使用max和min,因为这是系统自带的函数,逻辑可能会出错)
然后,输入数组,逐个判断数组里的每一项是否比minn小,用一个变量(如:s)存储它的位置,用swap函数(一个系统自带的可以交换两个数的数值的函数)把第一项和第s项交换即可
最后,判断最大和判断最小恰恰相反用相反的方法完成,然后输出就ok啦!
#include<bits/stdc++.h> using namespace std; int main(){ int n,a[100005],minn=999999999,maxn=-999,s,x; cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int j=1;j<=n;j++){ if(a[j]<minn){ minn=a[j]; s=j; } } swap(a[1],a[s]); for(int q=1;q<=n;q++){ if(a[q]>maxn){ maxn=a[q]; x=q; } } swap(a[n],a[x]); for(int z=1;z<=n;z++)cout<<a[z]<<" "; return 0; }
完结撒花🎉️ 点个赞吧❤️
-
0
核心代码
for(int i=0;i<n;i++) { if(a[i]>maxx) {maxx=a[i];}//找出最大值 else if(a[i]<minn) {minn=a[i];}//找出最小值 } for(int i=0;i<n;i++) { if(a[i]==minn) {a[i]=a[0]; a[0]=minn;}//交换最小值位置 else if(a[i]==maxx) {a[i]=a[n-1]; a[n-1]=maxx;}//交换最大值位置 } for(int i=0;i<n;i++) { cout<<a[i]<<" ";//输出 }
完整代码
#include<bits/stdc++.h> using namespace std; int main(){ int n,a[100],maxx=0,minn=99999; cin>>n; for(int i=0;i<n;i++) {cin>>a[i];} for(int i=0;i<n;i++) { if(a[i]>maxx) {maxx=a[i];} else if(a[i]<minn) {minn=a[i];} } for(int i=0;i<n;i++) { if(a[i]==minn) {a[i]=a[0]; a[0]=minn;} else if(a[i]==maxx) {a[i]=a[n-1]; a[n-1]=maxx;} } for(int i=0;i<n;i++) { cout<<a[i]<<" "; } return 0; }
ps:这里其实有个bug,如果数组里的数都大于minn事先设好的值,就会error
-
0
#include <iostream> using namespace std; int main() { int a[100], n, s2, b2, s = 109299, b = 0, l;//数组a 个数n 最大b 最小s 临时l 最大编号b2 最小编号s2 cin >> n; for (int i = 0;i < n;i++) { cin >> a[i]; } //输入完成(so easy!) for (int i = 0;i < n;i++) { if (s > a[i]) { s = a[i]; s2 = i; }
if (b < a[i]) { b = a[i]; b2 = i; } }//找最大最小值 l = a[0]; a[0] = a[s2]; a[s2] = l; l = a[n -1]; a[n - 1] = a[b2]; a[b2] = l; //替换 for (int i = 0;i < n;i++) { cout << a[i] << " "; }//输出 return 0;
}
-
0
#include<bits/stdc++.h> using namespace std; int main(){ int n,a[101],max=0,min=10000,i; cin>>n; for(i=1;i<=n;i++){ cin>>a[i]; if(a[i]>max)max=a[i]; if(a[i]<min)min=a[i]; } cout<<min<<" "; for(i=2;i<n;i++){ if(a[i]==max)cout<<a[n]<<" "; else if(a[i]==min)cout<<a[1]<<" "; else cout<<a[i]<<" "; } cout<<max; return 0; }
-
-1
`
#include <bits/stdc++.h> using namespace std; int main() { int n,a[100],max=0,min=10000000000000,d,x; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=0;i<n;i++) { if(a[i]>max) { max=a[i]; d=i; } if(a[i]<min) { min=a[i]; x=i; } } a[x]=a[0]; a[0]=min; a[d]=a[n-1]; a[n-1]=max; for(int i=0;i<n;i++) { cout<<a[i]<<" "; } return 0; }
-
-1
#include <iostream> using namespace std; int main() { int n, a[100], minn = 101, maxx = -1, z, b, y; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { if (a[i] < minn) { minn = a[i]; z = i; } } for (int i = 0; i < n; i++) { if (a[i] > maxx) { maxx = a[i]; b = i; } } y = a[0]; a[0] = minn; a[z] = y; y = a[n - 1]; a[n - 1] = maxx; a[b] = y; for (int i = 0; i < n; i++) { cout << a[i] << " "; } return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; int main() { int n,a[101],max=0,min=10000,i; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; if(a[i]>max) { max=a[i];取最大值 } if(a[i]<min) { min=a[i];//取最小值 } } cout<<min<<" "; for(i=2;i<n;i++) { if(a[i]==max) { cout<<a[n]<<" "; } else if(a[i]==min) { cout<<a[1]<<" "; } else { cout<<a[i]<<" "; } } cout<<max;//按格式输出即可 return 0; }
-
-1
P212 移动数组元素
其实这道题我编了好久才AC的……题目传送门:P212 【入门】移动数组元素
这里需要用到一个函数swap 用作交换,这里用来交换数组元素,第一个和最小值,最大值和最后一个。
AC代码:
#include <bits/stdc++.h>//定义万能头文件 using namespace std;//创建命名空间 int main ()//定义主函数 { int a[105], n, maxn = -114514, minn = 114514, b, c;//定义数组(数组开大一些以防数组越界,定义数组的长度n,最大值和最小值(114514是可以改变的),然后用来存储最大值和最小值位置的变量b和c cin >> n;//输入数组的大小 for (int i = 1; i <= n; i++)//循环输入数组 { cin >> a[i];//输入数组元素 if (a[i] > maxn)//如果这个元素比最大值还要大 { maxn = a[i];//那么最大值就是这个元素 b = i;//记录下这个元素的位置 } if (a[i] < minn)//如果这个元素比最小值还要小 { minn = a[i];//那么最小值就是这个元素 c = i;//记录下这个元素的位置 } } swap (a[1], a[c]);//交换最小值和第一个元素 swap (a[n], a[b]);//交换最大值和最后一个元素 for (int i = 1; i <= n; i++)//循环输出数组 { cout << a[i] << " ";//记得要输出空格 } return 0;//保持return 0的好习惯 }
~~完结撒花=)🎉️ 🎉️ 🎉️ ~~
-
-1
#include<iostream> using namespace std; int main() { int n, x, y, a[100], maxx = 0, minn; cin >> n; for (int i = 0;i < n;i++) { cin >> a[i]; } minn = a[0]; x = a[0]; y = a[n - 1]; for (int i = 0;i < n;i++) { if (a[i] > maxx) { maxx = a[i]; } if (a[i] < minn) { minn = a[i]; } } for (int i = 0;i < n;i++) { if (a[i] == maxx) { a[i] = y; } if (a[i] == minn) { a[i] = x; } } a[0] = minn; a[n - 1] = maxx; for (int i = 0;i < n;i++) { cout << a[i] << " "; } return 0; }
-
-1
#include <bits/stdc++.h> using namespace std; int main() { int a[100], n, ma = -10000, mi = 10000; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; if (a[i] > ma) { ma = a[i]; } if (a[i] < mi) { mi = a[i]; } } cout << mi << " "; for (int i = 1; i < n - 1; i++) { if (a[i] == ma) { cout << a[n - 1] << " "; continue; } if (a[i] == mi) { cout << a[0] << " "; continue; } cout << a[i] << " "; } cout << ma << " "; return 0; }
-
-1
1.求出数组的最大值和最小值 2.将原数组的第一位和最后一位数据存储起来 3.遍历元组 代码长,但是复制粘贴简单,检测过的代码也是准确无误,不劳于再次修改
#include <bits/stdc++.h> using namespace std; int main() { int a[100],n; cin >>n; for(int i=0;i<n;i++) cin >>a[i]; int maxx=0,minn=a[0]; for(int i=0;i<n;i++) { if(maxx<=a[i]) { maxx=a[i]; } if(minn>=a[i]) { minn=a[i]; } } int first =a[0]; int last =a[n-1]; for(int i=0;i<n;i++) { if(i==0) { cout <<minn<<" "; } else if(i==n-1) { cout <<maxx<<" "; } else if(a[i]==minn) { cout <<first<<" "; } else if(a[i]==maxx) { cout <<last<<" "; } else { cout <<a[i]<<" "; } } return 0; }
-
-1
这里可以用亿点系统函数。
#include <bits/stdc++.h> using namespace std; int n,maxn,minn,a[105]; int main() { cin >> n; for(int i=0;i<n;i++) cin >> a[i]; maxn=*max_element(a,a+n);//找出最大值。 minn=*min_element(a,a+n);//找出最小值。 for(int i=0;i<n;i++) { if(a[i]==maxn) swap(a[i],a[n-1]);//交换。 if(a[i]==minn) swap(a[i],a[0]);//交换。 } for(int i=0;i<n;i++) cout << a[i] << " "; return 0; }
-
-11
#include <bits/stdc++.h> using namespace std; int a[200]; int main() { int n,minn=10000,maxx=0; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { if(a[i]>maxx) { maxx=a[i]; } if(a[i]<minn) { minn=a[i]; } } for(int i=1;i<=n;i++) { if(a[i]==minn) { int t=a[i]; a[i]=a[1]; a[1]=t; } if(a[i]==maxx) { int t=a[i]; a[i]=a[n]; a[n]=t; } } for(int i=1;i<=n;i++) { cout<<a[i]<<" "; } return 0; }
信息
- ID
- 212
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- 递交数
- 6826
- 已通过
- 2435
- 上传者