C语言的学习问题 32(zP156-24)

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:36:40
求以下程序的输出结果
谢谢
希望说得详细一点

viod f(int *x, int *y)
{ int t;
t=*x;*x=*y;*y=t;
}
main()
{int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while (p>q)
{ f(p,q);p++;q--; }
for(i=0;i<8;i++) printf("%d,",a[i]);
}

谢谢

输出:1,2,3,4,5,6,7,8,
viod f(int *x, int *y)能实现数值交换,因为是地址传递。
p>q 如果p指向的地址在q指向的地址之后,则为真,因为p指向1,q指向8,p在q前,所以不成立,while一次都不会执行。所以原样输出!

#include <iostream.h>
void main()
{
for(int i=1;i<=10;i++)
{
for(int j=0;j<=25-2*i;j++)
cout<<' ';
//输出第i前面的空格
for(j=1;j<=i;j++)
{
if(i==10)
cout<<i<<" ";
else
cout<<i<<" ";
}
//输出数字和空格,
cout<<endl;
}
//10循环控制输出数字和空格
}