李木ya 2021-09-09 10:24 采纳率: 100%
浏览 70
已结题

vs提示堆栈被损坏,但是能够运行出来结果?

各位帮忙看下!!
代码如下:

#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>

int main() {
    //冒泡排序
    int a[] = { 0 };
    int b=0;    //这里的 b 是用来储存数组的大小
    printf("输入数字:\n");
    printf("输入  00  停止\n");
    for (int i = 0;; i++)
    {
        scanf("%d", &a[i]);
        if (a[i] == 00)
        {
            b = i;
            break;
        }
    }
    printf("  %d  个数的排序结果:\n",b);
    for (int i = 0; i < b; i++)        //因为输入了 b 个数,此处的  <b 刚好可以把最后输入的  控制 00  去掉
    {
        for (int j = i; j < b; j++)
        {
            if (a[i] < a[j])                  
            {
                int te = a[i];
                a[i] = a[j];
                a[j] = te;
                
            }
        }
    }
    for (int i = 0; i < b; i++)    //遍历
    {
        printf("%d  ", a[i]);
    }
}





img

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2021-09-09 10:26
    关注

    int a[] = { 0 };不能这么写,你可以给一个比较大的值,比如int a[10000] = { 0 };

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 修改了问题 9月9日
  • 创建了问题 9月9日