2021年寧夏回族自治區(qū)吳忠市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021年寧夏回族自治區(qū)吳忠市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021年寧夏回族自治區(qū)吳忠市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021年寧夏回族自治區(qū)吳忠市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021年寧夏回族自治區(qū)吳忠市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年寧夏回族自治區(qū)吳忠市全國計算機

等級考試C語言程序設計模擬考試(含答

案)學校: 班級: 姓名: 考號: 一、2.填空題(10題)以下程序運行后的輸出結果是 。main()(chara[]=HLanguagen,b[]=,,Programe,';char*pl,*p2;intk;pl=a;p2=b;for(k=0;k<=7;k++)if(*pl+k)==*{p2+k))printf(”%c“,*(pl+k));}計算機中存儲容量的基本單位是字節(jié),它的英文名稱是【]o在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結構是 以下程序的運行結果是.#include<stdio.h>longfib(intg){switch(g){case0:return0;case1:case2:return1;}return(fib(g-l)+fib(g-2));}main(){longk;k=fib(5);printf(”k=%51d\n”,k);}關系模型的完整性規(guī)則是對關系的某種約束條件,包括實體完整性、 和自定義完整性。在數(shù)據(jù)的存儲結構中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間 的信息。閱讀下面語句,則執(zhí)行后的輸出結果為【]o#include"stdio.h"main(){chara,b;for(a=,0,,b=9;a<b;a++,b-)printf(”%c%c”,a,b);printf(,,\nn);}以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結束標志。請?zhí)羁?。include<stdio.h>long();/*函數(shù)說明語句*/main()(longn;n=func();printf'n=%ld\nH,n);}longfunc()(longm;for(m=0;getchar()!-*;());returnm:}下列程序的運行結果是 o#include<stdio.h>longfunc(intx)(longp;if(x==0IIx==l)return(l);p=x*func(x-l);return(p);}main(){printf(”%d\n”,func(4));)以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使相同的數(shù)只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)fw返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。例如,若一維數(shù)組中的數(shù)據(jù)是:2223445666677899101010刪除后,數(shù)組中的內容應該是:2345678910。請?zhí)羁铡?include<stdio.h>#defineN80intfun(inta[],intn)(inti,j=l;for(i=l;i<n;i++)if(a|j-l]【]a[i])aU++]=a[i];【];}main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf(”%3d”,a[i]);n=fun(a,n);printf("\nThedataafterdeleted:\n");for(i=0;i<n;i++)printf(n%3dH,a[i]);printf(,,\n\nH);}二、單選題(10題)以下選項中合法的實型常數(shù)是()。A.5E2.0B.E-3C.2E0D.1.3E有以下程序:#include<stdio.h>doublef(doublex);main( )(doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf("%5.of\n",a);)doublef(doublex){returnx*x+l; |程序運行后的輸出結果是()oA.503B.401C.500D.1404若有定義int?x,y;并已正確給變量賦值,則以下選項中與表達式(X-y)?(x++):(y++)中的條件表達式(x?y)等價的是()。(x-y<0|x-y>0)B.(x?yvO)C.(x-y>0).D.(x-y==O)有以下程序:^include<stdio.h>main())inta=7;while(a );printf a){I程序運行后的輸出結果是()。OB—1C.lD.7以下選項中合法的c語言常量是()。,C—STR9B.2014.1C.”\1.0D.2EK對于“if(表達式)語句”,以下敘述正確的是()o“表達式”不能是變量“表達式”的值只能是整數(shù)值“表達式”可以是常量“表達式”中不可以出現(xiàn)字符型變量的比較假設把整數(shù)關鍵碼K散列到有N個槽的散列表,以下哪些散列函數(shù)是好的散列函數(shù)()h(K)=KmodNh(K)=lh(K)=K/Nh(K)=(K+rand(N))modN,rand(N)返回一個0到N-1的整數(shù)有以下程序:#include<stdio.h>intadd_more(inta,intb)(returna+b-2;}main()(inti;for(i=0;i<4;i++)printf("%d",add_more(i,2));}程序運行后的輸出結果是()。A.1234B.0123C.5678D.4321下列敘述中正確的是C語言中既有邏輯類型也有集合類型C語言中沒有邏輯類型但有集合類型C語言中有邏輯類型但沒有集合類型C語言中既沒有邏輯類型也沒有集合類型20.(14)有以下程序:"include<stdio.h>main()(inta=l,b=2;fbr(;a<12;a-H-)(b+=a*2;a+=3;}primR”%d,%d\n”,b,a);程序運行后的輸岀結果是( )?C)72;13D)72,10A)32,13 B)46,10C)72;13D)72,10三、程序設計題(1。題)規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)firn,其功能是:除了字符串前導的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:****ABCDEFG。注意:部分源程序在文件PR0G1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?include<戒dimh>voidfun(char?a)main()chars{81]:voidNONO()?pnntf("Entern?tring:\n");get?(?);fun(s)I|jrintf("T^esiringafterdeleted:\n");puto(t);NONO();voidNONO()M?本函數(shù)用于打開文件,輸入數(shù)據(jù)?調用函數(shù),常出數(shù)據(jù).關閉文件,?/FILE?in.*oul;inti;chars[81]:in=fopen("in.dat","r");out=fopcn("oui.dal"."w")jfor(?-0?i<10Si*?)IUcanfCin.?):fun(?)lfprintfCout. .>)(fcloM(in);lclo?e(oul):輸出1900?2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)使用VC++20I0打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.Co在此程序中,編寫函數(shù)fun(),其功能是將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在c數(shù)的十位和千位上,b中的十位數(shù)和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當a=45,b=12時,調用該函數(shù)后,c=5142。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c)()main()(inta,b;longc;printf(“Inputa,b:");scanfC%d%d",&a,&b);fun(a,b,&c);printf(44Theresultis:%ld\n,,,c);)使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.co在此程序中,請編寫函數(shù)fun(),其功能是找出一維整型數(shù)組元素中最大的值及其所在的下標,并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n表示x中的元素個數(shù),max存放最大值,index存放最大值所在元素的下標。注意:部分源程序給出如下。請勿改動主函數(shù)main。和其他函數(shù)中的任何內容,僅在函數(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]);/*輸出一個隨機數(shù)組*/)printf(n\nH);fun(xfnf&max,&index);printf("Max=%5d,Index=%4d\n”,max,index);)使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.Co在此程序中,請編寫函數(shù)fun(),其功能是將放在字符串數(shù)組中的M個字符串(每個字符串的長度不超過N),按順序合并成一個新的字符串。例如,若字符串數(shù)組中的M個字符串為|“AAAA”,“BBBBBBB”,“CC”|,則合并后的字符串內容應該是“AAAABBBBBBBCC”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidfun(chara[M][N],char*b)(}voidmain()(charw[M][N]={“AAAA”,“BBBBBBB”,“CC”};chara[l00]=I,##################”};inti;printf("Thestring:\n”);for(i=0;i<=,M,p=,M,>puts(w[i]);printf("\n”);fun(w,a);printf(“TheAstring:\n”);printf(“%s”,a);printf("\n\n");)請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1-1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為s=0.680803。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc0的花括號中填入所編寫的若干語句。試題程序:SincludeVstdio.h>doubleproc(intn)voidmain(){inintdoublesumIprintf("\nlnputn:")?sc?nf("%d".^-n)?sum=proc(n)iprintf("\ns??%(\n".sum)*}某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學生的平均分,并放入記錄的ave成員中。例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875o注意:部分源程序在文件PR0G1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)flm的花括號中填入你編寫的若干語句。?include<*ulio.h>?defineN8typedefstructIcharnum[10];double?[N]idoubleaw;ISTREC;voidfun(STREC?a)main()ISIWC.xI-CAOO5-.85.5.76.69.5.85,91,72.64.5.87.51:iaiilvoidNONO()tfun(&?)tprintf(""Rtestudentdau:\n".?.num);fc>r(i?0;i<Nji??)printf("\nave=%7.3Hn"?ve):NONO();I*voidNONO()!/?本函數(shù)用于打開文件,輸用兩數(shù),輸岀數(shù)據(jù).關閉文件.FILE?out;inti.j,STREC?[10]?II-GA005".85.5.76.69.5.85,91,72,64.5.87.51.I"GA001".82.5,66,76.5.76,89,76,46.5,78.51.I-CA002-.72.5.56.66.S.66.79,68,46.5.M.5I.I-CA003-.92.5.76.86.5,86.99,86,56.5.88.51,I-GA004".82.66.5.46.5.56.76,75.76.5,63.51.I-GA006",75.5.74.71.5.85.81,79,64.5.71.51,I-CA007-,92.5.61.72.5,84.79.75,66.5.72.51,I-GA008-.72.5.86.73.5,80.69.63.76.5,53.51.?CA009-,66.5.71.74.5,70,61.82.86.5,58.51.I-CA010-,76,66.5,75.5,60.76.71,96.5,93.51,IIout?fopenCout.<hl","w*);for(i=0?i<10ji??)I(&■[?])Jfpffintf(oui,"%7.3An-,?(!).?*?);Ifclote(out))請編寫函數(shù)proc,它的功能是計算s=(In(1)4+ln(2)4+ln(3)+...+In(m))0.5在C語言中可調用log(n)函數(shù)求ln(n)o例如,若m的值為30,則proc函數(shù)值為8.640500o注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#inclllde<stdio.h>#include<math.h>doubleproc(intm)()voidmain(system(”CLS”);printf("%f\n",proc(30));使用VC++2010打開觸文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.Co在此程序中,請編寫函數(shù)fun(),其功能是移動字符串中的內容,移動的規(guī)則是把第1?m個字符,移動到字符串的最后,把第m+1到最后的字符移動到于符串的前面。例如,字符串中原有的內容為“ABCDEFGHIJK”,m的值為3,移動后,字符串中的內容應該是“DEFGHUKABC”。注意:部分源程序在文件progl.c中。請勿改動main。函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)ftm()的花括號

中填入你編寫的若干語句試題程序?include<stdio.h>#include<string.h>?defineN80中填入你編寫的若干語句試題程序voidfun(char*w,intm)voidmain(){FILE?wf;chara[NJ="ABCDEFGHIJK”,b[N]?="ABCDEFGHIJK";intm;printf(MTheoriginalstring:\nn);puts(a);printf(M\n\nEnterm:");scanf&m);fun(a,m);printf("\nThestringaftermoving:\n");puts(a);printf("\n\nM);/*?????*??found?????????/wf=fopen("out.dat",Mwn);fun(b,3);fprintf(wfr"%sMrb>;fclose(wf);/*********found*********/}n個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在down所指的數(shù)組中。例如,當score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,84,60,76,100}時,函數(shù)返回的人數(shù)應該是4,down中的數(shù)據(jù)應為40565960o注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:mndudeV心hh>J*indude<ctMio.h>Sindude<?tdMXk>9tncludr<Mrvn<.h>mlpnx-CiM .?midowaf]>voidnuin()Iinii?n?down[9]iCO.TC.IOOliB^pfoclMor*.9.down>?pn?M《.\ndoEtotheaver?c?scorearet")?(or<i?0ii<fi*i4*4->pnntf(*%<l*.dowHCi]>ipri?lf(*\b")i四、2.程序修改題(10題)下列給定程序中,函數(shù)fun()的功能是:將m(l<m<10)個字符串連接起來,組成一個新串,放入pt所指字符串中,例如:把3個串a(chǎn)bc,CD,EF串聯(lián)起來,結果是abcCDEFo請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<conio.h>#include<string.h>voidfun(longs,longt)(longsl=10;s/=10;*t=s%10;while(s<0)s=s/100;*t=s%10*sl+*t;sl=sl*10;})msin(){longs,t;printf("\nPleaseenters:");scanf(”%ld”,&s);fun(s,&t);printf(uTheresultis:%ld\nH,t);}34.下列給定程序中,函數(shù)fun()的功能是,?計算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,當x的值為9,y的值為11,2的值為15時,函數(shù)值為.3.50。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdio.h>#include<math,h>/**************found******************//**********************************/(c=aa[i];j=i?l;while((j>=0)&&(ch<aa[j]))(aaU+l]=aaU];j??;1aa[j+l]=ch;)}main(){chara[N]="QWERTYUIOPASDFGHJKIMNBVCXZ”;inti;printf(HTheoriginalstring:%s\n",a);insert(a);printf("Thestringaftersorting:%s\n\n",a);}36.在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組中,用。結束輸入并放在最后一個元素中。下列給定程序中,函數(shù)fw()的功能是計算數(shù)組元素中值為負數(shù)的平均值(不包括0)。例如:數(shù)組中元素的值依次為43,47,-21,53,-8,12,0,則程序的運行結果為-25.333333。請改正程序中的錯誤,使它能得到正確結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<conio.h>#include<stdio.h>doublefun(intx[])finclude<stdio.h>tinclude<stdlib.h>?include<string.h>?defineN10typedefstructss(charnum[10];ints;}STU;STU*fun(STUa(l,intm)(STUb(N],*t;inti,j,k;/****?*??**found*****??*?*/t-(STU*)calloc(sizeof(STU)for(i-0;i<N;i++) ;for(k-0;k<m;k++)(for(i-j-0;i<N;i++)>b(j].s)j-i;Z**********found**********/t(k)-b(j);b[j].s-0;?returnt;outresult(STUa[],FILE*pf){inti;for(i-0;i<N;1++)fprintf(pf,"No-%sMark-%d\n",a[i].numra(i].s);fprintf(pf,"\n\n");}main()(STUa(N)-{(”A01”,81),(”A02”,89?("A03",66h{"A04",87b("A05",77("A06",90},(-A07",79}r{"A08"r61>,{-A09-,80h{wA10"r71}J;STU?pOrder;inti,m;printf(??*****TheOriginaldata?****\n");outresult(a,stdout);printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf4m);while(m>10){printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf(w%d",&m);IpOrder-fun(a,m);printf("*****THERESULT*****\n");printf("Thetop:\n");for(i-0;i<m;i++)printf("%s%d\n",pOrder[i].num,pOrder(i].s);free(pOrder);262639.給定程序M0D11.C中函數(shù)fun的功能是:統(tǒng)計字符串中各元音字母(即:A、E、I、0、U)的個數(shù)。注意:字母不分大、小寫。例如:若輸入:THIsisaboot,則輸出應該是:1、0、2、2、0。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!?#include<stdio.h>!voidfun(char*s,intnum[5])I{intk,i-5;;for(k■0;k<i;k++)\/**********found******??*?/?num[i]?0;i for(;*s;s++); (i--1;!/……?…found……?…/Iswitch(s)\ (case*a*:case*A*:(i-0;break;}; case *e':case ,£?:(i-l;break;)! case *i*:case 'I,:(i-2;break;}i case 'o':case 'O':(i-3;break;); case *u*:case *U':(i-4;break;}16,)}if(i>-0)Iinum[i]19: }!};main()i(charsl[81];intnuml(5]ri;;printf("\nPleaseenterastring:!");gets(si);jfun(si,numl);\for(i-0;i<5;i++)printf("%d!Rrnuml(i]);printfC\nn);40.下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。請改正程序中的錯誤,使它能得到正確結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdio.h>#include<conio.h>voidfun(char*S)(inti,j;fdr(i=O,j=0;s[i]!='\0*;i++)/*************found************/if((s[i]>='A'&&s[i]<=Z)&&(s[i]>='a'&&S[i]<='z\))s[j++]=s[i];s[j]="\O”;}main(){charitem[80];clrscr();printf(t€\nEnterastring:");gets(item);printf(4t\n\nThestringis:\%S\n",item);fun(item);printf("\n\nThestringofchanging指數(shù)形式的小數(shù)才旨數(shù)形式的實數(shù)由尾數(shù)部分、e(E)和指數(shù)部分組成(字母e或E的前后必須要有數(shù)字,且其后面的指數(shù)必須為整數(shù))。選項A中,5E2.0中E后面的2.0不是整數(shù);選項B中,E前面沒有數(shù)字:選項D中,E后面沒有數(shù)字。最終可以判斷選項C正確。A此題是一個簡單的函數(shù)調用,當i=0并且i<30,執(zhí)行i+=10,并且調用函數(shù)f,所以當i=0時,結果為1,當i=10時,結果為101,當i=20時,結果為401,所以a=l+101+401=503oA條件表達式:x=表達式1:表達式2:表達式3的含義是:先求解表達式1.若為非0(真),則求解表達式2.將表達式2的值賦給xo若表達式1的值為0(假),則求解表達式3.將表達式3的值賦給xo在本題中與表達式1:(x?y)等價的是(x?yv0|x?y>0)。Ba一一的含義是先用后減1,所以當a的值為。時,跳出循環(huán),但是仍要執(zhí)行a一一,g的值變?yōu)橐?。B所謂常量是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,但使用單引號,錯誤,選項c,D,為實型常量中指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù),錯誤。故答案為B選項。CC語言中沒有規(guī)定“if(表達式)語句”中的“表達式”的形式,其可以是任意合法的表達式。故本題答案為C選項。ABadd_more函數(shù)接收兩個參數(shù)a、b,返回“a+b-2”。main函數(shù)中,for循環(huán)調用add_more函數(shù)。當i=2時,傳入實參i和2,所以每次調用函數(shù)add_more時,b的值都是2。函數(shù)add.more返回值等價于實參i。所以每次for循環(huán)輸出的值就是i的值。故本題答案為B選項。D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項A和選項C不正確,C語言中沒有集合類型,故選項B不正確。所以,D選項為所選。A21.程序設計題解析:【考點分析】本題考查:指針型變量定義;while循環(huán)語句;if語句條件表達式;字符串結束標識‘\\0'°【解題思路】函數(shù)fun的功能:除了字符串前導的*號之外,將串中其他。號全部刪除。解答本題,(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結束字符,\\0\【解題寶典】要刪除字符串中的指定字符,通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠?,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。\n#include"stdio.h"\nmain\n{intl,n;\nfor(n=0,I=1900;I<=2000;I++)\n{if(I%4==0I0!=0||I@0==0)\n{printff%d”,I);n++;}\nif(n%3==0)\nprintfT\\n");}}}\nvoidfun(inta,intb,long*c)(/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;)本題主要考核如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進行指針運算。voidfun(inta[],intn,int*max,int*d)(inti;*max=a[0];*d=0;for(i=l;i<="np=,,n>if(*max<a[i])(*max=a[i];*d=i;)}fun()函數(shù)形參max用來存放最大值,形參d用來存放最大值的下標。由于它們都是指針變量,因此在引用所指向的變量時,要進行指針運算。循環(huán)語句用來遍歷數(shù)組元素,找出最大值。條件語句用來判斷該數(shù)組元素是否最大。voidfun(chara[M][N],char*b)(inti,j,k=O;for(i=0;i/*將字符串數(shù)組中的M個字符串,按順序存入一個新的字符串*/ford=0;a[i]U]!='V),;j++)b[k++]=a[i][j];b[k]=,\(r;/*在字符串最后加上字符串結束標志*/)該題考核的是字符串連接操作。字符串數(shù)組相當于二維字符數(shù)組。字符數(shù)組a是M行N列的二維數(shù)組。通過兩層for循環(huán)遍歷數(shù)組a,將數(shù)組a中的元素保存到數(shù)組b中。在數(shù)組b的最后一個元素后添加字符串結束標志,\\0,。26.【解析】由題目中所給的表達式可知,多項式的值為n項表達式的和??梢岳胣次循環(huán)求出n項表達式的值,求和放在變量s中。最后將多項式的值返回到主函數(shù)當中。27.voidfun(STREC*a)inti:a一>ave=O.0:fbr(i=0;ivN;i++)a—>ave=a—>ave+-一>s[i];/*求各門成績的總和}/a->ave/=N;/}求平均分*/}【考點分析】本題考查:結構體類型成員運算,指向結構體類型的指針變量作函數(shù)參數(shù)。【解題思路】本題考查自定義形參的相關知識點,程序流程是這樣的:在如n()函數(shù)中求出平均分后,返回到主函數(shù)時平均分也要帶回,所以只能定義一個指針類型的形參STRECa,此時,引用成員的方式可以使用指向運算符,即a—>ave和a—>s[i],當然也可用(*a),ave和(*a).S[i]。doubleproc(intm)\n{\ninti;\ndoubles=0.0;//s是表示其和\nfor(i=l;i<=m;i++)\ns=s+log(i);〃計算s=ln(l)+ln(2)+ln(3)+...+ln(m)\nreturnsqrt(s);〃最后將其開平方的值返回到主函數(shù)中\(zhòng)n}\n【解析】由題目中所給表達式可知,表達式的值為m項表達式的和然后開平方。可以首先通過m次循環(huán)求得m項表達式的和,然后將其和開平方并返回到主函數(shù)當中。\nVbidfunCchar*w,intm)chart;for(i=1;i<=m;i++)/*進行m次的循環(huán)左移*/{t=w[o];for(j=l;w[j]!='\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符將第1個字符放到最后一個字符中*/10()本題應采用“循環(huán)左移”的算法。外層循環(huán)用于控制移動的字符的個數(shù),即需進行多少次循環(huán)。內層循環(huán)的作用是將第2個字符以后的每個字符依次前移一個位置,最后將第1個字符放到最后一個字符中。30.【解析】要找到所有學生中成績低于平均分數(shù)的人數(shù),首先需要算出所有學生的平均成績。然后將所有學生的成績與平均成績相比較。將低于平均分數(shù)學生的記錄存放在新的數(shù)組中,并將低于平均分數(shù)的學生數(shù)返回給主函數(shù)。(1)錯誤:intfun(charstr[][10]intmchar*pt)正確:voidfun(charstr[][10intmchar*pt)(2)錯誤:pt[i]=str[ki];正確:pt[i]=str[k][i];(l)錯誤:intfun(charstr[][10],intm,char*pt)正確:voidfun(charstr[][10,intm,char*pt)\r\n(2)錯誤:pt[i]=str[k,i];正確:pt[i]=str[k][i];解析:本題中的兩例錯誤我們已經(jīng)在前面的講解中詳細闡述了,一般這樣的字符串連接函數(shù)在C語言的考試中肯定不讓使用strcat函數(shù),但是,直接用if和while的循坪嵌套也很容易解決問題的。⑴c=c+32;(2)c=c+5;(l)c=c+32;(2)c=c+5;解析:本題中函數(shù)的功能是將某些大寫字母轉換為對應小寫字母之后的第五個字母。對于將字母轉換的題型,首先是查找符合條件的字符,然后根據(jù)規(guī)則對字符進行轉換。本題需要大家了解大小寫字母是怎樣通過ASCII碼相互轉換的。(1)錯誤:voidfun(longslongt)正確:voidfun(longslong*t)(2)錯誤:while(s<0)正確:while(s>0)⑴錯誤:voidfun(longs,longt)\r\n正確:voidfun(longs,long*t)\r\n⑵錯誤:while(s<0)\r\n正確:while(s>0)(1)錯誤^defineFU(mn)(m/n)正確#defineFU(mn)(m)/(n)(2)錯誤:return(Value);正確:return(value);(l)錯誤;#defineFU(m,n)(m/n)正確:#defineFU(m,n)(m)/(n)\r\n⑵錯誤:return(Value);正確:return(value);解析:如果從數(shù)學思想來說,這是一道簡單的小學數(shù)學題,當然,用C語言的別的辦法實現(xiàn)的話,也用不了三兩句的程序,但是,這道題的考查點在C語言的宏定義上(這樣的問題比較隱蔽),它的格式為#define標識符字符串,中間要用空格分開,在該題中,標識符為FU(m,n),而字符串則是(m/n),由題干信息易知,應該是#defineFU(m,n)(m)/(n)。錯誤:c=aa[i]正確:ch=aa[i];錯誤:c=aa[i]正確:ch=aa[i];解析:對長度為n的數(shù)組元素進行排列,可先對數(shù)組的前m?l項進行排序,之后再對前m項進行排序,如此循環(huán)直到數(shù)組全部元素完成排序。對前m項的子數(shù)列進行排序的方法是,將該子數(shù)列的末尾元素與前m-1項的元素相比較,由于前m?l項已經(jīng)完成排序,可以找到某一位置,使得將該末尾元素插入該位置之后,前m項仍然保持升序。這樣循環(huán)后,就可以得到全部元素的排序。(1)錯誤:while(x[i]==O)正確:while(x[i]!=O)(2)錯誤:sum=sum\c;正確:sum=sum/c;(l)錯誤:while(x[i]==O)正確:while(x[i]!=O)\r\n(2)錯誤:sum=sum\\c;正確:sum=sum/c;解析:錯誤1:此處考查的是對循環(huán)條件的理解,當被判斷的數(shù)組元素為。時,說明這是數(shù)組的最后一個元素,此時要跳出循環(huán)。錯誤2:C語言中的除法

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論