蒜头君给了一个长度为 NN(不大于 500500)的正整数序列(正整数的值不超过 NN),请将其中的所有奇数取出,并按升序输出。
输入格式
共 2 行:
第 1 行为 N;
第 2 行为 N 个正整数,其间用空格间隔。
输出格式
增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
Sample Input
10 1 3 2 6 5 4 9 8 7 10
Sample Output
1,3,5,7,9
首先判断所输入数据是否为奇数
if(n%2!=0)
{
a[j]=n;
j++;
}
然后给数组排序
for(i=0;i<j-1;i++)
{
int q=0;
for(f=0;f<j-i-1;f++)
{
if(a[f]>a[f+1])
{
t=a[f];
a[f]=a[f+1];
a[f+1]=t;
}
}
}
还要考虑数组只有一个数据的情况
if(i==1)
printf("%d,",a[0]);
总代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,i,n,t,f,j=0;
scanf("%d",&N);
int a[n];
for(i=1;i<N;i++)
{
scanf("%d",&n);
if(n%2!=0) //判断所输入数据是否为奇数,若是则存到数组a[]中
{
a[j]=n;
j++; //j为数组内元素个数
}
}
for(i=0;i<j-1;i++)
{
int q=0;
for(f=0;f<j-i-1;f++) //给数组排序
{
if(a[f]>a[f+1])
{
t=a[f];
a[f]=a[f+1];
a[f+1]=t;
}
}
}
if(i==1) //考虑数组内数据只有一个数据的情况
printf("%d,",a[0]);
else //数组内数据大于1时
{
for(i=0;i<j-1;i++)
{
printf("%d,",a[i]);
}
if(j>=2)
{
printf("%d\n",a[j-1]);
}
}
return 0;
}