2021年宁夏回族自治区吴忠市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021年宁夏回族自治区吴忠市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021年宁夏回族自治区吴忠市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021年宁夏回族自治区吴忠市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021年宁夏回族自治区吴忠市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

2021年宁夏回族自治区吴忠市全国计算机

等级考试C语言程序设计预测试题(含答

案)学校: 班级: 姓名: 考号: 一、2.填空题(10题)下列程序段的输出结果是【]ointn=*c';switch(n++){default:printf("error");break;case'a*:case'A':caseb:case'B*:printf("good");break;case'c*:case'C':printf("pass");cased:case'D':printf("warn");1注释一般分为序言性注释和 注释。软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。阅读下面语句,则程序的执行结果是【]o#include"stdio.h"main(){inta=-l,b=l,k;if((++a<0)&&!(b--<=0))printf(”%d,%d\n",a,b);elseprintf(n%d,%d\n”,b,a);)在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。structlink{chardata;structlink*next;};structlink*p,*first;intc=0;p=first;while([]){C++;P=【】;}若有如下结构体说明:structSTRU{inta,b;charc:doubled;structSTRU*pl,*p2;};请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。【]tl20]以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,[]z){*z=x+y;)已知字母A的ASCII码为65。以下程序运行后的输出结果是()。main(){chara,b;a='A'+5-'3';b=a+6・2;a='A'+S-'3';b=a+6・2;printf(,,%d%c\n,\a,B);1以下程序运行后的输出结果是【】。#defineS(x)4*x*x+1mah(){inti=6,j=8;printf(”%d\n”,S(i+j));}二、单选题(10题)将两个字符串连接起来组成一个字符串时,选用()函数。strlen()B.strcpyOC.strcat()D.strcmpO以下程序的输出结果是 o#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n”,M(a+b,b+c,c+a));}A.19B.17C.15D.12下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高以下叙述中正确的是 oC语言比其他语言高级 C语言可以刁;用编译就能被计算机识别执行C语言以接近英语国家的自然语言和数学语言作为语言的表达形式C语言出现的最晚,具有其他语言的一切优点设有二维数组A7x8,每个数据元素占8个字节存储单元,顺序存放,A第一个元素A0,0的存储地址为1000,数组A的最后一个元素A6,7的存储地址为0。A.1024B.1440C.1448D.1432下列程序的执行结果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-l;printf("%d,OAd",a,c);c+=・a+++(++b);printf(”%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1在待排序文件已基本有序的前提下,下述排序方法中效率最高的是0。A.直接插入排序B.直接选择排序C.快速排序D.二路归并排序采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。A.先序遍历B.中序遍历C.后序遍历D.按层遍历将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1.则编号为49的结点的左孩子的编号为A.98B.99C.50D.48层次型、网状型和关系型数据库划分原则是()。A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式三、程序设计题(10题)请编写一个函数proc,它的功能是:求出1〜m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为70,则程序输出:7111421222833354244495556636670注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(intm,int*a,int*n){)voidmain(intarr[N],n,k;system(”CLS”);proc(70,arr,&n);for(k=0;k<n;k++)if((k+l)%20=0)//每行输出20个数{printf(”%4d”,arr[k]);printf("\n");}elseprintf(”%4d”,arr[k]);printf(”\n");}请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:ABCDBCDEFGCDEFGHI则合并后的字符串内容应该是ABCDBCDEFGCDEF—GH1o注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidproc(chararr[M][N],char*b)()voidmain(charstr[M][N]={”ABCD”,,BCDEFG”,”CDEFGHI”},i;chararr[100]=(“##################");printf("Thestring:\n");for(i=0;i<M;i++)puts(str[i]);printf("\n");proc(str,arr);printf("TheAstring:\n");printf("%s",arr);printf("\n\n,^);请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p<n-l)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10.11,12,13,14,1,2,3,4O注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:Sinclude<stdio.h>3defineM80voidproc(int•w.intp.intn)voidmain()(mtarr[M]=<..2.13.14},inti.p.n141prinlfCThcoriginaldatai\n**>i(or(i-"0ii<nji++)printf("%3d".arr£i]>iprintfCXnXnEntcrp:")iproc(arr.p.n)(print(("\nThedataaftermoving:\n")ifor(i—0»i<nii++)printK"%3d"•■rr£ij)iprintf("\n\n")»24.请编写一个函数proc(),它的功能是:根据以下公式求7c的值(要求满足精度0.0005,即某项小于0.005时停止迭代)ox/2;1+1/3+1-2/(3«5)+1-2-3/(3«5-7)+1•2.3・4/(3,5,7•9>+・・・+1・2・3 ・ 5•7・・・・•(2n+D)程序运行后,如果输入精度0.0005,则程序输出3.140578。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:5include<conio.h>ssincludeVstdio.h>sinclude<math.h>doubleproc(doubleepsOvoidmain()(doublemiprintf("\nPkascenteraprecision:")j心nWlf.&Q,prind("\nPi—%l(\n".proc(s>)(}规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用c语言提供的字符串函数。例如,字符串中的内容为:****a*BC*DEF*G*******删除*后字符串中的内容应当是:ABCDEFGO注意:部分源程序在文件PR0G1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*in<?lu(ic<fltdio.h>voidfim(char•m)main()ichars'81];wmiNONO()jprintff"LntrraMring:\n") ・);fun(•)tpnntff"Thesiringafterdeleted:\n"):pute(«);NONO()tvoidNONO(>八本两數用于打开文件,■人致蝌,调用函數,専出數据.关闭文件。•/FILE•in,•nut;inti:rhar»[8I];in=fopmCin.dm"."r"):mil=<bpen(*(xil.<lat","wB);for(i=0;i<10;i♦♦)Jfftc«nf(in,"%•",»);fun(s);fpnnlffout. ,■);R・lo«e(in)ifckw»r(otii);n个人的成绩存放在score数组中,请编写函数proc(),它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在down所指的数组中。例如,当score数组中的数据为{99,80,40,56,59,84,60,76,100}时,函数返回的人数应该是4,down中的数据应为40565960o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:9indude<cocmq.h>■indude<»tdao.h>9include<»mng.h>uMproc(mi»coc*[].mfn.mt<IowrC]>voidmai«()IiniI.n.down[9]imi»cor«(9]*<99.tO.4O.M.S9«M.•0.7«.!00li•yMemCCtS-).np«oc(itcoe*•9.dowvt>ipnntfC*\ndowototheaveragescore ">i(or<i-0ii<nii4-4->prim"W•虹Kg\a*)t请编写函数proc。,其功能是:将str所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当str所指字符串中的内容为abedefg,则在t所指数组中的内容应是bdfo注意:部分源程序给出如下。请勿改动rnainO®数和其他函数中的任何内容,仅在函数proc。的花括号中填入所编写的若干语句。试题程序:stadudrVcocwo.0includr<Md~.h>»indude<»inn«.h>vodproc^duir•Mr.chart£J)火&«»»<)charMr[100].l[l00]iny*ieoi<"CIA">Ipnnif<v\nPi««»eenter»tnn<»tri">i•canK•%♦・ir〉■proe(prm«f(a\aTh»r»»ultMtH*\n*»t)»使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.co在此程序中,编写函数fun(),其功能是实现B=A+AT,即将矩阵A加上A的转置,结果存放在矩阵B中。计算结果在main。函数中输出。举例如下。输入如下的矩阵:其转置矩阵如下:123147456258789369程序输出:26 10610 141014 18注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fim()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){)voidmain()(inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;system(“CLS“);fun(a,t);for(i=0;i<3;i++){forU=0;j<3;j++)printfC%7d”,t[i][j]);printf("\n“);})使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.co在此程序中,编写函数fun(),其功能是根据以下公式求冗的值(要求精度0.0005,即某项小于0.0005时停止迭代)OTT_1.1.1x2.1x2x31x2x3x4k+亍+场*诟方+夜志爲+•••♦_1-2x…3x5x—x(2n+I)程序运行后,若输入精度0.0005,则程序应输出为3.140578。注意:部分源程序给出如下。请勿改动主函数main。和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps)()voidmain(){doublex;printf("Inputeps:");scanf("%lf',&x);printf(t6\neps=%lf,PI=%lf\n",x,fun(x));}请编写函数proc(),其功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。xn+l=COS(xn)迭代步骤如下:⑴取xl初始值为0.0;x0=xl,把?XI的值赋给x0;xl=cos(xO),求出一个新的xl;⑷若xO-xl的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);(5)所求xl就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输岀结果root=0.739085。注意:部分源程序给出如下。voidfun(char*pstr[6])(inti,j;char*p;for(i=0;i<5;i++)for(j=i+l;j<6;j++)if(strcmp((pstr+i),(pstr+j))<0)(p=*(pstr+i);*(pstr+i)=*(pstr+j);*(pstr+j)=*p;})main(){inti;char*pstr[6],str[6][MAXLINE];clrscr();for(i=0;i<6;i++)pstr[i]=str[i];printf('7nEnter6string(lstringateachline):\n");for(i=0;i<6;i++)scanf(”%s”,pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");returna;}main()(chars[100],t[100],,*p;clrscr();printf("\nPleaseenterstringS:");scanf("%s",s);printf("\nPleaseentersubstringt:");scanf(”%s”,t);p=fun(S,t);if(p)printf("\nTheresultis:%s\n",p);elseprintf("\nNotfound!\n”);}给定程序M0D11.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”1时,c所指数组中的内容应该为“a4b3e2dlefg”;而当a所指字符串中的内容为“1234”,b所指字符串中的内容为“abedefg”时,c所指数组中的内容应该为Tg2旋4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!•linclude<stdio.h>!#include<string.h>ivoidfun(char*archar*b,char*c)"!inti,j;charch;ii-0;j■strlen(b)-1;•/*•………*found!while(i>j)• {ch-b[i];b[i]-b[jj;b[j]-ch;i j—;11]}•while(*aII*b)(\/…………found: If(*a)! (*c-*a;C++;a++;}i if(*b)j(*c=*b;C++;b++;}TOC\o"1-5"\h\z! }j*c-0;\)!main()3;charsi[100],s2[100]rt(200);!printf("\nEntersistring:w);!scanf("%sHrsl);;printf(w\nEnters2string:");-scanf("%s*rs2);!fun(si,s2,t);jprintf("\nTheresultis:%s\n"rt);\}给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。改正其中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include<stdio.h>#include<conio.h>ihtm[10];voidfun(void)intj;printf("Insubfuncaftercalling\n");for(j=0;j<10;j++)/************Sund**********************/printf(”%3d”,m[j]*10);}}main()(inti;printf("Inmainbeforecalling\n");for(i=0;i<10;i++)printf(”%3d”,m[i]);)fun();printf("\nlnmainaftercalling\n");for(i=0;i<10;i++)printf(”%3d”,m[i]);getch();}假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数fun()的功能是:删除数列中值为X的元素。N中存放的是数列中元素的个数。请改正程序中的错误,使它能够得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:公约数为27o请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序:#include<stdio.h>intfun(inta,intb)(intr,t;if(a<b){t=a;b=a;a=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}return(a);)main(){intnuml,num2,a;printf(ulnputnumlnum2:");scanf("%d%d",&numl,&num2);printf("num1=%dnum2=%d\n\n",num1,num2);a=fun(numl,num2);printf("Themaximuncommondivisoris%d\n\n",a);)37.给定程序M0D11.C中函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,若输入:edcba,则应输出:abcde。请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!;tinclude<stdio.h>;tinclude<string.h>voidfun(chart[]){charc;•inti,j;i/*♦•♦♦*****found**♦♦••*••**/;for(i-strlen(t);i;i--)•for(j-0;j<i;j++)I/………*found………•,/j if(t[j]<t(j+1))TOC\o"1-5"\h\z; (!c-t[jj;j t(j]■t[j♦11/;t[j*11-c;16: }J};main()!(!chars[81];iprintf("\nPleaseenteracharacter•string:");!gets(s);;printf("\n\nBeforesorting:\n;\”%s\",s);!fun(s);jprintf("\nAftersortingdecendingly:-\n s);!}38.下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。y=1.l/(2x2)+l/(3x3)・1/(4><4)+…+(.1)(m+l)/(mxm)例如:m中的值为5,则应输出0.83861lo请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<string.h>#include<stdio.h>intfun(charstr[][10],intm,char*pt){intk,q,i,j=O;for(k=0;k<m;k++){q=strlen(str[k]);j+=q;for(i=0;i<q;i++)pt[i]=str[k,i];Pt+=q;pt[O]=0;)Pt・=j;}main(){intm,h;chars[10][10],p[120];clrscr();printf("\nPleaseenterm:");scanf(”%d”,&m);gets(s[0]);printf("\nPleaseenter%dstring:In",m);for(h=0;h<m;h++)gets(s[h]);fun(s,m,p);printf("\nTheresultis:%s\n",p);}五、程序改错题(2题)41.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!•include<»tdio.h>^include<string,h>•defineMAXLINE20fun(char•petr[6])Iimi.j;char•p;i=0;i<5;i♦+)I/••••••••••••••(bund••••••••••••••/for(j=i+l,j<6.j*♦)Iif(strcmp(•(畋♦i).•(pstr♦j))>0)IP=•(p®tr♦i);found•••••••••••••»/•(prtr+i)=p»tr*j;•(冲+j)=p:main()Iinti:char rtr[6][MAXUNE];fbr(i=0;i<6;i♦*)p»tr[i]=str[i]:printf("\nEntcr6rtring(】stringaleachline):\n");for(i=0;i<6;i+♦)ncanf("%»-,p»tr(i]);fun(patr);printf("Thestringaftersorting:\n")tfbr(i=0;i<6;i♦♦)printf("%«\n".pstr[i]>;I42.下列给定程序中,函数proc()的功能是:计算str所指字符串中含有t所指字符串的数目,并作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main。函数,不得增行或删行,也不得更改程序的结构。试题程序:参考答案passwarnpasswarn解析:n++是在执行完其所在的语句后再加1,因此,在执行case的时候,n的值依然为,c\执行case。后面的语句,先打印出“pass”;在执行完case'c'J^,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是passwarno功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明,•功能性注释一般嵌在源程序体之中,主要描述其后的语句或程序做什么,开发开发解析:软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其中的编码和测试属于开发阶段。4.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b-<=0))时,a,b的值已经发生了变化。操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。p!=NULLp->nextp!=NULL\r\np->next解析:结构体变量构成链表需要每个节点中都有一个指向下一个结点的指针,就像本题中的next指针一样。注意:掌握可以对链表进行的操作。strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。结构体类型的定义:struct结构体类型名(成员项表;);定义结构体变量的的形式为:struct结构体类型名变量1,变量2,.・.?其中变量包括;一般变量、指针变量、数组变量等。8.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*o9.67G67G解析:根据题意,a='A'+'5'-'3'=65+2=67,b=67+4=71,71即为字母G的ASCII码值。程序要求按十进制形式输出a,按字符形式输出b,所以结果为67Go10.8181解析:本题的宏调用S(i+j)将被替换成表达式4*i+j*i+j+l等于4*6+8*6+8+1=24+48+8+1=81。所以本题输出81oC将两个字符串连接起来组成一个字符串,选用strcat函数来连接。D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。A软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现从1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。BA本题主要考查自加减运算符(++,・・)的使用。①如果作为前缀变量“++a,..a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a..”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++).l时先使用a的值进行计算,结果为c=2.l=l,然后将a的值加1,即执行完此句后13■的值是3;表达式c+=.a+++(++b)也可写成C=c+(—a++)+(++b),c=l+(一3)+3=1,此时a=4,b=3。TOC\o"1-5"\h\zCAAD层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。\n\tvoidproc(int int*a,int*n)\n{\ninti,j=0;\nfor(i=l;i<=m;i++)//进行m次循环\nif(i%7==0||i%ll==0)//能被7或11整除的所有整数\na[j++]=i;//符合条件的数放在数组a中\n*n=j;//返回这些数的个数\n}\n【解析】本题需要先判断1〜m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。\n\n\tvoidproc(chararr[M][N],char*b)\n{\ninti»j,k=0;\nfor(i=0;i<M;i++)//i表示其行下标\nfor(j=0;.rr[i]|j]!=\O;j++)//由于每行的个数不等,因此用a[i][j]!=\O来作为循环结束的条件\nb[k++]=arr[il|j]; //把二维数组中的元素茄到b的一维数组中,\nb[k]=\O;//最后把b赋\0作为字符串结束的标志\n}\n【解析】字符串数组中每一行都是一个一个完整的字符串,其结束标志为\。。因此,通过字符串的结束标志来判断每一个字符串是否结束,将字符串数组中的所有字符串均赋值新的一维数组b来完成字符串的合并。\n23.【解析】题目中要求把下标从p到n-1的数组元素平移到数组的前面,可以通过每一次循环将最后一个元素放在第一个位置上,使其成为第一个元素,其余元素后移一个位置。通过n-1-p次循环实现将从p到n-1的数组元素平移到数组的前面。24.【解析】我们应定义一个变量表示其和,一个变量表示其分数,由题目中可知循环结束的标志为分数小于eps,因此其为循环结束的条件,根据公式的变化规律,可求得s,最后把2*s返回到主函数中。25.【考点分析】要删除字符串中所有*号需要用循环语句遍历字符串,用判断语句判断字符是否为*号,由此可以决定该程序应使用循环判断结构。【解题思路】26.【解析】要找到所有学生中成绩低于平均分数的人数,首先需要算出所有学生的平均成绩。然后将所有学生的成绩与平均成绩相比较。将低于平均分数学生的记录存放在新的数组中,并将低于平均分数的学生数返回给主函数。27.vodprocfetwr•str.chart[])ft〃,―2.@示为會的费放由Ift■中iOI-Ao*.. Afft【解析】题目要求将下标为偶数的字符删除,其余字符放在新的字符数组t中。首先取出字符串str中下标为奇数的字符,将其赋值给新的字符串t,最后用’\0'作为字符串结束的标志。voidfun(inta[3][3],intb[3][3])(inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i]U]=a[i][j]+aU][i];/*把矩阵a加上a的转置,存放在矩阵。中*/}行列数相等的二维数组的转置就是行列互换。即转置后的第i行第j列正好对应原矩阵的第j行第i列。本题使用两层循环实现矩阵的转置,并将计算结果存入矩阵b中,外层循环控制矩阵的行下标,内层循环控制矩阵的列下标。doublefun(doubleeps)(doubles=0.0,si=1.0;intn=l;while(sl>=eps)/*当某项大于精度要求时,继续求下一项*/(s=s+sl;/*求和*/sl=sl*n/(2*n+l);/*求多项式的每一项*/n++;}return2*s;}该题考核的是通过迭代法求给定多项式的值。迭代法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型和赋初值操作。定义double类型变量s,并为其赋初值,用来存放多项式的某一项和最后的总和。从第2项开始,以后的每一项都是其前面一项乘以n/(2*n+l)o程序用si来表示每一项,用s表示求和后的结果。需注意变量si和s的初值都为1.0,因为循环变量从第2项开始累加。30.【解析】本题比较简单,因为题目中已经给出了算法,只要把题目中的说法转换成C语言表达式基本上就出来了,本题最好用do-while循环来做,但要注意循环终止的条件。(1)错误if(strcmp((pstr+i)(pstr+j))<0)正确if(strcmp(*(pstr+i)*(pstr+j))<0)(2)错误:*(pstr+j)=*p;正确:*(pstr+j)=p;(1)错误:if(strcmp((pstr+i),(pstr+j))<0)正确:if(strcmp(*(pstr+i),*(pstr+j))<0)\r\n(2)错误:*(pstr+j)=*p;正确:*(pstr+j)=p;解析:错误1:本题旨在考查指针的引用方法。*(pstr+i)指字符串中下标为i的字符。错误2:*p是字符类型,而*(pstr+j)是指针类型,二者不能进行赋值运算。⑴错误:a=NuLL;正确:a=NULL;(2)错误;if(r==p)(r++;p++;}正确if(*r==*p){r++;p++;}⑴错误KNuLL;正确a=NULL;\r\n⑵错误;if(r==p){r++;p++;}正确:if(*r==*p){r++;p++;}解析:题目要求将最后一次出现的输入字符后面的字符串做一复制处理,并在主函数中输出从此地址开始的字符串。a=NuLL;是明显的常识性错误。题目中已经定义了指针变量chaf*p,*r,*a;,循环条件应该是if(*r==*p){r++;p++;},而非iRf(r==p){r++;p++;}。(l)while(i<j)或while(j>i)(2)if(*a)(l)while(i<j)或while(j>i)(2)if(*a)解析:本题中函数的功能是首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。其中,对于字符串的逆序过程,分别用变量i和j代表字符串中开始和末尾字符的下标,把下标i和j元素中的值对调后,i++和j--直到i的值大于j时逆序操作完成。错误:printf(n%3dnm|j]*10);正确:printf(n%3dnm|j]=m|j]*l0错误:printf(%3dm|j]*10);正确:printf(%3dm|j]=m(j]*10解析:本题考查全局变量相关知识。该题程序中的fun()没有参数输入,但数组m[10]为全局变量,故可在fun()函数中使用,fun()函数对数组m的操作可以反映到主函数的输出结果中。错误:a[i+l]=a[i];正确:a[i]=a[i+l];错误:a[i+l]=a[i];正确:a[i]=a[i+l];解析:上机改错题有一个优势,就是我们可以执行该程序,根据错误的提示再一步一步实现改错的目的,我们先不看程序是什么意思,甚至不用看它在求什么。按Ctrl+F9快捷键,然后看看屏幕提示。另外,审题时我们必须要注意“不要改动main。函数,不得增行或减行,也不得更改程序结构”,这样;对我们来说,只要读懂题意,对程序执行部分:{intp=0,i;a[n]=x;while(x!=a[p])?=P+1;if(p==n)return-1;else{for(i=p;i<n;i++)a[i+l]=a[i];returnn-1;}逐步分析,再应用平时的常识加以区分,琢磨,相信答案不攻自破,这种考题,按Ctrl+F9快捷键后,屏幕一般都不会提示错误,否则就显得太儿科了一点,所以,我们并不需要着急去找错误,而是把程序读懂。⑴错误:(t=a;b=a;a=t;}正确:{t=a;a=b;b=t;}(2)错误:retum(a);正确:retum(b);⑴错误:{t=a;b=a;a=t;)正确:{t=a;a=b;b=t;)\r\n(2)错误:return(a);正确:return(b);解析:若求两个数的最大公约数,如果b除a的非零余数能够整除a,那么该余数就是最大公约数;若余数为0,则最大公约数为a。该题程序中采用了循环语句,若b除以a的余数不等于0,则继续用a除以所得余数,直至余数为0,如此可以得到a,b的最大公约数。关于“交换原则”我们在前面

温馨提示

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

评论

0/150

提交评论