加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

有N个整数使前面各数顺序向后移M个位置

(2010-06-05 17:27:23)
标签:

杂谈

分类: 计算机及相关应用

有N个整数,使前面各数顺序向后移M个位置,最后M个数变成前面M个数。写一函数实现上述以上功能,在主函数输入N个整数和输出调整后的N个数

#include <stdio.h>


//从指针p处开始输入n个整数
void getin(int *p,int n)
{
     printf("请输入%d个整数:",n);
     int i;
     for(i=0;i<n;i++) scanf("%d",p+i);
}


//输出从指针p处开始的n个整数
void getout(int *p, int n)
{
    int i;
    for(i=0;i<n;i++) printf("%6d",*(p+i));
    putchar('\n');
}


//处理函数: 指针p为n个整数的首地址,m的意义与原题中m相同
void mv(int *p,int n,int m)
{
    int *h, t,i;
    h=p+n-m-1; //h指针指向第n-m个整数,其下标为n-m-1
    for(;h>=p;h--)
    {
         for(i=0;i<m;i++)
         {
                     t=*(h+i);
                     *(h+i)=*(h+i+1);
                     *(h+i+1)=t;
          }
   }
}


void main()
{
    int a[10];
     int m;
     getin(a,10); //输入整数
     getout(a,10); //处理前输出
    printf("你要把最后面多少个整数移到最前面?");scanf("%d",&m);
     mv(a,10,m);   //移位处理
    getout(a,10); //处理后输出
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有