用递回把数字由大至小排列
void reverse(int data[max],int rdata[max],int n){int i,min;
if(n==1){
rdata[n]=data[1];
for(i=1;i<=20;i++){
if(rdata[n]<data[i]&&data[i]>rdata[n+1])
rdata[n]=data[i];
else
rdata[n];
}
}
else{
rdata[n]=data[1];
for(i=1;i<=20;i++){
if(rdata[n]<data[i]&&data[i]>rdata[n+1])
rdata[n]=data[i];
else
rdata[n]=rdata[n];
}
printf("%3d",rdata[n]);
reverse(data[max],rdata[max],n-1); <<<<<这里一直说我错,哪里有问题???
}
}
int main(){
int data[max],data1[max],rdata[max],k,i,j,a;
printf("Randome generating 20 data from 0 to 100...\n");
srand(time(NULL));
a=1;
for(i=0;i<=100;i++){
data[i]=a;
data1[i]=a;
a++;
}
for(i=1;i<=20;i++){
do{
k=rand()%100;
data1[k];
}while(data1[k]==0);
data[i]=data1[k];
data1[k]=0;
}
for(i=1;i<=20;i++){
if(i==10)
printf("%2d \n",data[i]);
else
printf("%2d ",data[i]);
}
printf("\n");
reverse(data[max],rdata[max],20);
system("pause");
}
假设上面没用问题,用我这个方法去编写正确吗?