qq_52895046 2021-05-11 21:38 采纳率: 0%
浏览 72

用scanf循环给二维数组赋值后需再用scanf后出错

#include<stdio.h>
#define MAXSIZE 3
typedef char Vertice;
typedef int Edge;
typedef struct
{
    Vertice vexs[MAXSIZE];
    Edge arc[MAXSIZE][MAXSIZE];
    //int numNodes, numEdeges;
}MGraph;
int Creat_Graph(MGraph* MG)
{
/*    printf("点的个数,边的个数:");
    scanf_s("%d,%d", MG->numNodes, MG->numEdeges);*/
    printf("点的值:");
    for (int i = 0; i < MAXSIZE; i++)
    {
        //scanf_s("%c", &(MG->vexs[i]));
        MG->vexs[i] = getchar();
    }
    //getchar();
    printf("边的关系:");
    for(int i=0;i<MAXSIZE;i++)
        for (int j = 0; j < MAXSIZE; j++)
        {
            int a;
            scanf_s("%d", &a);
            MG->arc[i][j] = a;
            //printf("arc[%d][%d]的值为:%d", i, j, MG->arc[i][j]);
        }
    //getchar();
    return 0;
}
void Check_Edge(MGraph M)
{
    char a;
    int i = 0, n1 = 0, n2 = 0;
    printf("请输入要查询顶点:");
    a = getchar();
    for (i; a != M.vexs[i]; i++);
    for (int x = 0; x < MAXSIZE; x++)
        n1 += M.arc[i][x];
    printf("%c的出度是%d\n", a, n1);
    for (int y = 0; y < MAXSIZE; y++)
        n2 += M.arc[y][i];
    printf("%c的入度是%d\n", a, n2);
}
int main()
{
    MGraph G;
    Creat_Graph(&G);
    Check_Edge(G);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 关注

    在使用了scanf_s函数的前面都加上下面的语句

    fflush(stdin);

    程序应该就正常 了。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮