egg white 2020-12-30 14:22 采纳率: 50%
浏览 345
已采纳

有n个整数,要求你编写一个函数使其向右循环移动m个位置;为什么最后输出的全是地址?求解决修正

#include<stdio.h>
int* solve(int* s,int n,int m)
{
    int a[110];
    int i,k;
    for(i=m,k=0;i<n,k<n-m;i++,k++)
        a[k]=s[i];
    for(i=0,k=n-m;i<m,k<n;i++,k++)
        a[k]=s[i];
    return a;
}
int main(void)
    {
        int i,n,m,s[110];
        int* ans;
        scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
            scanf("%d",&s[i]);
        ans=solve(s,n,m);
        for(i=0;i<n;i++)
        {
            if(i==0)
                printf("%d",*ans+i);
            else
                printf(" %d",*ans+i);
        }
        return 0;
    }

  • 写回答

4条回答 默认 最新

  • qq_25376897 2020-12-30 16:06
    关注
    #include<stdio.h>
    int a[110];
    int* solve(int* s,int n,int m)
    {
        int i,k;
        for(i=m,k=0;i<n,k<n-m;i++,k++)
            a[k]=s[i];
        for(i=0,k=n-m;i<m,k<n;i++,k++)
            a[k]=s[i];
        return a;
    }
    int main(void)
        {
            int i,n,m,s[110];
            int* ans;
            scanf("%d%d",&n,&m);
            for(i=0;i<n;i++)
                scanf("%d",&s[i]);
            ans=solve(s,n,m);
            for(i=0;i<n;i++)
            {
                if(i==0)
                    printf("%d",*(ans+i));
                else
                    printf(" %d",*(ans+i));
            }
            return 0;
        }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 7-1 jmu-java-m02-使用二维数组存储多元线性方程组
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题