试卷编号:8172所属语言:C++试卷方案:题库182道设计题试卷总分:1820分共有题型:1种一、程序设计共182题(共计1820分)第1题(10.0分)题号:664/*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:已知有结构体类型定义:structnode{intdata;structnode*nextPtr;};请编写函数voidcomputingList(node*head),对head指向的单向链表,分别统计结点的data成员值为负数、0、正数的结点个数分别存入变量negtive、zero、positive中。-------------------------------------------------------注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。-------------------------------------------------------*/#includeiostream#includefstreamusingnamespacestd;voidgrading(int,int,int);structnode{intdata;structnode*nextPtr;};voidcomputingList(node*head){intpositive=0,negtive=0,zero=0;/**********Program**********//**********End**********///忽略阅读grading(positive,zero,negtive);//忽略阅读结束}structnode*createList(void){node*head=NULL,*p1,*p2;inti;inta[10]={-1,3,4,0,9,4,11,-6,2,-10};head=p2=p1=newnode;p1-data=a[0];for(i=1;i10;i++){p1=newnode;p1-data=a[i];p2-nextPtr=p1;p2=p1;}p2-nextPtr=NULL;return(head);}intmain(){structnode*head;head=createList();computingList(head);return0;}//以下忽略阅读voidgrading(inta,intb,intc){fstreammyfile;myfile.open(out.txt,ios::out);myfileabcendl;myfile.close();}答案:structnode*p;p=head;while(p!=NULL){if(p-data0)positive++;elseif(p-data0)negtive++;elseif(p-data==0)zero++;p=p-nextPtr;}第2题(10.0分)题号:522/*------------------------------------------------------------------------------【程序设计】--------------------------------------------------------------------------------题目:设计函数charcapitalize(char);将小写英文字符变为对应的大写字符。-------------------------------------------------------------------------------注意:1.部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在*program*和*end*所标记的区域内完成题干要求的函数功能。2.//标记开始与//标记结束内的程序可以忽略阅读。------------------------------------------------------------------------------*/#includeiostream#includefstreamusingnamespacestd;voidwwjt();/********Program********/charcapitalize(charch){if(ch='a'&&ch='z')returnch-'a'+'A';elsereturnch;}/********End********/intmain(){inti=0;charcp[30];cout请输入包含小写字母的句子:endl;cin.getline(cp,30);while(cp[i]!='\0')coutcapitalize(cp[i++]);coutendl;//忽略阅读wwjt();//忽略阅读结束return0;}//忽略阅读voidwwjt(){charins[250];inti=0;fstreaminfile,outfile;infile.open(in.txt,ios::in);outfile.open(out.txt,ios::out);infile.getline(ins,250);while(ins[i]!='\0'){outfilecapitalize(ins[i]);i++;}infile.close();outfile.close();}//忽略阅读结束答案:charcapitalize(charch){if(ch='a'&&ch='z')returnch-'a'+'A';elsereturnch;}第3题(10.0分)题号:672/*------------------------------------------------【程序设计】--------------------------------------------------题目:函数mySum(inta[][],intm,intn)返回二维整数数组a中所有元素的和,m、n分别为数组a的行数、列数。填写适当的代码,使得mySum()完成正确的功能。--------------------------------------------------注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。------------------------------------------------*/#includeiostream#includefstreamusingnamespacestd;intmySum(inta[2][3],intm,intn);voidgfkd();voidmain(){inta[2][3]={{1,2,3},{4,5,6}};coutmySum(a,2,3)endl;//--------main()函数此后部分可以不阅读-----------gfkd();}intmySum(inta[2][3],intm,intn){/***************Program*****************//***************End*****************/}voidgfkd(){fstreammyF;inta[2][3];myF.open(in.dat,ios::in);myF.read((char*)a,sizeof(int)*2*3);myF.close();myF.open(out.dat,ios::out);myFmySum(a,2,3);myF.close();}答案:inti,j,s=0;for(i=0;im;i++)for(j=0;jn;j++)s=s+a[i][j];returns;第4题(10.0分)题号:588/*------------------------------------------------【程序设计】--------------------------------------------------题目:求1-1000之间同构数的个数n。同构数是:某数与其自身的平方数的后几位相同。例如:25×25=625,25是同构数。--------------------------------------------------注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。------------------------------------------------*/#includefstream#includeiostreamusingnamespacestd;voidwriteinfile(intn);voidmain(){intm,k,j,n=0;for(m=1;m=1000;m++){/**********Program**********/inti=1;k=m;j=m*m;while(k!=0){k/=10;i*=10;}if(j%i==m)n++;/**********End**********/}writeinfile(n);}voidwriteinfile(intn){fstreammyfile;myfile.open(f.txt,ios::out);myfilenendl;myfile.close();}答案:inti=1;k=m;j=m*m;while(k!=0){k/=10;i*=10;}if(j%i==m)n++;第5题(10.0分)题号:725/*------------------------------------------------【程序设计】--------------------------------------------------题目:补充函数aver的代码,该函数计算n个学生成绩(通过参数cj传入)的平均分数。--------------------------------------------------注意:部分源程序给出如下。仅在标有Program和End的注释行之间补充代码,请勿改动其它内容。------------------------------------------------*/#includeiostream#includefstreamusingnamespacestd;voidgrading();floataver(intcj[],intn){/**********Program**********//**********End**********/}intmain(){grading();return0;}voidgrading(){fstreaminfile,myfile;intb[50];inti;infile.open(in.txt,ios::in);myfile.open(out.txt,ios::out);for(i=0;i50;i++)infileb[i];myfile(int)aver(b,50)endl;infile.close();myfile.close();}答案:intsum=0;inti;for(i=0;in;i++)sum+=cj[i];return(float)sum/n;第6题(10.0分)题号:709/*------------------------------------------------【程序设计】------------------------------------