m0_73740280 2023-02-20 20:58 采纳率: 86.8%
浏览 13
已结题

请问这个函数调用为什么不执行

请问这个代码为什么不执行Output()及其之后的函数呢?

#include<stdio.h>
int Input(int* a,int n){
    printf("请输入数组元素个数:");
    scanf("%d",&n);
     printf("请输入数组元素:");
    for(int i=0;i<n;i++){
    scanf("%d",&a[i]);
    }
    return n;
}
void Output(int* a,int n){
    printf("这个数组是:");
    for(int i=0;i<n;i++)
    printf("%d",a[i]);
}
int Add(int* a,int n){
    int i,k,j;
    printf("请输入要插入的位置:");
    scanf("%d",&i);
    for(i;j>i;j++)
    a[j+1]=a[j];
    printf("请输入要插入的元素:");
    scanf("%d",&k);
    k=a[i];
    return n+1;
}
int Delete(int* a,int n){
    int i,j,k;
    printf("请输入要删除的位置:");
    scanf("%d",&i);
    for(i;j>i;j++)
    a[j-1]=a[j];
    return n-1;
}
void Find(int* a){
    int i;
    printf("请输入要查找第几个元素:");
    scanf("%d",&i);
    printf("%d",a[i+1]);
}
int main(){
    int* a;
    int n=Input(a,n);
    Output(a,n);
    Add(a,n);
    Delete(a,n);
    Find(a);
}

  • 写回答

3条回答 默认 最新

  • 答主 2023-02-20 21:22
    关注
    • 这个代码不执行 Output() 以及其之后的函数,是因为在函数 Input() 中并没有为指针 a 分配内存空间,导致在调用其他函数时会发生未知错误。
    • 为了解决这个问题,需要在 main() 函数中为指针 a 分配足够的内存空间,可以使用动态内存分配函数 malloc() 来实现。例如,可以在 main() 函数中添加以下代码:
    int main(){
        int n;
        printf("请输入数组元素个数:");
        scanf("%d", &n);
        int* a = (int*) malloc(n * sizeof(int));  // 分配内存空间
        n = Input(a, n);
        Output(a, n);
        Add(a, n);
        Delete(a, n);
        Find(a);
        free(a);  // 释放内存空间
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 2月20日

悬赏问题

  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题