标题:指针顺序交换有大问题?
只看楼主
神剑川路
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-9-20
结帖率:0
已结贴  问题点数:5 回复次数:3 
指针顺序交换有大问题?
#include<stdio.h>
int main()
{
    void swap(int *p,int n,int m);
    int s[100];
    int i,n,m;
    scanf("%d,%d",&n,&m);//实现输如n个数,第m个开始后面的和前面的交换
     getchar();   
     printf("ddd\n");//说明可以交换
    //for(i=0;i<m;i++)//
    //scanf("%d",&s[i]);
    for(i=m;i<=n+m;i++)//把数组前m个数空着,,
    scanf("%d",&s[i]);
    swap(s,n,m);
    for(i=0;i<n;i++)
    printf("%d",&s[i]);
   
    getchar();
    return 0;
}
void swap(int *p,int n,int m)//实现数组从m个开始的(n-m)个数和前面的m个数交换
{
    int t,j,i;
    t=n-m;
    for(j=0,i=m;i<=n;j++,i++)
    {
        *(p+j)=*(p+i);
    }
}
搜索更多相关主题的帖子: void include return 
2013-05-23 11:08
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:2 
#include<stdio.h>

int main()
{
    void swap(int *p, int n, int m);
    int i, n, m;
    int s[100] = {0};

    scanf("%d, %d", &n, &m);
    getchar();   
    printf("ddd\n");

    for (i = m; i < n+m; i++)
        scanf("%d", &s[i]);

    swap(s, n, m);

    for(i = 0; i < n; i++)
        printf("%d", s[i]);

    getchar();
    return 0;
}
void swap(int *p,int n,int m)
{
    int t, j, i;

    t = n - m;

    for (j = 0, i = m; j < n; j++, i++)
    {
        *(p+j) = *(p+i);
    }
}


[fly]存在即是合理[/fly]
2013-05-23 11:32
a64924374
Rank: 2
等 级:论坛游民
帖 子:33
专家分:61
注 册:2013-3-11
得分:2 
#include<stdio.h>

void swap(int *p, int n, int m);//函数的声明最好放在外面,保持良好的编程习惯

int main(void)
{  
    int s[100] = {0};//最好初始化为0,要不交换过去的是垃圾值
    int i,n,m;
    scanf("%d,%d", &n, &m);
    //getchar();//这行在干嘛?   
    //printf("ddd\n");你前面有判断可以交换的语句,怎么安然来个说明可以交换?
    //for(i=0;i<m;i++)//
    //scanf("%d",&s[i]);
    for(i = m; i < (m + n); i++)//你不判断n+m是否会大于100?
    scanf("%d", &s[i]);
    swap(s, n, m);
    for(i = 0;i < (n + m); i++)
    printf("%d ", s[i]);
   
    //getchar();这句拿来干嘛?
    return 0;
}
void swap(int *p, int n, int m)
{
    int t,j,i;
    //t=n-m;//你确实n一定比m大?如果我输入的n是20,m是30怎么办?t拿来干嘛?
    for(j = 0, i = m; i < (m + n); j++, i++)//你输入的元素是从第m个到第m+n个,所以这里i必须循环到n
    {
        t = *(p + i);
        *(p + i) = *(p + j);//你这是交换吗,是直接赋值吧
        *(p + j) = t;
    }
}
C语言书多看点,C编程规范多看下,以后你会发现良好的编程规范比编程更重要
2013-05-23 12:31
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
得分:2 
偶怎么看不懂啊,桑心
2013-05-23 16:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-407808-1-1.html




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

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