
为什么这个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个数,把最大的数与最后一个数调换,把最小的一个数与第一个数调换。最后输出这十个数。 展开
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个数,把最大的数与最后一个数调换,把最小的一个数与第一个数调换。最后输出这十个数。 展开
3个回答
展开全部
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询