國家二級(C語言)機試模擬試卷43(共297題)_第1頁
國家二級(C語言)機試模擬試卷43(共297題)_第2頁
國家二級(C語言)機試模擬試卷43(共297題)_第3頁
國家二級(C語言)機試模擬試卷43(共297題)_第4頁
國家二級(C語言)機試模擬試卷43(共297題)_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)機試模擬試卷43(共9套)(共297題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、以下函數(shù)的功能是:計算a的n次方作為函數(shù)值返回。doublefun(doublea,intn){inti;doubles=1.0;for(i=1;i<=n;i++)S=________;returns;}為實現(xiàn)上述功能,函數(shù)中下劃線處應(yīng)填入的是()。A、S*iB、S*aC、s+i*iD、S+a*a標準答案:B知識點解析:s為a的(i-1)次方的結(jié)果,所以令s=s*a即可得到a的i次方。2、以下程序的輸出結(jié)果是()。#includemain(){inta=4,b=3,c=2,d=1;printf("%d",aA、1B、3C、2D、4標準答案:A知識點解析:條件表達式的格式為:"a?b:c",它的功能是:當(dāng)a為真時,表達式的值等于b的值;當(dāng)a為假時,表達式的值等于c的值。因為條件運算符的結(jié)合方向為“自右向左”。因此,當(dāng)表達式中嵌套使用條件表達式時,應(yīng)先計算右邊的條件表達式,再計算左邊的條件表達式。題中應(yīng)先計算“d3、設(shè)變量x為longint型并已正確賦值,以下表達式中能將x的百位上的數(shù)字提取出的是()。A、x/10%100B、x%10/100C、x%100/10D、x/100%10標準答案:D知識點解析:x/100的個位數(shù)是x的百位數(shù)上的數(shù)字,所以再進行除10取余運算即可得到該數(shù)字。4、下列程序的輸出結(jié)果是()。#include<stdio.h>main()voidfun(int*a,int*b){inta=1,b=2,*x=&a,*y=&b;{int*k;fun(x,y);k=a;a=b;b=k;}printf("%d%d",a,b);}A、21B、12C、編譯出錯D、00標準答案:B知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。分析題目可知fun函數(shù)的形參是指向?qū)崊⒌闹羔?,但main()函數(shù)中調(diào)用fun()函數(shù)時,實參是指針變量x、y(分別為指向a和b的指針),a、b的值在函數(shù)調(diào)用前后未發(fā)生變化,因而a=1,b=2,即輸出12。5、有以下程序:#include<stdio.h>main(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%(1,%c,%d,%c",a1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序運行后的輸出結(jié)果是:12,a,34,b。則正確的輸人格式是(以下代表空格,<CR>代表回車)()。A、12b<CR>B、12b<CR>C、12,a,34,h<CR>D、12a34h<CR>標準答案:D知識點解析:存輸入多個數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。所以應(yīng)按選項D的順序輸入數(shù)據(jù)。6、以下是while語句的基本形式:while(表達式){語句;)其中“表達式”()。A、必須是邏輯表達式B、必須是關(guān)系表達式C、必須是邏輯表達式或關(guān)系表達式D、可以是任意合法的表達式標準答案:D知識點解析:本題考查while表達式。while(表達式)中的表達式可以為任何合法的表達式,一般情況下為邏輯、條件表達式,需要注意的是,當(dāng)?shù)忍枺ㄒ唬┱`寫為賦值號(=)時不會報錯的,但是其值恒為1。7、以下程序段中的變量已正確定義for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");該程序段的輸出結(jié)果是()。A、*B、****C、**D、********標準答案:A知識點解析:考查循環(huán)嵌套。循環(huán)嵌套執(zhí)行次數(shù)為外層循環(huán)次數(shù)*內(nèi)層循環(huán)次數(shù)。但是本題中循環(huán)次數(shù)與輸出結(jié)果沒有關(guān)系,兩層循環(huán)之后只是執(zhí)行了一個空語句;,然后輸出一個′*′。故而答案選A)。8、以下數(shù)組定義中錯誤的是()。A、intx[2][3]={{1,2},{3,4},{5,6}};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};標準答案:A知識點解析:二維數(shù)組的第一維數(shù)據(jù)表示行數(shù),第二維數(shù)據(jù)表示列數(shù),所以x[2][3]中的數(shù)據(jù)應(yīng)為兩行三列,和定義內(nèi)容不符,選項A)錯誤,答案選A)。9、有以下程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“W”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fseanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);程序運行后的輸出結(jié)果是()。A、321B、12300C、lD、123標準答案:D知識點解析:程序首先將數(shù)組a[10]中的元素1、2、3分別寫入了文件d1.dat文件中,然后又將d1.dat文件中的數(shù)據(jù)123,整體寫入到了變量n的空間中,所以打印n時輸出的數(shù)據(jù)為123。10、運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,ij,k,s;scabf("%d",&nun);if(num>99)s=3;elseif(nurn>9)s=2:elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1標準答案:A知識點解析:本題考查if-else語句和switch語句。scanf函數(shù)通過鍵盤讀入Bum的值。因為num=321>99,所以s=3,i=3,j=2,k=1。因為s=3,所以執(zhí)行case3,輸出k,j,i的值,然后通過break結(jié)束程序。11、有以下程序:#includemain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ease0:switch(a[i]%2){ease0:a[i]++;break;ease1:a[i]--;}break;ease1:a[i]:0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A、3344B、2050C、3040D、0304標準答案:C知識點解析:main函數(shù)的主體是一個for循環(huán)語句,for循環(huán)中包含一個switch語句,如果判斷條件為0則進入第二個switch語句,如果判斷語句為1則執(zhí)行“a[i]=0”,最后將數(shù)組順序輸出。所以程序功能是將數(shù)組的偶數(shù)項設(shè)為0,奇數(shù)項如果為奇數(shù)則減1,為偶數(shù)則加1,最后得到結(jié)果。12、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是()。A、3B、6C、8D、12標準答案:B知識點解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即fun(8,6),8!=6,所以返回6。13、有以下程序:#includeintfun(){staticintx=1:x+=1:returnx;}main(){inti,s=1;for(i=1;i<=5;i++)s+:fun();prinff(“%d\n”,S);}程序運行后的輸出結(jié)果是()。A、120B、11C、6D、21標準答案:D知識點解析:fun函數(shù)中的變量x為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時仍可以保留上次調(diào)用時的值。也就是說,如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時有效,從第二次調(diào)用開始,x的定義相當(dāng)于不存在,直接使用上次x的值。fun函數(shù)被調(diào)用了5次,每次調(diào)用后的返回值累加到s上。5次調(diào)用后,x的值為6,s的值為1+2+3+4+5+6=21。因此D選項正確。14、已知“inta=6;”則執(zhí)行“a+=a-=a*a;”語句后,a的值為()。A、36B、0C、-24D、-60標準答案:D知識點解析:此題考查的是賦值表達式。執(zhí)行語句“a+=a-=a*a;”時,首先執(zhí)行“a=a-a*a=-30”,然后執(zhí)行“a=a+a=-60”。15、設(shè)有如下關(guān)系表:則下列操作正確的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=∪US標準答案:C知識點解析:T就是關(guān)系R中有的,同時S中也有的有序組(4、5、6),即交運算(∩)。16、以下敘述中正確的是()。A、C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行B、可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行C、C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行D、main的各種大小寫拼寫形式都可以作為主函數(shù)名,如MAIN,Main等標準答案:A知識點解析:C語言中的主函數(shù)只能是main()函數(shù),不能任意指定,所以B選項錯誤。C語言從主函數(shù)main()開始,到主函數(shù)main()結(jié)束,所以C選項錯誤。主函數(shù)必須寫成小寫的main,不能混淆大小寫,所以D選項錯誤。17、有以下程序#include<stdio.h>intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的運行結(jié)果是A、4B、34C、31D、32標準答案:C知識點解析:本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4、0,這樣對應(yīng)定義fun函數(shù)首部也有三種形式,這里采用了第一種形式,也就是行指針,這樣在fun函數(shù)對s[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。18、下列不合法的用戶標識符是()。A、j2_KEYB、DoubleC、4dD、_8_標準答案:C知識點解析:在C語言程序中,合法標識符的命名規(guī)則是:標識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須是字母或下劃線。19、下列關(guān)系表達式中,結(jié)果為“假”的是()。A、(3+4)>6B、(31=4)>2C、3<=4‖3D、(3<4)=1標準答案:B知識點解析:在一個表達式中,括號的優(yōu)先級高,先計算3!=4,為真即1,1>2為假。20、下列定義變量的語句中錯誤的是()。A、int_int;B、doubleint_;C、charFor;D、noatUS$:標準答案:D知識點解析:C語言規(guī)定,變量命名必須符合標識符的命名規(guī)則。D選項中包含了非法字符“$”,所以錯誤。標識符由字母、數(shù)字或下劃線組成,且第一個字符必須是大小寫英文字母或者下劃線,而不能是數(shù)字。大寫字符與小寫字符被認為是兩個不同的字符,所以For不是關(guān)鍵字for。21、有以下程序#include<stdio.h>voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結(jié)果是A、3,5,3,5B、3,5,5,3C、5,3,3,5D、5,3,5,3標準答案:A知識點解析:fun函數(shù)的功能是交換形式參數(shù)的值,即交換指針變量a和b的值,但是fun函數(shù)并不能夠交換實參的值,因此fun(p,q)不能交換p和q的值,所以第一個printf語句的輸出為3,5。第二個fun函數(shù)對x和y的地址進行了操作,同樣不能交換x和y的值,并不能影響p和q指針指向的數(shù)據(jù),因此第二個printf語句的輸出也是3,5。因此A選項正確。22、若有以下程序:#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}retums;}main(){inti=3,j=5,*P=&i,*q=&j,*r;r=f(P,q);printf("%d,%d,%d,%d,%d\n",i,j,*P,*q,*r);}則程序的輸出結(jié)果是()。A、3,5,5,3,5B、3,5,3,5,5C、5,3,5,3,5D、5,3,3,5,5標準答案:B知識點解析:在主函數(shù)中分別給整型變量i、j和指針型變量p、q賦初值,并聲明指針變量r;調(diào)用f函數(shù),并將實參變量p和q的值傳遞給形參變量s和t,而且f函數(shù)是指針型函數(shù),即函數(shù)的返回值是一個地址。在f函數(shù)中,如果條件成立。則將指針變量s和t互換,并且將指針s的地址返回主函數(shù)。最后輸出i,j,*p,*q,*r的值,即3,5,3,5,5。因此B選項正確。23、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結(jié)構(gòu)變量名*/{intj;c.b+=1;c.p+=2;}main(){inti;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序運行后的輸出結(jié)果是()。A、1,2B、2,4C、1,4D、2,3標準答案:A知識點解析:暫無解析24、對于以下函數(shù)聲明voidfun(intarray[4],int*ptr);以下敘述中正確的是()。A、array,ptr都是指針變量B、調(diào)用fun函數(shù)時,實參的值將逐一復(fù)制給arrayC、調(diào)用fun函數(shù)時,array按值傳送,ptr按地址傳送D、array是數(shù)組,ptr是指針,它們的性質(zhì)不同標準答案:A知識點解析:voidfun(intarmy[4],int*ptr);第一個參數(shù)雖然是數(shù)組類型,但是會退化為指針,并且形參數(shù)組的個數(shù)沒有用。第二個參數(shù)是指針,因此實際上二個形參都是指針,傳遞的都是地址,而不是值??芍x項B、c、D錯誤。答案為A選項。25、有以下程序:#include<stdio.h>voidfun(char*c,intd){*c=*c+l;d+=1;printf(’’%c,%c’’,*c,d);}main(){chara=’F’,b=’f’;fun(&b,a);printf(’’%c,%cha’’,a,b);}程序的輸出結(jié)果為()。A、g,GF,gB、g,FF,gC、G,fF,GD、f,gf,g標準答案:A知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。main函數(shù)中首先調(diào)用fun函數(shù),fun函數(shù)的功能是使字符c的AScⅡ碼值加1并輸出,使d加1并輸出對應(yīng)的字符;fun(&b,a)輸出”g,G”,但是由于fun函數(shù)的第一個參數(shù)進行的是地址傳遞,而第二個參數(shù)進行的是值傳遞,所以main函數(shù)中的printf函數(shù)輸出”F,g”。26、下列函數(shù)的功能是()。voidfun(char*x,char*y){while((*y=*x)!=’\0’){x++;y++;}}A、使指針y指向x所指字符串B、求x和y中長度較長的那個字符串的長度C、比較字符串x和yD、將x所指字符串賦給y所指字符串空間標準答案:D知識點解析:子函數(shù)中,while循環(huán)的差別式中先將x指向的字符內(nèi)容賦值給y所指的字符空間,再判斷其是否是字符串結(jié)束符,如果不是結(jié)束符,x和y指針分別指向各自空間的下一個字符,直到碰到字符串結(jié)束符為止。所以選項D正確。27、有以下程序#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}程序的輸出結(jié)果是A、0B、1C、9D、10標準答案:B知識點解析:本題考查宏定義,宏定義只是做個簡單的替換,執(zhí)行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m*k+m=15/2,a/=SQR(k+m)/SQR(k+m)的結(jié)果為1,選項B正確。28、在程序設(shè)計過程中的面向?qū)ο蠓椒ㄖ?,繼承屬性是指()。A、一組對象所具有的相似性質(zhì)B、類之間共享屬性和操作的機制C、各對象之間的共同性質(zhì)D、一個對象具有另一個對象的性質(zhì)標準答案:B知識點解析:面向?qū)ο蠓椒ㄖ械睦^承屬性是指不同類之間共享屬性和操作的機制;是指不同類之間的一種關(guān)聯(lián)性,繼承有屬性繼承和操作繼承。29、有以下程序#include<stdio.h>main(){char*s="12134";intk=0,a=0;while(s[k+1]){k++;if(k%2==0){a=a+(s[k]-’0’+1);continue;}a=a+(s[k]-’0’);}printf("k=%da=%d\n",k,a);}程序運行后的輸出結(jié)果是A、k=5a=15B、k=4a=12C、k=6a=11D、k=3a=14標準答案:B知識點解析:當(dāng)k=0時,執(zhí)行while一次,得到k=1,a為2;當(dāng)k=1時,執(zhí)行while一次,得到k=2,a為4;當(dāng)k=2時,執(zhí)行while一次,得到k=3,a為7;當(dāng)k=3時,執(zhí)行while一次,得到k=4,a為12;所以答案為B選項。30、有以下程序:#includeintfun(){staticintx=1;return2*x+1;}main(){inti,s=1;fun();s=fun();printf(’’%d\n’’,s);}程序運行后的輸出結(jié)果是()。A、7B、3C、0D、10標準答案:A知識點解析:靜態(tài)變量只在初次定義時賦初值,且子函數(shù)的靜態(tài)變量一直在內(nèi)存中,當(dāng)下次調(diào)用該函數(shù)時,靜態(tài)變量還具有上次調(diào)用結(jié)束時的值,且不會被再次賦值,所以本題第1次調(diào)用結(jié)束時x=3,當(dāng)?shù)?次調(diào)用時,x=2*3+1=7,選項A正確。31、以下關(guān)于return語句的敘述中不正確的是()。A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句C、如果一個函數(shù)有多個return語句,那么不論運行到哪一個return語句,該函數(shù)將結(jié)束D、沒有return語句的自定義函數(shù)在執(zhí)行完最后一條語句時返回到調(diào)用處標準答案:A知識點解析:return語句主要用于返回函數(shù)的值。在一個自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語句返回函數(shù)的值,也可以不包含return語句。32、有以下程序#include<stdio.h>main(){inta,b,c=241;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是A、2,1B、6,1C、6,0D、2,0標準答案:A知識點解析:程序執(zhí)行過程為:c=241,c/100=2,2%9=2,得a=2;"="優(yōu)先級低于"&&",非0值為真,0值為假,即(-1)為真,邏輯與表達式(-1)&&(-1)為真,得b=1。A選項正確。33、數(shù)據(jù)庫的故障恢復(fù)一般是由()來執(zhí)行恢復(fù)。A、電腦用戶B、數(shù)據(jù)庫恢復(fù)機制C、數(shù)據(jù)庫管理員D、系統(tǒng)普通用戶標準答案:C知識點解析:數(shù)據(jù)庫一旦發(fā)生故障,需要及時進行故障恢復(fù),并由數(shù)據(jù)庫管理員負責(zé)執(zhí)行故障恢復(fù)。34、設(shè)有定義:inta,b[10],*c=NULL,*p;,則以下語句錯誤的是A、p=a;B、p=b;C、p=c;D、p=&b[0];標準答案:A知識點解析:一個變量的地址是一個值,可以把這個地址值存放到另一個變量里保存。這種專門用來存放變量地址的變量,稱為"指針變量"。所以對指針變量賦值,值必須是地址值。a為整型變量不是地址值,不能賦值給指針變量,A選項語句錯誤。數(shù)組名為數(shù)組首地址,所以b為地址可以賦值給指針變量,B選項語句正確。c為指針,初始化為NULL,與p均為整型指針,可以將其賦值給p,C選項語句正確。&為取地址運算符,&b[0]為數(shù)組元素b[0]的地址,可以賦值給指針變量,D選項語句正確。故選擇A選項。35、以下是正確C語言實型常量的是A、.e-1B、e-1C、-1eD、0.1標準答案:D知識點解析:所謂常量是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。實型常量有兩種表示形式:十進制小數(shù)形式、指數(shù)形式。指數(shù)形式中e后面的指數(shù)必須是整數(shù),階碼標志e之前需要有數(shù)字,由此可知選項A,B,C錯誤。答案為D選項36、有以下程序#include<stdio.h>main(){intx=0x9;printf("%c\n",’A’+x);}程序運行后的輸出結(jié)果是A、IB、JC、KD、H標準答案:B知識點解析:printf("%c\n",’A’+x),x=0x9(16)轉(zhuǎn)為十進制x=9,,因此printf("%c\n",’A’+9),打印格式要求是%c,因此在字符A,按字母順序向后偏移9個位置,可得結(jié)果為J。故答案為B選項。37、有以下程序#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf("%d,%d\n",S(k+j+2),S(j+k+2));}程序運行后的輸出結(jié)果是A、11,11B、29,29C、26,29D、121,121標準答案:B知識點解析:#define命令是C語言中的一個宏定義命令,標識符一般使用大寫,為了區(qū)分其他標識符,它用來將一個標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。S(k+j+2)=k+j+2*k+j+2/k+j+2,經(jīng)計算可得29,S(j+k+2)=j+k+2*k+j+2/j+k+2,計算可得29。因此輸出為29,29。答案為B選項。38、有以下程序#include<stdio.h>intm1(intx,inty){if(x<=y)return2*x+1;elsereturny;}intm2(intx,inty){if(x<=y)return2*y+1;elsereturnx;}main(){inti,t1=10,t2=0;for(i=1;i<=4;i++){t1=m1(i,t1);t2=m2(i,t2);}printf("t1=%dt2=%d\n",t1,t2);}程序運行后的輸出結(jié)果是A、t1=9t2=4B、t1=4t2=9C、t1=9t2=9D、t1=1t2=4標準答案:A知識點解析:函數(shù)m1(x,y),若x<y,返回2*x+1,否則返回y,函數(shù)m2(x,y),若x<=y,返回2*y+1,否則返回x,for循環(huán)對t1=m1(i,t1),執(zhí)行4次,可知答案為9,t2=m2(i,t2),執(zhí)行4次,可知答案為4,因此答案為A選項。39、有以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的運行結(jié)果是()。A、a=2,b=2B、a=2,b=1C、a=1,b=1D、a=1,b=0標準答案:B知識點解析:case常量表達式只是起語句標號作用,并不是該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不在進行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層switch(y)時只執(zhí)行了a++,此時a的值為1。然后執(zhí)行外層case2語句的a++;b++;a為2,b為1。所以結(jié)果為B)。二、程序填空題(本題共1題,每題1.0分,共1分。)40、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個學(xué)生的數(shù)據(jù),即用新的學(xué)生數(shù)據(jù)覆蓋該學(xué)生原來的數(shù)據(jù),其他學(xué)生的數(shù)據(jù)不變。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/**********found**********/fp=fopen(_____1_____,"rb+");/**********found**********/fseek(_____2_____,一(long)sizeof(STU),SEEKEND);/**********found**********/fwrite(&n,sizeof(STU),1,_____3_____);fclose(fp);}main(){STUt[N]=f{10001,"MaChao",91,92,77),{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n\n");for(j=0;j標準答案:(1)filename(2)fp(3)fp知識點解析:第一空:“fp=fopen(__1__,"rb+");”補充fopen的參數(shù),fopen的調(diào)用形式是:fp=fopen(文件名,文件使用方式),因此第一空處應(yīng)填文件名“filename”。第二空:此處是補充fseek函數(shù)的參數(shù),fseek的調(diào)用形式是:fseek(fp,offset,position),其中第一個參數(shù)是文件型指針,故第二空處應(yīng)填文件型指針變量“fp”。第三空:fwrite的調(diào)用形式是(buffer,size,count,fb),最后一個參數(shù)是文件型指針,故第三空處應(yīng)填“fp”,將新的學(xué)生數(shù)據(jù)寫在最后一個學(xué)生數(shù)據(jù)位置。三、程序修改題(本題共1題,每題1.0分,共1分。)41、給定程序MODI1.C中函數(shù)fun的功能足:從n(形參)個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,若輸入8名學(xué)生的成績:80.5607290.59851.58864則低于平均分的學(xué)生人數(shù)為:4(平均分為:75.5625)。請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defiFieN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k標準答案:(1)t+=s[k];(2)*aver=ave;知識點解析:(1)根據(jù)題目要求求出平均分,首先要求總分,要把所有學(xué)生成績相加再求平均分,因此第一個標識下面的“t=s[k];”應(yīng)改為“t+=s[k];”。(2)根據(jù)題目可知,比較的結(jié)果中高于平均分的分數(shù)ave放入指針aver所指的地址單元中,而變量Ave沒有定義,因此第二標識下應(yīng)將“*aver=Ave;”改為“*aver=ave;”。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)42、編寫一個函數(shù),從num個字符串中找出最長的一個字符串,并通過形參指針max傳回該串地址。(注意:主函數(shù)中用料料作為結(jié)束輸入的標志。)注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char(*a)[81],intnum,char**max){}main(){charss[10][81],*ps;voidNONO();intn,2=0;printf("輸入若干個字符串.");gets(ss[i]);puts(ss[i]);while(!strcmp(ss[i],"****")==0){i++;gets(ss[i]);puts(Ss[i]);}n=i;fun(ss,n,&ps);printf("\rlmax=%s\n",ps);NONO();}voidNONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/charss[20][81],*ps;intn,2=0;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");fgets(ss[i],81,rf);while(!strncmp(ss[i],"****",4)==0){i++;fgets(ss[i],81,rf);}n=i;fun(ss,n,&ps);fprintf(wf,"%s",ps);fclose(rf);fclose(wf);}標準答案:inti,k=0,msxlen;/*k為a數(shù)組中最長串所在元素的下標,初始為0,maxlen為其串長*/msxlen=strlen(a[k]),for(i=1;imaxlen){msxlen:strlen(a[i]);k=i;}}*msx=a[k];知識點解析:(1)設(shè)置一個指針變量maxlen,使它的仞值為第一個字符串,再使其他字符串的長度與maxien的長度進行比較,若其他字符串的長度大于maxlen,則將其他字符串的首地址賦值給max。(2)最后返回長度最長的字符串的地址。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是()。A、可封裝B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的基本原則包括:①模塊化設(shè)計;②自頂向下原則;③逐步求精原則;④限制使用goto語句。可封裝是面向?qū)ο蟮脑O(shè)計思想。2、下面屬于黑盒測試方法的是()。A、基本路徑測試B、等價類劃分C、判定覆蓋測試D、語句覆蓋測試標準答案:B知識點解析:等價類劃分法是一種典型的、重要的黑盒測試方法,它將程序所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價類進行測試?;韭窂綔y試、判定覆蓋測試和語句覆蓋測試都屬于白盒測試。3、執(zhí)行以下語句段后,xy的值是()。int*pt,xy;xy=200;pt=&xy;xy=*pt+30;A、200B、170C、260D、230標準答案:D知識點解析:本題考查指針的運用。通過pt=&xy,將pt指向xy所占的內(nèi)存地址,而*pt是指針pt所指向內(nèi)存單元中的內(nèi)容,即200,所以最后xy的值為230。4、數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有3級模式,用來描述數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)構(gòu)和特性的是()。A、外模式B、概念模式C、內(nèi)模式D、存儲模式標準答案:B知識點解析:概念模式,也稱邏輯模式,是對數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶應(yīng)用公共數(shù)據(jù)視圖。它不涉及具體的硬件環(huán)境與平臺,與具體的軟件環(huán)境也無關(guān)。5、有以下程序#includemain(){inta=0,b=0;/*給a賦值a=10;b=20;給b賦值*/print]f("a+b=%d\n",a+b);/*輸出計算結(jié)果*/}程序運行后的輸出結(jié)果是()。A、a+b=0B、a+b=30C、a+b=10D、出錯標準答案:A知識點解析:注釋/*和*/之間的代碼不參與編譯,所以a、b的值仍為0。6、軟件詳細設(shè)計生產(chǎn)的圖如下:該圖是()。A、N-S圖B、PAD圖C、程序流程圖D、E-R圖標準答案:C知識點解析:N-S圖是用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設(shè)計的圖形表示工具,所以B不對。E-R圖是數(shù)據(jù)庫中的用于表示E-R模型的圖示工具,所以D不對。圖中所示表示方法是進行軟件詳細設(shè)計時使用的程序流程圖。7、設(shè)有一聯(lián)合體變量定義如下:uniondata{longa;floatb:intc;chard;};uniondatax;執(zhí)行下列語句后,正確的聯(lián)合體變量x的值是()。x.a(chǎn)=111111;x.b=2222;x.c=2.1546;x.d=’R’:A、111111B、2222C、2.1546D、R標準答案:D知識點解析:本題主要考查的知識點是聯(lián)合體的內(nèi)存使用。聯(lián)合體與結(jié)構(gòu)體的定義相同,其本質(zhì)區(qū)別就在于內(nèi)存使用方式的不同。聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間,各個成員分量全部是從低地址方向開始使用內(nèi)存單元;聯(lián)合體中的空間在某一時刻只能保持某一個成員的數(shù)據(jù),所以本題執(zhí)行完一系列賦值后,只得到最后執(zhí)行的字符’R’。8、有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++:switch(b%2){defaut:m++;case0:m++;break;}}printf(’’%d\n’’,m);}程序運行后的輸出結(jié)果是()。A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為“a=6”,所以“a%2=0”,因此第一個switch語句,執(zhí)行“case0”,將m加1,遇到break語句跳出switch語句,輸出m值為2。9、有以下程序#include<stdio.h>main(){inty===9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。A、741B、963C、852D、875421標準答案:C知識點解析:y的初值為9,所以在for循環(huán)中,當(dāng)y的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達式--y的值。因為自減符號在y的前面,所以首先y自減1,然后再輸出y的值,故輸出結(jié)果為852。10、下列程序的輸出結(jié)果是()。#includevoidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c:printf("%d,%d,%d",a,b,c);}A、0,1,2B、1,2,3C、1,1,3D、1,2,2標準答案:C知識點解析:本題考查if語句。先判斷if語句的條件是否成立,因為++a=1>0,所以條件成立,又因為是進行邏輯或運算,在已知其中一個運算對象為真的情況下,不必判斷另外一個運算對象的真假,即不進行++b操作,就可以直接得出整個表達式的值為邏輯1,執(zhí)行下面的++c。11、有以下程序段:#include<stdio.h>intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A、566.0B、55566C、7777D、566777標準答案:A知識點解析:它是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。其中的格式命令可以說明最大域?qū)挕T诎俜痔?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name為7777abc。12、有以下程序:#include<stdio.h>main(){FlLE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標準答案:B知識點解析:本題考查函數(shù)fwrite的使用。函數(shù)fwrite的調(diào)用形式為:intfwrite(char*pt,unsignedn,F(xiàn)ILE*fp):其功能是把pt所指向的n*size個字節(jié)輸出到fp所指文件中,第二次調(diào)用該函數(shù)時,從文件的第一個位置開始寫入,之前已有的會被覆蓋掉,如果第二次寫入的長度沒有第一次的長,則后面短出的部分保留原樣。13、設(shè)表的長度為20。則在最壞情況下,冒泡排序的比較次數(shù)為()。A、190B、20C、19D、90標準答案:A知識點解析:對長度為n的線性表排序,在最壞情況下,冒泡排序需要比較的次數(shù)為n(n-1)/2。本題中n=20,20×(20-1)/2=190。故本題答案為A選項。14、已知下列函數(shù)定義:fun(int*b,intc,intn,intdata){intk;for(k=0;kA、fun(*a,4,5,1);B、fun(&a,4,5,1);C、fun((int*)a,4,5,1);D、fun(a,4,5,1);標準答案:D知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。fun函數(shù)的調(diào)用形式為“fun(int*b,intm,intn,intdata)”,而調(diào)用數(shù)組時,用數(shù)組名表示一個指向數(shù)組第一個元素的指針,因此調(diào)用時的形式為:fun(a,4,5,1)。15、算法的時間復(fù)雜度是指()。A、算法的長度B、執(zhí)行算法所需要的時間C、算法中的指令條數(shù)D、算法執(zhí)行過程中所需要的基本運算次數(shù)標準答案:D知識點解析:算法的時間復(fù)雜度,是指執(zhí)行算法所需要的工作量,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。16、有以下程序:#includemain(){|while(getchar()!=’\n’);i}以下敘述中正確的是()。A、此while語句將無限循環(huán)B、getchar()不可以出現(xiàn)在while語句的條件表達式由C、當(dāng)執(zhí)行此while語句時,只有按回車鍵程序才能繼續(xù)執(zhí)行D、當(dāng)執(zhí)行此while語句時,按任意鍵程序就能繼續(xù)執(zhí)行標準答案:C知識點解析:根據(jù)程序順序執(zhí)行的次序,當(dāng)程序執(zhí)行到while這條語句,根據(jù)while語句中的結(jié)束循環(huán)的條件是“輸入回車鍵時,結(jié)束循環(huán)”,所以當(dāng)按回車鍵后,程序才執(zhí)行while語句的下一條語句。17、表達式:(int)((double)9/2)一9%2的值是()。A、0B、3C、4D、5標準答案:B知識點解析:先將整型數(shù)據(jù)9強制轉(zhuǎn)換成double型,然后除以2得到的結(jié)果與double型保持一致,即為4.5,然后將4.5強制轉(zhuǎn)換成整型數(shù)據(jù)4,然后計算9%2的值為1,最后計算4一1的值為3,所以選擇B選項。18、以下程序段完全正確的是A、int*p;scanf("%d",&p);B、int*p;scanf("%d",p);C、intk,*p=&k;scanf("%d",p);D、intk,*p;*p=&k;scanf("%d",p);標準答案:C知識點解析:A選項中錯在沒有對指針進行初始化,無效指針,并且在scanf("%d",&p)中無需再進行取地址操作;B選項中沒有對指針進行初始化,無效指針;D選項中語句*p=&k;的左端*p是指針所指內(nèi)存空間的值,&k是地址,應(yīng)為p=&k。因此C選項正確。19、如果需要打開一個已經(jīng)存在的非空文件“FILE”并進行修改,正確的語句是()。A、fp=fopen("FILE","r");B、fp=fopen("FILE","a+");C、fp=fopen("FILE","w+");D、fp=fopen("FILE","r+");標準答案:D知識點解析:本題考查打開文件函數(shù)fopen(),打開文件函數(shù)fopen()的調(diào)用形式為:fp=fopen(文件名,文件使用方式)。“文件使用方式”說明:方式“r”為以輸入方式打開一個文本文件;方式“a+”為以讀/寫方式打開一個文本文件,保留文件中原有的數(shù)據(jù);方式“W+”為以讀/寫方式建立一個新的文本文件;方式“r+”為以讀/寫方式打開一個文本文件。20、設(shè)a和b均為int型變量,且a=6,b=11,則能使值為3的表達式是()。A、b%(a%4)B、b%(a-a%5)C、b%a-a%5D、(b%a)-(a%4)標準答案:D知識點解析:表達式“a%b”表示的是求a除以b的余數(shù)。因此,選項A):(6%4)=2,11%2=1;選項B):(6—6%5)=5,11%5=1;選項C);11%6—6%5=4;選項D):(11%6)一(6%4)=3。21、C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。A、3B、4C、1D、2標準答案:C知識點解析:char類型數(shù)據(jù)占1個字節(jié)。22、有以下程序:#ilMude<stdio.h>main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}程序執(zhí)行后的輸出結(jié)果是()。A、5B、24C、32D、40標準答案:C知識點解析:本題的含義是在1-40的整數(shù)的范圍中,只有當(dāng)i的值能被5整除,且i+2的值能被8整除時,打印i的值,滿足這個條件的只有32,選擇C選項23、有以下程序:#includeintfun(chars[]){intn=0;while(*s<=’9’&&*s>=’0’){n=10*n+*s-’0’;s++;}return(n);}main(){chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};printf("%d\n",fun(s));}程序的運行結(jié)果是()。A、5B、9C、61D、61490標準答案:C知識點解析:在fun函數(shù)中,while循環(huán)的功能是:逐個取字符數(shù)組s中的字符,并判斷其是否是數(shù)字。若是則將其作為個位數(shù)字保存到變量n中,n的原數(shù)據(jù)的各個數(shù)位將相應(yīng)左移一個10進制位。當(dāng)指針s指向數(shù)組的第3位時,循環(huán)條件不成立,循環(huán)結(jié)束,返回n的值,輸出n的值為61。因此C選項正確。24、下列關(guān)于棧敘述正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、棧底元素最先被刪除標準答案:A知識點解析:棧是先進后出的數(shù)據(jù)結(jié)構(gòu),所以棧頂元素最后入棧卻最先被刪除。棧底元素最先入棧卻最后被刪除。所以選擇A。25、軟件測試的目的是()。A、評估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯誤C、改正程序中的錯誤D、發(fā)現(xiàn)程序中的錯誤標準答案:D知識點解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。不是為了評估軟件或改正錯誤。26、下列工具中,不屬于結(jié)構(gòu)化分析的常用工具的是()。A、數(shù)據(jù)流圖B、數(shù)據(jù)字典C、判定樹D、N-S圖標準答案:D知識點解析:結(jié)構(gòu)化分析的常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹和判定表。27、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A)。28、有以下程序:#includemain(){char*s[6]:{"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"},**p;inti;p=s:for(i=0;i<4;i++)printf("%S",p[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A、ABCDEFGHIJKLMNOPB、ABCDEFGHIJKLC、ABCDD、AEIM標準答案:A知識點解析:程序定義數(shù)組指針s以及指針的指針p,p指向數(shù)組指針s。p[i]為s的第i行字符串,因此程序輸出s的前四行字符串ABCDEFGHIJKLMNOP。29、以下關(guān)于宏的敘述中正確的是()。A、宏替換沒有數(shù)據(jù)類型限制B、宏定義必須位于源程序中所有語句之前C、宏名必須用大寫字母表示D、宏調(diào)用比函數(shù)調(diào)用耗費時間標準答案:A知識點解析:宏定義寫在函數(shù)的花括號外面,作用域為其后的程序,通常在文件的最開頭,所以B選項中的“宏定義必須位于源程序中所有語句之前”是錯誤的。宏名一般用大寫,但不是必須用大寫,所以C選項錯誤。宏展開不占運行時間,只占編譯時間,函數(shù)調(diào)用占運行時間(分配內(nèi)存、保留現(xiàn)場、值傳遞、返回值),所以D選項錯誤。30、C語言主要是借助以下哪種手段來實現(xiàn)程序模塊化()。A、定義函數(shù)B、定義常量和外部變量C、使用豐富的數(shù)據(jù)類型D、使用三種基本結(jié)構(gòu)語句標準答案:A知識點解析:暫無解析31、程序中已構(gòu)成如下圖所示的不帶頭節(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表節(jié)點,指針變量S總是作為指針指向鏈表的第一個節(jié)點。若有以下程序段:q=s;s=s->next;p=s;while(P->next)p=p->next;p->next=q;q->next=NULL;該程序段實現(xiàn)的功能是()。A、刪除尾節(jié)點B、尾節(jié)點成為首節(jié)點C、刪除首節(jié)點D、首節(jié)點成為尾節(jié)點標準答案:D知識點解析:本題考查鏈表的操作。本題中首先是s指向了它的下個節(jié)點,題目中說明了s總是指向鏈表的第一個節(jié)點,然后while循環(huán)找到鏈表的最后一個元素,接著最后一個元素指向了之前鏈表的首節(jié)點,之前的首節(jié)點又指向了空節(jié)點,所以本題實現(xiàn)的效果是使首節(jié)點成為尾節(jié)點。故選項D正確。32、以下選項中不屬于C語言標識符的是A、常量B、用戶標識符C、關(guān)鍵字D、預(yù)定義標識符標準答案:A知識點解析:常量是指在程序運行過程中其值不能被改變的量,如5、1.0、字符’a’等。C語言的標識符分為3類:關(guān)鍵字、預(yù)定義標識符和用戶標識符,常量不屬于標識符,所以選擇A。33、數(shù)據(jù)庫設(shè)計中反映用戶對數(shù)據(jù)要求的模式是()。A、外模式B、概念模式’C、內(nèi)模式D、設(shè)計模式標準答案:A知識點解析:數(shù)據(jù)庫模式的三種結(jié)構(gòu)是內(nèi)模式、外模式和概念模式。概念模式是指數(shù)據(jù)庫中數(shù)據(jù)邏輯結(jié)構(gòu)的描述,外模式是用戶的數(shù)據(jù)視圖,給每個用戶的局部數(shù)據(jù)描述,內(nèi)模式是指數(shù)據(jù)庫物理存儲結(jié)構(gòu)與存取方法。因此,答案是A。34、有以下程序#include<stdio.h>voidfunc(intn){staticintnum=1;num+=n;printf("%d",num);}main(){func(3);func(4);printf("\n");}程序運行后的輸出是A、45B、48C、35D、34標準答案:B知識點解析:本題中num為靜態(tài)局部變量,執(zhí)行fun(3)后,輸出4,執(zhí)行fun(4)后輸出8,所以選項B正確。35、若有以下程序:#includemain(){charx=’5’;x++;printf(’’%d,%d\n’’,x一’5’+20,x一’5’);}執(zhí)行后的輸出結(jié)果是()。A、21,1B、1,21C、20,1D、21,0標準答案:A知識點解析:C語言中字符是特殊的一類整數(shù),x++=’6’所以x一’5’=1。36、有以下程序#include<stdio.h>main(){charb[4][10];inti;for(i=0;i<4;i++)scanf("%s",b[i]);printf("%s%s%s%s\n",b[0],b[1],b[2],b[3]);}執(zhí)行時若輸入:Figflowerisred.<回車>則輸出結(jié)果是A、Figflowerisred.B、Figflowerisred.C、Figflowerisred.D、Figflowerisred.標準答案:A知識點解析:scanf()函數(shù)從輸入設(shè)備按照指定的類型輸入對應(yīng)類型的若干個數(shù)據(jù),遇到空格、制表符和回車時讀取結(jié)束??芍x到第一個空格時b[0]賦值結(jié)束,為Fig,從第一個有效字符讀到第二個空格時b[1]賦值結(jié)束,為flower,可知b[2]為is,b[3]為red.。printf()函數(shù)格式控制符%s輸出字符串,遇到"\0"結(jié)束輸出。輸出結(jié)果為"Figflowerisred.",A選項正確。37、以下針對全局變量的敘述錯誤的是A、全局變量的作用域是從定義位置開始至源文件結(jié)束B、全局變量是在函數(shù)外部任意位置上定義的變量C、用extern說明符可以限制全局變量的作用域D、全局變量的生存期貫穿于整個程序的運行期間標準答案:C知識點解析:在不同編譯單位內(nèi)用extern說明符來擴展全局變量的作用域,extern可以將全局變量作用域擴展到其他文件,而不是限制全局變量的作用域,答案為C選項。38、函數(shù)fgetc的功能是從指定文件中讀入一個字符,以下與其功能完全相同的函數(shù)是A、freadB、fscanfC、fgetsD、getc標準答案:D知識點解析:fgets讀取一個長度為(n-1)的字符串,fread按照指定的長度讀取數(shù)據(jù)項,對應(yīng)2進制的打開方式,fscanf按指定格式讀,對應(yīng)文本打開方式,getc從指定的文件讀入一個字符,即從fp所指向的文件中讀入一個字符賦給ch。因此答案為D選項。39、以下選項中合法的C語言常量是A、’C-STR’B、2014.1C、"\1.0D、2EK標準答案:B知識點解析:所謂常量是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,但使用單引號,錯誤,選項C,D,為實型常量中指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù),錯誤。故答案為B選項。40、有以下程序#include<stdio.h>#defineN4intfun(inta[][N]){inti,j,x=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==j)x+=a[N-1-j][i];returnx;}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,17}},y;y=fun(x);printf("%d\n",y);}程序運行后的輸出結(jié)果是A、34B、35C、28D、59標準答案:A知識點解析:fun函數(shù)求矩陣反對角線的元素之和。根據(jù)fun()函數(shù),當(dāng)數(shù)組的行列下標相等時,對該行反對角線上的元素求和。故結(jié)果為4+7+11+13=34,答案為A選項。二、程序填空題(本題共1題,每題1.0分,共1分。)41、人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號唯一。函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回數(shù)據(jù)中的編號為空串。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/*********found*********/【1】fun(STU*std,char*num){inti;STUa={"",9999,99,99);for(i=0;i<N;i++)/*********found*********/if(strcrnp(【2】,num)==0)/*********found*********/return(【3】);returna;}main(){STUstd[N]={{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15),{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};STUP;charn[10]="666666";P=fun(std,n);if(p.num[0]==0){printf("\nNotfound!\n");}else{printf("\nSucceed!\n");printf("%S%d-%d-%d\n",p.num,p.year,p.month,p.day);}}標準答案:(1)STU(2)std[i].num(3)std[i]知識點解析:本題考查:if條件表達式;比較字符串函數(shù)strcmp;指針變量的使用;函數(shù)定義及函數(shù)返回值。strcmp函數(shù)用來比較兩個字符數(shù)組的大小,其格式為:strcmp(字符數(shù)組1,字符數(shù)組2)。若字符數(shù)組1>字符數(shù)組2,函數(shù)值大于0(正數(shù));若字符數(shù)組1=字符數(shù)組2,函數(shù)值等于0;若字符數(shù)組1<字符數(shù)組2,函數(shù)值小于0(負數(shù))。填空1:根據(jù)函數(shù)fun的返回值類型可知,函數(shù)類型標識符應(yīng)該是結(jié)構(gòu)體類型的,所以填入STU。填空2:根據(jù)題目說明,找出指定編號人員,并將其數(shù)據(jù)返回。通過strcmp函數(shù)比較編號,若相同則函數(shù)值為0,所以填入std[i].num。填空3:由題目可知,假如編號對應(yīng),則返回其編號對應(yīng)數(shù)據(jù),所以填入數(shù)據(jù)std[i]。三、程序修改題(本題共1題,每題1.0分,共1分。)42、下列給定程序中函數(shù)fun的功能是:逐個比較p、q所指兩個字符串對應(yīng)位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的數(shù)組中,形成一個新的字符串。例如,若主函數(shù)中a字符串為“aBCDeFgH”,b字符串為“Abed”,則c中的字符串應(yīng)為“aBcdeFgH”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(char*P,char*q,char*c){/**********found**********/intk=1;/**********found**********/while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*P;if(*P)p++;if(*q)q++;k++:}}main(){chara[10]="aBCDeFgH",b[10]="ABed",e[80]={’\0’};fun(a,b,c);printf("Thestringa:");puts(a);prinff("Thestringb:”);puts(b);prinff("Theresult:’);puts(c);}標準答案:(1)intk=0;(2)while(*p||q)知識點解析:本題考查:變量初始化,需根據(jù)題意確定變量含義,然后對其進行初始化操作;while循環(huán)語句?!窘忸}思路】(1)變量k存放數(shù)組c的下標,因此應(yīng)初始化為0。(2)while循環(huán)語句的循環(huán)條件是判斷兩個字符串是否到達結(jié)尾。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)43、請編寫函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串:123412132,輸入字符為:1,則輸出:3。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineM81intfun(char*ss,charc){}main(){chara[M],ch;voidNONO();printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",a);fscanf(rf,"%s",b);ch=*b;fprintf(wf,"%c=%d\n",ch,fun(a,ch));}fclose(rf);fclose(wf);}標準答案:intcnt=0;char*p=ss;while(*p){if(*p==c)cnt++;p++;}returncnt;知識點解析:如果不是串尾就進入while循環(huán),在循環(huán)過程中利用if條件表達式判斷當(dāng)前字符是否為指定的字符,如果符合條件,那么對統(tǒng)計計數(shù)變量進行加1操作。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共36題,每題1.0分,共36分。)1、對于一個正常運行的C程序,下列敘述中正確的是()。A、程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束B、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束C、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束D、程序的執(zhí)行總是從程序中的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束標準答案:A知識點解析:一個C語言源程序無論包括了多少函數(shù),總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。2、閱讀以下程序#include<stdio.h>main(){IntCase;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&Case,&printF);printf("%d%t\n",Case,printF);}以下說法正確的是()。A、定義語句出錯,Case是關(guān)鍵字,不能用作用戶自定義標識符,printF不能用作用戶自定義標識符B、定義語句出錯,Int無法被識別C、定義語句無錯,scanf不能作為輸入函數(shù)使用D、定義語句無錯,printf不能輸出Case的值標準答案:B知識點解析:C語言是一種大小寫敏感的語言,因此Int應(yīng)為im,而CaseprintF則可以使用。3、讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);,其中buffer代表的是()。A、一個內(nèi)存塊的字節(jié)數(shù)B、一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)C、一個文件指針,指向待讀取的文件D、一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址標準答案:D知識點解析:fread(void*buffer,sizetsize,sizetcount,F(xiàn)ILE*stream);功能是從一個文件流中讀數(shù)據(jù),讀取count個元素,每個元素size字節(jié),如果調(diào)用成功返回count。buffer:用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size*count字節(jié);size:單個元素的大小,單位是字節(jié);count:元素的個數(shù),每個元素是size字節(jié);stream:輸入流。4、在面向?qū)ο蠓椒ㄖ?,不屬?對象"基本特點的是()。A、一致性B、分類性C、多態(tài)性D、標識唯一性標準答案:A知識點解析:對象有如下一些基本特點:標識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。所以選擇A)。5、若要實現(xiàn)total=1+2+3+4+5求和,以下程序段錯誤的是()。A、inti=1,total=1;while(i<5)i+=1;{total+=i;}B、inti=1,total=0;while(i<=5){total+=i;i+=1;}C、inti=0,total=0;while(i<5)total+=i;{i+=1;}D、inti=0,total-0;while(i<=5){total+=i;i+=1:}標準答案:A知識點解析:A項執(zhí)行過程為:i=l,total=1,判斷while循環(huán)條件1<5成立,total=1+1,i=2;判斷循環(huán)條件執(zhí)行函數(shù)體,直到i=4,total=1+1+2+3+4,i=5;i=5循環(huán)條件不成立,退出循環(huán),A項不能實現(xiàn)題目要求,錯誤。B項執(zhí)行過程:i=1,total=0,1<=5成立,total=0+1:1,i=2;直至i=5,total=1+2+3+4+5,i=6;i=6條件不成立,退出循環(huán),程序正確。C項執(zhí)行過程:i=0,total=0,0<5成立,i=1,total=1;直到i=5,total=1+2+3+4+5;i=5條件不成立,退出循環(huán),程序正確。D項執(zhí)行過程:i=0,total=0,0<=5成立,total=0,i=1;直到i=5,total=1+2+3+4+5,i=6;i=6條件不成立,退出循環(huán),程序正確。6、若x,i,j和k都是int型變量,則計算表達式x=(i=4j=16,k=32)后,x的值為()。A、4B、16C、3

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論