要求用指针方法处理。
1.输入3个整数,按由大到小顺序输出。
2.输入10个整数,将其中最小的数与第一一个数兑换,把最大的数与最后一个数兑换。写3个子函数: 1)输入 10个数; 2)进行处理; 3)输出10个数,并用主函数调用实现题述功能。
#include<stdio.h>
int main()
{
int a,b,c,s[3],t;
int *x,*y,*z;//定义指针变量
x=&a;//将a的地址赋给指针x,下同
y=&b;
z=&c;
scanf("%d%d%d",x,y,z);
s[0]=*x;//将指针x所指向的变量值赋给数组s的第一个元素;依次类推
s[1]=*y;
s[2]=*z;
for(int i=0;i<3;i++)//冒泡排序
for(int j=0;j<3-i-1;j++)
if(s[j]<s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
for(int i=0;i<3;i++)
printf("%d ",s[i]);
return 0;
}
——————————————————————————
#include<stdio.h>
void input(int *a)
{
int *p=a;//将数组a的首地址赋给指针p
for(int i=0;i<10;i++)
scanf("%d",&p[i]);//指针下标法输入
}
int max_min(int *a)
{
int *p=a;//将数组a的首地址赋给指针p
int max,min,x=0,y=0,t;
max=min=p[0];
for(int i=0;i<10;i++)
{
if(p[i]>=max)
{
max=p[i];
x=i;
}
if(p[i]<=min)
{
min=p[i];
y=i;
}
}
t=p[y];
p[y]=p[0];
p[0]=t;
t=p[9];
p[9]=p[x];
p[x]=t;
}
void output(int *a)
{
int *p=a;//将数组a的首地址赋给指针p
for(int i=0;i<10;i++)
printf("%d ",p[i]);//指针下标法输出
}
int main()
{
int a[11];
input(a);//调用函数,下同
max_min(a);
output(a);
return 0;
}