c语言的一个问题,求解答!

写了一个,只是不能执行,大神们看看是哪儿出了问题,应该是运算的问题。输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1输入10个数;... 写了一个,只是不能执行,大神们看看是哪儿出了问题,应该是运算的问题。
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1输入10个数;2进行处理;3输出10个数。
#include<stdio.h>
int main()
{
void input(int a[]);
void swap(int *p1,int *p2);
void output(int a[]);
int a[10],i;
int *p1,*p2;
int *p3,*p4;
printf("please enter 10 int integer numbers:");
input(a);
for(i=0;i<9;i++)
if(a[i]>a[i+1])
{
p1=a+i,p2=a+1+i;
swap(p1,p2);
}
a[9]=*p2;
for(i=9;i>0;i--)
if(a[i]<a[i+1])
{
p3=a+1+i,p4=a+i;
swap(p3,p4);
}
a[0]=*p4;
output(a);
return 0;
}

void input(int a[])
{
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}

void swap(int *p1,int *p2)
{
int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}

void output(int a[])
{
int i;
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
展开
 我来答
脐橙星球AA
2013-12-10 · 超过24用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:43.8万
展开全部

改的挺多的。。。实力有限,望采纳

附:在vc++编译器下,选中代码,按alt +F8可以对代码进行排版

#include<stdio.h>


int main()

{

void input(int a[]);

void swap(int *p1,int *p2);

void output(int a[]);

int a[10],i;

int min ;

int max ;

int * pmin;

int * pmax;

printf("please enter 10 int integer numbers:\n");

input(a);

min = a[0];

max = a[0];

for(i=0;i<10;i++)

{

if(min>a[i])

{

min = a[i];

pmin = &a[i];

}

}

swap(pmin,&a[0]);

// output(a);

for(i=0;i<10;i++)

{

if(max < a[i])

{

max = a[i];

pmax = &a[i];

}

}

swap(pmax,&a[9]);

output(a);

return 0;

}


void input(int a[])

{

int i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

}


void swap(int *p1,int *p2)

{

int p;

p=*p1;

*p1=*p2;

*p2=p;

}


void output(int a[])

{

int i;

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");

}

追问
之前的编译也可以通过……不过这个问题我一定注意。非常感谢
cqpcy
2013-12-10 · TA获得超过658个赞
知道小有建树答主
回答量:746
采纳率:66%
帮助的人:359万
展开全部
没细看,初步看下
首先你题目不清 ,你是想排序还是只调换第一和最后一个数字就好还是调换完后其余数字和输入状态 一致
其次你基础语法有问题,能编译通过吗?
int main()
{
void input(int a[]); //函数声明请放在int main()外面
void swap(int *p1,int *p2);
void output(int a[]);

for(i=0;i<9;i++)
if(a[i]>a[i+1])
{
p1=a+i,p2=a+1+i; //什么情况,语句中为何用“,”而非“;”?肯定不能执行
void output(int a[])
{
int i;
for(i=0;i<10;i++) //在具体函数中不建议直接用10作为判断条件,移植性差,虽然题目要求是10
printf("%d",a[i]);
追问
谢谢,不过之前的编译也可以通过。你指出来的错误很有道理,我一定注意……十分感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mrdone
2013-12-10 · TA获得超过1143个赞
知道小有建树答主
回答量:2346
采纳率:100%
帮助的人:530万
展开全部
函数要先声明的,所以,你的下面三个函数的函数名要先在main()函数声明下。
追问
.. 大哥,声明过。研究下内容,只是不能执行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thorxh
2013-12-10 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:105万
展开全部
将其中最小的数与第一个数对换,把最大的数与最后一个数对换,其他数字呢,可变位子吗?
追问
其它不换吧应该,上面的题目就是所有信息了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式