c语言的一个问题,求解答!
输入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");
} 展开
改的挺多的。。。实力有限,望采纳
附:在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");
}
之前的编译也可以通过……不过这个问题我一定注意。非常感谢
首先你题目不清 ,你是想排序还是只调换第一和最后一个数字就好还是调换完后其余数字和输入状态 一致
其次你基础语法有问题,能编译通过吗?
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]);
谢谢,不过之前的编译也可以通过。你指出来的错误很有道理,我一定注意……十分感谢
.. 大哥,声明过。研究下内容,只是不能执行的
其它不换吧应该,上面的题目就是所有信息了