我写了一个代码,其中偶数位和奇数位有着相似的操作,问:写一个函数来实现两次相似的操作!
#include <stdio.h>
int main() {
int a[1000], b[1000], c[1000], i, j, k, n, x;
scanf("%d", &n);
//把数字存进a[]
for(i = 0; i < n; i++) {
scanf("%d", &a[i]); //a[0]~a[n-1]
}
//把奇数位存进b[]
for(i = 0, j = 0; i < n; i = i+2, j++) {
b[j] = a[i]; //b[0]~b[j-1]
}
//把偶数位存进c[]
for(i = 1, k = 0; i < n; i = i+2, k++) {
c[k] = a[i]; //c[0]~c[k-1]
}
//b[]的冒泡排序
for(i = 0; i < j-1; i++)//一共j个数,排j-1次
{
for(x = 0; x < j-i-1; x++) {
if(b[x] > b[x+1]) {
int t = b[x+1];
b[x+1] = b[x];
b[x] = t;
}
}
}
//c[]的冒泡排序
for(i = 1; i < k; i++)//排k-1次
{
for(x = 0; x < k-i; x++)//比较k-i次
{
if(c[x] > c[x+1]) {
int t = c[x+1];
c[x+1] = c[x];
c[x] = t;
}
}
}
for(i = 0; i < j; i++)//输出奇数列
{
printf("%d ", b[i]);
}
printf("\n");
for(i = 0; i < k; i++)//输出偶数列
{
printf("%d ", c[i]);
}
return 0;
}