蒜头君给了一个长度为 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
思路
由题意可得输入的数列不大于500,故应该用数组形式即m[500]并用循环的for语句输入,因需输出奇数且升序排列故应用if判断语句,最后需输出数列,且之间应用‘,’隔开且最后一个数字后面没有‘,’故也应用判断语句。
#include<stdio.h>
int main(){
int n,i=0,a=0,m[500],num[500];
scanf("%d",&n);//输入N
for(i=0;i<n;i++){
scanf("%d",&m[i]);
if(m[i]%2!=0){
num[a]=m[i];//利用循环将奇数数列存到num[a]当中并且利用a++;得到共有多少个奇数。
a++;
}
}
for(i=0;i<a;i++){
int sum=0,j=0;//定义新的字符。
for(j=i;j<a;j++){ //将num[i]与num[j]进行比较并排序
if(num[j]<num[i]){ //根据题意需升序输出
sum=num[j];
num[j]=num[i];
num[i]=sum;
}
}
}
for(int j=0;j<a;j++){ //由之前所得到的数组中的奇数数目进行循环并输出
printf("%d",num[j]);
if(j!=a-1){
printf(",");//题中输出后最后一个数字后没有‘,’故用if语句进行判断。
}
}
return 0;
}