#include<stdio.h>#define N 3int main(){ void sort(int *p); int i=0,a[N]={0},*p; for(i=0;i<N;i++) scanf("%d",&a[i]); p=&a[0]; sort(p); printf("The sort number is:\n"); for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); return 0;}void sort(int *p){ int i,t,j; for(j=0;j<N-1;j++) for(i=0;i<N-1-j;i++) if(*p>*(p+1)) { t=*p; *p=*(p+1); *(p+1)=t; }}对三个整数进行排序,本来不用这么复杂,但是想用不同的方法去做,如果修改N还可以简便的修改程序,但是输出的结果不对。。。
2 回答
已采纳
慕用4063026
TA贡献195条经验 获得超115个赞
#include<stdio.h> #define N 3 int main() { void sort(int *p); int i=0,a[N]={0},*p; for(i=0;i<N;i++) scanf("%d",&a[i]); sort(a); printf("The sort number is:\n"); for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); return 0; } void sort(int *p) { int i,t,j; for(j=0;j<N-1;j++) for(i=j+1;i<=N;i++) if(*(p+i)>*(p+j)) //你写的版本的这里没有对数组第3个元素进行判断 { //所以才会造成你哪个只判断第一元素和第二元素 t=*(p+i); *(p+i)=*(p+j); *(p+j)=t; } }
按照你的改的
输入:1 2 3
输出:
The sort number is:
3 2 1
东风冷雪
TA贡献33条经验 获得超7个赞
#include <stdio.h> #define N 6 //void sort(int *p); int main() { void sort(int *p); int i = 0, a[N] = {0}, *p; for (i = 0; i < N; i++) scanf("%d", &a[i]); p = a; sort(p); printf("The sort number is:\n"); for (i = 0; i < N; i++) printf("%5d", a[i]); printf("\n"); return 0; } void sort(int *p) { int i, t, j; for (j = 0; j < N - 1; j++) for (i =j+1; i < N; i++) if (*(p+j) > *(p + i)) { t = *(p+j); *(p+j) = *(p + i); *(p + i) = t; } }
无语 ,冒泡写的一团糟糕,逻辑都是错的。。。。。
/home/dfzxk/CLionProjects/untitled2/cmake-build-debug/untitled2
99
-88
569
22
47
-58
The sort number is:
-88 -58 22 47 99 569
Process finished with exit code 0
- 2 回答
- 0 关注
- 1138 浏览
添加回答
举报
0/150
提交
取消