题目详情
当前位置:首页 > 计算机考试 > 中级软件设计师
题目详情:
发布时间:2023-12-16 23:12:25

[填空题]阅读下列函数说明和C代码,
[说明]
所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。
应用贪婪法求解该问题,程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。
函数中使用的预定义符号如下:
#define M 100
typedef struct/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/
float x;
int p1,p2;
tdr;
typedef struct/*p1、p2为和端点相联系的两个端点,n为端点的度*/
int n,p1,p2;
tr;
typedef struct/*给出两点坐标*/
float x,y;
tpd;
typedef int tl[M];
int n=10;
[函数]
float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/
void sortArr(tdr a[M],int m);
/*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/
int isCircuit(tr r[M],int i,int j);
/*判断边(i,j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/
void selected(tr r[M],int i,int j);/*边(i,j)选入端点关系表r*/
void course(tr r [M],tl l[M]);/*从端点关系表r中得出回路轨迹表*/
void exchange(tdr a[M],int m,int b);
/*调整表排序表,b表示是否可调,即是否有长度相同的边存在*/
void travling(tpd pd [M],int n,float dist,tl loc

更多"阅读下列函数说明和C代码, [说明] 所谓货郎担问题,是指给定"的相关试题:

[填空题]
阅读下列函数说明和C代码,
[说明]
所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。
应用贪婪法求解该问题,程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。
函数中使用的预定义符号如下:
#define M 100
typedef struct{/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/
float x;
int p1,p2;
}tdr;
typedef struct{/*p1、p2为和端点相联系的两个端点,n为端点的度*/
int n,p1,p2;
}tr;
typedef struct{/*给出两点坐标*/
float x,y;
}tpd;
typedef int tl[M];
int n=10;
[函数]
float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/
void sortArr(tdr a[M],int m);
/*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/
int isCircuit(tr r[M],int i,int j);
/*判断边(i,j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/
void selected(tr r[M],int i,int j);/*边(i,j)选入端点关系表r*/
void course(tr r [M],tl l[M]);/*从端点关系表r中得出回路轨迹表*/
void exchange(tdr a[M],int m,int b);
/*调整表排序表,b表示是否可调,即是否有长度相同的边存在*/
void travling(tpd pd [M],
[简答题]【说明】 所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。 应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。 函数中使用的预定义符号如下: #define M 100 typedef struct{/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/ float x; int p1, p2; }tdr; typedef struct{/*p1、p2为和端点相联系的两个端点,n为端点的度*/ int n, P1, p2; }tr; typedef struct{/*给出两点坐标*/ float x,y; }tpd; typedef int tl[M]; int n=10; 【函数】 float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/ void sortArr(tdr a[M], int m); /*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/ int isCircuit(tr[M], int i, int j); /*判断边(i, j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/ void selected(tr r[M], int i, int j);/*边(i,j)选入端点关系表r*/ void course(tr r[M], tl 1[M]);/*从端点关系表r中得出回路轨迹表*/ void exchange(tdr a[M], int m, int b); /*调整表排序表,b表示是否可调,即是否有边长度相同的边存在*/ void travling(tpd pd[M], int n, float dist, t1 locus[M]) /*dist记录总路程*/ { td
[多项选择]【说明】
所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。
应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。
函数中使用的预定义符号如下:
#define M 100
typedef struct/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/
float x;
int p1, p2;
tdr;
typedef struct/*p1、p2为和端点相联系的两个端点,n为端点的度*/
int n, P1, p2;
tr;
typedef struct/*给出两点坐标*/
float x,y;
tpd;
typedef int tl[M];
int n=10;
【函数】
float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/
void sortArr(tdr a[M], int m);
/*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/
int isCircuit(tr[M], int i, int j);
/*判断边(i, j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/
void selected(tr r[M], int i, int j);/*边(i,j)选入端点关系表r*/
void course(tr r[M], tl 1[M]);/*从端点关系表r中得出回路轨迹表*/
void exchange(tdr a[M], int m, int b);
/*调整表排序表,b表示是否可调,即是否有边长度相同的边存在*/
void travling(tpd
[简答题]使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明代码。函数num(char *str)用于返回字符串中非数字的个数。
例如:abc123abc45
返回值为:6
将函数num补充完整。
注意:请勿改动主函数。
试题程序:
#include<iostream.h>
int num(char *str)

int main( )
char str[1024];
cout<<"please input a string:"<<end1;
cin.getline(str,1024);
cout<<"char number is"<<num(str)<<end1;
return 0;

[简答题]使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(int n)返回1,2,3,…,n的和。其中n大于0。
程序要求使用递归实现上述功能。
注意:不能修改程序的其他部分,只能补充sum函数。
试题程序:
#include<iostream.h>
#include<cmath>
int sum(int n)


void main( )

cout<<"1+2+3+…+100="<<sum(100)<<end1;
return;

[简答题]使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。
函数sort(int &m,int &n,int &l)实现将3个整数m,n,1由大到小输出。m最大,l最小。程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果m<n,则将m与n的值进行交换,然后再用m与l进行比较,如果m<l,则将m与l的值进行交换,这样能使m最大,然后再将n与l进行比较,若n<l,则将n与l的值互换,互换后l最小。
将函数sort(int &m,int &n,int &l)补充完整,实现3个数的排序。
注意:请勿改动主函数。
试题程序:
#include<iostream.h>
vold sort(int &m,int &n,int &l)


int main( )

int x=9;
int y=13;
int z==3;
sort(x,u,z);
cout<<x<<’,’<<y<<’,’<<z<<end1;
return 0;

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码