void CreateMGraph(MGraph* G) { int i, j, k, w; char a, b; printf("输入顶点数和边数:\n"); scanf("%d,%d", &G->numNodes, &G->numEdges); /* 输入顶点数和边数 */ printf("输入顶点信息:\n"); fflush(stdin); for (i = 0; i < G->numNodes; i++) /* 读入顶点信息,建立顶点表 */ scanf("%c", &G->vexs[i]); for (i = 0; i < G->numNodes; i++) for (j = 0; j < G->numNodes; j++) G->arc[i][j] = GRAPH_INFINITY; /* 邻接矩阵初始化 */ fflush(stdin); for (k = 0; k < G->numEdges; k++) /* 读入numEdges条边,建立邻接矩阵 */ { printf("输入第%d条边(格式为:顶点a,顶点b,权值)\n ",k+1); scanf("%c %c %d",&a,&b,&w); for (i=0;i<G->numNodes; i++) { for(j = 0; j<G->numNodes; j++) { if(G->vexs[i] ==a&&G->vexs[j]==b) { G->arc[i][j]=w; G->arc[j][i]=w; } } } } } void print(MGraph* G) { int i, j; for (i = 0; i < G->numNodes; i++) { for (j = 0; j < G->numNodes; j++) printf("%4d", G->arc[i][j]); printf("\n"); } } int main() { MGraph G; CreateMGraph(&G); print(&G); return 0; } 本段代码错误点在哪修改
时间: 2024-01-13 17:02:40 浏览: 43
本段代码的错误在于输入顶点信息时,使用了 scanf() 函数读取字符,但是在输入完顶点数和边数后,输入缓冲区中可能会残留一个换行符,导致输入顶点信息时会先读取到这个换行符,而不是用户输入的第一个字符。为了解决这个问题,可以在读取顶点信息前先用 getchar() 函数读取掉输入缓冲区中的换行符,代码修改如下:
```c
void CreateMGraph(MGraph* G) {
int i, j, k, w;
char a, b;
printf("输入顶点数和边数:\n");
scanf("%d,%d", &G->numNodes, &G->numEdges); /* 输入顶点数和边数 */
printf("输入顶点信息:\n");
getchar(); // 读取掉输入缓冲区中的换行符
for (i = 0; i < G->numNodes; i++) /* 读入顶点信息,建立顶点表 */
scanf("%c", &G->vexs[i]);
for (i = 0; i < G->numNodes; i++)
for (j = 0; j < G->numNodes; j++)
G->arc[i][j] = GRAPH_INFINITY; /* 邻接矩阵初始化 */
fflush(stdin);
for (k = 0; k < G->numEdges; k++) /* 读入numEdges条边,建立邻接矩阵 */
{
printf("输入第%d条边(格式为:顶点a,顶点b,权值)\n ",k+1);
scanf(" %c %c %d", &a, &b, &w); // 在格式字符串前加空格,将之前的换行符读取掉
for (i = 0; i < G->numNodes; i++) {
for(j = 0; j < G->numNodes; j++) {
if(G->vexs[i] == a && G->vexs[j] == b) {
G->arc[i][j] = w;
G->arc[j][i] = w;
}
}
}
}
}
```
另外,建议在输入完顶点数和边数后,也加上一个 getchar() 函数,将输入缓冲区中的换行符读取掉,以免对后面的输入造成影响。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)