好大的美女巨人的图片:用C语言编程

来源:百度文库 编辑:高考问答 时间:2024/04/30 23:29:36
用指针编程:
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:
1.输入10个数;
2.进行处理;
3.输出10个数
短点,简单点,行不?我看乱了!

谢谢各位啦!

#include <stdio.h>
void input(int a[10]);
void handle(int a[10]);
void output(int a[10]);

main()
{
int a[10];
input(a);
handle(a);
output(a);
}

void input(int a[10])
{
int i;
printf("请输入十个整数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
}
void handle(int a[10])
{
int max,min,n,i;
int nmax,nmin;
nmax=nmin=0;
max=min=n=a[0];

for(i=1;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
nmax=i;
}
if(a[i]<min)
{
min=a[i];
nmin=i;
}
}
n=a[nmax];
a[nmax]=a[0];
a[0]=n;
n=a[nmin];
a[nmin]=a[9];
a[9]=n;

}
void output(int a[10])
{
int i;
printf("处理后的数组为:\n");
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}

不好意思,没看清题目,我现在走了,下次要是没好的答案我在改~不好意思
#include <stdio.h>
int * input(int b[])
{int i=0;
for(;i<10;i++)
scanf("%d",&b[i]);
return b;
}
int * exchange(int b[])
{
int min,max,i=0,k=0,l=0,t;
for(min=b[0],max=b[0];i<10;i++)
{if(min>b[i])min=b[i];k=i;
if(max<b[i])max=b[i];l=i;}
t=b[0];b[0]=b[k];b[k]=t;t=b[9];b[9]=b[l];b[l]=t;
return b;
}
void output(int b[])
{int i=0;
for(;i<10;i++)
printf("%d",b[i]);
}

我刚编的,完全可用。
void output (int * ar)
{
int i;
for (i=0;i<10;i++)
printf("%d ",(*(ar+i)));
}
void input(int * ar)
{
int *a;
int i;
a =ar;
for (i=0;i<10;i++)
{
printf ("ar[%d]:",i);
scanf("%d",a+i);
}
}

void paixu(int * ar)
{
int i;
int b;
int max,min;
int place;
min = *ar;
max = *(ar+9);
place = 0;
for (i=1;i<10;i++)
{
if (min>(*(ar+i)))
{
place = i;
min = (*(ar+i));
}
}
if(place!=0)
{
b = (* ar);
(*ar) = (*(ar+place));
(*(ar+place)) = b;
}
place = 9;
for (i=8;i>=0;i--)
{

if (max<(*(ar+i)))
{
place = i;
max = (*(ar+i));
}
}
if (place!=9)
{
b = (*(ar+9));
(*(ar+9)) = (*(ar+place));
(*(ar+place)) = b;
}
}

main()
{
int ar[10];
input(ar);
paixu(ar);
output(ar);

system("PAUSE");
}

按楼主说的用3个函数现实,简短不了……
int main(void)
{
int number[10];
printf("\nInput 10 numbers\n");
input(number); /*调用输入函数*/
max_min(number); /*调用处理函数*/
printf("After exchange\n");
output(number); /*调用输出函数*/
getch();
return 0;
}

input(int array[10]) /*定义输入10个数的函数input*/
{
int i;
for(i=0;i<10;i++)
scanf("%d",&array[i]);
}

max_min(int array[10]) /*定义处理函数max_min*/
{
int *max,*min;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
*p=array[0];array[0]=*min;*min=*p;
*p=array[9];array[9]=*max;*max=*p;
}

output(int array[10]) /*定义输出10个数的函数output*/
{
int *p;
for(p=array;p<array+10;p++)
printf("%d ",*p);
}
已经运行过了,哪里不懂可以再联系偶。