Rumah > Soal Jawab > teks badan
现在每次输出都会少掉最大项,还会多出来一些0,请问如何解决?
# include<cstdio> # include<cstdlib> 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:\n"); 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:\n"); 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:\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; }
三叔2016-10-31 10:30:39
addsort中第二个for改成下面,逻辑错态度,自己对比代码吧
for (i=1;i<=totalnum;i++) { if (aposition > 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] < add[addposition]) { printf("%lld ",a[aposition]); aposition++; } }