栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

(指针处理)输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换 写3个函数:①输入10个数;②进行处理;③输出10个数。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(指针处理)输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换 写3个函数:①输入10个数;②进行处理;③输出10个数。

思路: 分开处理,先找出最大数的位置,交换后,再找出最小数的位置,再交换。(思路:也可以同时找最大数和最小数的位置,但经过最小值和第一个数对换后,最大值的位置可能出现了变化,即如果说原来10个数最大值就在第一个位置,第一次交换后,最大数变成了最小值的位置,而不再是开始找到的最大值位置,因此要if判断讨论最大值是否为第一个数)

代码:

#include 
#define N 10
int main(){
    void swap1(int *q);
    int num[N],*p,*q=num;
    printf("请输入%d个数:n",N);
    //num+i是数组元素num[i]的地址
    for(p=num;p<(num+N);p++){
        scanf("%d",p);
    }
    printf("您输入的数字为:n");
    //指针移动打印,for循环结束,指针已移动到末尾
    for(p=num;p<(num+N);p++){
        printf("%d ",*p);
    }
    p=num;
    printf("n-----------------------n");
    printf("n-----------------------n");
    swap1(q);
    return 0;
}
void swap1(int *q){
    int *p1=q,*p2=q;
    //可以在此处初始化min,但不能在此处初始化max,否则经过找最小值交换后,max的值未在num[0]处,不方便遍历
    int min=*q,max,site1=0,site2=0,temp;
    printf("初始值min=%dn",min);
    //找到最小值和它所在的位置
    for(int i=0;imax){
            max=*p2;
            site2=i;
        }
    }
    printf("最大值所在位置为num[%d]n",site2);
    printf("最大值为%dn",max);
    p2=q;
    temp=*(p2+(N-1));
    *(p2+(N-1))=max;
    *(p2+site2)=temp;
    //检查交换结果
    printf("交换结果为:n");
    for(p2=q;p2<(q+N);p2++){
        printf("%d ",*p2);
    }
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号