现在每次输出都会少掉最大项,还会多出来一些0,请问如何解决?
long long int a[1000];
long long int c[1000];
void sort(long long int as[],long long int left,long long int right)
{
if(left<right) { int i = left; int j = right; int x = as[i]; while(i<j) { while(i<j&&as[j]>x) j--; if(i<j){ as[i] = as[j]; i++; } while(i<j&&as[i]<x) i++; if(i<j){ as[j] = as[i]; j--; } } as[i] = x; sort(as,left, i-1); sort(as,i+1, right); }
}
void addsort(long long int num)
{
printf("aPlease input the number of the integers you want to add to the origin array:
"); long long int addnum,i,j,k; scanf("%lld",&addnum); long long int add[10000]; printf("aPlease input the integers you want to add one by one:
"); for (i=1;i<=addnum;i++) { scanf("%lld",&add[i]); } if (addnum > 1) { sort(add,1,addnum); } long long int addposition = 1; long long int aposition = 1; long long int totalnum; totalnum = num + addnum; printf("The final array is:
"); for (i=1;i<=totalnum-5;i++) { if (a[aposition] > add[addposition]) { printf("%lld ",add[addposition]); addposition++; } if (a[aposition] == add[addposition]) { printf("%lld %lld ",add[addposition],add[addposition]); i++; aposition++; addposition++; } if (a[aposition] < add[addposition]) { printf("%lld ",a[aposition]); aposition++; } } printf("
"); return;
}
int main()
{
long long int i,j,num; printf("aPlease input the number of the integers in the origin arrray:
"); scanf("%lld",&num); printf("aPlease input the integers in the origin array one by one:
"); for (i=1;i<=num;i++) { scanf("%lld",&a[i]); } sort(a,1,num); addsort(num); system("pause"); return 0;
}
付费偷看金额在0.1-10元之间
一周热门 更多>