A7867排队照相题解(不用结构体)
2026-08-31 15:28:08
发布于:广东
12阅读
0回复
0点赞
首先我们先看题目,他要求把男生和女生分开排序,那么我们就需要判断他是男生还是女生,题目有说男生用整数,女生用负数,这道题其实很简单不用结构体,只需要把他们分开排序就好了
首先呢,我们就只需要简单的进行输入,再定义两个数组分别储存男生和女生的身高和两个变量用来计数男生和女生的数量
int n;//定义整形变量n表示有n个人
int a[205],b[205];//用来储存男生和女生的身高a储存男生b储存女生
int j = 0,k = 0;//用来计数男生和女生的数量j计数男生k计数女生
cin >> n;//输入
然后我们再用for循环来把他们分类成男生和女生把他储存在a和b两个数组里面,再记录个数(用来排序)
for(int i = 1;i <= n;i++){//循环遍历从1~n
int t;
cin >> t;//输入n个人的身高
if(t >= 0){//判断如果这是男生(是正数)
a[j] = t;//那么把他储存在a里面
j++;//计数器+1
}
else{//否则那么这就是女生
b[k] = t;//那么把他储存在b里面
k++;//计数器+1
}
}
接着我们要对他们进行排序,因为sort是默认从小到大,而女生又是负数形式,所以不用加排序方式
sort(a,a + j);//排序
sort(b,b + k);//排序
最后我们再进行输出就可以了
for(int i = 0;i < j;i++){//先输出男生
cout << a[i] << " " ;
}
for(int i = 0;i < k;i++){//再输出女生
cout << b[i] << " " ;
}
整体代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;//定义整形变量n表示有n个人
int a[205],b[205];//用来储存男生和女生的身高a储存男生b储存女生
int j = 0,k = 0;//用来计数男生和女生的数量j计数男生k计数女生
cin >> n;//输入
for(int i = 1;i <= n;i++){//循环遍历从1~n
int t;
cin >> t;//输入n个人的身高
if(t >= 0){//判断如果这是男生(是正数)
a[j] = t;//那么把他储存在a里面
j++;//计数器+1
}
else{//否则那么这就是女生
b[k] = t;//那么把他储存在b里面
k++;//计数器+1
}
}
sort(a,a + j);//排序
sort(b,b + k);//排序
for(int i = 0;i < j;i++){//先输出男生
cout << a[i] << " " ;
}
for(int i = 0;i < k;i++){//再输出女生
cout << b[i] << " " ;
}
}
无注释版;
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,a[205],b[205],j = 0,k = 0,t;
cin >> n;
for(int i = 1;i <= n;i++){
cin >> t;
if(t >= 0){
a[j] = t;
j++;
}
else{
b[k] = t;
k++;
}
}
sort(a,a + j);
sort(b,b + k);
for(int i = 0;i < j;i++){
cout << a[i] << " " ;
}
for(int i = 0;i < k;i++){
cout << b[i] << " " ;
}
}
这里空空如也




有帮助,赞一个