解题思路:创建、遍历数组没有难度,交换时考虑指针
注意事项:细节决定成败!易错点:可能是最大值先出现,也可能是最小值先出现,因此不能乱用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 人评分
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:546 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:550 |
1025题解浏览:746 |
星期判断机 (C语言代码)浏览:860 |
一元一次方程 (C语言代码)浏览:4083 |
前10名 (C语言代码)浏览:740 |
C语言程序设计教程(第三版)课后习题10.7 (用指针求解)浏览:1486 |
C二级辅导-统计字符 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:574 |