不甘堕落


私信TA

用户名:wangxu2022

访问量:698

签 名:

码界难民一枚~

等  级
排  名 801
经  验 3621
参赛次数 0
文章发表 8
年  龄 0
在职情况 学生
学  校 宁波大学科学技术学院
专  业

  自我简介:

解题思路:创建、遍历数组没有难度,交换时考虑指针

注意事项:细节决定成败!易错点:可能是最大值先出现,也可能是最小值先出现,因此不能乱用break

参考代码:

#include<stdio.h>

//创建

void create(int a[]){

int i;

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

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

}

//遍历

void travel(int a[]){

int i;

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

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

}

}

//交换

void swap(int* p){

int* q = p;  //因为p会变,因此需要用q来存数组的地址

int max = *p;

int min = *p;

int i,t;

for(i=1;i<=10;p++,i++){  //找到最大值和最小值

if(max<*p) max = *p;

if(min>*p) min = *p;

}

p = q;

for(i=0;i<10;p++,i++){  //用指针确认最大值和最小值所在位置,进行交换操作

if(*p==min){

t = *p;

*p = *(p-i);      //找规律+两数交换

*(p-i) = t;

}

if(*p==max){

t = *p;

*p = *(p + (9 - i));       //找规律+两数交换

*(p + (9 - i)) = t;

}

}

}

//主函数

int main(){

int a[10];

create(a);

swap(&a[0]);

travel(a);

return 0;

}


 

0.0分

0 人评分

  评论区