题目描述
给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。
输入格式
共2行:
第1行为 N;
第2行为 N 个正整数,其间用空格间隔。
输出格式
增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
样例
input
10
1 3 2 6 5 4 9 8 7 10
output
1,3,5,7,9
解析
这题一个最大的难点在于如何输出“,”,我为读者提供2种思路。
思路一
排序。
找奇数,赋值给另一个数组。
输出:先判断此元素是否为数组中最后一个元素,否,输出“,”;是,则不输出“,”。
代码
for(i=1;i<=k;i++){
if(i!=k)cout<<b[i]<<',';
else cout<<b[i];
}
思路二
排序。
找奇数,赋值给另一个数组。
输出:输出到(k-1),所输出的每个元素后都输出“,”,再单独输出数组中最后一个数。
注:k为另一个数组的元素总数。
代码
for(i=1;i<=k-1;i++)cout<<b[i]<<',';
cout<<b[k];
代码
代码1
#include<bits/stdc++.h>
using namespace std;
int n,a[110000],i,j,b[11000],k;//a数组为输入数组,b数组为由小到大排序的奇数数组
int main(){
cin>>n;//输入
for(i=1;i<=n;i++)cin>>a[i];//输入a数组
sort(a+1,a+n+1);//排序
for(i=1;i<=n;i++){
if(a[i]%2==1){//判断是否为奇数
k++;
b[k]=a[i];//赋值
}
}
for(i=1;i<=k;i++){//判断如何输出","。
if(i!=k)cout<<b[i]<<',';//如果第i个元素下标不是最后一个,输出","。
else cout<<b[i];//如果是最后一个,则不输出","。
}
return 0;
}
代码2
#include<bits/stdc++.h>
using namespace std;
int n,a[110000],i,j,b[11000],k;//a数组为输入数组,b数组为由小到大排序的奇数数组
int main(){
cin>>n;//输入
for(i=1;i<=n;i++)cin>>a[i];//输入a数组
sort(a+1,a+n+1);//排序
for(i=1;i<=n;i++){
if(a[i]%2==1){//判断是否为奇数
k++;
b[k]=a[i];//赋值
}
}
for(i=1;i<=k-1;i++)cout<<b[i]<<',';
cout<<b[k];
return 0;
}
完结!!!💥