#9. 奇数单增序列

该博客介绍了一道编程题,要求从不超过500的正整数序列中找出所有奇数并按升序排列。博客提供了两种解决方案的思路和代码,分别通过排序后筛选和直接筛选奇数再排序的方法来处理问题,最终输出结果时考虑了逗号的插入条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给定一个长度为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种思路。

思路一
  1. 排序。

  1. 找奇数,赋值给另一个数组。

  1. 输出:先判断此元素是否为数组中最后一个元素,否,输出“,”;是,则不输出“,”。

代码
for(i=1;i<=k;i++){
    if(i!=k)cout<<b[i]<<',';
    else cout<<b[i];
}
思路二
  1. 排序。

  1. 找奇数,赋值给另一个数组。

  1. 输出:输出到(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;
}

完结!!!💥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值