A-简单排序

蒜头君给了一个长度为 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;
}

解题思路

审题可知,需要输入两行,一行为数列个数,一行为相应个数的数,因此定义数列个数的数组,然后通过冒泡循环或者其他循环方式,交换数据位置,最后做到如题目要求,升序输出。注意点在于逗号的位置,确保输出不会出错,因此需要正确的位置输出逗号

Guess you like

Origin blog.csdn.net/ChenYangBob/article/details/121409658