注册 登录
编程论坛 C++教室

输入n个数,将后面的m个数与前面的m个数换位置问题求指点错误。。

fl8962 发布于 2012-10-31 05:17, 233 次点击
#include<stdio.h>
#define max 1000
void main()
{
    int n,m;
    printf("请输入整数n ,m");
    scanf("%d",&n);
    scanf("%d",&m);
    int a[max]={},i,j;
    printf("请输入数组");
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<m;i++)
    {
        int t;
        t=a[i];
        a[i]=a[n-1-m+i];
        a[n-1-m+i]=t;
    }
    for(i=0;i<n;i++)
        printf("%d",a[i]);
}
#include<stdio.h>
#define max 1000
void main()
{
    void swap(int a[],int t,int x);
    int shuju[max],i,j,m,n,*p;
    p=shuju;
    printf("qing shu ru m he n");
    scanf("%d",&m);
    scanf("%d",&n);
    for(i=0;i<n;i++,p++)
        scanf("%d",p++);
    swap(shuju,m,n);
    for(i=0;i<n;i++)
        printf("%d",shuju[i]);
}
void swap(int a[],int t,int x)
{
    int term,i;
    for(i=0;i<x;i++)
    {
        term=*(a+i);
        *(a+i)=*(a+x-1-t+i);
        *(a+x-1-t+i)=term;
    }
}

[ 本帖最后由 fl8962 于 2012-10-31 05:50 编辑 ]
3 回复
#2
w5277050902012-10-31 21:26
程序代码:
#include<stdio.h>
#define max 1000
void main()
{
    int n,m,i,j,k;
    int a[max];
    printf("请输入整数n ,m");
    scanf("%d%d",&n,&m);
    printf("请输入数组");
    for(i=0;i<n;i++)
        {
        scanf("%d",&a[i]);
         }
    for(j=0;j<m;j++)
         {
        int t;
        t=a[j];
        a[j]=a[n-j-1];
        a[n-1-j]=t;
         }
    for(k=0;k<n;k++)      
        printf("%d",a[k]);
      
}

帮你改好了   我也不是很懂  运行完正确  !!
就我修改来看  你这个程序的问题在于你的结构 。。。我改了一下结构就对了,。。。
#3
w5277050902012-10-31 21:42
程序代码:
#include<stdio.h>
#define max 1000
void main()
{
    void swap(int *,int t,int x);
    int shuju[max],i,j,k,m,n,*p;
    p=shuju;
    printf("qing shu ru m he n");
    scanf("%d",&m);
    scanf("%d",&n);
    for(i=0;i<n;i++,p++)  \\你的指针在这里加了两次  我把下面的去掉了
        scanf("%d",p);
    for(k=0;k<n;k++)
        printf("the number array:%d\n",shuju[k]);
    swap(shuju,m,n);
    for(j=0;j<n;j++)
        printf("%d",shuju[j]);
}
void swap(int *q,int t,int x)
{
    int term,i;
    for(i=0;i<t;i++)
    {
        term=*(q+i);
        *(q+i)=*(q+x-i-1);  \\这个地方和上个程序一样的错误
        *(q+x-i-1)=term;
    }
}
这是第二个 ,不知道这个程序是不是你本来的意思
还有你定义了j但是你都没有用。。。
#4
fl89622012-11-01 19:58
回复 楼主 fl8962
这位大侠能加个QQ么,不会的想求你指教。。。
1