#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 关注
- 1207 浏览
添加回答
举报
0/150
提交
取消
