| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1192 人关注过本帖
标题:学到指针!bang忙砍砍这个错误程序!
只看楼主 加入收藏
yehua243
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2011-3-24
收藏
得分:10 
#include <stdio.h>

int compare(int *ptr)
{
    int j,temp;
    for(j=1;j<5;j++)
    {
        if(*ptr>*(ptr+1))
        {
            temp=*ptr;
            *ptr=*(ptr+1);
            *(ptr+1)=temp;
        }
        ptr++;
    }
    return *ptr;
}

int main()
{
    int a;
    int ar[5]={8,4,5,50,5};
    a=compare(ar);
    printf("%d\n",a);
    getchar();
    return 0;
}
2011-03-24 19:16
yehua243
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2011-3-24
收藏
得分:0 
已验证通过
2011-03-24 19:18
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 21楼 yehua243
我觉得你这种方法比较容易接受(正是我想要的方法),不必对数组进行完全的排序!

[ 本帖最后由 liangjinchao 于 2011-3-25 16:10 编辑 ]

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-03-25 16:06
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:0 
看来没有高手指点了,我在你的基础上重新改了下
程序代码:
#include"stdio.h"
int compare(int *ptr);
int main(void)
{
    int a;
    int ar[5]={8,4,9,5,10};
    a=compare(ar);
    printf("%d",a);
    return 0;
    
}
int compare(int *ptr)
{
    int i,temp;
    for(i=0;i<5;i++)
    {
    if(*(ptr+i)>*(ptr+i+1))    /*第一,你这个调换错了,所以你得不到结果*/
    {
        temp=*(ptr+i);
        *(ptr+i)=*(ptr+i+1);
        *(ptr+i+1)=temp;
            
    }
    }
    return *(ptr+i);/*第二,你这个返回值错了,所以你得不到结果*/
}

2011-03-25 19:54
何超
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2010-3-15
收藏
得分:0 
  是要返回最大值  不是要排序吧。。。
#include"stdio.h"
#include<stdio.h>
int compare(int *ptr);
int main(void)
{
    int a;
    int ar[5]={8,13,9,10,3};
    a=compare(ar);
    printf("%d",a);
    return 0;
   
}
int compare(int *ptr)// 函数的功能是返回int数组中存储数的最大值
{
    int i,temp=*ptr;
    for(i=0;i<5;i++)
        if(temp<*(ptr+i))//参考冒泡法de,大概这里出错了吧!
            temp=*(ptr+i);
    return temp;
}
这样应该就可以了。。
2011-03-25 23:07
jaylkh
Rank: 1
来 自:福建
等 级:新手上路
帖 子:8
专家分:4
注 册:2010-5-12
收藏
得分:0 
回复 24楼 chenwei435
哥们,你的程序忽略了控制条件,for(i=0;i<5;i++)这句中的控制范围不对,好好看看吧!
2011-03-26 11:02
jaylkh
Rank: 1
来 自:福建
等 级:新手上路
帖 子:8
专家分:4
注 册:2010-5-12
收藏
得分:0 
#include"stdio.h"
int compare(int *ptr);
int main(void)
{
    int a;
    int ar[5]={8,4,9,5,1};
    a=compare(ar);
    printf("%d",a);
    return 0;
   
}
int compare(int *ptr)// 函数的功能是返回int数组中存储数的最大值
{
    int i,temp;
    for(i=0;i<4;i++)//控制条件没有选定对
    {
    if(*(ptr+i)>*(ptr+i+1))
    {
        temp=*(ptr+i+1);
        *(ptr+i+1)=*(ptr+i);
        *(ptr+i)=temp;//数值交换不正确
        
            
    }
    }
    return *(ptr+i);//你忽略了i++的操作
}
2011-03-26 11:03
快速回复:学到指针!bang忙砍砍这个错误程序!
数据加载中...
 
   



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

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