| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:指针法逆序输出,运行出错,求指教。
只看楼主 加入收藏
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
指针法逆序输出,运行出错,求指教。
//将n个数按输入时的顺序逆序排列,用函数实现。<指针法处理>
#include"stdio.h"
#define N 10
void main()
{
    void sort(int *p,int n);
    int arr[N],i;
    printf("Please input %d integers:",N);
    for(i=1;i<N;i++)
        scanf("%d",&arr[i]);
    sort(arr,N);
    printf("Now ,the sorted numbers are:");
    for(i=0;i<N;i++)
        printf("%3d",arr[i]);
    printf("\n");
}
   
void sort(int *p,int n)
{
    int *p_mid,*p_end,temp;
    p_mid=p+n/2;
    p_end=p+n-1;
    for(;p<p_mid;p++,p_end--)
    {
        temp=*p;
        *p=*p_end;
        *p_end=temp;
    }
}
运行时结果出错,最后一个数为一串数字,恳请大家帮我分析下错误原因。

搜索更多相关主题的帖子: void include numbers 
2012-12-27 14:58
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
先自己顶起。
2012-12-27 15:03
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:10 
第一个for循环的初始条件应该是i=0,如果不是的话,你定义的数组只能保存9个数据,如果非要输出的话,最后一个指针的指向可能是内存中的某一块,虽然是有输出,但是是无意义的。
换句话就是刚开始,你就没有给a[0]赋值,所以就没有预期的输出

[ 本帖最后由 wkz2012 于 2012-12-27 15:17 编辑 ]

我了个去的编程!
2012-12-27 15:16
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
收藏
得分:0 
新建 Microsoft Word 文档.rar (85.21 KB)

经过我调试之后我发现你的逆序排列函数不行

好久没把牛皮吹的这么清新脱俗了
2012-12-27 15:21
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
收藏
得分:10 
程序代码:
//将n个数按输入时的顺序逆序排列,用函数实现。<指针法处理>
#include"stdio.h"
#define N 3
void main()
{
    void sort(int *p,int n);
    int arr[N],i;
    printf("Please input %d integers:",N);
    for(i=0;i<N;i++)                     //数组第一个元素的编号是0
        scanf("%d",&arr[i]);
    sort(arr,N);
    printf("Now ,the sorted numbers are:");
    for(i=0;i<N;i++)
        printf("%3d",arr[i]);
    printf("\n");
}
   
void sort(int Arr[],int n)
{
    int i=0,j=n-1;
    int *pArr=Arr;    //定义指针
    int temp;         //定义临时变量
    while(i<j)        //逆序排列
    {
        temp=*(pArr+i);
        *(pArr+i)=*(pArr+j);
        *(pArr+j)=temp;
        i++;
        j--;
    }

}
我改了一下  是这样的  VC6.0通过

好久没把牛皮吹的这么清新脱俗了
2012-12-27 15:26
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 3楼 wkz2012
太感谢你了,这么低级的错误自己都没发现,真想抽自己两耳光,太粗心了。同时,也感谢其他朋友的关注和指点。
2012-12-27 16:33
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 5楼 代号215
谢谢,你的方法也不错。
2012-12-27 16:34
快速回复:指针法逆序输出,运行出错,求指教。
数据加载中...
 
   



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

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