2021-11-14排序

描述:

给了一个长度为 NN(不大于 500500)的正整数序列(正整数的值不超过 NN),请将其中的所有奇数取出,并按升序输出。

输入格式 

int型

输出格式

增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。

输入样例

10
1 3 2 6 5 4 9 8 7 10

输出样例

1,3,5,7,9

解题思路:以数组的形式进行前后比较,先排列顺序,由小到大,再将奇数挑出来,由于最后用逗号隔开,且不确定第一个数,所以用空格替代的方式将最后一个逗号去掉。也可以输出a[0]其余用“,a[j+1]”

#include <stdio.h>
int main(void) {
	int a[100];
	int n, i, j, t;
	scanf("%d", &n); //n为要排序的数的个数
	//输入需要排序的数
	for (i = 0; i < n; ++i)
		scanf("%d", a + i);//a+1就是指向了第二个元素,即a[1]。
	//开始排序
	for (i = 0; i < n - 1; ++i) { //每次为相邻的两个数进行比较,共比较n-1次
		for (j = i + 1; j < n; ++j) { //j从i后一个开始,a[i]与a[j]进行比较
			if (a[i] > a[j]) { //a[i]为当前值,若是比后面的a[j]大,进行交换
				t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置
	for (j = 0; j < n; ++j)
		if (a[j] % 2)//如果为奇数则输出

			printf("%d,", a[j]);//输出排过序的奇数
	printf("\b \n");//\b表示光标后退一格,\b退到逗号位置空格代替,



	return 0;
}

a是数组名,同时也是数组的首地址,指向数组的第一个元素。a+1就是将a的值(地址)加上单个数组元素个长度(在这里是一个Int的长度),所以a+1就是指向了第二个元素,即a[1]。因为它是地址,所以在使用的根据情况加上解引用操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值