各位帮忙看下!!
代码如下:
#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]);
}
}
int a[] = { 0 };不能这么写,你可以给一个比较大的值,比如int a[10000] = { 0 };
出现这种错误,你只需要设置一下数组a的长度即可
因为 int a[] = { 0 };这里没设置数组大小
int a[] = { 0 };
这里只分配了一个int,相当于数组长度只有1,后面的操作肯定超出了,栈肯定是被踩了。只是你这里面只有一个main函数,在main退出时才会发现问题,所以之前的运行结果没有问题