2016年计算机软件水平设计师模拟试题_第1页
2016年计算机软件水平设计师模拟试题_第2页
2016年计算机软件水平设计师模拟试题_第3页
2016年计算机软件水平设计师模拟试题_第4页
2016年计算机软件水平设计师模拟试题_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2016年计算机软件水平设计师模拟试题阅读下列程序说明和C程序,将应填入(n)处的字句写在答卷纸的对应栏内。

【程序说明】

该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。

【程序】

#include

voidstrmerge(char*a,char*b,char*c)//将字符串a,b合并到字符串c中

{

chart,*w;

w=c;

while((1))

{

//找到字符串a,b当前字符中较小的字符

if(*a<*b)

{

t=*a;

(2);

}

elseif(*a>*b)

{

t=*b;

(3);

}

else//字符串a,b当前字符相等

{

t=*a;

a++;

b++;

}

if((4))//开始,可直接赋值

*w=t;

elseif(t!=*w)

//如果a,b中较小的当前字符与c中当前字符不相等,才赋值(5);

}

if(*a!=\′\0′)//如果字符串a还没有结束,则将a的剩余部分赋给c

while(*a!=′\0′)

if(*a!=*w)

{

*(++w)=*a;

a++;

}

else

(6);

if(*6!=′\0′)//如果字符串b还没有结束,则将b的剩余部分赋给c

while(*b!=′\0′)

if(*b!=*w)

{

*(++w)=*b;

b++;

}

else

b++;

(7);

}

voidstrsort(char*s)//将字符串S中的字符排序

{

inti,j,n;

chart,*w;

W=S;

for(n=0;*w!=′\0′;n++)//得到字符串长度n

w++;

for(i=0;i<n-1;i++)//对字符串s进行排序,按字母先后顺序

for(j=i+1;j<n;j++)

if((8))

{

t=s[i];s[i]=s[j];(9);

}

}

voidmain()

{

chars1[100],s2[100],s3[100];printf("\nPlease,inputthefirststring:");

scanf("%s",s1);

printf("\nPleaseinputthesecondstring:");

scanf("%s",s2);

strsort(s1);//将字符串s1排序

strsort(s2);//将字符串s2排序

printf("%s\n",s1);

printf("%s\n",s2);

s3[0]=′\0′;//字符串s3的第一个字符先置′\0′结束标志

(10)//将s1和s2合并,按照字母顺序排列,

//且要删去相同字符,存入s3中

printf("%s",s3);

}

●试题五

阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【程序5说明】

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

程序中用1~4表示四种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。

【程序5】

#include

#defineN10

voidoutput(intcolor[])/*输出一种着色方案*/

{inti;

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

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

printf("\n");

}

intback(int*ip,intcolor[])/*回溯*/

{intc=4;

while(c==4){

if(*ip<=0)return0;

--(*ip);

c=(1);

color[*ip]=-1;

}

returnc;

}

/*检查区域i,对c种颜色的可用性*/

intcolor0k(inti,intc,int[][N],intcolor[]}

{intj;

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

if((2))

return0;

return1;

}

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

intselect(inti,intc,intadj[][N],intcolor[])

{intk;

for(k=c;k<=4;k++)

if(colorOK((3)))

returnk;

return0;

}

intcoloring(intadj[][N])/*寻找各种着色方案*/

{intcolor[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)returncnt;

}else{(5);i++;

if(i==N){

output(color);

++cnt;

c=back(&i,color);

}elsec=0;

}

}

}

voidmain()

{intadj[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},

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

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

};

printf("共有%d组解.\n",coloring(adj));

}

●试题六

阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。

【程序6说明】

本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有:

createList():创建按指数降序链接的多项式链表,以表示多项式。

reverseList():将多项式链表的表元链接顺序颠倒。

multiplyList(ListL1,ListL2):计算多项式L1和多项式L2的乘积多项式。

【程序6】

#include

classList;

classltem{

friendclassList;

private:

doublequot;

intexp;

Item*next;

public:

Item(double_quot,int_exp)

{(1);}

};

classList{

private:

Item*list;

public:

List(){list=NULL;}

voidreverseList();

voidmultiplyList(ListL1,ListL2);

voidcreateList();

};

voidList::createList()

{Item*p,*u,*pre;

intexp;

doublequot;

list=NULL;

while(1){

cout<<"输入多项式中的一项(系数、指数):"<<endl;

cin>>quot>>exp:

if(exp<0)break;//指数小于零,结束输入

if(quot==0)continue;

p=list;

while((2)){//查找插入点

pre=p;p=p->next;}

if(p!=NULL&&exp==p->exp){p->quot+=quot;continue;}

u=(3);

if(p==list)list=u;

elsepre->next=u;

u->next=p;}

}

voidList::reverseList()

{Item*p,*u;

if(list==NULL)return;

p=list->next;list->next=NULL;

while(p!=NULL){

u=p->next;p->next=list;

list=p;p=u;}

}

voidList::multiplyList(ListL1,ListL2)

{Item*pLl,*pL2,*u;

intk,maxExp;

doublequot;

maxExp=(4);

L2.reverseList();list=NULL;

for(k=maxExp;k>=0;k--){

pL1=L1.list;

while(pL1!=NULL&&pL1->exp>k)pL1=pL1->next;

pL2=L2.list;

while(pL2!=NULL&&(5)pL2=pL2->next;

quot=0.0;

while(pL1!=NULL&&pL2!=NULL){

if(pL1->exp+pL2->exp==k){

(6);

pL1=pL1->next;pL2=pL2->next;

}elseif(pL1->exp+pL2->exp>k)pL1=pL1->next;

elsepL2=pL2->next;

}

if(quot!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论