在自学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

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;
}