数组问题
各位帮我修改这串代码,看看哪里错了谢谢了{:10_262:}#include <stdio.h>
void sort(int *p)
{
int i,j,t;
for(i=0;i<6;i++)
{
for(j=0;j<6-i;j++)
if(*(p+i)<*(p+i+1))
{
t=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=t;
}
}
}
int main(void)
{
int a[]={5,23,31,48,25,67},i;
sort(a);
int *p;
p=a;
for(i=0;i<6;i++,p++)
{
printf("%4d",*p);
}
} 注释部分是修改的,把i 改j 即可
#include <stdio.h>
void sort(int* p)
{
int i, j, t;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 6 - i; j++)
//if (*(p + j) < *(p + j + 1))
{
// t = *(p + j);
//*(p + j) = *(p + j + 1);
//*(p + j + 1) = t;
}
}
}
int main(void)
{
int a[] = { 5,23,31,48,25,67 }, i;
sort(a);
int* p;
p = a;
for (i = 0; i < 6; i++, p++)
{
printf("%4d", *p);
}
} a327904410 发表于 2021-12-10 22:27
注释部分是修改的,把i 改j 即可
为什么一开始显示的是一串地址吧好像
64224006748312523 Boring1031 发表于 2021-12-10 22:49
为什么一开始显示的是一串地址吧好像
#include <stdio.h>
void sort(int* p)
{
int i, j, t;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 6 - i; j++)
if (*(p + j) < *(p + j + 1))
{
t = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = t;
}
}
}
int main(void)
{
int a[] = { 5,23,31,48,25,67 }, i;
sort(a);
int* p;
p = a;
for (i = 0; i < 6; i++, p++)
{
printf("%4d", *p);
}
}
我的输出结果:
6748312523 5 a327904410 发表于 2021-12-10 22:51
我的输出结果:
我的还是那一串,可能编译器不一样?我用的devc Boring1031 发表于 2021-12-10 22:54
我的还是那一串,可能编译器不一样?我用的devc
你的冒泡排序写错了,已改回
#include <stdio.h>
void sort(int *p)
{
int i,j,t;
for(i=0;i<6;i++)
{
for(j=0;j<6-i-1;j++)
if (*(p + j) < *(p + j + 1))
{
t = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = t;
}
}
}
int main(void)
{
int a[]={5,23,31,48,25,67},i;
sort(a);
int *p = NULL;
p=a;
for(i=0;i<6;i++,p++)
{
printf("%4d",*p);
}
}
页:
[1]