國家二級(jí)C語言機(jī)試(操作題)模擬試卷7(共26題)_第1頁
國家二級(jí)C語言機(jī)試(操作題)模擬試卷7(共26題)_第2頁
國家二級(jí)C語言機(jī)試(操作題)模擬試卷7(共26題)_第3頁
國家二級(jí)C語言機(jī)試(操作題)模擬試卷7(共26題)_第4頁
國家二級(jí)C語言機(jī)試(操作題)模擬試卷7(共26題)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

國家二級(jí)C語言機(jī)試(操作題)模擬試卷7(共9套)(共26題)國家二級(jí)C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:用函數(shù)指針指向要調(diào)用的函數(shù),并進(jìn)行調(diào)用。規(guī)定在【2】處使f指向函數(shù)f1,在【3】處使f指向函數(shù)f2。當(dāng)調(diào)用正確時(shí),程序輸出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublef1(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y}doublefun(doublea,doubleb){/*********found*********/【1】(*f)();doubler1,r2;/*********found*********/f=【2】;r1=f(a);/*********found*********/f=【3】;r2=(*f)(a,b);returnr1+r2;}main(){doublex1=5,x2=3,r;r=fun(x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n",x1,x2,r);}標(biāo)準(zhǔn)答案:(1)double(2)f1(3)f2知識(shí)點(diǎn)解析:填空1:(*f)()代表一個(gè)指向函數(shù)的指針變量,而本題所被調(diào)用的f1、f2兩函數(shù)的返回值均為double型,因而此空應(yīng)該填寫double。填空2:因?yàn)樵诮o函數(shù)指針變量賦值時(shí),只需給出函數(shù)名而不必給出參數(shù),因而此空應(yīng)該填寫n。填空3:同填空2,此空應(yīng)該填寫f2。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。此程序建立了一個(gè)帶頭節(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各節(jié)點(diǎn)賦值。函數(shù)fun的功能是將單向鏈表節(jié)點(diǎn)(不包括頭節(jié)點(diǎn))數(shù)據(jù)域?yàn)榕紨?shù)的值累加起來,并且作為函數(shù)值返回。請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>typedefstruetaa{intdata;Structaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;p=h﹣>next;/*********found*********/while(p﹣>next){if(p﹣>data%2==0)sum+=p﹣>data;/*********found*********/p=h﹣>next;}returnsum;}NODE*creatlink(intn){NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));for(i=1;i<n;i++){s=(NODE*)malloc(sizeof(NODE));s﹣>data=rand()%16;s﹣>next=p﹣>next;p﹣>next=s;p=p﹣>next;}p﹣>next=NULL;returnh;}outlink(NODE*h){NODE*p;p=h﹣>next;printf("\n\nTheLIST:\n\nHEAD");while(p){printf("﹣>%d",p﹣>data);p=p﹣>next;}printf("\n");}voidmain(){NODE*head;intsum;system("CLS");head=creatlink(10);outlink(head);sum=fun(head);printf("\nSUM=%d",sum);}標(biāo)準(zhǔn)答案:(1)while(p!=NULL)(2)p=p﹣>next;知識(shí)點(diǎn)解析:(1)判斷當(dāng)前指針p指向的節(jié)點(diǎn)是否存在,若存在則對(duì)該節(jié)點(diǎn)數(shù)據(jù)域進(jìn)行判斷操作。(2)判斷結(jié)束后指針指向下一個(gè)節(jié)點(diǎn)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:判斷字符串是否為回文,若是,則函數(shù)返回1,主函數(shù)中輸出“YES”,否則返回0,主函數(shù)中輸出“NO”?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80intfun(char*str){}main(){chars[N];FILE*out;char*test[]={"1234321","123421","123321","abcdCBA"};inti;printf("Enterastring:");gets(s);printf("\n\n");puts(s);if(fun(s))printf("YES\n");elSeprintf("NO\n"),/*********found*********/out=fopen("out.dat","w");for(i=0;i<4;i++)if(fun(test[i]))fprintf(out,"YES\n");elsefprintf(out,"NO\n");fclose(out);/*********found*********/}標(biāo)準(zhǔn)答案:intfun(char*str){inti,n=0,fg=1;char*p=str;while(*p)/*將指針p置位到字符串末尾,并統(tǒng)計(jì)字符數(shù)*/{n++;p++;}for(i=0;i<n/2;i++)/*循環(huán)比較字符*/if(str[i]==str[n﹣1﹣i]);/*相同,什么都不作*/else/*不同,直接跳出循環(huán)*/{fg=0;break;}returnfg;}知識(shí)點(diǎn)解析:判斷回文就是將第一個(gè)字符與最后一個(gè)字符比較,第二個(gè)字符與倒數(shù)第二個(gè)字符進(jìn)行比較,依此類推,直到中間的字符,如果比較的結(jié)果都相同,那么這個(gè)字符串就是回文,否則不是。程序中循環(huán)語句用來遍歷字符串,條件語句用來判斷當(dāng)前字符與對(duì)應(yīng)位置的字符是否相同。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:計(jì)算下式前n項(xiàng)的和,并作為函數(shù)值返回。例如,當(dāng)形參n的值為10時(shí),函數(shù)返回﹣0.204491。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublefun(intn){inti,k;doubles,t,s=0;/*********found*********/k=【1】;for(i=1;i<=n;i++){/*********found*********/t=【2】;s=s+k*(2*i﹣1)*(2*i+1)/(t*t);/*********found*********/k=k*【3】;}returns;}main(){intn=﹣1;while(n<0){prLntf("Pleaseinput(n>0):");scanf("%d",&n);}printf("\nTheresultis:%f\n",fun(rn));}標(biāo)準(zhǔn)答案:(1)1(2)2*i(3)(﹣1)知識(shí)點(diǎn)解析:填空1:由fun函數(shù)整體結(jié)構(gòu)可以看出k的作用是賦值,并累加各項(xiàng)前邊的正負(fù)號(hào),由于第一項(xiàng)是正的,因此賦給k的值為1。填空2:此空下一行的表達(dá)式k*(2*i﹣1)*(2*i+1)/(t*t)累加的通項(xiàng),k為正負(fù)號(hào),由題目中的公式可知t=2*i。填空3:由于通項(xiàng)前邊的正負(fù)號(hào)每次都要發(fā)生變化,因此k=k*(﹣1)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否為素?cái)?shù),若是素?cái)?shù)返回1,否則返回0。在main函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<Stdlib.h>#include<conio.h>#include<stdio.h>intfun(intm){intk=2;while(k<=m&&(m%k))/*********found*********/k++/*********found*********/if(m=k)return1;elseEetuEn0;}voidmain(){intn;system("CLS");printf("\nPleaseentern:");scanf("%d",&n);if(fun(n))printf("YES\n");elseprintf("NO!\n");}標(biāo)準(zhǔn)答案:(1)k++;(2)if(m==k)知識(shí)點(diǎn)解析:函數(shù)fun的功能是判斷m是否為素?cái)?shù):m從2開始作為除數(shù),并對(duì)m取余,若不存在一個(gè)數(shù)使得余數(shù)為0,則m為素?cái)?shù),程序的錯(cuò)誤在于if(m=k)語句中的邏輯表達(dá)式寫成了賦值語句。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值及其所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#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;printf("%4d",x[i]);/*輸出一個(gè)隨機(jī)數(shù)組*/}printf("\n");fun(x,n,&max,&index);printf("Max=%5d,Index=%4d\n",max,index);}標(biāo)準(zhǔn)答案:voidfun(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;for(i=1;i<n;i++)/*將最大的元素放入指針max所指的單元,最大元素的下標(biāo)放入指針d所指的單元*/if(*max<a[i]){*max=a[i];*d=i;)}知識(shí)點(diǎn)解析:查找最大值及其下標(biāo)需要定義兩個(gè)變量,該程序直接使用形參max和d,由于它們都是指針變量,所以在引用它所指向的變量時(shí)要對(duì)它進(jìn)行指針運(yùn)算。循環(huán)語句用來遍歷數(shù)組元素,條件語句用來判斷該數(shù)組元素是否最大。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是將形參std所指結(jié)構(gòu)體數(shù)組中年齡最大者的數(shù)據(jù)作為函數(shù)值返回,并在main()函數(shù)中輸出。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#inclucte<stdio.h>2typedefstruct3{charname[10];4intage;5}STD;6STDfun(STDstd[],intn)7{STDmax;inti;8/*********found*********/9max=<u>【1】</u>;10for(i=1;i<n;i++)11/*********found*********/12if(max.a(chǎn)ge<<u>【2】</u>)13max=std[i];14returnmax;15}16main()17{STDstd[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15};18STDmax;19max=fun(std,5);20printf("\nTheresult:\n");21/*********found*********/22printf("\nName:%s,Age:%d\n",<u>【3】</u>,max.a(chǎn)ge);23}標(biāo)準(zhǔn)答案:(1)std[0](2)std[i].a(chǎn)ge(3)max.name知識(shí)點(diǎn)解析:填空1:變量max用于存儲(chǔ)數(shù)組中年齡最大的元素。首先將數(shù)組的第1個(gè)元素賦給max,然后依次向后比較,得到年齡最大的元素,因此在給max賦初值時(shí),空1處應(yīng)該填std[0]。填空2:if條件判斷語句表達(dá)的是max.a(chǎn)ge應(yīng)該和結(jié)構(gòu)體數(shù)組中的每個(gè)年齡進(jìn)行比較,從而得到年齡最大者的數(shù)據(jù)。故空2處應(yīng)該填std[i].age。填空3:從printf()的表達(dá)式可看出,要輸出的值應(yīng)為年齡最大者的name。故空3處應(yīng)該填max.name。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.c。在此程序中,函數(shù)fun()的功能是實(shí)現(xiàn)兩個(gè)整數(shù)的交換。例如,為a和b分別輸入60和65,輸出:a=65b=60。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4/*********found*********/5voidfun(inta,b)6{7intt;8/*********found*********/9t=b;b=a;a=t;10}11voidmain()12{13inta,b;14system("CLS");15printf("Entera,b:");16scanf("%d%d",&a,&b);17fun(&a,&b);18printf("a=%db=%d\n",a,b);19}標(biāo)準(zhǔn)答案:(1)voidfun(int*a,inl*b)(2)t=*b;*b=*a;*a=t;知識(shí)點(diǎn)解析:(1)本題考查指針變量作函數(shù)參數(shù)。采用普通變量作為形參,不能改變實(shí)參的值;采用指針變量作為形參則能夠改變實(shí)參的值。主函數(shù)中fun()的調(diào)用方式說明fun()函數(shù)的參數(shù)應(yīng)當(dāng)為指針類型。(2)此處錯(cuò)誤比較明顯,因?yàn)樽兞縜和b都是指針變量。進(jìn)行變量交換時(shí)不能直接引用,應(yīng)加上指針運(yùn)算符"*"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫函數(shù)fun(),tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中值最大的元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的元素已在主函數(shù)中給出。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4#defineM35#defineN46voidfun(inttt[M][N],intpp[N])7{89}10voidmain()11{12intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};13intp[N],i,j,k;14system("CLS");15printf("Theoriginaldatais:\n");16for(i=0;i<M;i++)17{18for(j=0;j<N;j++)19printf("%6d",t[i][j]);20printf("\n");21}22fun(t,P);23printf("\nTheresultis:\n");24for(k=0;k<N;k++)25printf("%4d",p[k]);26printf("\n");27}標(biāo)準(zhǔn)答案:1voidfun(inttt[M][N],intpp[N])2{3inti,j,max;4for(j=0;jmax)/*如果各列中的其他元素值比最大值大,則將這個(gè)值更大的元素看作當(dāng)前列中值最大的元素*/9max=tt[i][j];10pp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/11}12}知識(shí)點(diǎn)解析:本題函數(shù)fun()的功能是求出二維數(shù)組中每列值最大的元素。首先,假設(shè)各列中的第1個(gè)元素值最大,然后利用行下標(biāo)的移動(dòng)來依次取得各列中其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這個(gè)值更大的元素看作當(dāng)前列中值最大的元素,繼續(xù)與該列中的其他元素進(jìn)行比較。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:在3×4的矩陣中找出在行上最大、在列上最小的那個(gè)元素,若沒有符合條件的元素則輸出相應(yīng)信息。例如,有下列矩陣:程序執(zhí)行結(jié)果為:find:a[2][2]=9請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#iclude<stdio.h>#defineM3#defineN4voidfun(int(*a)[N]){inti=0,j,find=0,rmax,c,k;while((i<M)&&(!find)){rmax=a[i][0];c=0;for(j=1;j<N;j++)if(rmax<a[i][j]){/*********found*********/rmax=a[i][j];c=【1】;}find=1;k=0;while(k<M&&find){/*********found*********/if(k!=i&&a[k][c]<=rmax)find=【2】;k++;}if(find)printf("find:a[%d][%d]=%d\n",i,c,a[i][c]);/*********found*********/【3】;}if(!find)printf("notfound!\n");}main(){intx[M][N],i,j;printf("Enternumberforarray:\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&x[i][j]);printf("Thearray:n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n\n");}fun(x);}標(biāo)準(zhǔn)答案:(1)j(2)0(3)i++知識(shí)點(diǎn)解析:本題是在矩陣中找出在行上最大、在列上最小的那個(gè)元素。填空1:找出行上最大的數(shù),并將該數(shù)的列數(shù)j保存在c中,所以應(yīng)填j。填空2:使用while循環(huán)語句和控制變量find,如果該數(shù)不是列中的最小數(shù),那么把find置0,所以應(yīng)填0。填空3:i是while的控制變量,所以每做一次循環(huán),該數(shù)值要加1,所以應(yīng)填i++。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:根據(jù)整形參m的值,計(jì)算如下公式的值。例如,若m中的值為5,則應(yīng)輸出0.536389。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件NODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdoio.h>doublefun(intm){doubley=1.0;inti;/*********found*********/for(i=2;i<m;i++)/*********found*********/y-=1/(i*i);return(y);}main(){intn=5;printf("\nTheresultis%lf\n",fun(n));}標(biāo)準(zhǔn)答案:(1)for(i:2;i<=m;i++)(2)y-=1.0/(i*i);知識(shí)點(diǎn)解析:(1)使用for循環(huán)計(jì)算公式,必須計(jì)算到m,所以應(yīng)改為for(i.2;i<=m;i++)。(2)在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),那么所除結(jié)果也是整數(shù),因此應(yīng)改為y-=1.0/(i*i)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。程序中,m個(gè)人的成績(jī)存放在8core數(shù)組中,請(qǐng)編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>intfun(intscore[],intm,intbelow[]){}voidmain(){FILE*wf;inti,n,below[9];intscore[9]={10,20,30,40,50r60,70,80,90};system("CLS");n=fun(score,9,below);printf("\nBelowtheaveragescoreare:");for(i=0;i<n;i++)printf("%d",below[i]);/*****************/wf=fopen("out.dat","w");for(i=0;i<n;i++)fprintf(wf,"%d",below[i]);fclose(wf);/*****************/}標(biāo)準(zhǔn)答案:intfun(intscote[],intm,intbelow[]){inti,j=0;floatav=0.0;for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]<av)/*如果分?jǐn)?shù)低于平均分,則將此分?jǐn)?shù)放入below數(shù)組中*/below[j++]=score[i];returnj;/*返回低于平均分的人數(shù)*/}知識(shí)點(diǎn)解析:要計(jì)算低于平均分的人數(shù),首先應(yīng)該求出平均分,然后通過for循環(huán)語句和if條件語句找出低于平均分的分?jǐn)?shù)。該題第1個(gè)循環(huán)的作用是求出平均分av,第2個(gè)循環(huán)的作用是找出低于平均分的成績(jī)記錄并存入below數(shù)組中。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是利用指針數(shù)組對(duì)形參ss所指字符串?dāng)?shù)組中的字符串按由長到短的順序排列,并輸出排序結(jié)果。ss所指字符串?dāng)?shù)組中有N個(gè)字符串,且串長小于M。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件blank1.c中。不得增行或刪行。也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<string.h>3#defineN54#defineM85voidfun(char{*ss)[M])6{char*ps[N],*tp;inti,j,k;7for(i=0;i<N;i++)8ps[i]=ss[i];9for(i=0;i<N-1;i++){10/*********found*********/11k=<u>【1】</u>;12for(j=i+1;j<N;j++)13/*********found*********/14if(strlen(ps[k])(strlen(<u>【2】</u>))k=j;15/*********found*********/16tp=ps[i];ps[i]=ps[k];17ps[k]=<u>【3】</u>;18}19printf("\nThestringaftersortingbylength:\n\n");20for(i=0,i<N;i++)puts(ps[i]);21}22main()23{charch[N][M]=("red","green","blue","yellow","biack");24inti;25printf("\nTheoriginalstring\n\n");26for(i=0;i<N;i++)27puts(ch[i]);printf("\n");28fun(ch);29}標(biāo)準(zhǔn)答案:(1)i(2)ps[j](3)tp知識(shí)點(diǎn)解析:本題通過選擇算法按字符串長度排序。(1)從外層循環(huán)開始,假設(shè)當(dāng)前第i個(gè)字符串最長,下標(biāo)i存放于變量k中。故空1處應(yīng)該填i。(2)在內(nèi)層循環(huán)中,第j個(gè)字符串與第i個(gè)字符串比較長度。故空2處應(yīng)該填ps[j]。(3)If語句比較長度,如果第k個(gè)字符串長度小于第j個(gè)字符串長度,交換兩個(gè)字符串。故空3處應(yīng)該填tp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.c。在此程序中,已知一個(gè)數(shù)列從0項(xiàng)開始的前3項(xiàng)為0、0、1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun()的功能是計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和sum。n的值通過形參傳入。例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為23.197745。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件modil.c中,不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4#include<math.h>5/*********found*********/6fun(intn)7{doublesum,sO,s1,s2,s;8intk;9sum=1.0;10if(n<=2)sum=0.0;11sO=0.0;s1=0.0,s2=1.0;12for(k=4;k<=n;k++)13{s=s0+s1+s2;14sum+=sqrt(s);15s0=s1;s1=s2;s2=s;16}17/*********found*********/18returnsum19}20voidmain()21{intn;22system("CLS");23printf("InputN=");24scanf("%d",&n);25printf("%f\n",fun(n));26}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)returnsum;知識(shí)點(diǎn)解析:(1)根據(jù)函數(shù)的返回值可知函數(shù)fun()應(yīng)定義為double型。(2)語法錯(cuò)誤,缺分號(hào)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫函數(shù)fun(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<math.h>4#include<stdlib.h>5doublefun(doublex,intn)6{78}9voidmain()10{11FILE*wf;12system("CLS");13printf("%f",fun(0.3,10));14/*********found*********/15wf=fopen("out.dat","w");16fprintf(wf,"%f",fun(0.3,10));17fclose(wf);18/*****************/19}標(biāo)準(zhǔn)答案:1doublefun(doublex,intn)2{3inti;4doubles=1.0,s1=1.0;5for(i=1;i<=n;i++)6{s1=s1*i;/*各項(xiàng)中的階乘*/7s=s+pow(x,i)/s1;/*按公式求出*/8}9returns;10}知識(shí)點(diǎn)解析:程序定義了變量s1和s,s1表示每項(xiàng)的分母(各項(xiàng)的階乘),s存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,將累加的結(jié)果存入s中。此處使用了求乘方函數(shù)pow(x,i),其含義是求x的i次方的值。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參S所指字符串中下標(biāo)為奇數(shù)的字符按ASCII碼大小遞增排序,并將排序后下標(biāo)為奇數(shù)的字符取出,存入形參P所指字符數(shù)組中,形成一個(gè)新串。例如,形參S所指的字符為“baawrskjghzlicda”,執(zhí)行后P所指字符數(shù)組中的字符串應(yīng)為“aachjlsw”。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=’\0’;i++)n++;for(i=1;i<n﹣2;i=i+2){/*********found*********/【1】;/*********found*********/for(j=【2】+2;j<n;j=j+2)if(s[t]>s[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=1,j=0;i<n;i=i+2,j++)p[j]=s[i];/*********found*********/p[j]=【3】;}main(){chars[80]="baawrskjghzlicda",p[50];printf("\nTheoriginalstringis:%s\n",s);fun(s,p);printf("\nTheresultis:%sh",p);}標(biāo)準(zhǔn)答案:(1)t=i(2)i或t(3)’\0’或0知識(shí)點(diǎn)解析:本題中第1個(gè)for循環(huán)的作用是得到字符串的長度,第2個(gè)for循環(huán)的作用是對(duì)下標(biāo)為奇數(shù)的字符按.ASCII碼大小排序,最后將排好序的字符取出。填空1:取出字符串中下標(biāo)為奇數(shù)的字符,所以將下標(biāo)i賦值給中間變量t。填空2:此處for循環(huán)語句的作用是實(shí)現(xiàn)對(duì)下標(biāo)為奇數(shù)的元素進(jìn)行排序操作,所以循環(huán)變量初值應(yīng)填入i或t;。填空3:將下標(biāo)為奇數(shù)的字符取出后,存入p所指的數(shù)組中,最后不要忘記在數(shù)組最后加入字符串結(jié)束標(biāo)識(shí)‘\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:用下面的公式求竹的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<math.h>#include<stdio.h>floatfun(floatnum){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;/*********found*********/while(t>=num){pi=pi+t;n=n+2;s=﹣s;/*********found*********/t=s%n;}pi=pi*4;returnpi;}voidmain(){floatn1,n2;sysLem("CLS");printf("Enterafloatnumbet:");scanf("%f",&n1);n2=fun(n1);printf("%6.4f\n",n2);}標(biāo)準(zhǔn)答案:(1)while(fabs(t)>=num)(2)t=s/n;知識(shí)點(diǎn)解析:(1)函數(shù)fun中while語句的作用是,當(dāng)新的一項(xiàng)大于給定參數(shù)時(shí),循環(huán)累計(jì)計(jì)算s的值。題目要求最后一項(xiàng)的絕對(duì)值小于給定參數(shù),因此循環(huán)條件應(yīng)當(dāng)是while(1abs(t)>=num)。(2)變量t用來存放最后一項(xiàng)的值,因?yàn)槊恳豁?xiàng)均為1或﹣1除以一個(gè)數(shù),所以此處應(yīng)使用除法運(yùn)算符“/”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun,其功能是:刪除一個(gè)字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。例如,輸入一個(gè)字符串“World”,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為“Word”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdlib.h>#inlclude<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn){}voidmain(){charstr1[LEN],str2[LEN];intn;system("CLS");printf("Enterthestring:\n");gets(str1);printf("Enterthepositionofthestringdeleted:");scanf("%d",&n);fun(str1,str2,n);printf("Thenewstringis:%s\n",str2);}標(biāo)準(zhǔn)答案:voidfun(chara[],charb[],intn){inti,k=0;for(i=0;a[i]!=’\0’;i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=’\0’/*在字符串最后加上結(jié)束標(biāo)識(shí)*/}知識(shí)點(diǎn)解析:本題要求刪除字符串中指定下標(biāo)的字符,即把非指定下標(biāo)的字符保留,所以if語句條件表達(dá)式的內(nèi)容是if(i!=n)。字符串最后不要忘記加上字符串結(jié)束標(biāo)識(shí)‘\0’。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序的主函數(shù)中,已給出由結(jié)構(gòu)體構(gòu)成的鏈表節(jié)點(diǎn)a、b、c,各節(jié)點(diǎn)的數(shù)據(jù)域中均存入字符,函數(shù)fun()的功能是將a、b、c3個(gè)節(jié)點(diǎn)鏈接成—個(gè)單向鏈表,并輸出鏈表節(jié)點(diǎn)中的數(shù)據(jù)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的文件blank1.c中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2typedefstructlist3{chardata;4structlist*next;5*Q;6voidfun(Q*pa,Q*pb,Q*pc)7{Q*p;8/*********found*********/9pa->next=<u>【1】</u>;10pb->next=pc;11p=pa;12while(p)13{14/*********found*********/15printf("%c",<u>【2】</u>);16/*********found*********/17p=<u>【3】</u>;18}19printf("\n");20}21main()22{Qa,b,c;23a.data='E';b.data='F';24c.data=’G';c.next=NULL;25fun(&a,&b,&c);26}標(biāo)準(zhǔn)答案:(1)pb(2)p->data(3)p->next知識(shí)點(diǎn)解析:填空1:將3個(gè)節(jié)點(diǎn)連接起來,即將pa的指針域指向pb,pb的指針域指向pc。故空1處應(yīng)該填pb。填空2:輸出鏈表節(jié)點(diǎn)中的數(shù)據(jù),表示為p->data。故空2處應(yīng)該填p->data。填空3:指針后移,指向下一個(gè)節(jié)點(diǎn),即p=p->next。故空3處應(yīng)該填p=p->next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.c。在此程序中,函數(shù)fun()的功能是統(tǒng)計(jì)s所指一維數(shù)組中0的個(gè)數(shù)(存在變量zero中)和1的個(gè)數(shù)(存在變量one中),并輸出統(tǒng)計(jì)結(jié)果。請(qǐng)改正函數(shù)fun()中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:1#include<stdio.h>2voidfun(int*s,intn)3{4/*********found*********/5inti,one=0,zero;6for(i=0;i<n;i++)7/*********found*********/8switch(s[i]);9{10/*********found*********/11case0:zero++;12case1:one++;13}14printf("one:%dzero:%d\n",one,zero);15}16main()17{inta[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0},n=20;18fun(a,n);19}標(biāo)準(zhǔn)答案:(1)imi,one=0,zero=0;(2)switch(s[i])(3)case0:zero++;break;知識(shí)點(diǎn)解析:(1)變量zero用來統(tǒng)計(jì)數(shù)字0的個(gè)數(shù),應(yīng)將其初始化為0。(2)語法錯(cuò)誤,switch語句后不加分號(hào)。(3)當(dāng)數(shù)字為O時(shí),變量zero加1。此時(shí)應(yīng)使用break語句跳出switch語句,進(jìn)行下一次循環(huán),否則會(huì)繼續(xù)執(zhí)行case1語句,使程序不能得出正確結(jié)果。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。此程序的描述是圍繞山頂一圈有N個(gè)山洞,編號(hào)為0、1、2、3、…、N-1,有一只狐貍和一只兔子在洞中居住。狐貍總想找到兔子并吃掉它,它的尋找方法是先到第一個(gè)洞(即編號(hào)為O的洞)中找;再隔1個(gè)洞,即到編號(hào)為2的個(gè)洞中找;再隔2個(gè)洞,即到編號(hào)為5的洞中找;下次再隔3個(gè)洞;即到編號(hào)為9的洞中找;……。若狐貍找一圈,請(qǐng)為兔子指出所有不安全的洞號(hào)。程序中用a數(shù)組元素模擬一個(gè)洞,數(shù)組元素的下標(biāo)即為洞號(hào),數(shù)組元素中的值為0時(shí),表示該洞安全,為1時(shí)表示該洞不安全。若形參n的值為30時(shí),不安全的洞號(hào)是0、2、5、9、14、20、27。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN100voidfun(int*a,intn){inti,t;for(i=0;i<n;i++)/*********found*********/a[i]=【1】;i=0;/*********found*********/【2】=1;while(i【3】;}}main(){inta[N],i,n=30;fun(a,n);for(i=0;i<n;i++)if(a[i]==1)printf("不安全的洞號(hào)是:%d\n",i);}標(biāo)準(zhǔn)答案:(1)0(2)t(3)i+t知識(shí)點(diǎn)解析:首先為數(shù)組所有元素賦初值0,利用循環(huán)為符合條件的數(shù)組賦值為1,并計(jì)算下一個(gè)數(shù)據(jù)的下標(biāo)。設(shè)置一個(gè)變量存放間隔數(shù),每次循環(huán)間隔數(shù)加1。本次下標(biāo)加間隔數(shù)加1為下一個(gè)下標(biāo)。填空1:利用循環(huán)為數(shù)組所有元素賦值為0。填空2:變量t為間隔數(shù),在循環(huán)過程中每次加1,設(shè)定初始值為1。填空3:下一個(gè)數(shù)組下標(biāo)為本次的下標(biāo)加間隔數(shù)加1的值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,規(guī)定輸入的字符串全部為字母,fun函數(shù)的功能是:統(tǒng)計(jì)a所指字符串中每個(gè)字母在字符串中出現(xiàn)的次數(shù)(統(tǒng)計(jì)時(shí)不區(qū)分大小寫),并將出現(xiàn)次數(shù)最高的字母輸出(如果有多個(gè)相同,輸出一個(gè)即可)。例如對(duì)于字符串:dadbcdbabdb,對(duì)應(yīng)的輸出應(yīng)為:b或d。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<stdio.h>#include<string.h>voidfun(chara[]){intb[26],i,n,max;for(i=0;i<26;i++)/*********found*********/a[i]=0;n=strlen(a);for(i=0;i<n;i++)if(a[i]>=’a’&&a[i]<=’z’)/*********found*********/b[a[i]-’A’]++;elseif(a[i]>=’A’&&a[i]<=’z’)b[a[i]-’A’]++;max=0;for(i=1;i<26,i++)/*********found*********/if(b[max]>b[i])max=i;printi("出現(xiàn)次數(shù)最多的字符是:%c\n",max+’a’);}main(){chara[200];printf("請(qǐng)輸入一個(gè)待統(tǒng)計(jì)的字符串:");scanf("%s",a);fun(a);}標(biāo)準(zhǔn)答案:(1)b[i]=0;(2)b[a[i]-’a’]++;(3)if(b[max]<b[i])知識(shí)點(diǎn)解析:要統(tǒng)計(jì)字符串中每個(gè)字符在這個(gè)字符串中出現(xiàn)的次數(shù),可以設(shè)數(shù)組b中存放每個(gè)字符出現(xiàn)的次數(shù)b[0]存放字符a的次數(shù),b[1]存放字符b的次數(shù)……。統(tǒng)計(jì)之前為數(shù)組b各元素賦初值為0。然后依次取出字符串的每個(gè)字符進(jìn)行判斷,使對(duì)應(yīng)數(shù)組b加1。max初始值為0,與數(shù)組b中的每個(gè)元素進(jìn)行比較,如果小于,就把下標(biāo)進(jìn)行交換。(1)數(shù)組a存放的是字符串,數(shù)組b為整型數(shù)組存放的是每個(gè)字符的個(gè)數(shù),應(yīng)將數(shù)組b每個(gè)元素初始化為0。(2)小寫字母的ASCII碼減去’a’的ASCII即為相應(yīng)字母的下標(biāo)值,相應(yīng)下標(biāo)值的數(shù)組元素的值增加1。(3)最大值小于被比較數(shù)時(shí),把被比較數(shù)的下標(biāo)值賦給max,max中存放的總是當(dāng)前最大值。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編函數(shù)fun,其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成與其面值相同的長整型整數(shù)??烧{(diào)用strlen函數(shù)求字符串的長度。例如:在鍵盤輸入字符串2345210,函數(shù)返回長整型數(shù)2345210。注意:部分源程序存在PROG1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun指定的部位填入所編寫的若干語句。試題程序:#include<stdio.h>#include<string.h>voidNONO();longfun(char*s){}main(){chars[10];longr;printf("請(qǐng)輸入一個(gè)長度不超過9個(gè)字符的數(shù)字字符串:");gets(s);r=fun(s);printf("r=%ld\n",r),NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;longr;chars[10],*p;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(s,10,fp);p=strchr(s,’\n’);if(p)*p=0;r=fun(s);fprintf(wf,"%ld\n",r);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:longfun(char*s){inti,len;longsum=0;len=strlen(s);for(i=0;i<len;i++){sum=sum*10+*s-’0’;s++;}returnsum;}知識(shí)點(diǎn)解析:要把一個(gè)數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要用它的ASCII碼減去48即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將N×N矩陣主對(duì)角線元素中的值與反向?qū)蔷€對(duì)應(yīng)位置上元素中的值進(jìn)行交換。例如,若N=3,有下列矩陣:123456789交換后為:321456987請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#defineN4/**********found**********/voidfun(int___1___,intn){inti,s;/**********found**********/for(___2___;i++){s=t[i][i];t[i][i]=t[i][n-i-1];/**********found**********/t[i][n-1-i]=___3___;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10),i,j;pr2ntf("\nTheoriginalarray:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%d",t[i][j]);printf("\n");}fun(t,N);printf("\nTheresultis:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%d",t[i][j]);printf("\n");}}標(biāo)準(zhǔn)答案:(1)t[][N](2)i=0;i<n(3)s知識(shí)點(diǎn)解析:函數(shù)fun的功能是將NxN矩陣主對(duì)角線元素中的值與反向?qū)蔷€對(duì)應(yīng)位置上元素中的值進(jìn)行交換,在N×N的矩陣t中,i標(biāo)識(shí)行下標(biāo),對(duì)角線元素為t[i][i],反向?qū)窃貫閠[i][N-i-1]。第一空:在主函數(shù)中fun函數(shù)的調(diào)用形式是“fun(t,N);”,t是二維數(shù)組名,故fun函數(shù)的第一個(gè)參數(shù)為指針,因此,第一空處應(yīng)為“t[][N]”。第二空:fun函數(shù)的第二個(gè)參數(shù)n指明了矩陣的大小為n,對(duì)角線元素與反向?qū)蔷€元素有n個(gè),故循環(huán)有n次,因此,變量i從0開始,到n-1結(jié)束,因此,第一空處應(yīng)為“i=0;i<n”。第三空:循環(huán)體內(nèi)部是對(duì)角線元素與反向?qū)蔷€元素的交換,“s=t[i][i];”s保存了對(duì)角元素t[i][i],故,第三處應(yīng)填“s”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,給定程序MODI1.C中函數(shù)fun的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;反之,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(low<high),然后把m

溫馨提示

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

評(píng)論

0/150

提交評(píng)論