我试图读取图中两个节点之间的距离并将其存储在数组中,但循环无法按预期工作。它突然停止了。
Output:
Edge Number: 4
Enter distance between two nodes, Example: A B 10
A C 3
A B 2
C B 2
...Program finished with exit code 0
Press ENTER to exit console.
例如,当edgeNumber为4时,它停止在3处。这是我的代码。提前致谢。
Code:
#include <stdio.h>
#define S 50
int main(){
int dist[S][S], edgeNumber, i, temp;
char node1, node2;
printf("Edge Number: ");
scanf("%d", &edgeNumber);
printf("Enter distance between two nodes, Example: A B 10 \n");
for(i = 0; i < edgeNumber; i++){
scanf("%c %c %d", &node1, &node2, &temp);
dist[((int)node1) - 65][((int)node2) - 65] = temp;
dist[((int)node2) - 65][((int)node1) - 65] = temp;
}
return 0;
}
只需重写这个调用scanf
scanf("%c %c %d", &node1, &node2, &temp);
^^^
like
scanf( " %c %c %d", &node1, &node2, &temp);
^^^
格式字符串中的前导空格允许跳过输入缓冲区中的空白字符,包括换行符'\n'
.
另外,使用像 65 这样的幻数也是一个坏主意。并且您应该检查输入的字符是否为字母并将其转换为大写。否则你的代码是非常不安全的。您还应该测试 scanf 调用的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)