有一个数组int A[SIZE],其中里面包含若干0和其余非0的整数,写一个函数int Func(int* A, int nSize),使A把0元素移至后面,非0整数移至数组前面并保持从大到小排序,函数的返回值为第一个为0的元素的下标。
使用#define SIZE 100定义数组维数,并使用rand()函数随机生成数组A的元素,其中大于20000的数都强制为0;怎么写?
一个简单的实现:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int Func(int *A ,int nSize){
int i,j;
int max;
int temp;
for(i=0;i<nSize-1;i++){
for(j=i;j<nSize;j++){
if(A[i]<A[j]){
temp=A[i];
A[i]=A[j];
A[j] =temp;
}
}
}
//
// printf("Afeter sort:\n");
// for(i=0;i<SIZE;i++){
// printf("%d ",A[i]);
// if((i+1)%5==0){
// printf("\n");
// }
// }
int index=-1;
for(i=0;i<nSize;i++){
if(A[i]==0){
index=i;
return index;
}
}
}
int main(void){
int A[SIZE];
int i;
int num;
for(i=0;i<SIZE;i++){
num = rand();
if(num>20000){
num=0;
}
A[i] =num;
// printf("%d ",A[i]);
// if((i+1)%5==0){
// printf("\n");
// }
}
printf("数组第一个为0的元素的下标为:%d.\n",Func(A,SIZE));
return 0;
}