问题描述
- 输入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("%dn", a[i]);
}
解决方案
只想问,这写的什么鬼。
解决方案二:
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;
另一个类似
解决方案三:
楼主,没发现你写的循环体每次循环里面的值都不变吗?