| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2111 人关注过本帖
标题:用指针交换数组最值
只看楼主 加入收藏
jjyy447774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-12-26
结帖率:33.33%
收藏
已结贴  问题点数:15 回复次数:7 
用指针交换数组最值
//利用指针来编写函数,输入一个数组,求最大的值与第一个元素交换,最小的值与最后一个元素交换,并输出数组。//
#include<stdio.h>

void main()
{
    int a[5],i,k,j,min,max,*p,t,m;
    printf("请输入5个整数,中间用空格号隔开\n");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    p=a;
    max=a[0];
    min=a[0];
    for(i=1;i<=4;i++)
    {
        if(a[i]>max)
        {    max=a[i];
            k=i;
        }
        else if(a[i]<min)
        {
            min=a[i];
            j=i;
        }
    }
    t=a[0];
    a[0]=*(p+k);
    *(p+k)=t;
    m=a[4];
    a[4]=*(p+j);
    *(p+j)=m;
    for(i=0;i<=4;i++)
        printf("a[%d]=%d\n",i,&a[i]);
}
哥哥姐姐们 求救!运行程序没错误 但运行不了 求原因 最好给解法 让我比较下
搜索更多相关主题的帖子: max void include 最大的 元素 
2012-01-11 19:11
W804342183
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2012-1-11
收藏
得分:4 
#include<stdio.h>

#define M 5

int main(void)
{
    int i,max,min,a[M];
    int *p=a;

    printf("Enter Array A:");

    scanf("%d",p);
    max=*p;
    min=*p;
    for(i=1;i<M;i++)
    {
        scanf("%d",(p+i));
        if(*(p+i)>max)
        {
            max=*(p+i);
        }
        if(*(p+i)<min)
        {   
            min=*(p+i);
        }
    }

    *p=max;
    *(p+i-1)=min;

    for(i=0;i<M;i++)
        printf("%d ",*(p+i));

     getch();
 }
2012-01-11 19:56
zjh1209
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2012-1-5
收藏
得分:4 
你在最后打印的时候加取地址符了。把地址符去掉就ok了
2012-01-11 20:06
zjh1209
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2012-1-5
收藏
得分:0 
还有 打印别那样写
printf("%d,%d",max,min);
这样就OK了
2012-01-11 20:07
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:4 
#include<stdio.h>

void main()
{
    int a[5],i,k,j,min,max,*p,t,m;
    printf("请输入5个整数,中间用空格号隔开\n");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    p=a;
    max=a[0];
    min=a[0];
    for(i=1;i<=4;i++)
    {
        if(a[i]>max)
        {    max=a[i];
            k=i;//这里是错误
        }
        else if(a[i]<min)
        {
            min=a[i];
            j=i;   //这里是错误
        }
    }
    t=a[0];
    a[0]=*(p+k);
    *(p+k)=t;
    m=a[4];
    a[4]=*(p+j);
    *(p+j)=m;
    for(i=0;i<=4;i++)
        printf("a[%d]=%d\n",i,&a[i]);// 去掉 &,
}
for(i=1;i<=4;i++)
i=1,  那么a[0]是最小时 j在else if中是 不把i的值付给j的 ,
但是 J K.你也没有初始值,printf (j  k) 其中有一个就垃圾(-85825581)
*(p+ j) 就指针错误,,
int j=0, k=0; //OK
 给加一个分吧

为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2012-01-11 20:35
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:0 
程序代码:
#include<stdio.h>

void main()
{
    int a[5],i,k=0,j=0,min,max,t,m;
    int * p;
    printf("请输入5个整数,中间用空格号隔开\n");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    p=a;
    max=a[0];
    min=a[0];
    for(i=0;i<=4;i++)
    {
        if(a[i]>max)
        {    max=a[i];
            k=i;
        }
        else if(a[i]<min)
        {
            min=a[i];
            j=i;
        }
    }
    t=a[0];
    a[0]=*(p+k);
    *(p+k)=t;
    m=a[4];
    a[4]=*(p+j);
    *(p+j)=m;
    printf("%d %d", j, k);
        printf("%d %d", max, min);
    for(i=0;i<=4;i++)
        printf("a[%d]=%d\n",i,a[i]);
}
代码乱,不好看,变量和指针变量,最好分开,
利用指针来编写函数
你也没有写函数啊,

为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2012-01-11 20:42
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:0 
程序代码:
#include<stdio.h>
int move (int* p, int i, int k)
{
    int t, m;
    t=*p;
    *p=*(p+k);
    *(p+k)=t;

    m=*(p+4);
    *(p+4)=*(p+i);
    *(p+i)=m;
    return 0;
}
void main()
{
    int a[5],i,k=0,j=0,min,max;
    int * p;
    printf("请输入5个整数,中间用空格号隔开\n");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    p=a;
    max=a[0];
    min=a[0];
    for(i=0;i<=4;i++)
    {
        if(a[i]>max)
        {    max=a[i];
            k=i;
        }
        else if(a[i]<min)
        {
            min=a[i];
            j=i;
        }
    }
    move(p,k,j);   
   
    for(i=0;i<=4;i++)
        printf("a[%d]=%d\n",i,a[i]);
}
用了一个move函数

为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2012-01-11 20:50
chanbo
Rank: 2
来 自:陕西咸阳
等 级:论坛游民
帖 子:38
专家分:74
注 册:2011-11-26
收藏
得分:4 
受教了。
2012-01-12 00:56
快速回复:用指针交换数组最值
数据加载中...
 
   



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

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