程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-c程序改錯 沒有錯誤 可是沒法運行 可以幫忙改一下嘛

c語言-c程序改錯 沒有錯誤 可是沒法運行 可以幫忙改一下嘛

編輯:編程綜合問答
c程序改錯 沒有錯誤 可是沒法運行 可以幫忙改一下嘛

#include
#define MAXVEX 100
#define INFINITY 65535
typedef int edgetype ;
typedef char vertextype;
typedef struct {
vertextype vexs[MAXVEX];
edgetype arc[MAXVEX][MAXVEX]; //鄰接矩陣儲存的結構
int numvertexes ,numedges;

}mgraph;

void createmgraph(mgraph *g)
{
int i,j,k,w;
printf("輸入頂點數和邊數:\n");
scanf("%d%d",&g->numvertexes,&g->numedges);
printf("輸入頂點數和邊數:\n");//讀入頂點信息
for(i=0;inumvertexes;i++)

scanf("%c",g->vexs[i]);

for(i=0;i<g->numvertexes;i++)
    for (j=0;j<g->numvertexes;j++)                //初始化鄰接矩陣
        g->arc[i][j]=INFINITY;

for(k=0;knumedges;j++)
{
printf("輸入邊(vi,vj)上的下標i,j,和權w\n");
scanf("%d%d%d",&i,&j,&w);
g->arc[i][j]=w;
g->arc[j][i]=w;
}
}

void main()
{
int i,j;
mgraph* g;
createmgraph(g);
printf("輸出圖的所的邊\n");
for(i=0;inumedges;i++)
for(j=0;jnumedges;j++)
{
if(g->arc[i][j]!=0)
printf("圖的邊為(%d,%d),權值為%d",i,j,g->arc[i][j]);
}
}

還有定義的那個圖g 它是一個指針變量 意思是指向定義的那個圖的變量對吧 那麼調用那個函數的時候 函數名後面括號裡面需要寫形參的類型嘛?形參是指針那我寫*g 還是g?這個程序還有一個警告 求好心人幫忙

最佳回答:


是拷貝出錯了吧,好多錯誤。
主要錯誤g沒有初始化。修改如下:

 #include <stdio.h>
#include<stdlib.h>

#define MAXVEX 100
#define INFINITY 65535
typedef int edgetype ;
typedef char vertextype;
typedef struct {
    vertextype vexs[MAXVEX];
    edgetype arc[MAXVEX][MAXVEX]; //鄰接矩陣儲存的結構
    int numvertexes ,numedges;
}mgraph;
void createmgraph(mgraph *g)
{
    int i,j,k,w;
    printf("輸入頂點數和邊數:\n");
    scanf("%d%d",&g->numvertexes,&g->numedges); 
    printf("輸入頂點數和邊數:\n");//讀入頂點信息
    for(i=0;i<g->numvertexes;i++)//修改

        scanf("%c",g->vexs[i]);
    for(i=0;i<g->numvertexes;i++)//修改
        for (j=0;j<g->numvertexes;j++)                //初始化鄰接矩陣
            g->arc[i][j]=INFINITY;
    for(k=0;k<g->numedges;j++)//修改
    {
        printf("輸入邊(vi,vj)上的下標i,j,和權w\n");
        scanf("%d%d%d",&i,&j,&w);
        g->arc[i][j]=w;
        g->arc[j][i]=w;
    }
}
void main()
{
    int i,j;
    mgraph* g;
    g=(mgraph*)malloc(sizeof(mgraph));//增加初始化
    createmgraph(g);
    printf("輸出圖的所的邊\n");
    for(i=0;i<g->numedges;i++)//修改
        for(j=0;j<g->numedges;j++)//修改
        {
            if(g->arc[i][j]!=0)
                printf("圖的邊為(%d,%d),權值為%d",i,j,g->arc[i][j]);
        }

    if(g) free(g);//增加
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved