文章
92
粉丝
68
获赞
0
访问
11.2k
(1) 两次for循环统计所有节点的入度和出度,分别存储到数组indegrees[MAXV]和outDegrees[MAXV]. 最后统计所有出度大于入度的顶点,总数计入nCount;
(2)
int printVertices(MGraph G){
int inDegrees[MAXV]=0;int OutDegrees[MAXV]=0; int nCount=0;
for (int i ;i<=G.numVertices;i++)
for( (int j ;j<=G.numVertices;j++))
if(G.Edge[ i ][ j ] = 1)
{inDegrees[ j ]++;outDegrees[i]++;}
//所有节点入度出度已经计算完毕
for (int k ;k<=G.numVertices;k++)
if( outDegrees[k] > inDegrees[k] )
{printf(k); nCount++}
//K顶点总数已经计算至nCount;
return nCount;
}
评分及理由
(1)得分及理由(满分4分)
得分:3分
理由:学生的设计思想基本正确,即通过两次循环统计所有顶点的入度和出度,然后找出出度大于入度的顶点。但描述不够完整和清晰,例如没有明确说明如何利用邻接矩阵进行统计(只提到“两次for循环”),也没有提及需要输出顶点的名称(字符)而非下标。因此扣1分。
(2)得分及理由(满分9分)
得分:5分
理由:学生的代码框架基本符合算法思想,但存在多处逻辑错误和语法问题:
1. 数组初始化错误:int inDegrees[MAXV]=0; 和 int OutDegrees[MAXV]=0; 在C/C++中不能对整个数组用单个值初始化,应使用循环或 {0} 初始化。
2. 循环变量未初始化:for (int i ;i<...
登录后发布评论
暂无评论,来抢沙发