版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷76(共9套)(共27題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)#include#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/**********found**********/for(i=0;i<【1】;i++){len=strlen(ss[i]);if(i==0)*n=len;/*********found**********/if(len【2】*n){*n=len;k=i;}}/**********found**********/return(【3】);}main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};intn,k,i;printf("\nTheoriginalstringsare:\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)M(2)<(3)k知識(shí)點(diǎn)解析:第一空:循環(huán)的目的是在M個(gè)字符串中尋找長(zhǎng)度最短的字符串,因此,循環(huán)變量i從0變化到“M-1”,故第一空處應(yīng)為“M”。第二空:“*n”記錄最小字符串的長(zhǎng)度,由審題分析可知,字符串ss[i]長(zhǎng)度比min小,則交換最小長(zhǎng)度值和下標(biāo)位置,故第二空處應(yīng)為“<”。第三空:變量k記錄了最小字符串的下標(biāo)位置,函數(shù)的返回值是最短的字符串所在的行下標(biāo),故第三空處應(yīng)為“k”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將tt所指字符串中的小寫字母都改為對(duì)應(yīng)的大寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出"AB,CD"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includechar*fun(chartt[]){inti;for(i=0;tt[i];i++)/**********found***********/if((’a’<=tt[i])||(tt[i]<=’z’))/**********found***********/tt[i]+=32;return(tt);}main(){chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}標(biāo)準(zhǔn)答案:(1)if((’a’<=tt[i])&&(tt[i]<=’z’))(2)tt[i]一=32;知識(shí)點(diǎn)解析:(1)第一個(gè)錯(cuò)誤標(biāo)識(shí)下的if判斷語(yǔ)句中的邏輯有誤,應(yīng)該是與(&&)的關(guān)系,不是或(‖)的關(guān)系,所以if判斷語(yǔ)句改為“if((’a’<=tt[i])&&(tt[i]<=’z’))”。(2)第二個(gè)標(biāo)識(shí)下小寫字母轉(zhuǎn)換為大寫字母的轉(zhuǎn)換算法有誤,小寫轉(zhuǎn)換為大寫應(yīng)該是減去32,而不是加上32,所以“tt[i]+=32;”改為“tt[i]-=32;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過(guò)k傳回。例如,若輸入:17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#includevoidfun(intm,int*k,intxx[]){}main(){intm,n,zz[100];voidNONO();printf("\nPleaseenteranintegernumberbetween10and100:");scanf("%d",&n);fun(n,&m,zz);printf("\n\nThereare%dnon-primenumberslessthan%d:",m,n);for(n=0;n<m;n++)printf("\n%4d",zz[n]);NONO();}voidNONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/intm,n,zz[100];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");fscanf(rf,"%d",&n);fun(n,&m,zz);fprintf(wf,"%d\n%d\n"/m,n);for(n=0;n<m;n++)fprintf(wf,"%d\n",zz[n]);fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j;intt=0;//初始化數(shù)組個(gè)數(shù)for(i=2;i知識(shí)點(diǎn)解析:(1)根據(jù)求素?cái)?shù)的方法判斷數(shù)i是否為素?cái)?shù)。(2)把不是素?cái)?shù)的數(shù)留下來(lái),其方法是:如果該數(shù)是素?cái)?shù)則不處理;如果不是素?cái)?shù)則放到數(shù)組xx中,并且把數(shù)組的下標(biāo)加1,為下一個(gè)不是素?cái)?shù)的數(shù)放在數(shù)組中做準(zhǔn)備。(3)返回個(gè)數(shù),把xx數(shù)組中已經(jīng)寫入的數(shù)的個(gè)數(shù)返回即可,即把數(shù)組xx的最大下標(biāo)加1返回即可。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,通過(guò)定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。函數(shù)fun的功能是將該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>typedefstruct{intnum;charname[9];floatscore[3];}STU;voidshow(STUtt){inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%5.1f",tt.score[i]);printf("\n");}/*********found*********/voidmodify(【1】*ss,floata){inti;for(i=0;i<3;i++)/*********found*********/ss->*【2】=a;}main(){STUstd={l,"Zhanghua",76.5,78.0,82.0};floata;printf("\nTheoriginalnumbetandnameandscores:\n");show(std);printf("\nInputanumber:");scarlf("%f",&a);/*********found*********/modify(【3】,a);printf("\nAresultofmodifying:\n");show(std);}標(biāo)準(zhǔn)答案:(1)STU(2)score[i](3)&std知識(shí)點(diǎn)解析:本題是利用結(jié)構(gòu)體存儲(chǔ)學(xué)生記錄,對(duì)記錄進(jìn)行修改并由實(shí)參ss返回。填空1:實(shí)參ss是一個(gè)結(jié)構(gòu)型指針變量,所以應(yīng)填STU。填空2:該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a,所以應(yīng)填score[i]。填空3:函數(shù)的調(diào)用,由于函數(shù)定義時(shí)使用的指針結(jié)構(gòu)型變量,所以應(yīng)填&std。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過(guò)長(zhǎng)的剩余字符接在c所指的數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為"abcdefg",b所指字符串中的內(nèi)容為"1234"時(shí),c所指數(shù)組中的內(nèi)容應(yīng)為"a4b3c2dfg";而當(dāng)a所指字符串中的內(nèi)容為"1234",b所指字符串的內(nèi)容為"abcdefg"時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為"1g2t3e4dcba"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>voidfun(char*a,char*b,char*c){inti,j;charch;i=0;j=strlen(b)-1;/*********found*********/while(i>j){ch=b[i];b[i]=b[j];b[j]=ch;i++;j--;}while(*a||*b){/*********found*********/If(*a){*c=*a;c++;a++;}if(*b){*c=*b;c++;b++;}}*c=0;}main(){chars1[100],s2[100],t[200];printf("\nEnters1string:");scanf("%s",s1);printf("\nEnters2string:");scanf("%s",s2);fun(s1,s2,t);printf("\nTheresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)while(i<j)(2)if(*a)知識(shí)點(diǎn)解析:(1)由i和j定義的初始值可知,此處應(yīng)該判斷i是否小于j,所以應(yīng)改為while(i<j)。(2)此處將if錯(cuò)寫成If,這個(gè)錯(cuò)誤比較簡(jiǎn)單,但往往不容易發(fā)現(xiàn)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,函數(shù)fun的功能是:將a、b中的兩個(gè)正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=5241。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>voidfun(inta,intb,long*c){}main()(inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%1d\n",a,b,c);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*c){*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10),}知識(shí)點(diǎn)解析:本題是給出兩個(gè)兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個(gè)新數(shù)。取a十位數(shù)字的方法a/10,取a個(gè)位數(shù)字的方法a%10。同理可取出整數(shù)b的個(gè)位數(shù)和十位數(shù)。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫(kù)函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(char*s,inta,doublef){/**********found**********/___1___fp;charstr[100],str1[100],str2[100];inta1;doublef1;fp=fopen("filel.txt","w");fprintf(fp,"%s%d%f\n",s,a,f);/**********found**********/___2___;fP=fopen("file1.txt","r");/**********found**********/fscanf(___3___,"%s%s%s",str,str1,str2);fclose(fp);a1=atoi(str1);f1=atof(str2);printf("\nTheresult:\n\n%s%d%f\n",str,a1,f1);}main(){ohata[10]="Hello!";intb=12345;doublec=98.76;fun(a,b,c);}標(biāo)準(zhǔn)答案:(1)FILE*(2)fclose(fp)(3)fp知識(shí)點(diǎn)解析:第一空:“fp=fopen("file1.txt","w");”可知fp是文件型指針,故第一空處fp的定義應(yīng)為“FILE*”。第二空:第二處的后面一句是“fp=fopen("file1.txt","r");”再次打開(kāi)file1.txt,因此在第二次打開(kāi)file1.txt之前必須將文件關(guān)閉,故第二處是關(guān)閉文件,即“fclose(fp)”。第三空:fscanf的調(diào)用形式是:fscanf(fp,格式字符串,輸入列表),因此第三空處應(yīng)為“fp”,從文件中讀出字符串、整數(shù)、浮點(diǎn)數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#include#defineN10typedefstructss{charnum[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/**********found**********/t=(STU*)calloc(sizeof(STU),m)for(i=0;ib[j].S)j=i;/**********found**********/t(k)=b(j);b[j].s=0;}returnt;}outresult(STUa[],F(xiàn)ILE*pf){inti;for(i=0;i10){printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);}porder=fun(a,m);printf("*****THERESULT*****\n");printf("Thetop:\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)t=(STU*)calloc(sizeof(STU),m);(2)t[k]=b[j];知識(shí)點(diǎn)解析:(1)題干中要求結(jié)構(gòu)體STU類型的m個(gè)學(xué)生放在動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,“t=(STU*)calloe(sizeof(STU),m)”語(yǔ)句沒(méi)有使用分號(hào)“;”結(jié)束,因此需要在語(yǔ)句結(jié)尾處加分號(hào)。calloc函數(shù)是C語(yǔ)言的動(dòng)態(tài)分配函數(shù),分配存儲(chǔ)空間。(2)第二個(gè)標(biāo)識(shí)下是將b數(shù)組拷貝到t數(shù)組,在C語(yǔ)言中,數(shù)組元素的訪問(wèn)使用中括號(hào)“[]”而不是元括弧“()”,因此第二標(biāo)識(shí)下應(yīng)改成“t[k]=b[j];”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。例如,一維數(shù)組中的數(shù)據(jù)是:2223445666677899101010。刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#inclucte#defineN80intfun(inta[],intn){}main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10),i,n=20;voidNONO();printf("Theoriginaldata:\n");for(i=0;i標(biāo)準(zhǔn)答案:inti,t,j=0,*p=a,t=p[0];//設(shè)置臨時(shí)變量t初值指向第一數(shù)組值for(i=0;i<=n;i++)if(t==p[i])//當(dāng)臨時(shí)變量與數(shù)組中的某個(gè)值相同則跳出,比較下一個(gè)元素;else//如果臨時(shí)變量與數(shù)組中值不同,則對(duì)臨時(shí)變量重新賦值{a[j]=t;t=p[i];j++,}if(i>=n)a[j]=t;returnj;知識(shí)點(diǎn)解析:(1)首先,設(shè)置一個(gè)臨時(shí)變量,初值設(shè)置為一維數(shù)組的第一個(gè)元素。(2)然后,依次將數(shù)組的元素與臨時(shí)變量比較,如果相同,則繼續(xù)取數(shù)組下一個(gè)元素與臨時(shí)變量比較;如果不同,則將臨時(shí)變量的值賦值到數(shù)組的第一個(gè)元素,同時(shí)將此與臨時(shí)變量不同的數(shù)組元素賦值給臨時(shí)變量。(3)循環(huán)執(zhí)行,直到所有的數(shù)據(jù)處理完畢。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指的變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)小于N。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/*********found*********/for(i=0;i<【1】;i++){len=strlen(ss[i]);if(i==0)*n=len;/*********found*********/if(1en【2】*n){*n=len;k=i;}}/*********found*********/return(【3】);}main()(charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing");intn,k,i;printf("\nTheoriginalstringsare:\n"),for(i=0;i<M;i++)puts(ss[i]);k=fun(ss,&n);printf("\nThelengthofshorteststringis:%d\n",n);printf(”\nTheshorteststringis:%s\n",ss[k]);}標(biāo)準(zhǔn)答案:(1)M(2)<(3)k知識(shí)點(diǎn)解析:本題考查:for循環(huán)語(yǔ)句的循環(huán)條件;if語(yǔ)句條件表達(dá)式;return語(yǔ)句完成函數(shù)值的返回。填空1:題目指出ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,所以for循環(huán)語(yǔ)句的循環(huán)條件是i<M。填空2:要求求長(zhǎng)度最短的字符串,*n中存放的是已知字符串中長(zhǎng)度最短的字符串的長(zhǎng)度,將當(dāng)前字符串長(zhǎng)度與*n比較,若小于*n,則將該長(zhǎng)度值賦給*n,因此if語(yǔ)句的條件表達(dá)式為len<*n。填空3:將最短字符串的行下標(biāo)作為函數(shù)值返回,變量k存儲(chǔ)行下標(biāo)的值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:將tt所指字符串中的小寫字母全部改為對(duì)應(yīng)的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,則輸出“AB,CD”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>char*fun(chartt[]){inti;for(i=0;tt[i];i++)/*********found*********/if((tt[i]>=’a’)||(tt[i]<=’z’))/*********found*********/tt[i]+=32;return(tt);}main(){chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}標(biāo)準(zhǔn)答案:(1)if((tt[i]>=’a’)&&(tt[i]<=’z’))(2)tt[i]一=32;知識(shí)點(diǎn)解析:本題考查:if語(yǔ)句條件表達(dá)式;小寫字母轉(zhuǎn)換為大寫字母的方法。(1)分析本題可知,要判斷字符是否為小寫字母,即判斷其是否在‘a(chǎn)’~‘z’之間,所以這里需要進(jìn)行連續(xù)的比較,用&&。(2)從ASCII碼表中可以看出,小寫字母的ASCII碼值比對(duì)應(yīng)大寫字母的ASCII值大32。將字符串中的小寫字母改為大寫字母的方法是:從字符串第一個(gè)字符開(kāi)始,根據(jù)ASCII碼值判斷該字母是不是小寫字母,若是,則ASCII碼值減32。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過(guò)k返回。例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(intm,int*k,intXX[]){}voidmain(){intm,n,zz[100];system("CLS");printf("\nPleaseenteranintegernumberbetween10and100:");Scanf("%d",&n);fun(n,&m,zz);printf("\n\nThereare%dnon—primenumberslessthan%d:",m,n);for(n=0;n<m;n++)printf("\n%4d",zz[n]);}標(biāo)準(zhǔn)答案:Voidfun(intm,int:lck,intxx[]){inti,j,n=0;for(i=4;i<m;i++)/*找出大于1小于整數(shù)m的非素?cái)?shù)*/(for(j=2;j<i;j++)if(i%j==0)break,if(j<i)xx[n++]=i;}*k=n;/*返回非素?cái)?shù)的個(gè)數(shù)*/}知識(shí)點(diǎn)解析:本題考查:如何判斷非素?cái)?shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。題目要求將1~m之間的非素?cái)?shù)存入數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語(yǔ)句用來(lái)遍歷1~m之間的每個(gè)數(shù),判斷語(yǔ)句用來(lái)判斷該數(shù)是否為素?cái)?shù),若不是素?cái)?shù),則將其存入數(shù)組中。本題是考查一個(gè)數(shù)是否為素?cái)?shù)的簡(jiǎn)單延伸,只要掌握了判斷素?cái)?shù)的方法,問(wèn)題便能順利解決。判定一個(gè)數(shù)是否為素?cái)?shù),即判斷該數(shù)是否除了能被1和它本身整除外,不能被任何數(shù)整除。代碼實(shí)現(xiàn)如下:for(j=2;j<i;j++)if(i%j==0)/*如果余數(shù)為0,證明i不是素?cái)?shù)*/此語(yǔ)句需要熟記,很多判斷素?cái)?shù)的題目可通過(guò)此法解決。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、用篩選法可得到2~n(n<10000)之間的所有素?cái)?shù),方法是:首先從素?cái)?shù)2開(kāi)始,將所有2的倍數(shù)的數(shù)從數(shù)表中刪去(把數(shù)表中相應(yīng)位置的值置成0);接著從數(shù)表中找下一個(gè)非0數(shù),并從數(shù)表中刪去該數(shù)的所有倍數(shù);依此類推,直到所找的下一個(gè)數(shù)等于n為止。這樣會(huì)得到一個(gè)序列:2,3,5,7,11,13,17,19,23,……函數(shù)fun用篩選法找出所有小于等于n的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(intn){inta[10000],i,j,count=0;for(i=2;i<=n;i++)a[i]=i;i=2;while(i標(biāo)準(zhǔn)答案:(1)a[i](2)a[i](3)0知識(shí)點(diǎn)解析:fun函數(shù)的功能是用篩選法可得到2~n(n<10000)之間的所有素?cái)?shù)。第一空:循環(huán)“for(j=a[i]*2;j<=n;j+=【1】)”中,循環(huán)變量j的初始值從a[i]的2倍開(kāi)始,下一次進(jìn)入循環(huán)j就是a[i]的3倍,第一空處是補(bǔ)充j的變化情況,而j每次都增加一個(gè)a[i],即第一空處應(yīng)為“a[i]”。第二空:根據(jù)題意第二空處是從數(shù)表中找下一個(gè)非0數(shù),即在循環(huán)中比較a[i]是否為0,如果為0的話,i++指向后一個(gè)數(shù)表元素,故第二空處應(yīng)為“a[i]”。第三空:根據(jù)語(yǔ)句“{count++;printf(count%15?"%5d":"\n%5d",a[i]);}”可知在滿足條件之后計(jì)數(shù)變量count自增,并且輸出a[i],可知a[i]是一個(gè)素?cái)?shù),由審題分析可知,經(jīng)過(guò)篩選之后數(shù)表中非0的元素就是素?cái)?shù),故第三空處應(yīng)為“0”,即a[i]不為0的話就是素?cái)?shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過(guò)形參指針傳回主函數(shù)。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(inta,int*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2){/***********found***********/Y=l;for(j=2;j<=sqrt((double)i);j++)if(i%j==0)y=0;if(y==D{/***********found***********/d==a-i;for(j=2;j<=sqrt((double)d);j++)if(d%j==0)y=0;if(y==1){*b=i;*c=d;}}}}main(){inta,b,c;do{printf("\nInputa:");scanf("%d",&a);}while(a%2);fun(a,&b,&c);printf("\n\n%d=%d+%d\n",a,b,c);}標(biāo)準(zhǔn)答案:(1)y=1;(2)d=a—i;知識(shí)點(diǎn)解析:函數(shù)的功能是為一個(gè)偶數(shù)查找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù)。(1)第一標(biāo)識(shí)下“Y=1;”變量Y沒(méi)有定義,編譯時(shí)會(huì)提示出錯(cuò)。題中用標(biāo)志y區(qū)別i是否是素?cái)?shù),y=1是素?cái)?shù),y=0不是素?cái)?shù)。第一個(gè)標(biāo)識(shí)下當(dāng)i是素?cái)?shù)時(shí),y最后的值就是進(jìn)入循環(huán)結(jié)構(gòu)前的初始化值0,標(biāo)識(shí)該值不是素?cái)?shù),所以“Y=1;”應(yīng)該改為“y=1;”。(2)在語(yǔ)句“if(y==1)”中,應(yīng)該是判斷(a-i)是否是素?cái)?shù),即d應(yīng)賦值“a-i”而不是“d=a-i;”,所以第二個(gè)標(biāo)識(shí)下“d==a-i;”改為“d=a-i;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,它的功能是:計(jì)算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333。注意:要求n的值不大于100。部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#includedoublefun(intn){}NONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nInputn:");scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);NONO();}標(biāo)準(zhǔn)答案:inti;doublesum=0.0;for(i=1;i<=n;i++)if(i%5==0‖i%9==0)/*被5或9整除*/sum+=1.0/i;returnsum;知識(shí)點(diǎn)解析:程序功能是計(jì)算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。(1)首先,通過(guò)循環(huán),判斷小于等于n的每一個(gè)整數(shù)是否符合題干中的要求。其中的判斷條件能否被5或者被9整除為:i%5==0‖i%9=0。(2)然后求得符合(1)要求的數(shù)的倒數(shù)的累加和。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:有NxN矩陣,根據(jù)給定的m(m<=N)值,將每行元素中的值均右移m個(gè)位置,左邊置為0。例如,N=3,m=2,有下列矩陣123456789程序執(zhí)行結(jié)果為001004007請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN4voidfun(int(*t)[N],intm){inti,j;/**********found**********/for(i=0;i=0;j==)/**********found**********/t[i][j+___2___]=t[i][j];/**********found**********/for(j=0;j<___3___;j++)t[i][j]=0;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j,m;printf("\nTheoriginalarray:\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)i++(2)m(3)m知識(shí)點(diǎn)解析:函數(shù)fun的功能是將每行元素中的值均右移m個(gè)位置。第一空:題目要求對(duì)每行元素中的值均右移m個(gè)位置,故第一空處循環(huán)變量每次增1,共循環(huán)N次,完成對(duì)N行的移位操作,因此第一空處應(yīng)為“i++”。第二空:循環(huán)“for([j=N-1-m;j>=0;j--)”是進(jìn)行行元素中的值右移m個(gè)位置,即把t[i][j]元素放置在t[i][j+m]上,因此第二空應(yīng)為“m”。第三空:循環(huán)“for(j=0;j<__3__;j++)”是對(duì)空出來(lái)的位置補(bǔ)0,每行元素的前m位數(shù)據(jù)已經(jīng)移動(dòng)到后面,每行空處m個(gè)元素,因此第三空為“m”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算并輸出high以內(nèi)最大的10個(gè)素?cái)?shù)之和。high的值由主函數(shù)傳給fun函數(shù)。若high的值為:100,則函數(shù)的值為:732。請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includeintfun(inthigh){intsum=0fn=0,j,yes;/**********found**********/while((high>=2)&&(n<10){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/**********found**********/yes=0;break}if(yes){sum+=high;n++;)high--;}returnsum;}main(){printf("%dkn",fun(100));}標(biāo)準(zhǔn)答案:(1)while((2<=high)&&(n<10))(2)yes=0;break;知識(shí)點(diǎn)解析:函數(shù)的功能是計(jì)算并輸出high以內(nèi)最大的10個(gè)素?cái)?shù)之和。(1)C語(yǔ)言中左右括弧必須成對(duì)出現(xiàn),在第一個(gè)標(biāo)識(shí)下“while((hfigh>=2)&&(n<10)”中,顯然缺少一個(gè)右括弧,應(yīng)改為“while((2<=high)&&(n<10))”。(2)在判斷素?cái)?shù)的循環(huán)過(guò)程中,只要被判斷的數(shù)能被某數(shù)整除就不是素?cái)?shù),就會(huì)跳出判斷循環(huán),在C語(yǔ)言中使用break語(yǔ)句跳出循環(huán),并且C語(yǔ)言中的語(yǔ)句使用分號(hào)為結(jié)尾。所以“break”應(yīng)改為“break;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,它的功能是:利用以下所示的簡(jiǎn)單迭代方法求方程:cos(x)-x=0的一個(gè)實(shí)根。xn+1=cos(xn)迭代步驟如下:(1)取x1初值為0.0;(2)x0=x1,把x1的值賦給x0:(3)xl=cos(x0),求出一個(gè)新的x1;(4)若x0-x1的絕對(duì)值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2);(5)所求x1就是方程cos(x)-x=0的一個(gè)實(shí)根,作為函數(shù)值返回。程序?qū)⑤敵鼋Y(jié)果Root=0.739086。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#include#includedoublefun(){}main(){voidNONO();printf("Root=%f\n",fun());NONO();}voidNONO(){/(本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*wf;wf=fopen("out.dat","w");fprintf(wf,"%f\n",fun());fclose(wf);}標(biāo)準(zhǔn)答案:floatx0,x1=0.0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);returnx1;知識(shí)點(diǎn)解析:該程序功能是利用簡(jiǎn)單迭代方法求方程的一個(gè)實(shí)根。牛頓迭代法的求解思想是從一個(gè)初始值開(kāi)始,逐步逼近所求方程的根。其具體過(guò)程是:將初始值代入迭代公式,得到一個(gè)迭代輸出值。再次迭代時(shí),將上一次的迭代輸出值當(dāng)作本次的迭代輸入。不斷重復(fù)以上過(guò)程,直到滿足題目要求為止。牛頓迭代公式為:xn+1=xn-f(x)/f(x)。其求解過(guò)程在題干中已經(jīng)給出。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位相反的順序組成一個(gè)新數(shù),作為函數(shù)值返回。例如,輸入一個(gè)整數(shù)27638496,函數(shù)返回值為64862。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>unsignedlongfun(unsignedlongn){unsignedlongx=0;intt;while(n){t=n%10;/*********found*********/if(t%2==【1】)/*********found*********/x=【2】+t;/*********found*********/n=【3】;}returnx;}main(){unsignedlongn=一1;while(n>99999999||n<0){print:f("Pleaseinput(0<n<100000000):");scar1f("%ld",&n);}print:f("\nTheresult:is:%ld\n",fun(n));}標(biāo)準(zhǔn)答案:(1)0(2)10*x(3)n/10知識(shí)點(diǎn)解析:本題考查:已知某數(shù),如何求該數(shù)各個(gè)位數(shù)值;已知各個(gè)位數(shù)值,如何表示該數(shù);除法運(yùn)算。填空1:定義變量t用來(lái)存放某數(shù)的各個(gè)位數(shù)值,此處判斷t是否為偶數(shù),即對(duì)2求余結(jié)果是否為0。填空2:將t作為x的個(gè)位數(shù),原來(lái)x的各個(gè)位上升1位,即x=10*x+t。填空3:每循環(huán)一次,通過(guò)除法運(yùn)算,去掉數(shù)值最后一位。如果知道某數(shù)n的各個(gè)位數(shù)值,可以得到該數(shù)值n。例如,n的個(gè)位為a、十位為b、百位為c,那么n=c*100+b*10+a。如果知道數(shù)值n,可以采用求余和除法操作來(lái)表示其各個(gè)位數(shù)值,即n%10(取個(gè)位)、n/10(取十位)。讀者可以自己考慮一下,如果是三位數(shù),如何提取各個(gè)位數(shù)值?如果是四位數(shù)呢?二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(longs,long*t){intd;longs1=1;/*********found*********/t=0;while(s>0){d=s%10;/*********found*********/if(d%2==0){*t=d*s1+*t;s1*=10;}s/=10;}}voidmain(){longs,t;system("CLS");print("\nPleaseenters:");scanf("%id",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}標(biāo)準(zhǔn)答案:(1)*t=0;(2)if(d%21=0)或if(d%2==1)知識(shí)點(diǎn)解析:本題考查:指針型變量作為函數(shù)參數(shù);if語(yǔ)句條件表達(dá)式,結(jié)合奇偶數(shù)的表示方法來(lái)確定該表達(dá)式內(nèi)容。(1)由函數(shù)定義可知,變量t是指針變量,所以對(duì)t進(jìn)行賦初值0是不對(duì)的。因?yàn)閠指向的是存放新數(shù)的變量,所以此處應(yīng)給新數(shù)賦初值0,即*t=0;(2)變量d表示數(shù)s各位上的數(shù),此處的if條件應(yīng)為判斷d是否為奇數(shù)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫(kù)函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串的后面。例如,分別輸入下面兩個(gè)字符串:“FirstString一一”“SecondString”程序輸出:“FirstString一一SecondString”注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(charp1[],charp2[]){}voidmain(){chars1[80],s2[40],system("CLS");printf("Enters1ands2:、n");scanf("%S%s",s1,s2);printf("s1=%s\n",s1);printf("s2=%s\n",s2);printf("Invokefun(s1,s2):\n");fun(s1,s2);printf("Afterinvoking:\n");printf("%S\n",s1);}標(biāo)準(zhǔn)答案:voidfun(charp1[],charp2[]){inti,j;for(i=0;p1[i]!=’\0’;i++);/*求出的i為pl字符串的總長(zhǎng)度,包括結(jié)束標(biāo)記符*/for(j=0;p2[j]!=’\0’;j++)p1[i++]=p2[j];/*將p2字符串連在pl字符串后面*/p1[i]=’\0’;/*在字符串最后加上結(jié)束標(biāo)記符*/}知識(shí)點(diǎn)解析:本題考查:不使用字符串函數(shù)實(shí)現(xiàn)字符串連接操作。通過(guò)for循環(huán)語(yǔ)句來(lái)完成,最后需加上字符串結(jié)束標(biāo)識(shí)‘\0’。本題用兩個(gè)循環(huán)完成操作,第1個(gè)循環(huán)的作用是求出第1個(gè)字符串的長(zhǎng)度,即將i指到第1個(gè)字符串的末尾;第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第1個(gè)字符串的末尾。最后在第1個(gè)字符串的結(jié)尾加上字符串結(jié)束標(biāo)識(shí)‘\0’。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:從形參ss所指字符串?dāng)?shù)組中,刪除所有串長(zhǎng)超過(guò)k的字符串,函數(shù)返回剩余字符串的個(gè)數(shù)。SS所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/*********found*********/for(i=0;i<【1】;i++){len=strlen(ss[i]);/*********found*********/if(len<=【2】)/*********found*********/strcpy(ss[j++],【3】);}returnj;}voidmain(){charx[N][M]={"Beijing","Shanghai","Tianjin","Nanjing","Wuhan");inti,f;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");f=fun(x,7);printf("Thestringwitchlengthislessthanorequalto7:\n");for(i=0;i<f;i++)puts(x[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)N(2)k(3)ss[i]知識(shí)點(diǎn)解析:本題考查:for循環(huán)語(yǔ)句;if語(yǔ)句條件表達(dá)式;字符串復(fù)制函數(shù)strcpy的使用。填空1:for循環(huán)語(yǔ)句的作用是遍歷字符串?dāng)?shù)組中的每一個(gè)字符串,所以循環(huán)變量i的循環(huán)條件是i<N。填空2:題目要求刪除串長(zhǎng)度大于k的字符串,所以if條件語(yǔ)句的條件表達(dá)式是len<=k。填空3:通過(guò)字符串復(fù)制函數(shù)將串長(zhǎng)不大于k的字符串另存,并記錄個(gè)數(shù)。字符串復(fù)制函數(shù)strcpy,其格式為:strcpy(字符數(shù)組名1,字符數(shù)組名2)功能:把字符數(shù)組2中的字符串復(fù)制到字符數(shù)組1中。字符串結(jié)束標(biāo)識(shí)‘\0’也一同復(fù)制。字符數(shù)組名2,也可以是一個(gè)字符串常量,這時(shí)相當(dāng)于把一個(gè)字符串賦予一個(gè)字符數(shù)組。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:通過(guò)某種方式實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語(yǔ)句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。請(qǐng)改正程序中的錯(cuò)誤,使它得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(int*x,inty){intt;/*********found*********/t=x;x=y;/*********found*********/return(y);}voidmain(){inta=3,b=8;system("CLS");printf("%d%d\n",a,b);b=fun(&a,b);printf("%d%d\n",a,b);}標(biāo)準(zhǔn)答案:(1)t=*x;*x=y;(2)retum(t);或returnt;知識(shí)點(diǎn)解析:本題考查:指針型變量的使用;通過(guò)return語(yǔ)句完成函數(shù)值的返回。首先,定義變量t作為中間變量,然后進(jìn)行數(shù)據(jù)交換,注意參數(shù)x是指針變量,交換時(shí)應(yīng)使用*x,最后確定返回值;根據(jù)代碼b=fun(8a,b),可以知道返回值將賦給變量b,而b中應(yīng)存放交換前*x中的值,所以函數(shù)應(yīng)返回變量t。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,其功能是:找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#defineM4#include<stdio.h>intfun(inta[][M]){}voidmain(){intarr[2][M]={5,8,3,45,76,一4,12,82);printf("max=%d\n",fun(arr));}標(biāo)準(zhǔn)答案:intfun(inta[][M]){inti,j,max=a[0][0];/*對(duì)二維數(shù)組進(jìn)行遍歷*/for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])/*將最大值保存在max中*/max=a[i][j];returnmax;}知識(shí)點(diǎn)解析:本題考查:求數(shù)組的最大值,需運(yùn)用循環(huán)語(yǔ)句。因?yàn)閿?shù)組是二維數(shù)值,所以應(yīng)使用二層加for循環(huán)嵌套。使用for循環(huán)語(yǔ)句時(shí)需注意循環(huán)變量的取值范圍。此類求最大值或最小值的問(wèn)題,可以采用逐個(gè)比較的方式,對(duì)數(shù)組中所有元素遍歷一遍,從中找出數(shù)組最大值或最小值。首先定義變量max用來(lái)存放數(shù)組的第一個(gè)元素的值,然后利用for循環(huán)逐個(gè)找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該值賦予max,循環(huán)結(jié)束后max的值即為數(shù)組最大值,最后將該值返回。該類題目考查較多,需要掌握逐個(gè)比較的方法。對(duì)于m*n二維數(shù)組,如果采用逐個(gè)查找方法,代碼實(shí)現(xiàn)如下:for(i=0;i<m;i++)for(j=0;j<n;j++)國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:計(jì)算直到。若x=2.5,函數(shù)值為:1.917915。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<math.h>3doublefun(doublex)4{doublef,t;intn;5f=1.0+x;6/**********found**********/7t=__1___;8n=1;9do{10n++;11/**********found**********/12t*=(-1.0)*x/__2__;13f+=t;14}15/**********found**********/16while(__3__>=le-6);17returnf;18}19main()20{doublex,y;21x=2.5;22y=fun(x);23printf(’’\nTheresultis:\n’’);24printf(’’x=%-12.6fy=%-12.6f\n’’,x,y);25}標(biāo)準(zhǔn)答案:(1)x(2)n(3)fabs(t)知識(shí)點(diǎn)解析:函數(shù)fun的功能是計(jì)算級(jí)數(shù)和。第一空:“f=1.0+x;”f的初始化為級(jí)數(shù)的前兩項(xiàng)之和,dowhile循環(huán)從第三項(xiàng)x2/2開(kāi)始計(jì)算,第一空處是給t賦初值,t表示級(jí)數(shù)項(xiàng),“n++;t*=(-1.0)*x/__2__;”即第一次進(jìn)入do循環(huán)之后n的值為2,故t的初值應(yīng)該為x,第一空處應(yīng)為“x”。第二空:由審題分析可知,后一項(xiàng)乘以(-1)*x除以n,故第二空處應(yīng)為“n”。第三空:循環(huán)的終止條件是(x0/n!)的絕對(duì)值小于1e-6,即只要(xn/n!)大于等于le-6,do循環(huán)就執(zhí)行,故第三處應(yīng)為“fabs(t)”,fabs函數(shù)的功能是求絕對(duì)值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:逐個(gè)比較p、q所指兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值大或相等的字符依次存放到C所指數(shù)組中,形成一個(gè)新的字符串。例如,若主函數(shù)中a字符串為:aBCDeFgH,主函數(shù)中b字符串為:ABcd,則c中的字符串應(yīng)為:aBcdeFgH。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年08月西藏2024屆興業(yè)銀行拉薩分行校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月江西2024年中國(guó)銀行審計(jì)部江西分部校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024至2030年中國(guó)迷你手持按摩器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 河南警察學(xué)院《數(shù)字電子技術(shù)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年四通道遙控整機(jī)項(xiàng)目可行性研究報(bào)告
- 課題申報(bào)參考:1980年以來(lái)中國(guó)當(dāng)代室內(nèi)樂(lè)中的傳統(tǒng)文化元素及表達(dá)路徑研究
- 課題申報(bào)參考:“一帶一路”視域下中國(guó)繪畫在帖木兒王朝的傳播與影響研究(1370-1507)
- 課題申報(bào)參考:“雙碳”目標(biāo)下多模式儲(chǔ)能主體參與電力市場(chǎng)交易機(jī)制研究
- 2024至2030年高透明試管項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2031年中國(guó)便捷式擴(kuò)音機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 醫(yī)療器械考試題及答案
- 初三家長(zhǎng)會(huì)數(shù)學(xué)老師發(fā)言稿
- 投資計(jì)劃書模板計(jì)劃方案
- 責(zé)任護(hù)理組長(zhǎng)競(jìng)選
- 法人代持免責(zé)任協(xié)議書(2篇)
- 閘站監(jiān)理實(shí)施細(xì)則
- 2024-2025學(xué)年湖北省恩施土家族苗族自治州數(shù)學(xué)六上期末檢測(cè)試題含解析
- 2024年中國(guó)寵物殯葬服務(wù)行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢)
- 礦用電纜市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 失蹤老人歸家協(xié)議書模板
- 單位委托員工辦理水表業(yè)務(wù)委托書
評(píng)論
0/150
提交評(píng)論