试卷编号:10261所属语言:C++试卷方案:C+_1506230958试卷总分:100分共有题型:1种一、程序设计共100题(共计100分)第1题(1.0分)题号:6/*------------------------------------------------【程序设计】--------------------------------------------------题目:完成函数dubdel的编写,该函数删除单向链表中的重复结点,如果链表中存在重复结点(除next指针外的其它数据成员的值相同)时,保留离链首最近的结点。--------------------------------------------------注意:仅在标有Program和End的注释行之间补充填写代码。请勿改动主函数main和其它任何已有内容。------------------------------------------------*/#includeiostream#includefstream#includestringusingnamespacestd;voidgrading();structNode{intnum;Node*next;};Node*dubdel(Node*head){/*********Program*********//*********End*********/}voiddeleteList(Node*head){Node*tmp;while(head){tmp=head-next;deletehead;head=tmp;}}voidprintList(Node*head){while(head){couthead-num;head=head-next;}coutendl;}Node*createList(inta[],intlen){Node*head=NULL;if(len1)returnhead;for(inti=0;ilen;i++){Node*tmp=newNode;tmp-num=a[i];tmp-next=head;head=tmp;}returnhead;}intmain(){ints[8]={2,6,4,2,7,9,5,12};Node*head=createList(s,8);head=dubdel(head);printList(head);//忽略阅读grading();//忽略阅读结束deleteList(head);return0;}//忽略阅读voidwhiteFile(fstream&outfile,Node*head){while(head){outfilehead-num;head=head-next;}outfileendl;}voidgrading(){inta[200],i;fstreaminfile,outfile;infile.open(in.txt,ios::in);outfile.open(out.txt,ios::out);for(i=0;i200;i++)infilea[i];for(i=0;i8;i++){Node*head=createList(a+i*2,6+i);head=dubdel(head);whiteFile(outfile,head);}infile.close();outfile.close();}//忽略阅读结束答案:Node*cur=head;while(cur!=NULL){intvalue=cur-num;Node*cur1=cur-next;Node*pre=cur;while(cur1!=NULL){if(cur1-num==value){pre-next=cur1-next;deletecur1;}else{pre=cur1;}cur1=cur1-next;}cur=cur-next;}returnhead;第2题(1.0分)题号:717/*------------------------------------------------【程序设计】--------------------------------------------------题目:完成函数isjishu的编写,该函数判断n是否是奇数,是则返回true,否则返回false。--------------------------------------------------注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。------------------------------------------------*/#includeiostream#includefstreamusingnamespacestd;boolisjishu(intn){/**********Program**********//**********End**********/}intgrading();intmain(){if(isjishu(113))cout113是奇数。endl;elsecout113不是奇数。endl;if(isjishu(2048))cout2048是奇数。endl;elsecout2048不是奇数。endl;//忽略阅读grading();//忽略阅读结束return0;}//以下忽略阅读intgrading(){ifstreamifile;fstreammyfile;intnum;ifile.open(in.txt,ios::in);myfile.open(out.txt,ios::out);for(inti=0;i20;i++){ifilenum;if(isjishu(num)){myfilenumendl;}}ifile.close();myfile.close();return0;}答案:if(n%2!=0)returntrue;returnfalse;第3题(1.0分)题号:530/*-----------------------------------------------------【程序设计】-------------------------------------------------------题目:编写函数IfDigitChar(ch),判断字符ch是否为数字字符,是则返回1,否则返回0。---------------------------------------------------注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在*Program*和*End*所标记的区域内完成题干要求的函数功能。------------------------------------------------------*/#includeiostream#includefstreamusingnamespacestd;intgrading();intIfDigitChar(charch);/*********Program*********//*********End*********/intmain(){charch;cout请输入一个字符:endl;cinch;if(IfDigitChar(ch))coutchisadigitcharendl;elsecoutchisnotadigitcharendl;//忽略阅读grading();//忽略阅读结束return0;}//以下忽略阅读intgrading(){charm;inti,j;fstreaminfile,outfile;infile.open(in.txt,ios::in);outfile.open(out.txt,ios::out);for(i=0;i4;i++){for(j=0;j6;j++){infilem;outfileIfDigitChar(m);}outfileendl;}infile.close();outfile.close();return0;}答案:intIfDigitChar(charch){if(ch='0'&&ch='9')return1;elsereturn0;}第4题(1.0分)题号:8/*----------------------------------------------------------【程序设计】------------------------------------------------------------题目:程序中的函数tax计算个人所得税,根据工资m返回其应征的税款。个人所得税率表如下:月收入1200元起征,超过起征点1000元(含)以内,超过1200元的部分按5%征税;超过起征点3000元(含)以内,超过1200元的部分按10%征税;超过起征点5000元(含)以内,超过1200元的部分按15%征税;超过起征点10000元(含)以内,超过1200元的部分按20%征税;超过起征点10000元以上的,超过1200元的部分按30%征税。------------------------------------------------------------注意:仅在标有Program和End的注释行之间补充填写代码。请勿改动主函数main和其它任何已有内容。------------------------------------------------------------*/#includeiostream.h#includefstream.hdoubletax(doublem){/**********Program**********//**********End**********/}intgrading();intmain(){doubleincome,j=0;cout请输入个人月收入:endl;cinincome;j=tax(income);cout应征所得税:jendl;//忽略阅读grading();//忽略阅读结束return0;}//以下忽略阅读intgrading(){intm;fstreaminfile,outfile;infile.open(in.txt,ios::in);outfile.open(out.txt,ios::out);for(inti=0;i5;i++){infilem;outfiletax(m)endl;}infile.close();outfile.close();return0;}答案:doubleresult=0;if(m=1200)result=0;elseif(m=1200+1000)result=(m-1200)*0.05;elseif(m=1200+3000)result=(m-1200)*0.1;elseif(m=1200+5000)result=(m-1200)*0.15;elseif(m=1200+10000)result=(m-1200)*0.2;elseif(m1200+10000)result=(m-1200)*0.3;returnresult;第5题(1.0分)题号:520/*------------------------------------------------【程序设计】--------------------------------------------------题目:编写递归函数fun(n)实现如下图所示的fun函数,其中n为正整数。例如:fun(6)=9,fun(8)=19。/n(n=3)fun(n)=|\fun(n-1)+fun(n-3)(n3)--------