You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现数组右移K步程序多测试用例运行异常求助

问题分析与修复方案

核心故障原因

你的代码中用于计数旋转次数的shiftcount变量只在程序入口处初始化了一次为0,当第一个测试用例执行完毕后,shiftcount已经累加到和第一个用例的旋转步数shiftlimit相等。在处理第二个及后续测试用例时,while(shiftcount != shiftlimit)的判断条件会直接不成立,数组不会执行旋转逻辑,直接输出原数组,因此结果不符合预期。

修复方法

在每个测试用例的旋转逻辑执行前,将shiftcount重置为0即可。
你也可以额外增加步数取模逻辑shiftlimit = shiftlimit % n,避免当旋转步数大于数组长度时的无效旋转,优化执行效率。

修正后代码

#include<stdio.h>

int main()
{   
    int i,n,a[100],temp,shiftlimit,cyclelimit;
    int shiftcount = 0;
    int cyclcount = 0;
    scanf("%d",&cyclelimit);
    while(cyclcount != cyclelimit){
        scanf("%d",&n);
        scanf("%d",&shiftlimit);
        // 优化:步数取模减少无效旋转
        shiftlimit = shiftlimit % n;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        // 每次测试用例重置旋转计数
        shiftcount = 0;
        while(shiftcount != shiftlimit){
            temp=a[n-1];
            for(i=n-1;i>0;i--)
            {
                a[i]=a[i-1];
            }
            a[0]=temp;
            shiftcount += 1;
        }
        for(i=0;i<n;i++){
            printf("%d ",a[i]);
        }
        printf("\n");
        cyclcount +=1;
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Aaditya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:09:01