| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 548 人关注过本帖
标题:求高手帮忙找出错误。。
只看楼主 加入收藏
gao16forever
Rank: 2
等 级:论坛游民
帖 子:32
专家分:29
注 册:2011-11-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求高手帮忙找出错误。。
Description
有 n( n<100) 个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

Input
输入有多组测试数据。每组数据分为两行,第一行为 n 和 m,第二行表示 n 个整数。

Output
对于每组测试数据,输出对应移动后的整数序列。

Sample Input
10 3
5 6 -1 0 12 -32 14 -145 -24 21Sample Output
-145 -24 21 5 6 -1 0 12 -32 14
我的程序:
#include<stdio.h>
void main()
{
    int n,m,a[100],i;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for (i=0;i<n;i++)
            scanf("%d",&a[i]);
        if (n<=m)
        {
            for (i=0;i<n-1;i++)
                printf("%d ",a[i]);
            printf("%d\n",a[n-1]);
        }
        else
        {
        for (i=n-m;i<n;i++)
            printf("%d ",a[i]);
        for (i=0;i<n-m-1;i++)
            printf("%d ",a[i]);
        printf("%d\n",a[n-m-1]);
        }
    }
}
宁波大学OJ 1873题,求高手帮忙找出错误。。
搜索更多相关主题的帖子: 测试 include 
2011-12-03 12:28
原味好
Rank: 4
来 自:西安
等 级:业余侠客
帖 子:59
专家分:250
注 册:2011-11-29
收藏
得分:4 
没问题啊,你的程序没有问题啊,你到底是哪里出了错???
2011-12-03 12:59
gao16forever
Rank: 2
等 级:论坛游民
帖 子:32
专家分:29
注 册:2011-11-29
收藏
得分:0 
不知道啊。。在宁波大学OJ上1873题,可以去测试下,我提交了就是WR。。
2011-12-03 13:25
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:4 
你没有考虑 m比n大的情况 比如
Sample Input
10 13
5 6 -1 0 12 -32 14 -145 -24 21
Sample Output
-145 -24 21 5 6 -1 0 12 -32 14

https://zh.
2011-12-03 13:47
a442642113
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2011-12-3
收藏
得分:4 
程序代码:
#include<stdio.h>
void main()
{
    int n,m,a[100],i;
     //加一个提示 让用户输入两个数 n是数组长度,m是要调动的个数
    while(scanf("%d%d",&n,&m)!=EOF) //这个是死循环 所以程序不会跳出 按任意键退出程序
    {
        //加一个提示 让用户输入数组的n个元素
        for (i=0;i<n;i++)
            scanf("%d",&a[i]);
        if (n<=m)
        {
            for (i=0;i<n-1;i++)
                printf("%d ",a[i]);
            printf("%d\n",a[n-1]);
        }
        else
        {
        for (i=n-m;i<n;i++)
            printf("%d ",a[i]);
        for (i=0;i<n-m-1;i++)
            printf("%d ",a[i]);
        printf("%d\n",a[n-m-1]);
        }
    }
}
个人意见
2011-12-03 13:53
gao16forever
Rank: 2
等 级:论坛游民
帖 子:32
专家分:29
注 册:2011-11-29
收藏
得分:0 
回复 3楼 gao16forever
如果m>n,那不还是原序列输出吗?我的程序可以的啊。。
2011-12-03 14:38
qq450570469
Rank: 2
等 级:论坛游民
帖 子:4
专家分:17
注 册:2011-12-3
收藏
得分:4 
不用这句while(scanf("%d%d",&n,&m)!=EOF);
直接scanf("%d%d",&n,&m);
2011-12-03 15:03
gao16forever
Rank: 2
等 级:论坛游民
帖 子:32
专家分:29
注 册:2011-11-29
收藏
得分:0 
回复 7楼 qq450570469
不会啊,题目要求多组输入了
2011-12-03 16:11
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:4 
#include <stdio.h>
#include<string.h>
void f(int *p,int x,int y)
{
    int i;
    y%=x;
    for(i=0;i<x;i++)
        *(p+x-1+y-i)=*(p+x-1-i);
    for(i=0;i<y;i++)
        *(p+i)=*(p+x+i);
}

 void main()
 {
      int n[200],a=0,b=0,i;
      printf("输入数据\n");
      scanf("%d%d",&a,&b);
      for(i=0;i<a;i++)
          scanf("%d",&n[i]);
      f(n,a,b);
      printf("输出数据\n");
      for(i=0;i<a;i++)
          printf("%4d",n[i]);
 }
2011-12-03 17:44
快速回复:求高手帮忙找出错误。。
数据加载中...
 
   



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

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