代码及注释如下:
//图的邻接矩阵存储
#include<stdio.h>
#include<string.h>
char vertex[10][10];
int arc[20][20];
int n;
int existArc();//声明函数正确格式
void verDegree();
void main()
{
printf("输入顶点总数:\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",&vertex[i]);
}
printf("请输入1代表连通,0代表不连通\n");
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(j==i) continue;
printf("%s→%s ",vertex[i],vertex[j]);
scanf("%d",&arc[i][j]);
}
existArc();//调用函数正确格式
verDegree();
getchar();
}
int existArc()//两顶点之间是否存在弧线
{
char ver1[10],ver2[10]; //变量要定义成数组才可以存放字符串,一维数组只能存放一个字符串,二维数组可存放多个字符串
int v1,v2;
printf("输入两个顶点看之间是否存在弧线:\n");
scanf("%s %s",&ver1,&ver2);
for(int i=0;i<n;i++)
{
if(strcmp(ver1,vertex[i])==0)
v1=i; //找出输入顶点所在的下标
if(strcmp(ver2,vertex[i])==0)
v2=i;
}
if(arc[v1][v2]==1)
printf("%s→%s存在弧\n",ver1,ver2);
else
printf("%s→%s不存在弧\n",ver1,ver2);
if(arc[v2][v1]==1)
printf("%s→%s存在弧\n",ver2,ver1);
else
printf("%s→%s不存在弧\n",ver2,ver1);
return 0;
}
void verDegree()//顶点的度
{
char ver[10]; //变量要定义成数组才可以存放字符串
int sub,Enter=0,Out=0;
printf("输入一个顶点查看它的度:\n");
scanf("%s",&ver);
for(int i=0;i<n;i++)
{
if(strcmp(ver,vertex[i])==0)
sub=i;
}
for(i=0;i<n;i++)
{
if(arc[sub][i]==1)
Out++;
if(arc[i][sub]==1)
Enter++;
}
printf("%s入度为%d,出度为%d,度为%d",ver,Enter,Out,Out+Enter);
}