#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
void f(int b[],int n,int flag){
int i,j,t;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(flag?b[i]>b[j]:b[i]>b[j]){
t=b[i];b[i]=b[j];b[j]=t;
}
}
}
}
int main(){
int a[10]={8,7,10,9,6,1,5,3,4,2},i;
f(&a[3],5,0);
f(a,6,1);
for(i=0;i<10;i++)printf("%3d",a[i]);
}
写出结果
1 3 5 7 8 10 6 9 4 2
结果正确
易错点
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
void f(int b[],int n,int flag){
int i,j,t;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(flag?b[i]>b[j]:b[i]>b[j]){
t=b[i];b[i]=b[j];b[j]=t;
}
}
}
}
void fun(int *a,int n){
int i,j,t;
for(i=0;i<n-1;i+=2){
for(j=i+2;j<n;j+=2){
if(a[i]<a[j]){
t=a[i];a[i]=a[j];a[j]=t;
}
}
for(int k=0;k<10;k++)printf("%3d",a[k]);
printf("\n");
}
}
int main(){
int a[10]={8,7,10,9,6,1,5,3,4,2},i;
int b[10]={1,2,3,4,5,6,7,8,9,10};
fun(b,10);
for(i=0;i<10;i++)printf("%3d",b[i]);
}
char fun(char *w,int n){
char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1<s2){
t=*s1++;
*s1=*s2--;
*s2=t;
puts(w);
}
}
int main(){
char p[]="1234567";
fun(p,strlen(p));
puts(p);
return 0;
}