【发布时间】:2015-01-03 12:05:57
【问题描述】:
我是 C 新手,正在尝试学习 shell 排序。我正在尝试按升序对整数数组进行排序。这是我的代码-
#include <stdio.h>
main()
{
int a[] = {1, 9, 7, 4, 8, 6, 7,2,1,6 };
int n =10; //array length
for (int c = (n / 2); c > 0; c = c / 2)
{
for (int i = c; c < n; i++)
{
int t = a[i];
int j;
for (j = i;( j >= c) && (t < a[j - c]); j = j - c)
{
a[j] = a[j - 1];
}
a[j] = t;
}
}
for (int i = 0; i <= 9; i++)
{
printf("%d ", a[i]);
}
}
在 Visual Studio Express 中编译此代码时,出现一条错误消息,要求关闭或调试,并且输出终端未显示任何输出。我无法弄清楚此代码中有什么问题。如果有人能解释一下,我将不胜感激,也许可以为我指出一个可以满足我要求的解决方案。
【问题讨论】:
-
确切的错误是什么?
-
也许
for (int i = c; c < n; i++)应该是for (int i = c; i < n; i++)? -
其实编译时没有报错。输出终端一来,shellsort.exe(我的项目名)已经停止工作,有两个选项——调试和关闭程序
-
在调试器中运行它。它会查明程序崩溃的确切位置,并让您检查变量等。
-
你的代码编译了吗?我以为VS不支持C99!