阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。【说明】著名的四色定理指出任何平面区域均可以用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。【函数】include <stdio.h>define N 10 /*要着色的N个区域*/void output(int color[]) /*输出一种着色方案 color[i]的值为区域i所着颜色*/{int i;for (i=0; i<N; i++)printf("%4d", color[i]);printf("\n");}int back(int *ip, int color[j] /*回溯*/int c=4;while (c==4){if (*ip<=0)return 0:--(*ip);c=(1);color[*ip]=-1;}return c;}/*检查区域i,考查c种颜色的可能性 */int colorOK(iht i, int c, int adj[][N], int color[]){int j;for(j=0; j<i; j++)if ((2))return 0;return 1;}/*为区域i选一种可着的颜色*/int select(int i, int c, int adj[][N], int color[])/*寻找各种着色方案 adj[i][j]=1表示区域i与区域j不相邻*/{int k;for (k=c; k<=4; k++) /*4种颜色*/if (colorOK((3)))return k;return 0;}int coloring(int adj[][N]){int color[N], i, c, cnt;for (i=0; i<N; i++) color[i]=-1:i=c=0; cnt=0;while (1)[if ((c=(4))==0){c=back(i, color);if (c==0)return cnt;}else{(5);i++;if(i==N){output(color);++cnt;c=back(i, color);}elsec=0;}}}void main(){int adj[N][N]={ {0, 1, 0, 1, 1, 1, 1, 1, 1, 1},{1, 0, 1, 1, 0, 1, 1, 1, 1, 0},{0, 1, 0, 1, 0, 1, 1, 0, 1, 1},{1, 1, 1, 0, 1, 1, 0, 0, 1, 1},{1, 0, 0, 1, 0, 1, 0, 0, 0, 0},{1, 1, 1, 1, 1, 0, 1, 0, 0, 1},{1, 1, 1, 0, 0, 1, 0, 0, 1, 0},{1, 1, 0, 0, 0, 0, 0, 0, 1, 1},

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。

【说明】

著名的四色定理指出任何平面区域均可以用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。

【函数】

include <stdio.h>

define N 10 /*要着色的N个区域*/

void output(int color[]) /*输出一种着色方案 color[i]的值为区域i所着颜色*/

{

int i;

for (i=0; i<N; i++)

printf("%4d", color[i]);

printf("\n");

}

int back(int *ip, int color[j] /*回溯*/

int c=4;

while (c==4)

{

if (*ip<=0)

return 0:

--(*ip);

c=(1);

color[*ip]=-1;

}

return c;

}

/*检查区域i,考查c种颜色的可能性 */

int colorOK(iht i, int c, int adj[][N], int color[])

{

int j;

for(j=0; j<i; j++)

if ((2))

return 0;

return 1;

}

/*为区域i选一种可着的颜色*/

int select(int i, int c, int adj[][N], int color[])

/*寻找各种着色方案 adj[i][j]=1表示区域i与区域j不相邻*/

{

int k;

for (k=c; k<=4; k++) /*4种颜色*/

if (colorOK((3)))

return k;

return 0;

}

int coloring(int adj[][N])

{

int color[N], i, c, cnt;

for (i=0; i<N; i++) color[i]=-1:

i=c=0; cnt=0;

while (1)

[

if ((c=(4))==0)

{

c=back(&i, color);

if (c==0)

return cnt;

}

else

{

(5);

i++;

if(i==N)

{

output(color);

++cnt;

c=back(&i, color);

}

else

c=0;

}

}

}

void main()

{

int adj[N][N]={ {0, 1, 0, 1, 1, 1, 1, 1, 1, 1},

{1, 0, 1, 1, 0, 1, 1, 1, 1, 0},

{0, 1, 0, 1, 0, 1, 1, 0, 1, 1},

{1, 1, 1, 0, 1, 1, 0, 0, 1, 1},

{1, 0, 0, 1, 0, 1, 0, 0, 0, 0},

{1, 1, 1, 1, 1, 0, 1, 0, 0, 1},

{1, 1, 1, 0, 0, 1, 0, 0, 1, 0},

{1, 1, 0, 0, 0, 0, 0, 0, 1, 1},


相关考题:

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。【说明】设串s和串t采用顺序存储结构,编写函数实现串s和串t的比较操作,要求比较结果包括大于、小于和等于3种情况。【函数】int StrCompare(SStrType s, SStrType t){int n=s.length, m=(1), i,j,tag;i=0; j=0;while((2)){if((3)){i++;j++;}else if(s.str[i]>t.str[j]){tag=1;return tag;}else{tag=-1;return tag;}}if(n==m)tag=0;else if((4))tag=1;else if(n<m)tag=-1;(5);}

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]完成以下中序线索化二叉树的算法。[函数]Typedef int datatype;Typedef struct node {Int ltag, rtag;Datatype data;*lchild,* rchild;}bithptr;bithptr pre;void inthread ( p );{if{inthread ( p->lchild );if ( p->lchild==unll ) (1);if ( P->RCHILD=NULL) p->rtag=1;if (2){if (3) pre->rchild=p;if ( p->1tag==1 )(4);}INTHREAD ( P->RCHILD );(5);}}

阅读以下说明和c++码,将应填入(n)处的字名写在的对应栏内。[说明] 以下函数完成求表达式的值,请填空使之完成此功能。float sum ( float x ){ float s=0.0;int sign = 1;(1);for(inti=1;(2); i+ +){t=t*x;s=s+(3);sign = - sign;(4);}

阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。【说明】下列流程图用泰勒(Taylor)展开式y=ex=1+x+x2/2!+x3/3!+…+xn/n!+…计算并打印ex的近似值,其中用ε(>0)表示误差要求。【流程图】

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]已知r[1...n]是n个记录的递增有序表,用折半查找法查找关键字为k的记录。若查找失败,则输出“failure",函数返回值为0;否则输出“success”,函数返回值为该记录的序号值。[C函数]int binary search(struct recordtype r[],int n,keytype k){ intmid,low=1,hig=n;while(low<=hig){mid=(1);if(k<r[mid].key) (2);else if(k==r[mid].key){printf("succesS\n");(3);}else (4);}printf("failure\n");(5);}

试题三(共 15 分)阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]有一个一维数组cj,内放20个学生成绩,求平均成绩。函数ave用来求20个学生的平均成绩。[C语言函数]float ave(float a[20]){ int i;float aver,sum= (1) ;for(i=1;i20;i++) sum= (2) ;aver= (3) ;return( (4) );}main(){ float cj[20],aver;int i;printf(“input 20 cj:\n”);for(i=0;i20;i++) scanf(“%f”,cj[i]);printf(“\n”);aver= (5) ;printf(“average cj is %6.2f”,aver);}

()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]下面程序是一个带参数的主函数,其功能是显示在命令行中输入的文本文件内容。[C语言函数]#include"stdio.h"main(argc,argv) int argc; char *argv[]; { (1) ; if((fp=fopen(argv[1],”r’’))== (2) ) { printf(”file not open!\n”);exit(0);} while( (3) ) putchar( (4) ); (5); }

阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。【说明1】函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。【C函数】char *t = (char *)malloc( (1) ); /*申请串空间*/ int i, k = 0; if (!t) return; for(i = 0; i =’0’ if ( (4) ) { ch = *s; *s = *(s+len-1); *(s+len-1) = ch; reverse( (5) ); }}

阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。