| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 265 人关注过本帖
标题:求教一个循环起始位置改变的问题
取消只看楼主 加入收藏
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
结帖率:0
收藏
 问题点数:0 回复次数:1 
求教一个循环起始位置改变的问题
#include "stdio.h"

int findmax(int *pt,int n)
{
    int *p;
    int t;
    for(;n>=0;n--)  
    {
        for(p=pt;p<pt+n;p++)
        {
   
            if((*p)<*(p+1))
            {
                printf("第%d次交换前数据是:*p=%d,*(p+1)=%d\n",16-n,*p,*(p+1));
                t=*(p+1);
                *(p+1)=*p;
                *p=t;
                printf("交换的结果是:*p=%d,*(p+1)=%d\n\n",*p,*(p+1));
            }
        }
    }

}

main()
{
    int i,x;
    int Num[15]={1,13,4,3,6,5,7,10,19,12,34,56,43,11,23};
    printf("寻找最大的元素的指针\n\n");
    printf("原数组是:\n");
    for(i=0;i<15;i++)
        printf("%d ",Num[i]);
    printf("\n");
    findmax(Num,15);
   
}
为什么这段程序第一次循环从数组0元素开始循环对比 在执行n--一次后就改为从数组3  4位开始对比元素了呢?
搜索更多相关主题的帖子: include 
2013-01-10 11:36
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 5楼 x_x
刚才考虑了一个小时 知道问题出在哪了  就是printf("第%d次交换前数据是:*p=%d,*(p+1)=%d\n",p-pt+1,*p,*(p+1))语句位置不对所以输出的值不是想要的值知识满足IF条件前提条件下的值,子函数是用来排序的(题目要求子函数必须是一个指向函数的指针即返回主函数的值也必须是指针)然后返回排好序的数组的首地址,然后在主函数中输出这个数组。整个程序也编号运行了  谢谢各位的指导。

[ 本帖最后由 kknd84913 于 2013-1-10 13:51 编辑 ]
2013-01-10 13:49
快速回复:求教一个循环起始位置改变的问题
数据加载中...
 
   



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

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