pcahyh 2021-12-15 22:50 采纳率: 66.7%
浏览 240
已结题

在自学C语言的时候出现了Debug Error!错误

因为要参加自考所以按课本的要求做了个实验题。
题目要求是编写一个程序,动态分配能存10个int值的数组;通过键盘为数组赋值以下
以下是我的代码

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

int main()
{
    int* a,b=1;
    a = (int*)malloc(b* sizeof(int));
    if (a!=NULL) 
    {
        for (int i = 0; i <b; i++)
        {
            a[i]=0;
        }//初始化
        for (int i = 0; i < b; i++) 
        {
            printf("数字以空隔键分开,回车键确认\n\n");
            if (b == 1)
            {
                printf("请输入要数组的个数\n");
                scanf_s("%d", &b);
            }
            printf("请输入要计算第%d数\n", i+1);
            scanf_s("%d", a+i);
            system("cls");
            
        }
        
    }
    free(a);
    a = NULL;
    return 0;
}

我在任意输入数组个数后,通过键盘把所有值都输完后出现以下错误,

img

  • 写回答

1条回答 默认 最新

  • 关注

    b是1,a数组就1个元素,scanf_s("%d", a+i);这里可能会导致数组越界。
    a = (int *)malloc(b* sizeof(int)); 改成 a = (int *)malloc(10* sizeof(int)); 试试。

    你最终要实现什么功能?这个代码看着有点蒙,你把题目要求发出来吧,帮你改一下代码。
    代码修改如下:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int *a,i;
        int maxv,minv;
        a = (int*)malloc(10*sizeof(int)); //动态分配10个int空间
        for(i=0;i<10;i++)
        {
            scanf("%d",&a[i]); //输入10个数
            if(i==0)
            {
                maxv = a[0];
                minv = a[0];
            }else
            {
                if(a[i] > maxv) 
                    maxv = a[i];
                if(a[i] < minv)
                    minv = a[i];
            }
        }
        printf("最大值:%d,最小值:%d",maxv,minv);
        free(a);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信
  • ¥30 Python调用dll文件输出Nan重置dll状态
  • ¥15 浮动div的高度控制问题。
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题