现在每次输出都会少掉最大项,还会多出来一些0,请问如何解决?
# include# include 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 x) j--; if(i 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:\n"); 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("\n"); return; } int main() { long long int i,j,num; printf("\aPlease input the number of the integers in the origin arrray:\n"); scanf("%lld",&num); printf("\aPlease input the integers in the origin array one by one:\n"); for (i=1;i<=num;i++) { scanf("%lld",&a[i]); } sort(a,1,num); addsort(num); system("pause"); return 0; }
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
addsort中第二个for改成下面,逻辑错态度,自己对比代码吧
for (i=1;i num) { printf("%lld ",add[addposition]); addposition++; } else if (addposition > addnum) { printf("%lld ",a[aposition]); aposition++; } else if (a[aposition] > add[addposition]) { printf("%lld ",add[addposition]); addposition++; } else if (a[aposition] == add[addposition]) { printf("%lld %lld ",a[aposition],add[addposition]); i++; aposition++; addposition++; } else if (a[aposition]