| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1277 人关注过本帖
标题:有一道程序,不知道错在哪
只看楼主 加入收藏
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
以下是引用陈威在2010-1-4 20:25:30的发言:

空间如果多分配了应该也没问题吧
问题没有 但是最好不要那么做

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 20:26
陈威
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2009-10-18
收藏
得分:0 
能不能再帮我看看啊。太谢谢了。
2010-01-04 20:30
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
就这么一点一点的引导你吧 你可以学的多点 我可以多混点儿帖子数 呵呵
p和q的内存分配应该是获取n后分配的
而你剩下要做的就是获取m 把p中m后面的数放到q中 然后再把m前面的数继续从p中拿出来放到q里面

如果用取余的方法 其实可以一个循环就搞定 你可以想想

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 20:40
陈威
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2009-10-18
收藏
得分:0 
我是先把p中后m个数放在q中,然后p中前n-m个数依次后移m位,最后吧q中的m个数放p中开头。跟你说的差不多吧
2010-01-04 20:51
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
恩 实在想不明白 就用q[]数组的形式写
然后再改为指针写也行

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 20:56
陈威
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2009-10-18
收藏
得分:0 
#include "stdio.h"
#include "conio.h"

main()
{
 int m,n,i,*p,*q;
 printf("input n:");
 scanf("%d",&n);
 printf("input %d numbers:\n",n);
 p=(int *)malloc(sizeof(int)*n);
 for(i=0;i<n;i++)
 scanf("%d",p++);
 printf("input m:");
 scanf("%d",&m);
 q=(int *)malloc(sizeof(int)*n);
 for(i=0;i<m;i++)
 *(p+n-m+i)=*(q+i);
 for(i=0;i<n-m;i++)
 *(p+i)=*(q+m+i);
 for(i=0;i<n;i++)
 printf("%d",*q++);
 free(p);
 free(q);
 getch();
}
用你说的方法改成这样也不行。
2010-01-04 21:05
陈威
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2009-10-18
收藏
得分:0 
#include "stdio.h"
#include "conio.h"

main()
{
 int m,n,i,*p,*q;
 printf("input n:");
 scanf("%d",&n);
 printf("input %d numbers:\n",n);
 p=(int *)malloc(sizeof(int)*n);
 for(i=0;i<n;i++)
 scanf("%d",p++);
 printf("input m:");
 scanf("%d",&m);
 q=(int *)malloc(sizeof(int)*n);
for(i=0;i<m;i++)
 *(p+n-m+i)=*(q+i);
 for(i=0;i<n-m;i++)
 *(p+i)=*(q+m+i);

 for(i=0;i<n;i++)
 printf("%d",*q++);
 free(p);
 free(q);
 getch();
}
主要是红色字体部分,按你说的方法改了还是不行
2010-01-04 21:07
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
你乱了吧 你不是说要从0到n-m位置的放到q后面么
你怎么移动的
出去外面跑两圈再重新想想吧

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 21:13
陈威
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2009-10-18
收藏
得分:0 
#include "stdio.h"
#include "conio.h"

main()
{
 int m,n,i,*p,*q;
 printf("input n:");
 scanf("%d",&n);
 printf("input %d numbers:\n",n);
 p=(int *)malloc(sizeof(int)*n);
 for(i=0;i<n;i++)
 scanf("%d",p++);


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

 getch();
}
为什么这样输出也出错了
2010-01-04 21:21
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
main()
{
    int m,n,i,*p,*q;
    printf("input n:");
    scanf("%d",&n);
    printf("input %d numbers:\n",n);
    p=(int *)malloc(sizeof(int)*n);
    q=p;
    for(i=0;i<n;i++)
        scanf("%d",p++);
    
    p=q;
    for(i=0;i<n;i++)
        printf("%d",*p++);
    
    getch();
}
明白了么

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 21:24
快速回复:有一道程序,不知道错在哪
数据加载中...
 
   



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

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