c语言:输入10个整数,将其中最大数与第一个数交换,最小数与最后一个数交换(要求用指针方法实现)

2024-12-01 11:05:40
推荐回答(4个)
回答1:

#include

#include

void main()

{

int i,min,max,temp,t1,t2,a[10],*p=a;

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

scanf("%d",p+i);

min = a[0];

max = a[0];

t1=0;

t2=0;

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

{

if(min>a[i])

{

min=a[i];

t1=i;

}

if(max

{

max=a[i];

t2=i;

}

}

temp=a[0];

a[0]=min;

a[t1]=temp;

temp=a[9];

a[9]=max;

a[t2]=temp;

printf("max=%d,min=%d\n",max,min);

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

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

}

扩展资料:

使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。

指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用数据形别。许多编程语言中都支持某种形式的指针,最著名的是C语言,但是有些编程语言对指针的运用采取比较严格的限制,如Java一般避免用指针,改为使用引用。

回答2:



#include  
#define N 10 
int main() 

    int a[N],i,tmp; 
    int *p,*pMax,*pMin,*q=NULL; 
    p=pMax=pMin=a; 
    for(i=0;i        scanf("%d",&a[i]); 
    for(i=0;i    { 
        if(*p > *pMax) 
        { 
            pMax=p; 
        } 
        if(*p < *pMin) 
        { 
            pMin=p; 
        } 
    } 
    //将最大数与第一个数交换 
    tmp=a[0]; 
    a[0]=*pMax; 
    *pMax=tmp; 
    //修正当最小值在首位时,在上面的交换中最小值被移位
    if(pMin==a)
    {
     pMin=pMax;
    }
    //将最小数与最后一个数交换 
    tmp=a[9]; 
    a[9]=*pMin; 
    *pMin=tmp; 
    //输出数组元素 
    for(i=0;i        printf("%d ",a[i]); 
    printf("\n"); 
    return 0; 
}

回答3:

#include "stdio.h"
void max_min(int *a,int index,int end); //声明函数
void main(){
int a[10],i; //定义数组a用来存储10个整数
for(i=0;i<10;i++) //输入10个整数
scanf("%d",&a[i]);
for(i=0;i<10;i++) //输出交换前的数组a的元素
printf("%d ",a[i]);
printf("\n");
max_min(a,0,9); //调用查找并交换最大最小值
for(i=0;i<10;i++) //输出交换后的数组a的元素
printf("%d ",a[i]);
printf("\n");
}

void max_min(int *a,int index,int end){
int *indexp,*endp,*temp,*maxp,*minp; //分别定义指向第一个元素、指向最后一个元素、临时、
//指向最大、指向最小的指针变量
indexp=(int *)malloc(sizeof(int)); //给指针们分配存储空间
endp=(int *)malloc(sizeof(int));
temp=(int *)malloc(sizeof(int));
maxp=(int *)malloc(sizeof(int));
minp=(int *)malloc(sizeof(int));
*indexp=index; //给指针们初始化
*endp=end;
*maxp=*indexp;
*minp=*endp;

for(int i=0;i<=*endp;i++){ //查找最大最小值
if(a[*maxp]if(a[*minp]>a[i]) *minp=i;
}

*temp=a[*indexp]; //把最小值与第一个元素交换
a[*indexp]=a[*minp];
a[*minp]=*temp;

*temp=a[*endp]; //把最大值与最后一个元素交换
a[*endp]=a[*maxp];
a[*maxp]=*temp;

free(indexp); //给指针们释放空间
free(endp);
free(maxp);
free(minp);
free(temp);
}

回答4:

#include 
#define N 10
int main()
{
int a[N],i,tmp;
int *p,*pMax,*pMin;
p=pMax=pMin=a;
for(i=0;i scanf("%d",&a[i]);
for(i=0;i {
if(*p > *pMax)
{
pMax=p;
}
if(*p < *pMin)
{
pMin=p;
}
}
//将最大数与第一个数交换
tmp=a[0];
a[0]=*pMax;
*pMax=tmp;
//将最小数与最后一个数交换
tmp=a[9];
a[9]=*pMin;
*pMin=tmp;
//输出数组元素
for(i=0;i printf("%d ",a[i]);
printf("\n");
return 0;
}