永发信息网

关于C语言指针的一个问题

答案:4  悬赏:20  手机版
解决时间 2021-06-05 19:01

void main()
{
int a[10],*p=a,*max=a,*min=a,t;
for (p=a;p<a+10;p++)
scanf("%d",p);
for (p=a+1;p<a+10;p++)
{
if (*(p-1)<*p) max=p;
if (*(p-1)>*p) min=p;
}
t=*max,*max=*(a+9),*(a+9)=t;
t=*min,*min=*a,*a=t;
for (p=a;p<a+10;p++)
printf ("%d",*p);
printf("\n");
getch();
}

代码如上,目的是输入10个整数存入一维数组,将其中最大数和最后一个数交换,最小数跟第一个数交换。请问哪里错了,tc2.0调试无出错。但是结果不对

最佳答案
void main()
{
int a[10],*p=a,*max=a,*min=a,t;
for (p=a;p<a+10;p++)
scanf("%d",p);

for (p=a+1;p<a+10;p++)
{
if (*max<*p) max=p;
if (*min>*p) min=p;
}

t=*max,*max=*(a+9),*(a+9)=t;
if (*min != *(a+9))
t=*min,*min=*a,*a=t;

for (p=a;p<a+10;p++)
printf ("%d ",*p);
printf("\n");
getch();
}
全部回答

原因是:只选择了一次max和min,故只交换了第一个和最后一个;

哎,为什么不采取我的呢?

这个程序可以是说是同时选择两个的排序(一次交换两个),快于选择排序(一次交换一个),我以前做过的,根据你的改 了下。

#include <stdio.h> void main() { int a[10]={1,5,6,9,19,1,4,3,0,10}, *p, *q, *r, *max, *min, t; //for (p = a; p < a+10; p++) //scanf("%d",p); // for (r = a, q = a+9; r < q; r++, q--)//交换一次后,减小范围 { max = min = r; for(p = r+1; p <= q; p++)//找max、min,必须钳在第一个for里 { if (*max < *p) max = p; if (*min > *p) min = p; } if(max != min) { t = *min; *min = *r; *r = t; if(max == r) max = min;//容错,你可以研究一下 t = *max; *max = *q; *q = t; } else break; } // for (p = a; p < a+10; p++) printf ("%d ",*p); printf("\n");

}

这个要有前提的 前提是 你每次交换的时候 不会影响到最大值和最小值 例如 10 9 8 。。。1 首先 最大的是1 找到的最大值是第一个 10 那么和最后一个交换 就把 10 和1 交换了 第一个就是1 最小值 本来是第10个的1 但是交换后成了最大的10 对后来照成了影响 所以解决了这点就好办了 先找最大值 交换后 再找最小值 交换 就可以避免这点了 希望我的思路对你有帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
41自由幻想怎么刷级速度些
给我的黑色泰迪犬(帅哥)征名!有才的尽情起
爱一个人很容易,相处一个人怎么那么难?
南漳县襄樊南漳县七桥坪土豆种植专业合作社怎
大同市南郊区马军营乡白马城村邮政编码
起至至今,中国是不是只有郑洁一名名将在网球
清华同方近来为时尚路线投入真大,大家谁知道
什么美白面膜好呀!
天龙八部谁有校园卡 有的给我张好吗
一个你不喜欢的人说喜欢你,该怎么解决【婉转
CD包 加厚内页
QQ仙境有激活码了`在那里激活额~
有谁能够告诉我地下城中人们常说去打JS中的JS
宝丰县平顶山新华书店(翠竹苑北)地址在什么地
“击鼓喊冤”最早产生于什么时代?
推荐资讯
怎么查看英雄会的成绩
喜爱看言情小说的人帮我来分担一点吧,好吗?
修改秘密行吗
CF以什么为耻?以什么为荣?
用直线y=mx+c拟合一组点集(xi,yi), i=1,2,...
摩尔庄园看到一个奇怪的东西
用什么程序做幻灯片啊
东正客运站在什么地方啊,我要过去处理事情
浪漫庄园中的高价回收员去哪里了
征途号价值多少?
我喜欢的女孩和我兄弟互相喜欢
新晃侗族自治县怀化正新鸡排(新晃富鑫店)我想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?