2 qq 29208603 qq_29208603 于 2015.06.22 22:49 提问

输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换。用指针实现,但是程序崩溃了

#include
#include

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()
{ int a[10],i, p, *q, *n;
printf("请输入十个数\n");
for (i = 0; i < 10; i++)
scanf_s("%d", a[i]);
for (i = 0; i < 10; i++)
{
p =&a[0];
if (
(p+1) <= *p)
*n = *(p+1); *(p+1) = *p; *p = *n;
}
for (i = 0; i < 10; i++)
{
q =&a[9];
if (*q <= *(q+1))
*n = *(q+1); *(q+1) = *q; *q = *n;

}
for (i = 0; i < 10; i++)
printf("%d\n", a[i]);
}

3个回答

daggger
daggger   2015.06.22 23:03

只想问,这写的什么鬼。

devmiao
devmiao   Ds   Rxr 2015.06.23 00:01

for (i = 0; i < 10; i++)
{
p =&a[0];
if ((p+1) <= p)
*n = *(p+1); *(p+1) = *p; *p = *n;
}
->
int max = 0;
for (i = 0; i < 10; i++)
{
p =&a[0];
if (
(p + i) > *(p + max)) max = i;
}
*n = *(&a[0] + max); *(&a[0] + max) = a[0]; a[0] = n;
另一个类似

lrgdongnan
lrgdongnan   2015.06.23 00:12

楼主,没发现你写的循环体每次循环里面的值都不变吗?

Csdn user default icon
上传中...
上传图片
插入图片