鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 1

考研前突击一下,遇到问题!

[复制链接]
发表于 2023-11-24 21:48:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(){
    int n,m;
    scanf("%d",&n);
    int *p = (int *)malloc(n*sizeof(int));
    if(p==NULL){
        printf("Error");
    }
    for(int i=0; i<n; i++){
        scanf("%d",&p[i]);
    }
    scanf("%d",&m);
    for(int i=0; i<n; i++){
        printf("%d",p[i]);
    }

    for(int i=0; i<m; i++){
        int num=p[0];
        for(int j=n-1; j>0;j--){
            p[(j+1)/n]=p[j];
        }
        p[1]=num;
    }

    for(int i=0; i<n; i++){
        printf("%d",p[i]);
    }

    free(p);
}


像循环队列一样,向后移动m位,我感觉是我移位for循环出错了!!大佬帮我看一下!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-24 21:49:04 | 显示全部楼层
你的代码有一些错误。
首先,你需要包含stdio.h头文件以使用scanf和printf函数。
其次,你需要包含stdlib.h头文件以使用malloc函数。
最后,你的for循环缺少结束括号 }。

下面是修正后的代码:
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    scanf("%d", &n);
    int *p = (int *) malloc(n * sizeof(int));
    if (p == NULL) {
        printf("Error");
        return 0; // 如果内存分配失败,直接返回
    }
    for (int i = 0; i < n; i++) {
        scanf("%d", p + i); // 使用%p的偏移量来读取输入
    }
    for (int i = 0; i < n; i++) {
        printf("%d ", *(p + i)); // 使用%p的偏移量来打印输出
    }
    free(p); // 释放内存
    return 0;
}

这段代码在运行时,会首先从输入中读取一个整数n,然后动态分配一个大小为n的int类型数组,接着通过一个循环依次从输入中读取n个整数到数组中。最后,再通过一个循环将数组中的元素依次打印出来,并释放动态分配的内存。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表