标题:我写的程序:找出10个数中的最小最大数,分别与原数组中的第一和第十个数交 ...
只看楼主
xiaomiking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:230
专家分:130
注 册:2009-4-2
结帖率:100%
 问题点数:0 回复次数:4 
我写的程序:找出10个数中的最小最大数,分别与原数组中的第一和第十个数交换
/*************函数功能***********
输入10个整数,将其中最小的数与第
一个数对换,最大的数与最后一个数对换

作者:xiaomiking
日期:2010.3.8
*******************************/

#include <stdio.h>

int i, a[10];
int m, n, temp1, temp2, temp3;
int min, p0, max, p1;

void input();
void deal();
void output();

void main()
{
    input();
    deal();
    output();
}

/********输入初始化函数*********/
void input()
{
    printf("please input 10 numbers:\n");
    for(i=0; i<10; i++)
        scanf("%d", &a[i]);
    printf("\n");   
}


/**********处理函数**********/
void deal()
{
    /*********初始化最大最小值*********/
    if(a[0]>a[1])
    {
        min=a[1];
        p0=1;
        max=a[0];
        p1=0;
    }
    else
    {
        min=a[0];
        p0=0;
        max=a[1];
        p1=1;
    }

   
    for(m=2; m<10; m++)
    {
        if(min>a[m])
        {
            min=a[m];
            p0=m;
        }
    }

    for(n=2; n<10; n++)
    {
        if(max<a[n])
        {
            max=a[n];
            p1=n;
        }
    }
   
    p0=p0+1;
    p1=p1+1;
   
    if(p1!=1)       //第一个数不是最大值
    {
        temp1=a[0];
        a[0]=a[p0-1];
        a[p0-1]=temp1;

        temp2=a[9];
        a[9]=a[p1-1];
        a[p1-1]=temp2;
    }
    else if(p1=1 && p0!=10)      //第一个数为最大值但最后一个数不是最大值
    {
        temp2=a[9];
        a[9]=a[p1-1];
        a[p1-1]=temp2;

        temp1=a[0];
        a[0]=a[p0-1];
        a[p0-1]=temp1;
    }
    else       /*第一个数为最大值且最后一个数为最小值*/
    {
        temp3=a[0];
        a[0]=a[9];
        a[9]=temp3;
    }
}


/***********输出初始化函数***********/
void output()
{
    for(i=0; i<10; i++)
        printf("%d ", a[i]);
    printf("\n");
}



大家还有什么好的想法,不要吝啬哦; 同时希望大家能给我更多的指点。
搜索更多相关主题的帖子: 大数 
2010-03-09 09:40
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
用指针吧!
2010-03-09 10:45
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
得分:0 
其实输入十个数,然后用排序法比如说冒泡排序法排出大小顺序,找出最大最小,再进行交换就可以了~~~
2010-03-09 11:11
xiaomiking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:230
专家分:130
注 册:2009-4-2
得分:0 
回复 2楼 hahayezhe
恩,指针对于这个题来说,确实不错~~~

If you want something , just do it ,and it`s a long time !
2010-03-09 18:26
xiaomiking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:230
专家分:130
注 册:2009-4-2
得分:0 
回复 3楼 陈大师
我就是有点不懂:要是用排序法,那起初输入的数据顺序岂不是打乱了,难道还可以还原?或者有什么方法保持原来的顺序不变呀?

要不你试试。。。

If you want something , just do it ,and it`s a long time !
2010-03-09 18:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-298883-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.138895 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved