| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4461 人关注过本帖
标题:写十个数,将第一个与最小的交换,最大的与最后一个交换。
取消只看楼主 加入收藏
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:2 
写十个数,将第一个与最小的交换,最大的与最后一个交换。
程序代码:
#include<stdio.h>
int main()
{
    void inv(int b[],int n);
    int a[10];
    int i;
    printf("请输入十个数\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    inv(a,10);
    printf("转换之后是\n");
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}
void inv(int b[],int n)
{
    int i,max,min,t1,t2;
     max=min=b[0];
    for(i=0;i<n;i++)
    {
        
        if(min>b[i])
        {
            
            min=b[i];
        }
        if(max<b[i])
        {
            
            max=b[i];
        }
    }

    t1=min;
    min=b[0];
    b[0]=t1;
    t2=max;
    max=b[n-1];
    b[n-1]=t2;

}


原来的数没有了  该怎么??
搜索更多相关主题的帖子: 最大的 
2016-06-17 06:23
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
回复 4楼 linlulu001
程序代码:
#include<stdio.h>
int main()
{
    void inv(int b[],int n);
    int a[10];
    int i;
    printf("请输入十个数\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    inv(a,10);
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}
void inv(int b[],int n)
{
    int i,max,min,t1,t2;
    max=min=b[0];
    for(i=0;i<n;i++)
    {
        if(min>b[i])
        {
            min=b[i];
            t1=i;
        }
        if(max<b[i])
        {
            max=b[i];
            t2=i;
        }
    }
    t1=min;
    min=b[0];
    b[0]=t1;
    t2=max;
    max=b[n-1];
    b[n-1]=t2;

}


怎么还是不对啊
2016-06-17 22:14
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
以下是引用linlulu001在2016-6-18 13:02:52的发言:

红色的是我改好的,蓝色部分我没有改让你自己改。你再试试,如果还不行我就写好代码给你。
  t1记的是数组最小值的下标,
    min记的是数组的最小值,
    t2记的是数组最大值的下标,
    max记的是数组的最大值,
你没有考虑最小值在数组最后一位,最大值在数组第一位的时候你的算法还能正确输出吗,所以你还要对t1和t2的下标进行判断。
建议分作两次循环,先找出最小的放到第一位,然后再找出最大的放到最后一位。一个循环要考虑的影响结果的因素有几个,难度更大,效率也没更高。


程序代码:
#include<stdio.h>
int main()
{
    void inv(int b[],int n);
    int a[10];
    int i;
    printf("请输入十个数\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    inv(a,10);
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}
void inv(int b[],int n)
{
    int i,max,min,t1,t2,k,m;
    max=min=b[0];
    for(i=0;i<n;i++)
    {
        if(min>b[i])
        {
            min=b[i];
            k=i;
        }
        if(max<b[i])
        {
            max=b[i];
            m=i;
        }
    }
    t1=b[k];
    b[k]=b[0];
    b[0]=t1;
    t2=b[m];
    b[m]=b[n-1];
    b[n-1]=t2;

}

谢谢指导  我改好了。
2016-06-18 18:16
快速回复:写十个数,将第一个与最小的交换,最大的与最后一个交换。
数据加载中...
 
   



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

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