【发布时间】:2015-11-16 19:51:22
【问题描述】:
这是代码:
#include <stdlib.h>
#include <stdio.h>
#include "descartes.h"
/*
* Eulidean travelling salesman
*/
#define MAXCITIES 100
#define FALSE 0
#define TRUE 1
point_t city [MAXCITIES];
int numCities = 0;
int ReadCities(void);
double TourLength(lineSeg_t cityLines[]);
void DrawTour(void);
int main(void) {
printf ("main1\n");
OpenGraphics();
printf ("main2\n");
ReadCities();
DrawTour();
double TourLength(lineSeg_t cityLines[]);
CloseGraphics();
return EXIT_SUCCESS;
}
int ReadCities(void) {
printf ("ReadCities1");
int i = 1;
printf ("ReadCities2");
city[0] = GetPoint();
while ((XCoord(city[i])) >= 0) {
city[i] = GetPoint();
printf ("(%d, %d)", XCoord(city[i]), YCoord(city[i]));
numCities++;
i++;
}
if (numCities <= MAXCITIES) {
return TRUE;
}
else {
return FALSE;
}
}
double TourLength(lineSeg_t cityLines[]) {
double totLen = 0;
int i;
for (i = 0; i < (numCities - 1); i++) {
totLen += Length(cityLines[i]);
}
return totLen;
}
void DrawTour(void) {
lineSeg_t cityLines[MAXCITIES];
int i;
for (i = 0; i < (numCities - 1); i++) {
cityLines[i] = LineSeg(city[i], city[i + 1]);
DrawLineSeg(cityLines[i]);
}
}
当我运行它打印的程序时:
main1
main2
然后程序挂起。我至少希望它会调用ReadCities() 并尽可能打印
ReadCities1
ReadCities2
但无论我尝试什么,它都会在打印main2 后在终端中挂起一个闪烁的光标。代码中可能还有其他错误,但我什至无法测试它!
对不起,如果这很明显,我是编程新手! 干杯!
【问题讨论】:
-
您介意创建一个MCVE 吗?反正被调用的函数有一半没有在这里定义。
-
MCVE?我会尽力帮助你帮助我:P @SouravG
-
使用调试器。至少它会告诉您代码“卡住”的位置。
-
在 ReadCities1 和 ReadCities2 字符串之后添加
\n,以便将输出缓冲区刷新到终端。 -
@keith 我想就是这样!我得到了打印输出“ReadCities1”和“ReadCities2”。既然我知道它实际上正在调用该函数,我想我会再给它一次调试,非常感谢!