C语言终端输入和变量值不一致

问题遇到的现象和发生背景

给i取值,在终端输入的是0,但是调试的时候查看变量显示i为7

用代码块功能插入代码,请勿粘贴截图
#include
#include
#define Maxvernum 100//定义最大顶点数
typedef struct {
    char vexs[Maxvernum];//顶点表
    int edges[Maxvernum][Maxvernum];//林结局很,可以看作边表
    int n,e;//图中的顶点数和边数 
}AMGraph;//用邻接矩阵表示图的类型
//建立邻接矩阵
void create_AM(AMGraph *G){
    int i,j,k;
    char a;
    printf("请输入图的节点数和边数:");
    scanf("%d%d",&G->n,&G->e);//输入顶点数和边数
    printf("请输入节点信息:");
    for(i=0;in;i++){
        scanf("%c",&a);
        G->vexs[i]=a;//读入顶点信息,建立顶点表 
    }
    for(i=0;in;i++){
        for(j=0;jn;j++){
            G->edges[i][j]=0;//初始化邻接矩阵 
        }
    }
    for(k=0;ke;k++){
        printf("请输入边的两个顶点:");
        scanf("%d%d",&i,&j);//输入边的顶点序号
        G->edges[i][j]=1;
        G->edges[j][i]=1;//若为无向图,矩阵为对称矩阵,若为有向图,删除该语句 
    }
    for(i=0;in;i++){
        for(j=0;jn;j++){
            printf("%d",G->edges[i][j]);//初始化邻接矩阵 
        }
        printf("\n");
    }
} 
//定义标志向量作为全局变量
bool visited[Maxvernum];
//DFS:深度优先遍历的递归算法
void DFSM(AMGraph *G,int i){
    //从vi开始对邻接矩阵表示的图进行深度优先遍历
    int j;
    printf("%c",G->vexs[i]);//访问顶点
    visited[i]=true;//设置为true表示已经访问过了
    for(j=0;jn;j++){
        if((G->edges[i][j]==1)&& (!visited[j])){
        DFSM(G,j);
        }
    } 
}
void DFS(AMGraph *G){
    int i;
    for(int a=0;an;a++){
        visited[a]=false;//初始化邻接矩阵 
    }
    for(i=0;in;i++){
        if(!visited[i]){
            DFSM(G,i);
        }
    }
}
//BFS:广度优先遍历的递归算法
void BFS_AM(AMGraph *G,int k){
    int i,j,r=0,f=0;
    int cq[Maxvernum];//定义队列
    for(i=0;in;i++){
        visited[i]=false;//标志向量初始化 
    }
    for(i=0;in;i++){
        cq[i]=-1;//队列初始化 
    }
    printf("%c",G->vexs[k]);//访问原点vk
    visited[k]=true;
    cq[r]=k;//vk已访问,将vk入队
    while(cq[f]!=-1){
        i=cq[f];f=f+1;
        for(j=0;jn;j++){
            if(G->edges[i][j]==1 && !visited[j]){
                printf("%c",G->vexs[j]);//访问Vj
                visited[j]=true;
                r=r+1;cq[r]=j; 
            }
        }
    } 
} 
int main(){
    int i;
    AMGraph *G=(AMGraph *)malloc(sizeof(AMGraph));
    create_AM(G);
    printf("\n");
    DFS(G);
    printf("\n");
    BFS_AM(G,3);
}

运行结果及报错内容

img

断点调试到这一行的 i 值还没有被录入的,需要执行完 scanf 这一行才会对 i 赋值,这个时候再去看 i 的值。
可以在下一行设置一个断点