版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年內(nèi)蒙古自治區(qū)包頭市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)學(xué)校: 班級: 姓名: 考號: 一、2.填空題(10題)下列程序的功能是把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個名為bi.dat的新文件中。請?zhí)羁铡?include"stdio.h"FILE*fp;{charch;if((fp=fopen(”bi.dat”,”w”))==NULL)exit(0);while( )fputc(ch,fp); 1如果調(diào)用fopen函數(shù)不成功,則函數(shù)返回【】;如果調(diào)用fclose函數(shù)不成功,則函數(shù)返回【]o下列程序的輸出結(jié)果是 olongfun5(intn)(longs;if((n==l)II(n==2))s=2;elses=n+fun5(n-l);return(s);)main()(longx;x=fun5(4);printff"%ld\n”,x);}下面程序的功能是輸出數(shù)組中最大的數(shù),由a指針指向該元素。請?zhí)羁?。main(){ints[]=(6,7,2,13,9(1,12,10,5,8,4,3,11},*a,*b;for(b=s,a=s;b-s<13;b++)if([])a=b;printf(u%dH,*a);}下述程序的輸出結(jié)果是【]o#include<stdio.h>voidmain()(charcl[20]=”1234”;charc2[20]=n5678M;char*pl,*p2;pl=cl;p2=c2;while(*pl++)while(*pl++=*p2++);printf(u%s,cl);}在兩種基本測試方法中,()測試的原則之一是保證所測模塊中每一個獨(dú)立路徑至少執(zhí)行一次。實(shí)現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補(bǔ)全程序。#include<stdio.h>voidmain(intargc,char*argv[]){FILE*fl,*f2;if(argc<【]){printfC'parametererror!\n");exit(O);)fl=fopen(argv[l],V);f2=fopen(argv[2],nwn);while(【])fputc(fgetc(fl),⑵;fclose(fl);fclose(f2);)以下程序運(yùn)行后的輸出結(jié)果是【]o#include<stdio.h>#defineS(x)4*x*x+1main(){inti=6,j=8;prinff(”%d\n”,S(i+j));)以下程序的輸出結(jié)果是()#include<stdio.h>fun(){inta=0;a+=3;printf(”%d”,A);}main(){intcc;fbr(cc=l;cc<=4;cc++)fun();printf(”\n”);}軟件開發(fā)過程中所使用的資源一般包括:【】、軟件資源和硬件資源二、單選題(10題)若有定義intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D?*(&w[0][0]+l)下面程序運(yùn)行的結(jié)果是 omain(){intx,y,z;x=0;y=z=-l;x+=-z—y;printf(nx=%d\nn,x);}A.x=4B.x=0C.x=2D.x=3設(shè)有以下語句:inta=l,b=2,c;c=aA(b?2);執(zhí)行后,C的值為()。6B.7C.8D.9表達(dá)式“a+=a.=a=9”的值是()。A.18B.-9C.0D.9下列說法不正確的是()。圖的遍歷是從給定的源點(diǎn)出發(fā)每一個頂點(diǎn)僅被訪問一次圖的深度遍歷不適用于有向圖遍歷的基本算法有兩種:深度遍歷和廣度遍歷圖的深度遍歷是一個遞歸過程若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。A.334HB.30DHC.352HD.31AH—個序列中有10000個元素,若只想得到其中前10個最小元素,最好采用 方法A.快速排序B.堆排序C.插入排序D.二路歸并排序有以下程序:#include<stdio.h>main()(intt;scanfC%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintfT%d\n",t-);printfC'\n");}執(zhí)行時輸入6并按VEnter>鍵,則輸出結(jié)果是()。A.6B.8C.7D.5采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。A.先序遍歷B.中序遍歷C.后序遍歷D.按層遍歷軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計(jì)方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計(jì)算機(jī)的發(fā)展三、程序設(shè)計(jì)題(10題)21.編寫函數(shù)intproc(intlim,intaalMJ),該函數(shù)的功能是求出小于或等于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素?cái)?shù)。例如,若輸入12時,則輸出:2357llo注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:#include<stdlib.h>3include<conio.h>JSinclude<stdio.h>9defineM100intproc(intlim.intaa[M])<voidmain()intlimit.i.sumIintarrfMlisystcm("Cl^*)IprindClfcA-個整W)i"%d"?&.limit〉■sum=proc(limil.arr)ifor(i—Oii<sum?i++)(if(i%10==0&-&-i!=0)//M行輸出10個數(shù)printf("\n")iprintf("%5d".arr[i])i實(shí)現(xiàn)字符串拷貝的函數(shù)strcpy為()。假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g。***,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是****a*bc*def*g。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:minclineVcomo.h>voidpraHchu??ir)c*?r<?!?.pnntf("Entera?trifMlAna)i(?(■(■>Ipradgpnnt(<"Th*Mrtng*(?rfdelr<rdA??,)i使用VC++2010打開考生文件夾下析progl中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件progl.co在此程序中,請編寫函數(shù)fim(),它的功能是計(jì)算下列級數(shù)和,和值由函數(shù)值返回。ctX2? X-2!3! 〃!例如,當(dāng)n=10,x=0.3時,函數(shù)值為1.349859。注意:部分源程序在文件progl.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>tinclude<math.h>finclude<stdlib?h>doublefun(doublex,intn)TOC\o"1-5"\h\z{7}voidmain(){FILE?wf;system("CLS");printf("%f”,fun(0.3,10));/????******?**?**?/wf-fopen("out.datwf"w");fprintf(wf,"%frfun(0.3,10));fclose(wf);/???*?**?????*?*??/H)使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件progl.co在此程序中,請編寫函數(shù)fun(),其功能是找出一維整型數(shù)組元素中最大的值及其所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中X是數(shù)組名,n表示X中的元素個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<time.h>#include<stdlib.h>#include<stdio.h>voidfun(inta[],intn,int*max,int*d)()voidmain(){inti,x[20],max,index,n=10;srand((unsigned)time(NULL));for(i=0;i<=n;i++)(x[i]=rand()%50;print"%4d",x[i]);/*輸出一個隨機(jī)數(shù)組*/)printf(n\nH);fun(xfnf&max,&index);printf("Max=%5d,Index=%4d\n”,max,index);}編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到pl所指的字符串的后面。例如,分別輸人下面兩個字符串:FirstString SecondString程序運(yùn)行后的輸出結(jié)果是:FirstString SecondString注意:部分源程序在文件PR0G1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?include<sldio.h>voidfiin(charpl[],charp2[])main()Ichar?l[80],?2[401;voidNONO():printf("Entersiand?2:\n");.1,^);printf("?!=%?\n",si);printf("a2=%8\n".a2){printf("Invokefun(si,a2):\n"):fun(si.a2);printf("Afterinvoking:\n**):printf( .al)sNONO();voidNONO()!/?本函數(shù)用于打開文件,輸入測試數(shù)據(jù).調(diào)用fun函數(shù).輸出數(shù)據(jù),關(guān)閉文件。?/intisFILEerf.*wf;ch^rslfBO],a2[40];ti=fopen(-in.dat-.-r-)jwf=fopen("ouLdal-.-w-);for(i=0;i<10;i++)Ifscanffrf, ?!)$fec5f(if, >2)|<un(si.?2):fprintf(wf,"%s\n",b1);Ifclose(rf):編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:Smcludeh>Hinclude<cofw?.h>?include<rtdio.h>?oidfun<ini?a.mi?n>tvoidmain()(mtM(IOOO]?n.kigemLW)I(un<M.&a>itoryto■■<>>(pnMr(aX .I〃一行寫9個散elsepnnt(<編寫函數(shù)proc(),它的功能是求m以內(nèi)(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。例如,m為100時,函數(shù)值應(yīng)為s=7.416198o注意:部分源程序給出如下。請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc。的花括號中填入所編寫的若干語句。試題程序:Sinclude<std!ib.h>5include<conio.h>9include<maih.h>?includeVstdio.h>doubleprociintn))voidmain(){systemCCI-S")Iprintf("s-%f\n".proc(100))i使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件progl.c0在此程序中,編寫函數(shù)fun(),其功能是將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在c的個位和百位上,b中的十位數(shù)和個位數(shù)依次放在c的十位和千位上。例如,當(dāng)a=45,b=12時,調(diào)用該函數(shù)后c=2514o注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c)()main()1212inta,b;longc;printf(Tnputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n'',c);}使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件progl.Co在此程序中,函數(shù)fmi()的功能是將a、b中的兩個正整數(shù)合并成一個新的整數(shù)存放在c中。合并的方式是將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,a=45,b=12,調(diào)用該函數(shù)后,c=5241o注意:部分源程序在文件progl.c中。請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:tinclude<stdio.h>voidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf("Inputa,b:M);scanf(M%d%d'\&a,&b);10111011printf("Theresultis:%ld\n'\c);N0N0();voidNONO(){/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件。*/FILE*rf,?wf;inti,a,b;longc;rf=fopen(win.dat",Mrw);wf=fopen(-out.dat*\"wM);for(i-0;i<10;i++)(fscanf(rf,H%dr%dwr&a,&b);fun(a,b,&c);fprintf(wf,"a■%d/b=%d,c=%ld\n",a,b,c);fclose(rf);fclose(wf);四、2.程序修改題(10題)下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其插在申的最后。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<conio.h>#include<#include<conio.h>#include<stdio.h>#include<string.h>/*************偽und**************/voidfun(charstr,charch){while(*str&&*str!=ch)str++;c=15c=15;/*************Sund**************/if(*str==ch){str[O]=ch;/*************^und**************/str[l]='O';})main(){chars[81],c;clrscr();printf("\nPleaseenterastrzng:");gets(s);printf("\nPleaseenterthecharactertosearch:");c=getchar();fun(s,c);printf("\nTheresultis%s\n",s);}下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。凡〃(〃)={臨_睥例如:當(dāng)給n輸入5時,函數(shù)值為240;當(dāng)給n輸入3時,函數(shù)值為60請改正程序中的錯誤,使它能得到正確結(jié)果。注意,?不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)試題程序:#include<stdio.h>fun(intn);intc;if(n=l)elsec=fun(n-l)*2;return(c);}main()intn;printf("Entern:");scanf(”%d”,&n);printf(uTheresult:%d\n\n",fun(n));給定程序M0D11C中函數(shù)fun的功能是輸出M行M列整數(shù)方陣,然后求兩條對角線上各元素之和,返回此和數(shù)。#inClude<coMo.h>#inClude<stdio.h>#dehneM5/************fOUnd************/intfun(intn,intxx[][]){intij,sum=0;printf(u\nThe%dx%dmatrix:\nnM,M);for(i=0;i<M;i++)(fbr(j=O;j<M;j++)/************hund**printf(”%F,xx[i][j]);printf(”\n”);Ifor(i=0;i<n;i++)sum+=xx[i][i]+XX[i][[n-i-l];return(sum);)main(){intaa[M][M]={{1,2,3,4,5),{4,3,2,l,0),{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};clrscr();printf("\nThesumOfallelementsOn2diagnalsis%d.”fun(M,aa));}34.給定程序M0D11.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個字符之后插入一個空格。例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#defineMAXLINE20fun(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;}}I}main(){inti;char*pstr[6],str[6][MAXLINE];clrscr();for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(lstringateachline):\n");for(i=0;i<6;i++)scanf(n%su,pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);36,給定程序M0D11.C中fun函數(shù)的功能是:分別統(tǒng)計(jì)字符串中大寫字母和小寫字母的個數(shù)。例如,給字符串s輸入:AAaaBBbl23CCccccd,則應(yīng)輸出結(jié)果:upper=注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)試題程序:#include<string.h>#include<stdio.h>#defineN80voidinsert(char*aa){inti,j,n;charch;n=strlen(aa);for(i=l;i<n;i++)(ch=aa[i];j=i?l;while((j>=0)||(ch>aa[j]))(aa|j+l]=aa[j];aa[j]=ch;})main()(chara[N]=”JRTYDFKLIOPQWEGHMNBVCUASXZ”;inti;printf("Theoriginalstring:%S\n",a);t[k].num=b[j].num;t[k].s=b|j]s;b[j].s=O;}returnt;)outresult(STUa[],FILE*pf){inti;for(i=0;i<N;i++)fprintf(pf,"No=%sMark-%d\n",a[i].num,a[i].s);fprintf(pf,"\n\n”);)main(){STUa[N]=({"A01”,81},{"A02”,89},(”A03”,66},{"A04”,87},{"A05”,77},{HA06“,90},{"A07n,79},{"A08u,61},("A09”,80},{"A10”,71}};STU*pOrder;inti,m;clrscr();printf(”*****THERESULT*****\nn);outresult(a,stdout);printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf(”%d”,&m);while(m>10){printf("lnGivethenumberofthestudentswhohavebetterscore:");scanf("%dH,%m);pOrder=fun(a,m);printf(”*****THERESULT*****kn”);printf("Thetop:\n");for(i=0;i<m;i++)printf("%s%d\n",pOrder[i].num,pOrder[i].s);free(pOrder);}24輸入4,貝IJ輸出1234246836912481216請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).試題程序:#include<conio.h>#include<stdio.h>#defineM10intaiM][MI={0};fun(int**a,intm){intj,k;for(k=0;k<m;k++)a[j][k]=k*j;)main()(inti,j,n;clrscr();printf("Entern\n");scanf("%d",&n);fun(a,n);for(i=0;i<n;i++){forO=0;j<n;j++)printf("%4d”,a[i][j]);printf("\n”);)}五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計(jì)出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如輸入8名學(xué)生的成績:987867563489.578.576.5則低于平均分的學(xué)生人數(shù)為3(平均分為72.187500)o請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:Sinclude<stdlib.h>include<Htdio.h>Sinclude<conio.h>9defineM20intproc(float?s.inin.float?aver) .(float?ve.t=0.0iintcouni"0.k.itfor(k=0ik<nik4-4-)//?■??found????<=4k]iave^i/nifor(ia"0ii<nii++>i((s[i]<ave)count++i//?■?■found????*aver"&avejreturncountivoidmain()<floatstu(30].avertintm.iisystcmC"CLS")printfe\nPlcascenterm:")iscan!prinlf("\nPlcascenter%dmark:\nM.m)j(or(i=0ii<m?i4-+)scanf("%f".?tu+i>iprintf("\nThenumberofstudentst%d\n".proc(stu.m.&aver))iprintft"Ave%f\n".avcr>i42.下列給定的程序中,函數(shù)proc()的功能是:判斷字符ch是否與sir所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:sincludeVsdhKh>?inchid*<conio.h>inclod*<Mdiah>Sinclude<Mring,//????found????voidpcocCchiir*ir.charch>while< !■eh)?tH-+1//????found????if(?f*//????fovnd????voadmaiM>charBtrCStJ.chi?ywi*m<aCLS*>?pnmf(**\nf*k??cenier■atrmci*>*grt>(?tr>iprtnif<*\nPkanrmisrhechancterto?wrrhi")ieh^getcharOiproHprintf("\nThtr??uiiKB\na>?tr)i六、操作題(2題)下列給定程序的功能是:讀入一個整數(shù)n(2<=n<=5000),打印它的所有為素?cái)?shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,617ofor(i=2;i<n;i4+)if((!(n%i))&&(Prime(i)))printf(”%4d,”,i);printf("\n");}請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為233343243444253545則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>voidproc(int(*s)[103,int*b,int*n,intrain,intnn){}voidmain{intarr[10][10]={(33,33,33,33),(44,44,44,44},{55,55,55,55}),i,j;成功,則返回EOF(-l)o所以本題的兩個空應(yīng)分別填NULL和EOF。3.99解析考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+funS(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。4.*b>*a5.1567815678解析:本題使用了雙重while循環(huán),外循環(huán)的循環(huán)條件是*pl++,即每次循環(huán)時讓pl指向其后面的一個元素,而pl自增之前所指內(nèi)容為0時循環(huán)結(jié)束。內(nèi)循環(huán)的循環(huán)條件是*pl++=*p2++,即每次循環(huán)時讓pl和p2指向其后面的一個元素,而將p2自增之前所指的元素復(fù)制到pl自增之前所指的地址中去,直到P2自增之前所指內(nèi)容為0時循環(huán)結(jié)束。pl本來一開始是指向cl[0],由于外循環(huán)判斷條件時讓pl自增了,所以進(jìn)入內(nèi)循環(huán)時P1指向cl[l],而內(nèi)循環(huán)將p2所指字符串復(fù)制到P1所指位置,所以內(nèi)循環(huán)的結(jié)果是cl[l]、cl[2]、cl[3]、cl[4]、cl[5]分別被c2[0]、c2[l]、c2⑵、c2[3]、c2[4]改寫成5、6、7、8、故程序輸出的結(jié)果為15678O6.白盒白盒解析:按功能劃分測試可分為白盒測試和黑盒測試。白盒測試的原則是保證所測試模塊中每一獨(dú)立路徑至少執(zhí)行一次;保證所測試模塊所有判斷的每一分支至少執(zhí)行一次:保證所測試模塊每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;驗(yàn)證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。7.3!feof(fl)3\r\n!feof(fl)解析:要實(shí)現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名CC解析:解答本題,首先要明白在對指針進(jìn)行加、減運(yùn)算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)T”,而是指T個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是im型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*Jz標(biāo))4)H=352H。BC后綴自增運(yùn)算表示先運(yùn)算,再自加。語句-if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”, 中t的初值為6,則“t++V6”,條件為假,t自增至7,執(zhí)行“printf("%d\\n”,t..);”,此時t=7,輸出t值為7,之后進(jìn)行自減操作t=6。因此輸出的結(jié)果為7。故本題答案為C選項(xiàng)。AC解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機(jī)。為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識到軟件工程是使計(jì)算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。21.【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素?cái)?shù)。然后將一個素?cái)?shù)放入數(shù)組aa中,最后將素?cái)?shù)的個數(shù)返回給主函數(shù)。22.voidstrcgy(char*s,char*t)/*copyttos*/(while((*s*=*t++)!='\0'))|}23.【解析】要刪除字符串尾部的所有*,只要將尾部所有*中的第一個改為字符串結(jié)束符即可。首先,將字符串指針移動到字符串最后一個位置,檢查最后一個字符,是*則將指針前移,否則將指針后移一個位置賦值作為結(jié)束符。24.1doublefun(doublex,intn)2{3inti;4doubles=1.0,sl=1.0;5for(i=l/i<=n;i++)6(si=si*i;/*各項(xiàng)中的階乘*/?s=s+pow(x,i)/si;/*按公式求出*/)Returns;10)程序定義了變量S1和s,si表示每項(xiàng)的分母(即各項(xiàng)的階乘),S存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,將累加的結(jié)果存入S中。此處使用了求乘方函數(shù)pow(X,i),其含義是求X的i次方的值。25.voidfun(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;for(i= p=">if(*max<a[i]){*max=a[i];*d=i;}}fun()函數(shù)形參max用來存放最大值,形參d用來存放最大值的下標(biāo)。由于它們都是指針變量,因此在引用所指向的變量時,要進(jìn)行指針運(yùn)算。循環(huán)語句用來遍歷數(shù)組元素,找出最大值。條件語句用來判斷該數(shù)組元素是否最大。26.voidfun(charpl[],charp2[])in“,j;for(i=0;pl[i]f=o、O';i++);for(j=0;p2[j]!=o、O\j++)pl[i++]=p2。];pl[i],_。、O';}【考點(diǎn)分析】“本題考查:不使用字符串函數(shù)實(shí)現(xiàn)字符串連接操作。通過for循環(huán)語句來完成,不要忘了最后需要加上字符串結(jié)束標(biāo)識\0\【解題思路】本題用兩個循環(huán)完成操作,第1個循環(huán)的作用是求出第1個字符串的長度,即將i指到第1個字符串的末尾。第2個循環(huán)的作用是將第2個字符串的字符連到第1個字符申的末尾。最后在第1個字符串的結(jié)尾加上字符串結(jié)束標(biāo)識氣0'。27.【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實(shí)現(xiàn)對整數(shù)1~1000的遍歷;
通過if語句找出能被7或11整除,但不能同時被7和11整除的所有整
數(shù),因?yàn)橥瑫r被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除,可得出表達(dá)式“(i%7==0||i%ll==O)&&i%77!=0”;再按題目要求,將找出來的整數(shù)放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)即可。28.【解析】按照題目中要求求m以內(nèi)(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,需要判斷m以內(nèi)的所有整數(shù)是否能同時被5與11整除,首先求出同時能被5與11整除的所有自然數(shù)之和,然后再求和的平方根,最后返回到主函數(shù)當(dāng)中。voidfun(inta,intb,long*c)(/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;}本題主要考如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進(jìn)行指針運(yùn)算。30.1voidfun(inta,intb,long*c)2{3*c=(a%10)*1000+(b%10)*100+(a/l0)*10+(b/10);4}本題給出兩個兩位數(shù)的正整數(shù)。分別取出兩個數(shù)各位上的數(shù)字,再按條件組成一個新數(shù)。取整數(shù)a十位數(shù)的方法為a/10,取整數(shù)a個位數(shù)的方法為a%10o同理可取出整數(shù)b的個位數(shù)和十位數(shù)。(1)錯誤;voidfun(charstrcharch)正確:voidfun(char*strcharch)(2)錯誤:if(*str==ch)正確:if(*str==,\O,)(3)錯誤;str[l]=。;正確:str[l]-\O';(l)錯誤;voidfun(charstr,charch)正確:voidfun(char*str,charch)\r\n(2)錯誤:if(*str==ch)正確:if(*str=='\\0,)\r\n(3)錯誤;str[l]=。;正確:str[l]=W;解析:該題的重點(diǎn)就是在while的循環(huán)嵌套語句中,由題干信息“若相同,則什么也不做”很容易就能看出if(*str==ch)后面的執(zhí)行語句是錯誤的。另外,void指針具有一般性,它們可以指向任何類型的數(shù)據(jù)。但目前絕大多數(shù)C編譯所提供的這類函數(shù)都返回char指針,再由題目中的定義得出voidfun(charstr,charch)的錯誤信息是一個簡單的語法錯誤。(1)錯誤:fun(intn);正確:fun(intn)(2)錯誤:if(n=l)正確:if(n==l)(l)錯誤:fun(intn);正確:fun(intn)\r\n⑵錯誤:if(n=l)正確:if(n==l)解析:錯誤1:該行是函數(shù)的首部,不是一條語句,因此不能以分號結(jié)束。錯誤2:if垢面應(yīng)該緊跟一個條件判斷表達(dá)式,若寫成“if(n=l)”,則說明該表達(dá)式的值永遠(yuǎn)為真,也就是說這個條件永遠(yuǎn)成立,沒有遞歸執(zhí)行。33.intfun(intnintxx[][])改為intfun(intnintxx[][M))printf("%fxx[i]|j]);改為printf("%dnxx[i]|j]);intfun(intn,intxx[][])改為intfun(intn,intxx[][M))\r\nprintfC%f,xx[i][j]);改為printf(%d"xx[i]|j]);解析:二維數(shù)組作為函數(shù)形參時,二維長度不可缺省,只能省略一維的長度。在格式輸出函數(shù)中,血型數(shù)據(jù)輸出時對應(yīng)的控制符是%』(1)b[k]=*p;(2)b[k++]=99;(l)b[k]=*p;(2)b[k++]=";解析:本題中函數(shù)的功能是將字符串P中的所有字符復(fù)制到字符串b中,要求每復(fù)制三個字符之后插入一個空格。本題可以利用一個計(jì)算數(shù)器統(tǒng)計(jì)復(fù)制字符的個數(shù),根據(jù)計(jì)數(shù)器的值決定什么時候輸入空格。(1)錯誤:fun(char*pstr[6])正確:voidfun(char*pstr[6])(2)錯誤:if(strcmp(*(pstr+i)pstr+j)>0正確:if(strcmp(*(pstr+i)*(pstr+j))>0(3)錯誤:*(pstr+i)=pstr+j;正確:*(pstr+i)=*(pstr+j);(1)錯誤:fiin(char*pstr[6])正確:voidfun(char*pstr[6])\r\n(2)錯誤:if(strcmp(*(pstr+i),pstr+j)>0正確:if(strcmp(*(pstr+i),*(pstr+j))>0\r\n⑶錯誤:*(pstr+i)=pstr+j;正確:*(pstr+i)=*(pstr+j);解析:冒泡法對字符串排序的方法是將相鄰兩個字符比較,將小的調(diào)到前面。令x等于字符串的第i位字符,若該字符的前一位字符大于x,則將該字符與x互換位置。從字符山中的第2位字符到字符串的最后一們字符重復(fù)以上過稈,即可完成排序??捎醚h(huán)語句實(shí)現(xiàn)。(l)voidfun(char*sint*aint*b)(2)*a=*a+1;(3)*b=*b+1;(l)voidfun(char*s,int*a,int*b)\r\n(2)*a=*a+1;\r\n(3)*b=*b+1;解析:該程序功能是統(tǒng)計(jì)字符串中的大小寫字母的個數(shù)。從已給定源程序的main主函數(shù)開始入手,調(diào)用函數(shù)“ftm(s,&uper,&lower)尸,傳參數(shù)叩er,lower的地址,對字符串s中的字符進(jìn)行判斷,求得該字符串中大小寫字母的個數(shù)。(1)錯誤:while((j>=0)||(ch>aa[j]))正確:while((j>=0)&&(ch>aa[j]))(2)錯誤:aa[j]=ch;正確:aa[j+l]=ch;⑴錯誤:while((j>=O)||(ch>aa[j]))正確:while((j>=0)&&(ch>aa[j]))\r\n(2)錯誤:aa[j]=ch;正確:aaU+l]=ch;解析:錯誤1:此處的兩個條件要同時滿足,是“與”的關(guān)系,而不是“或”的關(guān)系。錯誤2:對長度為n的數(shù)組元素進(jìn)行排列,可先對數(shù)組的前m-1項(xiàng)進(jìn)行排序,之后再對前m項(xiàng)進(jìn)行排序,如此循環(huán)直到數(shù)組全部元素完成排序。對前m項(xiàng)的子數(shù)列進(jìn)行排序的方法是,將該子數(shù)列的末尾元素與前m-1項(xiàng)的元素相比較,由于前m-1項(xiàng)已經(jīng)完成排序,可以找到某一位置,使得將該末尾元素插入該位置之后,前m項(xiàng)仍然保持降序。這樣循環(huán)后,就可以得到全部元素的排序。掌握了這個方法,這行的錯誤就很容易找出來了。(1)錯誤:*t=calloc(msizcof(STU));正確:t=calloc(msizeof(STU));(2)錯誤:t[k].num=b|j].num;正確:t[k]=b[j];(l)錯誤:*t=calloc(m,sizcof(STU));正確:t=calloc(m,sizeof(STU));\r\n⑵錯誤:t[k].num=b|j].num;正確:l[k]=bU];解析:calloc也用于分配內(nèi)存空間。調(diào)用形式:(類型說明符*)calloc(n,size),功能:在內(nèi)存動態(tài)存儲區(qū)中分配n塊長度為“size”字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的首地址。(類型說明符*)用于強(qiáng)制類型轉(zhuǎn)換。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年貴州應(yīng)用技術(shù)職業(yè)學(xué)院單招職業(yè)傾向性考試題庫帶答案詳解
- 2026年閩江師范高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫及參考答案詳解一套
- 2026年恩施職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫附答案詳解
- 2026年福州英華職業(yè)學(xué)院單招職業(yè)傾向性測試題庫參考答案詳解
- 2026年廣州城建職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及完整答案詳解1套
- 2026年寧波工程學(xué)院單招職業(yè)傾向性測試題庫及完整答案詳解1套
- 2026年內(nèi)蒙古伊克昭盟單招職業(yè)傾向性考試題庫及參考答案詳解1套
- 2026年青島工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫及參考答案詳解1套
- 2026年石家莊鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫及參考答案詳解一套
- 2026年重慶城市科技學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案詳解
- 潮州景觀水池清洗方案
- 國開02150-計(jì)算機(jī)網(wǎng)絡(luò)(本)機(jī)考復(fù)習(xí)資料
- 設(shè)計(jì)變更通知單四篇
- 領(lǐng)英招聘官考試試題
- 藥品注冊的CTD格式-孫亞洲老師課件
- 汽車離合器設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 西南聯(lián)大課件
- 創(chuàng)新創(chuàng)業(yè)創(chuàng)造:職場競爭力密鑰知到章節(jié)答案智慧樹2023年上海對外經(jīng)貿(mào)大學(xué)
- 護(hù)理查房中風(fēng)恢復(fù)期中醫(yī)康復(fù)護(hù)理
- CET46大學(xué)英語四六級單詞EXCEL版
- 核對稿500單元聯(lián)鎖
評論
0/150
提交評論