史天亮123 2022-12-09 19:36 采纳率: 75%
浏览 18
已结题

scanf输入不知道哪块有些问题

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

#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

#define MVNum 100
typedef char VerTexType;
typedef int ArcType;
typedef struct{
    VerTexType vexs[MVNum];
    ArcType arcs[MVNum] [MVNum];
    int vexnum,arcnum;
}AMGraph;

int LocateVex(AMGraph *G,VerTexType v){
    int i;
    for(i=0;i<G->vexnum;i++){
        if(G->vexs[i]==v)
            return i;
    }
    return -1;
}

int CreateUDN(AMGraph *G){
    int i,j,k;
    VerTexType v1,v2;
    printf("输入总点数:");
    scanf("%d",&G->vexnum);
    printf("\n输入总边数:");
    scanf("%d",&G->arcnum);
    printf("\n输入顶点信息:");
    scanf("%s",G->vexs);
    
    for(i=0;i<G->vexnum;i++){
        for(j=0;j<G->vexnum;j++)
            G->arcs[i][j]=0;
    }
    for(k=0;k<G->arcnum;k++){
        printf("\n输入一条边依附的两个顶点:");
        scanf("%c%c",&v1,&v2);
        //printf("\n%c%c\n",v1,v2);
        i=LocateVex(G,v1);
        j=LocateVex(G,v2);
        G->arcs[i][j]=1;
    }
    printf("OK"); 
}




int main(int argc, char *argv[]) {
    AMGraph G;
    CreateUDN(&G);
    return 0;

}




运行结果及详细报错内容

img

help me@qzjhjxj

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-12-09 20:09
    关注

    scanf("%c%c",&v1,&v2);之前,加个getchar(),接收前面scanf输入时的换行符。而且在两个%c之间加个空格,因为你输入时两个字符之间也是加空格的,必须一致

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 创建了问题 12月9日

悬赏问题

  • ¥60 Qcustomplot绘制实时动态曲线
  • ¥20 运用matlab画x-y图
  • ¥15 用idea运行项目,运行tomcat报错:断言失败
  • ¥15 Sqlserver查询链接服务器数据问题
  • ¥15 Bibtex4Word 引用中文文献
  • ¥20 用opencv c/c++ 转换成灰度图,然后做一下直方图均衡,输出mp4文件
  • ¥20 matlab中的双层数值积分
  • ¥50 服务器打印水晶报表问题
  • ¥30 gradle环境下javafx项目如何使用druid连接池
  • ¥15 服务器打印水晶报表问题