为什么这个c程序运行出错

#include<stdio.h>voidmain(){voidinput(inta[]);voidswap(inta[]);voidoutput(inta[]);int... #include<stdio.h>
void main()
{
void input(int a[]);
void swap(int a[]);
void output(int a[]);
int a[10];
input(a);
swap(a);
output(a);
}
void input(int a[])
{
int i,*p=a;
for(i=0;i<10;i++)
scanf("%d",p+i);
}
void swap(int a[])
{
int *p=a;
int min=0,max=0,r,l,i;
for(i=0;i<10;i++)
{
if(*(p+i)<min)
{min=*(p+i);
l=i;}
if(*(p+i)>max)
{max=*(p+i);
r=i;
}
}
*(p+r)=*(p+9);
*(p+9)=max;
*(p+l)=*p;
*p=min;
}
void output(int a[])
{int i;
for(i=0;i<10;i++)
printf("%-5d",a[i]);
}
运行时提示已停止工作。
用三个函数分别输入10个数,把最大的数与最后一个数调换,把最小的一个数与第一个数调换。最后输出这十个数。
展开
 我来答
飘雨56
2013-12-30 · 一分耕耘一分收获,凡事预则立
飘雨56
采纳数:931 获赞数:4490

向TA提问 私信TA
展开全部
void swap(int a[])
{
int *p=a;
//修改处 如果按你的代码 有些情况下r或l没有被赋值,这个时候*(p+r)或
//*(p+l)就会崩溃
int min=p[0],max=p[0],r=0,l=0,i=0;  
for(i=0;i<10;i++)
{
if(*(p+i)<min)
{
min=*(p+i);
l=i;
}
if(*(p+i)>max)  
{
max=*(p+i);
r=i;
}
}

*(p+r)=*(p+9);
*(p+9)=max;
*(p+l)=*p;
*p=min;
}
顺水池塘
2013-12-30
知道答主
回答量:15
采纳率:0%
帮助的人:7.7万
展开全部
一般这种错误都是由于对指针的错误应用导致的
你可以用调试模式逐行调试,可以排查出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
no1xsyzy
2013-12-29 · TA获得超过434个赞
知道小有建树答主
回答量:316
采纳率:100%
帮助的人:219万
展开全部
没有问题呀……输入是什么?
说不定输入爆了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式