gpt4 book ai didi

C 程序在尝试从 main 调用函数后挂起

转载 作者:行者123 更新时间:2023-11-30 19:41:16 25 4
gpt4 key购买 nike

这是代码:

#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 后,它都会在终端中挂起并闪烁光标。代码中可能还存在其他错误,但我什至无法对其进行测试!

抱歉,如果这是显而易见的事情,我是编程新手!干杯!

最佳答案

不太确定这一行是什么:

while ((XCoord(city[i])) >= 0)

正在返回,看来这个循环可能不会中断。在这种情况下,我会在循环中 printf() 输出 XCoord(city[i]) 的值,以查看其中实际值是什么...

使用 printf() 对于此类事情非常有用。

另外,正如有人所说,main 中有一个函数原型(prototype)声明:

double TourLength(lineSeg_t cityLines[]);

关于C 程序在尝试从 main 调用函数后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33743443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com