蒜头君给了一个长度为 N(不大于 500)的正整数序列(正整数的值不超过 N),请将其中的所有奇数取出,并按升序输出。
输入格式
共 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
#include<stdio.h>
int main(){
int n,i,j,t,x,m=0;//使得数组下标从0开始
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&x);//输入测试数据
if(x%2!=0){//判断奇数
a[m]=x;
m++;//用m来保存计数的个数
}
}
for(i=0;i<m;i++){//利用冒泡排序
for(j=i+1;j<m;j++){//j从i+1开始
if(a[i]>a[j]){//比较前后大小,如果满足条件,就交换
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<m;i++){
printf("%d",a[i]);
if(i!=m-1){
printf(",");//处理标点位置,保证输出格式正确。
}
}
return 0;
}
解题思路
审题可知,需要输入两行,一行为数列个数,一行为相应个数的数,因此定义数列个数的数组,然后通过冒泡循环或者其他循环方式,交换数据位置,最后做到如题目要求,升序输出。注意点在于逗号的位置,确保输出不会出错,因此需要正确的位置输出逗号