首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么实现这个循环

2012-02-25 
如何实现这个循环?有一组数{0,1,2,3,4,5,6,7,8,9}和两个指针:*p1,*p2。现在要求开始搜索这一组数,用p1指向

如何实现这个循环?
有一组数{0,1,2,3,4,5,6,7,8,9}
和两个指针:*p1,*p2。
现在要求开始搜索这一组数,用p1指向搜索到的第一个数,用p2指向剩余的数,再用p1和p2进行大小比较。即,先让p1-> 0,p2-> {1,2,3,4,5,6,7,8,9},用p1和p2比较大小后得到{-1,-2,-3,-4,-5,-6,-7,-8,-9}。
比较一次后,把{0}抛弃掉,把p1-> 1,p2-> {2,3,4,5,6,7,8,9},再用p1,p2进行比较,再抛弃{1},依次循环,直至所有数都比较过为止。

这个循环如何实现?
以上的数和指针都是举例,大家可自定义,最重要是实现这个循环的方法,希望大家赐教,有参考代码就更好了,谢谢!

[解决办法]
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int *p1, *p2;
int *last=a+n-1; // n=10;
for (p1 = a; p1 <last; p1++)
{
for (p2 = p1+1; p2 <=last; p2++)
{
if (compare(*p1, *p2) < 0) {
// ...
}
}
}

[解决办法]
main()
{
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int *p1,*p2;
int i,j;
for(i=0;i <9;i++)
{
p1=&a[i];
for(j=i+1;j <10;j++)
{
p2=&a[j];
if(*p1 <*p2)
printf( "%d ",*p1-*p2);
}
printf( "\n ");
}
}
源程序,可以得到LZ要求的结果,但应该还有更高效率的代码,今晚睡觉的时候再想想!
[解决办法]
mark
如果不用存这些{-1,-2,-3,-4,-5,-6,-7,-8,-9}。我也来试下

a[]={0,1,2,3,4,5,6,7,8,9}
p1=a;
p2=a;
for( i=0 ;i <10 ;i++)
for( j=i+1 ;j <10;j++)
{ ci=p1[i]-p2[j];
if (ci> 0)
{}
else if (ci <0)
{}
else //(ci==0)
{}
}

热点排行