版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家二級(C語言)機試模擬試卷7(共9套)(共340題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、數(shù)據(jù)庫技術的根本目標是()。A、數(shù)據(jù)存儲B、數(shù)據(jù)共享C、數(shù)據(jù)查詢D、數(shù)據(jù)管理標準答案:B知識點解析:數(shù)據(jù)庫是長期儲存在計算機內、有組織的、可共享的大量數(shù)據(jù)的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質內,是多種應用數(shù)據(jù)的集成,并可被各個應用程序所共享,所以數(shù)據(jù)庫技術的根本目標是解決數(shù)據(jù)共享問題。2、有以下程序:main(){intk=33;printf("%d,%o,%x",k,k,k);}執(zhí)行后的輸出結果是()。A、33,033,0x21B、33,033,21C、33,041,021D、33,41,21標準答案:D知識點解析:本題考查不同進制間的轉換。printf輸出函數(shù)中輸出變量的格式,由輸出格式符決定。題中“%o”格式符表示以八進制的形式輸出;“%x”格式符表示以十六進制的形式輸出?!?3”的八進制和十六進制分別是41和21。3、有以下程序:#includemain(){intx=1,y=0,a=0,b=0;switch(x){ease1:switch(y){ease0:a++;break;case1:b++;break;}ease2:a++;b++;break;ease3:a++;h++;}printf(“a=%d,b=%d\n”,a,b);}程序運行后的輸出結果是()。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ù)結束為止。所以執(zhí)行內層switch(y)時只執(zhí)行了a++,此時a的值為1。然后執(zhí)行外層case2語句的a+十;b++;a為2,b為1。所以結果為B。4、以下程序的輸出結果是()。#includemain(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++:switch(b%3){default:m++;case0:m++:break;}}printf(“%d\11”,m);}A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為a=8,a%4=0,所以執(zhí)行case0后面的語句,將m加1,遇到break語句跳出SWitch。5、若輸入bcdefgh、m、abcdefg,以下程序的輸出結果為()。#include#includemain(){inti;charstring[20],str[3][20];for(i=O;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);elsestrcpy(string,str[1]);iffstrcmp(str[2],string)>0)strcpy(string,str[2]);printf("/os",string);}A、bcdefghB、mC、abcdefgD、bcdefgh或abcdefg標準答案:B知識點解析:本題考查字符比較函數(shù)和字符復制函數(shù):strcmp(s1,s2);函數(shù)功能:比較字符串str1和str2比較的是字符的ASCII碼的值,當str1str2,返回值為正數(shù)。6、己知函數(shù)的調用形式:fread(buffer,size,count,fp);其中buffer代表的是()。A、一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)B、一個文件指針,指向要讀的文件C、一個指針,是指向的輸入數(shù)據(jù)放在內存中的起始位置D、一個存儲區(qū),存放要讀的數(shù)據(jù)項標準答案:C知識點解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調用形式為:ffead(buffer,size,count,fp))。ffead函數(shù)參數(shù)說明:“buffer”是一個指針,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。7、設變量x和y均已正確定義并賦值,以下if語句中,在編譯時將產生錯誤信息的是()。A、it(x++);B、if(x>y&&y!=0);C、ifi(x>y)x-elsey++;D、if(y<0){;}elsex++;標準答案:C知識點解析:選項C)中,if(x>y)后面的“x一”是一個表達式而不是一個語句,所以在編譯時會產生錯誤信息。8、若有定義intx,y;并已正確給變量賦值,則以下選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。A、(x-y<0||x-y>0)B、(x-y<0)C、(x-y>0)D、(x-y==0)標準答案:A知識點解析:條件表達式:x=表達式17表達式2:表達式3的含義是:先求解表達式1,若為非0(真),則求解表達式2,將表達式2的值賦給x。若表達式1的值為0(假),則求解表達式3,將表達式3的值賦給x。在本題中與表達式1:(x-y)等價的是(x-y<0||x-y>0)。9、數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的()。A、存儲結構B、物理結構C、邏輯結構D、線性結構標準答案:C知識點解析:數(shù)據(jù)的邏輯結構反映的是數(shù)據(jù)元素之間的邏輯關系,與使用的計算機無關。10、以下關于long、int和short類型數(shù)據(jù)占用內存大小的敘述中正確的是()。A、均占4個字節(jié)B、根據(jù)數(shù)據(jù)的大小來決定所占內存的字節(jié)數(shù)C、由用戶自己定義D、由C語言編譯系統(tǒng)決定標準答案:D知識點解析:不同的編譯系統(tǒng)或計算機系統(tǒng)對幾類整型數(shù)所占用的字節(jié)數(shù)有不同的規(guī)定。long、int和short類型數(shù)據(jù)占用內存大小是由選擇何種c編譯系統(tǒng)決定的。11、有以下程序:#include<stdio.h>main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若運行時輸入:246<回車>,則輸出結果為()。A、204B、200C、240D、246標準答案:A知識點解析:本題中輸入的3個數(shù)據(jù)2,4,6分別賦值給了x[0][0],x[1][0],x[2][0]。x[0][1]仍為初始時的0,所以打印輸出時的結果為A)選項。12、若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是()。A、a[p-a]B、*(&a[i])C、p[i]D、a[10]標準答案:D知識點解析:此題考查對一維數(shù)組的引用。對于已定義的數(shù)組a[M],數(shù)組元素的正確引用必須滿足下標小于M且為正整數(shù)。選項D中下標值出現(xiàn)溢出。13、有以下程序:#include<stdio.h>structS{intn;inta[20];};voidf(int*a,intn){int1;for(i=0;i<n-1;i++)a[i]+=i;}main(){inti;struetSs={10,{2,3,1,6,8,7,5,4,10,9}};f(s.a,s.n);for(i=0;i<s.n;i++)printf("%d,",s.a[i]);}程序運行后的輸出結果是()。A、2,3,1,6,8,7,5,4,10,9,B、3,4,2,7,9,8,6,5,11,10,C、2,4,3,9,12,12,11,11,18,9,D、1,2,3,6,8,7,5,4,10,9,標準答案:C知識點解析:題目中定義了一個結構體類型s,然后定義了一個結構體變量s并初始化,執(zhí)行f函數(shù)后,將s中元素a的每個元素都加上i,這里需要注意最后一個元素沒有加i,所以最終答案為C選項。14、若有代數(shù)式,(其中e僅代表自然對數(shù)的底數(shù),不是變量),則下列能夠正確表示該代數(shù)式的C語言表達式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))標準答案:C知識點解析:n和e的x冪次方,要分別調用C語言的數(shù)學庫函數(shù)doublepow(n,x)和doubleexp(x),因為這兩個函數(shù)的返回值都為double型,對兩者的和計算絕對值,調用庫函數(shù)doublefabs(pow(n,x)+exp(x)),求出和的絕對值,再調用開平方函數(shù)doublesqrt(fabs(pow(n,x)+exp(x))),這樣計算出的結果就是題干中表達式的值。15、有下列程序,其中%u表示按無符號整數(shù)輸出。main(){unsignedintx=0xFFFF;/*x的初值為十六進制數(shù)*/printf("%u\n",x);}程序運行后的輸出結果是()。A、-1B、65535C、32767D、0xFFFF標準答案:B知識點解析:“%u”格式符表示以十進制形式輸出無符號整形變量。本題中無符號整形變量x=0xFFFF表示的是十六進制無符號整型變量的最大值65535,所以最后輸出的結果為65535。16、以下敘述中正確的是()。A、C語言比其他語言高級B、C語言可以不用編譯就能被計算機識別執(zhí)行C、C語言以接近英語國家的自然語言和數(shù)學語言作為語言的表達形式D、C語言出現(xiàn)的最晚,具有其他語言的一切優(yōu)點標準答案:C知識點解析:此題考查的是C語言的基本特點。C語言是一種高級編程語言,但并不是比其他語言高級;C語言源程序必須經(jīng)過編譯生成目標文件才能被計算機識別執(zhí)行;C語言出現(xiàn)比較晚,它既有優(yōu)點也有缺點,而并不是具有其他一切語言的優(yōu)點。17、設有以下語句:inta=1,b=2,c;13=a^(b<<2);執(zhí)行后,c的值為()。A、7B、9C、8D、6標準答案:B知識點解析:b為2,二進制為00000010,執(zhí)行左移兩位操作后為00001000,然后與a00000001做異或操作結果為00001001,即十進制的9。18、若有定義和語句:inta,b;scanf("%d,%d,",&a,&b);以下選項中的輸入數(shù)據(jù),不能把值3賦給變量a、5賦給變量b的是()。A、3,5B、3,5C、3,5,D、3,5,4標準答案:A知識點解析:考查數(shù)據(jù)的輸入,printf("%d,",b=a+b);先計算b=a+b,得出b=1,再輸出b值。語句printf("%d\n",a=2*b);先計算a=2*b,得出a=2,再輸出a值。所以輸出結果為A)。19、已定義以下函數(shù):intfun(int*p){return*p;}fun函數(shù)的返回值是()。A、一個整數(shù)B、不確定的值C、形參P中存放的值D、形參P的地址值標準答案:A知識點解析:返回值為指針變量指向的數(shù)據(jù),該數(shù)據(jù)已被定義為整型。因此A選項正確。20、有以下程序:#include<stdio.h>voidfun(char*a,char*b){while(*a==’*’)a++;while(*b=*a){b++;a++;}}main(){char*s="*****a*b****".t[80];fun(s,t);puts(t);}程序的運行結果是()。A、a*b****B、a*bC、*****a*bD、ab標準答案:A知識點解析:注意兩個while,第一個是判斷相等“==”,第二個是賦值“=”,第一個循環(huán)終止的條件是指針指向的字符不為“*”,就會在遇到字符“a”時停止,第二個循環(huán)把a指針所指的內容依次賦給了b指針指向的內容,直到字符串結束時終止。所以結果就是字符串的后半段,選項A正確。21、以下敘述正確的是()。A、只能在循環(huán)體內和switch語句體內使用break語句B、contiune語句的作用是結束整個循環(huán)的執(zhí)行C、在循環(huán)體內使用break語句或continue語句的作用相同D、從多層循環(huán)嵌套中退出時,只能使用goto語句標準答案:A知識點解析:本題考查循環(huán)的4個知識點:①break語句可以出現(xiàn)在循環(huán)體內及switch語句體內,不能用于其他的語句;②continue語句的作用是結束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著轉去判定循環(huán)條件是否成立,從而確定下一次循環(huán)是否繼續(xù)執(zhí)行,也就是說執(zhí)行contiune語句不會使整個循環(huán)終止;③在循環(huán)體內使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌套中退出時,可以使用goto語句或者break語句。22、以下關于函數(shù)的敘述中正確的是()。A、函數(shù)形參的類型與返回值的類型無關B、函數(shù)必須要有形參C、函數(shù)必須要有返回值D、函數(shù)調用必須傳遞實參標準答案:A知識點解析:暫無解析23、以下選項中關于程序模塊化的敘述錯誤的是()。A、可采用自底向上、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序B、把程序分成若干相對獨立、功能單一的模塊,可便于重復使用這些模塊C、把程序分成若干相對獨立的模塊,可便于編碼和調試D、可采用自頂向下、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序標準答案:A知識點解析:程序模塊化思想中,可以采用自頂向下、逐步細化的方法。所以選項A中“自底向上”的說法是錯誤的。24、結構化程序所要求的基本結構不包括()。A、順序結構B、GOTO跳轉C、選擇(分支)結構D、重復(循環(huán))結構標準答案:B知識點解析:1966年Boehm和Jacopini證明了程序設計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。25、以下關于return語句的敘述中正確的是()。A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設置多條return語句C、定義成void類型的函數(shù)中可以有帶返回值的return語句D、沒有return語句的自定義函數(shù)在執(zhí)行結束時不能返回到調用處標準答案:B知識點解析:在函數(shù)中允許有多個return語句,但每次調用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。定義成void類型的函數(shù),不允許從該函數(shù)取得返回值,也不允許使用return語句,C選項描述錯誤。沒有return語句的函數(shù)在執(zhí)行到函數(shù)的最后一條語句后會自動返回到調用處,A、D選項描述錯誤。因此B選瑣正確。26、有如下程序:#includestruetpair{intfirst,second;};struetpairget_min_max(int*array,intlen){inti;struetpairres;res.first=array[0];res.second=array[0];for(i=1;i<len;i++){if(array[i]<res.first)res.first=array[i];if(array[i]>res.second)res.second=array[i]:}returnres;}main(){intarray[5]={9,1,3,4};struetpairmin_max=get_min_max(array,5)printf("min=%d,max=%d\n",min_max.first,min_max.second);}程序運行后的輸出結果是()。A、min=1,max=9B、min=0,max=9C、min=1,max=4D、min=0,max=4標準答案:B知識點解析:在對數(shù)組進行初始化時,如果在說明數(shù)組時給出了長度,但沒有給所有的元素賦予初始值,那么C語言將自動對余下的元素賦初值0,則array[5]={9,1,3,4,0}。程序的執(zhí)行過程為:調用函數(shù)get_min_max(array,5),將數(shù)組array的首地址傳入函數(shù),定義結構體變量res,并為其成員賦值。for循環(huán)查找數(shù)組array的最小值0,將其賦值給res的成員first,查找數(shù)組最大值9,并將其賦值給res的成員second。最后返回結構體變量res,則min_max=res。輸出min_max.first=0,min_max.second=9。27、為了建立如圖所示的存儲結構(即每個結點含兩個域,data是數(shù)據(jù)域,next是指向結點的指針域)則在()處填入的選項是()。strucflink{chardata;_______}node;A、structlink*next;B、linknext;C、link*next;D、strucflinknext;標準答案:A知識點解析:存儲結構用鏈式存儲。鏈式結構每個節(jié)點有個指針域,指針域指向下一個鏈式結構的節(jié)點,因此指針域的結構應該是該結構形式,因此應定義為structlink*next,故答案為A選項。struct是結構體的說明符,不能省略。28、以下敘述中正確的是()。A、int*p1;int**p2;int*p3;都是合法的定義指針變量的語句B、指針變量只能通過求地址運算符(&)來獲得地址值C、語句p=NULL;與p=\0;是等價的語句D、語句p=NULL;執(zhí)行后,指針p指向地址為0的存儲單元標準答案:A知識點解析:暫無解析29、有以下程序:#includemain(){chars[][6]={-.abed“,”abe”,“ab”};inti;for(i-0;i<3;i++)puts(s[i]);}}執(zhí)行后的輸出結果是()。A、abedabeabB、aaaC、abedbedcD、dabc標準答案:A知識點解析:程序初始化一個二維數(shù)組,其中每個元素都是一個字符數(shù)組,for循環(huán)中使用字符串輸出函數(shù)puts()打印二維數(shù)組中的每個元素,puts()接受字符數(shù)組名當做參數(shù),將該字符數(shù)組存儲的字符串打印出來,程序中s[0]存儲的字符串是“abcd”,s[1]存儲的字符串是“abc”,s[2]存儲的字符串是“ab”,所以程序輸出為:abcd、abc、ab,答案選A。30、有以下程序:#include<stdio.h>nlain(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("datadat","w+b");fwite(&a[0],sizeof(int),1,fp);for(i=1;i<6;i++){fseek(fp,0L,0);fwrite(&a[i],sizeof(int),1,fp);}fseek(fp,0L,0);fread(&k,sizeof(int),1,fp);felose(fp);printf("%d\n",k);}程序運行后的輸出結果是()。A、123456B、21C、6D、654321標準答案:C知識點解析:首先使用fopen函數(shù)以只寫方式打開文件datAdat,返回文件指針fp然后通過調用Write函數(shù),將起始地址為&a[0]、單位長度為sizeof(int)的一個元素寫入文件,即寫入a[0];接著for循環(huán)從數(shù)組a的第二個元素起,每次首先使用fseek()函數(shù)將指針fp定位到文件datAtdat的開始位置,寫入起始地址&a[i]、單位長度為sizeof(int)的一個元素,即寫入a[i];此時數(shù)組元素按照逆序寫入文件:654321,盾環(huán)結束后,使用fseek()函數(shù)再將指針fp定位到文件開始位置,調用fread()函數(shù),從fp所指位置讀取單化長度為sizeo(int)的一個元素到變量k中,即k=6,最后調用fclose()函數(shù)關閉文件,輸出k的值6,故答案為C。31、有以下程序#include<stdio.h>voidfun(char*p,intn){charb[6]="abcde";inti;for(i=0,p=b;i<n;i++)p[i]=b[i];}main(){chara[6]="ABCDE";fun(a,5);printf("%s\n",a);}程序運行后的輸出結果是A、abcdeB、ABCDEC、edcbaD、EDCBA標準答案:B知識點解析:本題考查數(shù)組名作為函數(shù)參數(shù),執(zhí)行f函數(shù)時,傳進去的a指針被重新指向了b,所以原本a數(shù)組的地址內容不變,所以輸出結果為ABCDE,答案為B選項。32、有以下程序#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){inti,a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=1;i<5;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結果是A、34756B、5745C、5795D、35745標準答案:B知識點解析:本題主要考查do…while語句,執(zhí)行fun函數(shù)后,a數(shù)組里面的元素變?yōu)?5745,輸出后四個字符,所以結果為5745,選項B正確。33、在C語言中,變量的隱含存儲類別是()。A、autoB、staticC、extemD、無存儲類別標準答案:A知識點解析:C語言中,變量的隱含存儲類型為auto。34、若輸入bcdefgh、m、abcdefg,以下程序的輸出結果為()。#include<stdio.h>#include<string.h>main(){inti;charstring[20],str[3][20];for(i=O;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);printf("%s",string);}A、bcdefghB、mC、abcdefgD、bcdefgh或abcdefg標準答案:B知識點解析:本題考查字符比較函數(shù)和字符復制函數(shù):strcmp(s1,s2);函數(shù)功能:比較字符串str1和str2比較的是字符的ASCII碼的值,當str1<str2時,返回值為負數(shù);當str1=str2時,返回0;當str1>str2,返回值為正數(shù)。35、下列敘述中錯誤的是A、算法的時間復雜度與算法所處理數(shù)據(jù)的存儲結構有直接關系B、算法的空間復雜度與算法所處理數(shù)據(jù)的存儲結構有直接關系C、算法的時間復雜度與空間復雜度有直接關系D、算法的時間復雜度與算法程序執(zhí)行的具體時間是不一致的標準答案:C知識點解析:算法的時間復雜度是指執(zhí)行算法所需要的計算工作量。數(shù)據(jù)的存儲結構直接決定數(shù)據(jù)輸入,而這會影響算法所執(zhí)行的基本運算次數(shù),A選項敘述正確。算法的空間復雜度是指執(zhí)行這個算法所需要的內存空間,其中包括輸入數(shù)據(jù)所占的存儲空間,B選項敘述正確。而算法的時間復雜度與空間復雜度沒有直接關系,故選擇C選項。算法程序執(zhí)行的具體時間受到所使用的計算機、程序設計語言以及算法實現(xiàn)過程中的許多細節(jié)所影響,而算法的時間復雜度與這些因素無關,所以是不一致的,D選項敘述正確。36、若有定義:doublea,b,c;能正確給a,b,c輸入數(shù)據(jù)的語句是A、scanf("%lf%lf%lf"&a,&b,&c)B、scanf("%f%f%f",&a,&b,&c);C、scanf("%lf%lf%lf",a,b,c);D、scanf("%lf%lf%lf",&a,&b,&c);標準答案:D知識點解析:%lf,%le是針對double的,如果僅用%f,輸入的數(shù)據(jù)可能不完全接收,數(shù)據(jù)的精度可能不足。%f主要針對float類型的變量的輸入,因此選項B錯誤。根據(jù)題目格式可知A,C錯誤。故答案為D選項。37、有以下程序#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);}程序的運行結果是A、a=2,b=2B、a=2,b=1C、a=1,b=1D、a=1,b=0標準答案:B知識點解析:C語言還提供了一種用于多分支選擇的switch語句,計算表達式的值。并逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執(zhí)行default后的語句。x=1;進入第一層switch,y=0;進入第二層switch,執(zhí)行a++;break;后a=1;在進入case2,(這里case1:沒有break,)執(zhí)行了a++,b++,由于存在break,則跳出switch,得到a=2,b=1,因此答案為B選項。左邊所有副作用都結束后,才對其右邊的子表達式進行運算,并以最右邊表達式值作為整個逗號表達式的值。1、后置自增運算:k++表示先運算,后自加。2、前置自增運算:++k表示先自加,后運算。因此,表達式x=0,x+10,x++的計算過程為首先賦值x=0,然后將x加10,但是并不對x進行賦值,最后計算x++,并,根據(jù)后置自增運算的計算結果,即為x=0.0。,故答案為C選項。38、下列敘述中正確的是A、算法復雜度是指算法控制結構的復雜程度B、算法復雜度是指設計算法的難度C、算法的時間復雜度是指設計算法的工作量D、算法的復雜度包括時間復雜度與空間復雜度標準答案:D知識點解析:算法的復雜度是指運行該算法所需要的計算機資源的多少,所需的資源越多,該算法的復雜度越高;反之,所需資源越少,復雜度越低。算法復雜度包括算法的時間復雜度和算法的空間復雜度,算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,算法空間復雜度指執(zhí)行這個算法所需要的內存空間。故選擇D選項39、若變量已正確定義并賦初值,以下合法的賦值語句是A、k=(m==n);B、k=-m-nC、k=int(m+n);D、k=m*n=1;標準答案:A知識點解析:m,n的變量類型未知,但題目中已定義和賦值。選項B的-m-n對于整型與浮點數(shù)類型可以這樣操作,但若變量為字符類型,則錯誤。選項C,編譯類型錯誤,強制轉化使用錯誤。選項D,m*n是常量,只能用作表達式的右值,不能作為左值。故答案為A選項。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的功能是:對形參SS所指字符串數(shù)組中的M個字符串按長度由短到長進行排序。SS所指字符串數(shù)組中共有M個字符串,且串長#include#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k,n[M];chart[N];for(i=0;in[j])___2____;if(k!=i){Strcpy(t,ss[i]);strcpy(ss[i],ss[k]);/**********found***********/strcpy(ss[k],____3_____);n[k]=n[i];}}}main(){charss[M][N]={“shanghai”,“guangzhou”,“beijing”,“tianjing”,“cchongqing”);inti;printf(“\nTheoriginalstringsare:\n”);for(i=0;i標準答案:(1)i+1(2)k=j(3)t知識點解析:函數(shù)fun的功能是用是選擇排序對M個字符串由短到長進行排序。第一空:由審題分析可知,外循環(huán)i=0時,內循環(huán)變量從i+1到M-1(下標從0開始),從M—1個字符串中再挑出一個最短的字符串,故第一空處應為“i+1”。第二空:k記錄最短字符串的下標,內循環(huán)開始前k賦初值i,內循環(huán)從剩下的M-i個字符串里面找最短的,比較k字符串和j字符串的長度大小,如果n[k]>n[j],則把j賦給k,即第二空處應為“k=j”。第三空:if(k!=i)說明找到了新的更短的字符串,那么把它和第i個字符串交換,因此第三空處應為“t”。三、程序修改題(本題共1題,每題1.0分,共1分。)41、下列給定程序中,函數(shù)fun的功能是:計算并輸出下列級數(shù)的前N項和SN,直到SN+1的值大于q為止,q的值通過形參傳入。例如,若q的值為50.0,則函數(shù)值應為49.394948。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>doublefun(doubleq){intn;doubles,t,n=2;s=2.0;while(s<=q){t=S;/**********found***********/s=s+(n+1)/n;n++;}printf(“n=%d\n”,n);/**********found***********/returnS;}main(){printf(“%f\n”,fun(50));}標準答案:(1)s=s+(double)(n+1)/n;(2)returnt:知識點解析:(1)在C語言中,整數(shù)除以整數(shù)得出的結果也是整數(shù),因此此處要轉換數(shù)據(jù)類型。(2)觀察while循環(huán),如果返回變量是8.那么返回的是大于q的值,而題中所要返回的是小于q的值,所以應該返回變量t。四、程序設計題(本題共1題,每題1.0分,共1分。)42、編寫函數(shù)fun,其功能是:求Fibonaeci數(shù)列中大于t的最小的數(shù),結果由函數(shù)返回。Fibonacei數(shù)列F(n)的定義為:F(0)=0,F(xiàn)(1)=1F(n)=F(n—1)+F(n一2)例如,當t=1000時,函數(shù)值為1597。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<math.h>#include<stdio.h>intfun(intt){}main(){intn;n=1000;printf(“n=%d,f=%d\n”,n,fun(n));}標準答案:intfun(intt){intf0=0,f1=1,f,do{/*根據(jù)Fibonacci數(shù)列的定義求數(shù)值*/f=f0+f1;f0=f1;f1=f;}while(f<t);/*如果求的數(shù)值小于t則繼續(xù)*/returnf;}知識點解析:根據(jù)所給數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結果是由兩個數(shù)列之和組成,所以可以在循環(huán)內部始終把f看成是前兩項之和,而f0始終代表第n一2項,f1代表第n—1項。退出循環(huán)時得到的數(shù)f,就是大于指定數(shù)的最小的數(shù)。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、有以下定義:structdata{inti;charc;doubled;}x;以下敘述中錯誤的是()。A、x的內存地址與x.i的內存地址相同B、structdata是一個類型名C、初始化時,可以對x的所有成員同時賦初值D、成員i、c和d占用的是同一個存儲空間標準答案:D知識點解析:變量i、c、d是結構體變量x中三個不同的成員,占用不同的存儲空間。2、設x和Y都是int類型,且x=1,y=2,則printf("%d%d",x,y,(x,y))的輸出結果是()。A、12B、122C、1,2D、輸出值不確定標準答案:A知識點解析:本題考查printf函數(shù)的格式和逗號表達式。printf函數(shù)在輸出時,是根據(jù)格式說明符的個數(shù)輸出的,如果函數(shù)中有多余的項將不予輸出;如果有輸出項少于格式說明符,則出錯,不能輸出正確的結果。本題中逗號表達式(x,y)只返回y的值。此時格式說明的個數(shù)是2,而輸出項的個數(shù)是3,因此printf函數(shù)只輸出前兩項。3、如果進棧序列為A,B,C,D,則可能的出棧序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意順序標準答案:B知識點解析:棧的操作原則為后進先出。選項B)中出棧順序可按“A進,B進,B出,C進,D進,D出,C出,A出”實現(xiàn)。4、若有“doublea;”,則正確的輸入語句是()。A、scanf("%1f",a);B、scanf("%f",&a);C、scanf("%1f",&a)D、scanf("%1e",a);標準答案:C知識點解析:scanf函數(shù)的調用形式是:scanf("格式字符串",輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。a是double型數(shù)據(jù),格式字符串可以用%1f,%f是浮點型。題中定義變量a為雙精度型變量,雙精度變量的格式符為“if”;變量的地址用取地址符“&”加變量名表示,變量a的地址為“&a”。5、有以下程序:#inc1udeintfun(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)));}程序運行后的輸出結果是()。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。6、C語言中允許用外部說明來指定變量、函數(shù)和其他標識符的特征,這里所說的外部指的是()。A、冠以關鍵字externB、位置在函數(shù)體外部C、作用范圍是全程的D、位置在函數(shù)的外部標準答案:D知識點解析:C語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標識符的特征。7、下面不屬于軟件測試實施步驟的是()。A、集成測試B、回歸測試C、確認測試D、單元測試標準答案:B知識點解析:軟件測試的過程一般按照四個步驟進行,即單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試,所以答案選擇B8、有兩個關系R、S如下:由關系R通過運算得到關系S,則所使用的運算為()。A、選擇B、投影C、插入D、連接標準答案:B知識點解析:投影運算是指對于關系內的域指定可引入新的運算。本題中S是在原有關系R的內部進行的,是由R中原有的那些域的列所組成的關系。所以選擇B。9、閱讀下面程序,程序執(zhí)行后的結果為()。#inc1ude"stdio.h"main(){char*str="abcdefghijklmnopq";while(*str++!=’e’);printf("%c\n",*str);}A、fB、aC、eD、q標準答案:A知識點解析:本題考查的是取內容運算符“*”和自加運算符“++”的優(yōu)先級問題。由于“++”的優(yōu)先級高于“*”,所以題干中“*str++!=’e’”,即“*(str++)!=’e’”,當str指向字符“’e"’時,while循環(huán)的條件不成立,但“str”已經(jīng)進行了自加指向了字符“’f’”,所以“*str”輸出字符“’f’”。10、以下不能用于描述算法的是()。A、文字敘述B、程序語句C、偽代碼和流程圖D、E-R圖標準答案:D知識點解析:算法的描述有偽代碼、流程圖、N-S結構圖等。E-R是實體聯(lián)系模型。所以選擇D選項。11、下列關于棧的敘述中,正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、棧底元素最先能被刪除標準答案:A知識點解析:棧是“先進后出”的數(shù)據(jù)結構,因此棧頂元素最后入棧卻最先被刪除,棧底元素最先入棧卻最后被刪除,答案為A。12、設有定義:inta=1,b=2,c=3;以下語句中執(zhí)行效果與其他一個不同的是()。A、if(a>b)c=a,a=b,b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a;a=b;b=c;D、if(a>b){e=a;a=b;b:c;}標準答案:C知識點解析:由于a小于b,所以所有選項中的條件都為假,c選項中實際執(zhí)行了a=b;b=c;兩個操作。而A、B、D選項由于條件不成立,所以什么也沒有做,所以選擇C選項。13、C語言中允許用外部說明來指定變量、函數(shù)和其他標識符的特征,這里所說的外部指的是()。A、冠以關鍵字externB、位置在函數(shù)體外部C、作用范圍是全程的D、位置在函數(shù)的外部標準答案:D知識點解析:C語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標識符的特征。14、以下數(shù)據(jù)結構中,屬于非線性數(shù)據(jù)結構的是()。A、棧B、線性表C、隊列D、二叉樹標準答案:D知識點解析:二叉樹屬于非線性結構。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作;隊列可看作是插入在一端進行,刪除在另一端進行的線性表。15、在C語言中,以下說法不正確的是()。A、在C程序中,整數(shù)和實數(shù)都能被準確無誤地表示出來B、在C程序中,任何一個變量名都代表存儲器中的一個位置C、靜態(tài)變量的生存期與整個程序的運行期相同D、C語言中,任何變量都必須先聲明才能進行引用標準答案:A知識點解析:此題考查C語言的基本概念。變量的實質就是在內存中占據(jù)一定的存儲單元,存儲單元里存放的是該變量的值,變量的值可以根據(jù)需要進行修改;整數(shù)在允許的范圍內可以準確的表示出來,但不可能表示無限度的實數(shù)。16、設有宏定義:#defineIsDIV(k,n)((k%n==1):1:0)且變量m已正確定義并賦值,則宏調用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是A、判斷m是否能被5和7整除B、判斷m被5和7整除是否都余2C、判斷m被5或者7整除是否余1D、判斷m是否能被5或者7整除標準答案:A知識點解析:暫無解析17、若有以下定義,則對數(shù)組元素的正確引用是()。inta[5],*p=a;A、*&a[5]B、(*a)+2C、*p+4D、*(a+2)標準答案:D知識點解析:本題考查通過指針引用數(shù)組元素。選項A)、C)沒有這種引用形式;選項B),(*a)+2與*a+2相同,表示第一個元素的值加2;選項D),*(a+2)引用數(shù)組的第3個元素。18、在下列關系運算中,不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的是()。A、并B、交C、投影D、除標準答案:B知識點解析:關系R與s經(jīng)交運算后所得到的關系是由那些既在R內又在S內的有序組所組成,記為R∩S,交運算不改變關系表中的屬性個數(shù)但能減少元組個數(shù)。19、在下列關系運算中,不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的是()。A、并B、交C、投影D、除標準答案:B知識點解析:關系R與S經(jīng)交運算后所得到的關系是由那些既在R內又在S內的有序組所組成,記為RnS,交運算不改變關系表中的屬性個數(shù)但能減少元組個數(shù)。20、有以下程序:#includevoidfun(char*c,intd){*c=*c+1;d+=1;printf("%c,%c",*c,d);}main(){chara=’F’,b=’f’;fun(&b,a);printf("%c,%c\n",a,b);)程序的輸出結果為()。A、g,GF,gB、g,F(xiàn)F,gC、G,fF,GD、f,gf,g標準答案:A知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。main函數(shù)中首先調用fun函數(shù),fun函數(shù)的功能是使字符c的ASCII碼值加1并輸出,使d加1并輸出對應的字符;fim(&b,a)輸出“g,G”,但是由于fun函數(shù)的第一個參數(shù)進行的是地址傳遞,而第二個參數(shù)進行的是值傳遞,所以main函數(shù)中的printf函數(shù)輸出“F,g”。21、下列關于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)結點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致B、各數(shù)據(jù)結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)C、進行插入與刪除時,不需要移動表中的元素D、以上說法均不正確標準答案:C知識點解析:一般來說,在線性表的鏈式存儲結構中,各數(shù)據(jù)結點的存儲序號是不連續(xù)的,并且各結點在存儲空間中的位置關系與邏輯關系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變結點的指針域即可。22、有以下程序:#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;im)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));}程序運行后的輸出結果是()。A、4B、34C、31D、32標準答案:C知識點解析:本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4、0,這樣對應定義fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對8[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。23、使用白盒測試方法時,設計測試用例應根據(jù)()。A、程序的內部邏輯B、程序的復雜結構C、程序的功能D、使用說明書標準答案:A知識點解析:白盒測試允許測試人員利用程序內部的邏輯結構及有關信息來設計或選擇測試用例,對程序所有的邏輯路徑進行測試。24、有以下結構體說明、變量定義和賦值語句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];則以下scanf函數(shù)調用語句有錯誤的是()。A、scanf(’’%s’’,s[0].name);B、scanf(’’%d’’,&s[0].age);C、scanf(’’%c’’,&(ps->SeX));D、scanf(’’%d’’,ps->age);標準答案:D知識點解析:本題考查結構體的相關知識,題目中需要輸入一個變量,scanf要求參數(shù)為指針,而D選項中ps->age為一個變量,不是指針,所以錯誤。25、若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。A、x=y==5;B、x=n%2.5;C、x+n=i;D、x=5=4+l:標準答案:A知識點解析:B選項中運算符“%”的前后必須為整數(shù),C選項中不能將變量賦給表達式x+n,D選項中不能將表達式4+1賦給常量5。26、下列敘述中正確的是()。A、數(shù)據(jù)庫系統(tǒng)可以解決數(shù)據(jù)冗余和數(shù)據(jù)獨立性問題,而文件系統(tǒng)不能B、數(shù)據(jù)庫系統(tǒng)能夠管理各種類型的文件,而文件系統(tǒng)只能管理程序文件C、數(shù)據(jù)庫系統(tǒng)可以管理龐大的數(shù)據(jù)量,而文件系統(tǒng)管理的數(shù)據(jù)量較少D、數(shù)據(jù)庫系統(tǒng)獨立性較差,而文件系統(tǒng)獨立性較好標準答案:A知識點解析:數(shù)據(jù)管理技術的發(fā)展經(jīng)歷了3個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。三者各自的特點如下表所示。數(shù)據(jù)庫系統(tǒng)可以解決數(shù)據(jù)冗余和數(shù)據(jù)獨立性問題,而文件系統(tǒng)不能。數(shù)據(jù)庫系統(tǒng)和文件系統(tǒng)的區(qū)別不僅在于管理的文件類型與數(shù)據(jù)量的多少。數(shù)據(jù)庫系統(tǒng)具有高度的物理獨立性和一定的邏輯獨立性,而文件系統(tǒng)獨立性較好。故本題答案為A選項。27、有以下程序:#include<stdio.h>nlain(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("datadat","w+b");fwite(&a[0],sizeof(int),1,fp);for(i=1;i<6;i++){fseek(fp,0L,0);fwrite(&a[i],sizeof(int),1,fp);}fseek(fp,0L,0);fread(&k,sizeof(int),1,fp);felose(fp);printf("%d\n",k);}程序運行后的輸出結果是()。A、123456B、21C、6D、654321標準答案:C知識點解析:首先使用fopen函數(shù)以只寫方式打開文件datAdat,返回文件指針fp然后通過調用Write函數(shù),將起始地址為&a[0]、單位長度為sizeof(int)的一個元素寫入文件,即寫入a[0];接著for循環(huán)從數(shù)組a的第二個元素起,每次首先使用fseek()函數(shù)將指針fp定位到文件datAtdat的開始位置,寫入起始地址&a[i]、單位長度為sizeof(int)的一個元素,即寫入a[i];此時數(shù)組元素按照逆序寫入文件:654321,盾環(huán)結束后,使用fseek()函數(shù)再將指針fp定位到文件開始位置,調用fread()函數(shù),從fp所指位置讀取單化長度為sizeo(int)的一個元素到變量k中,即k=6,最后調用fclose()函數(shù)關閉文件,輸出k的值6,故答案為C。28、有以下程序:#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i_nl;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf(’’%d’’,a[k]);printf(’’\n’’);}程序運行后的輸出結果是()。A、4321098765B、5678901234C、0987654321D、0987651234標準答案:B知識點解析:該程序首先給一維數(shù)組賦值,然后三次調用fun函數(shù),其中:fun(a,0,3);功能是將一維數(shù)組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a,0,9);功能是將一維數(shù)組中第1個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。29、下列不合法的用戶標識符是()。A、j2_KEYB、DoubleC、4dD、_8_標準答案:C知識點解析:在C語言程序中,合法標識符的命名規(guī)則是:標識符可以由字*、數(shù)字和下劃線組成,并且第一個字符必須是字*或下劃線。30、以下關于C語言數(shù)值常量的選項中,合法的是()。A、12.0Xa234.5e0B、028.5e一3一0xfC、.1774e1.50abcD、0x8A10,0003.e5標準答案:A知識點解析:C語言中八進制整型常量的開頭是數(shù)字0,十六進制整型常量的數(shù)字開頭是0x;但八進制不能有8或9,所以選項B錯,C選項中2e1.2中e后面的指數(shù)不是整數(shù),D選項中3.e5小數(shù)點后面缺少數(shù)字,另外。也不用用逗號作為千分位分隔符。31、有以下程序#include<stdio.h>intfun(chars[]){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序運行后的輸出結果是A、1B、6C、7D、0標準答案:C知識點解析:本題考查字符串作為函數(shù)參數(shù)以及while語句,本題中傳入字符串OABCDEF,然后執(zhí)行fun后,就得到了該字符串中字符的個數(shù),不包括結尾符,該字符串有7個字符,所以答案為C。32、有以下程序:#includemain(){unsignedchara=8,c;c=a>>3;printf(’’%d\n’’,c);}程序運行后的輸出結果是()。A、16B、1C、32D、0標準答案:B知識點解析:無符號整型變量a的值為8,二進制表示為00001000,右移3位后為00000001,即十進制的1,所以輸出1。33、若inta=3,b=2,c=1;則賦值表達式有誤的是()。A、a=(b+4)=1;B、a=b=c+3;C、a=(b=2)+cD、a=2+(b=c=3);標準答案:A知識點解析:不能給表達式賦值。34、若在程序中變量均已定義成int類型,且已賦大于1的值,則下列選項中能正確表示代數(shù)式的表達式是A、1.0/a/b/cB、1/(a*b*c)C、1.0/a*b*cD、1/a/b/(double)c標準答案:A知識點解析:由于abc均大于1,所以表達式1/abc小于1,需要用浮點類型表示。若要計算表達式值,需要使其自動轉化成浮點類型,所以A選項正確。B選項由于變量與常量均為整型,不會自動轉換為浮點類型,B選項錯誤。C選項表示表達式bc/a,故錯誤。D選項,由于算數(shù)運算法結合性自左向右,先計算1/a,結果為0,之后的計算無論是否轉換數(shù)據(jù)類型結果均為0,D選項錯誤。35、下列說法正確的是()。A、int(**def)[10];----def指向一個指針,該指針指向10個整型變量構成的數(shù)組B、int*(*gh[10]);---gh指向一個指針,該指針指向10個整型變量構成的數(shù)組C、int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構成的數(shù)組D、A,C均正確標準答案:D知識點解析:int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構成的數(shù)組,int(**def)[10];--def指向一個指針,該指針指向10個整型變量構成的數(shù)組。36、有如下程序#include<stdio.h>intconvert(int*data){return(*data)++;}main(){intdata=56;convert(&data);printf("%d,",data);data=convert(&data);printf("%d,\n",data);}程序運行后的輸出結果是A、56,57,B、57,58,C、57,57,D、55,57,標準答案:C知識點解析:convert函數(shù)每次都定義了一個指針*data,再將指針變量*data對應地址的值進行加一處理,再返回加1前的值作為結果,因此答案為C選項。37、有以下程序#include<stdio.h>intk=5;voidf(int*s){s=&k;*s=7;}main(){intm=3;f(&m);printf("%d,%d\n",m,k);}程序運行后的輸出結果是A、3,5B、7,7C、5,7D、3,7標準答案:D知識點解析:函數(shù)f()的功能是定義一個整型的指針變量s,指向全局變量k,然后修改s指向地址中的值為7,因此f()函數(shù)只是修改全局變量k的值為7,與main()函數(shù)中臨時變量m無關,因此最后輸出為3,7,答案為D選項。38、以下是正確C語言實型常量的是A、.e-1B、e-1C、-1eD、0.1標準答案:D知識點解析:所謂常量是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。實型常量有兩種表示形式:十進制小數(shù)形式、指數(shù)形式。指數(shù)形式中e后面的指數(shù)必須是整數(shù),階碼標志e之前需要有數(shù)字,由此可知選項A,B,C錯誤。答案為D選項39、若有定義:doublea,b,c;能正確給a,b,c輸入數(shù)據(jù)的語句是A、scanf("%lf%lf%lf"&a,&b,&c)B、scanf("%f%f%f",&a,&b,&c);C、scanf("%lf%lf%lf",a,b,c);D、scanf("%lf%lf%lf",&a,&b,&c);標準答案:D知識點解析:%lf,%le是針對double的,如果僅用%f,輸入的數(shù)據(jù)可能不完全接收,數(shù)據(jù)的精度可能不足。%f主要針對float類型的變量的輸入,因此選項B錯誤。根據(jù)題目格式可知A,C錯誤。故答案為D選項。40、有以下程序:#include<stdio.h>unsignedfun(unsignednum){unsignedk=1:do{k*=num%10;num/=10;}while(num);returnk;}main(){unsignedn=26;printf("%d\n",fun(n));}程序運行后的輸出結果是()。A、12B、10C、16D、8標準答案:A知識點解析:程序首先執(zhí)行main函數(shù),執(zhí)行printf(”%d\n”,fun(n));即輸出表達式fun(6)的值,為了計算該表達式,需要調用函數(shù)func。此時main將n中的26作為實參傳遞給fun的num,即num值為26,接著執(zhí)行d0—while語句。第1次循環(huán).執(zhí)行k*=num%10,即k=k*(num%10)=1*(26%10)=6;執(zhí)行num/=10.即num=num/10=26/10=2;while后面循環(huán)條件為num,此時num為2,是非0值,即表示循環(huán)條件成立,繼續(xù)執(zhí)行循環(huán)體。此時k為6,num為2,執(zhí)行d0—while中的語句后,k為12,num為0。由于while后面循環(huán)條件為num,此時num為0,表示循環(huán)條件不成立,結束循環(huán),執(zhí)行returnk,即返回至main函數(shù)中的被調用處,執(zhí)行main函數(shù),執(zhí)行printf語句,輸出結果為12。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),作為函數(shù)值返回;并將大于平均值的數(shù)放在形參Y所指數(shù)組中,在主函數(shù)中輸出。例如,有10個正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:4632404548請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#include#include#defineN10doublefun(doublex[],double*y){inti,j;doubleav;/**********found**********/av=____1____;/**********found**********/for(2=0;iav)y[____3____]=x[i];y[j]=一1;returnav;}main(){inti;doublex[N],y[N];for(i=0;i=0;i++)printf("%5.1f",y[i]);printf("\n");}標準答案:(1)0(2)x[i]/N(3)j++知識點解析:第一空:“returnav;”可知變量av保存了平均值,故第一空處av初始化應為0,即第一空處應填“0”。第二空:“for(i=0;iav)y[__3__]=x[i];”是將x[i]保存在y所指的數(shù)組中,i是循環(huán)變量,i初始化為0,故y[]的計數(shù)變量為j,故第三空處應為“j++”。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODI1.C是建立一個帶頭結點的單向鏈表,并用隨機函數(shù)為各結點賦值。函數(shù)fun的功能是將單向鏈表結點(不包括頭結點)數(shù)據(jù)域為偶數(shù)的值累加起來,并且作為函數(shù)值返回。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2#include<stdlib.h>3typedefstructaa4{intdata;structaa*next;}NODE;5intfun(NODE*h)6{intsum=0;7NODE*p;8/**********found**********/9p=h;10while(p)11{if(p->data%2==0)12sum+=p->data;13/**********found**********/14p=h->next;15}16returnsum;17}18NODE*creatlink(intn)19(NODE*h,*p,*s;20inti;21h=p=(NODE*)malloc(sizeof(NODE));22for(i=1;i<=n;i++)23{s=(NODE*)malloc(sizeof(NODE));24s->data=rand()%16;25s->next=p->next;26p->next=s;27p=p->next;28}29p->next=NULL;30returnh;31}32outlink(NODE*h,F(xiàn)ILE*pf)33{NODE*p;34p=h->next;35fprintf(Pf,’’in\nTHELIST:in\nHEAD’’);36while(p)37{fprintf(pf,’’->%d’’,p->data);p=p->next;}38fprintf(pf,’’in’’);39}40outresult(ints,F(xiàn)ILE*pf)41{fprintf(pf,’’\nThesumofevennumbers:%d\n’’,s);}42main()43{NODE*head;inteven;44head=creatlink(12);45head->data=9000;46outlink(head,stdout);47even=fun(head);48printf(’’\nTheresult:in’’);outresult(even,stdout);49}標準答案:(1)p=h->next;(2)p=p->next;知識點解析:(1)根據(jù)題干中求得除了頭結點之外的結點數(shù)據(jù)域中的數(shù)據(jù)值,頭指針h,工作指針p指向頭結點的下一個結點,所以第一個標識下的“p=h;”指向頭結點應該改為指向下一個結點“p=h->next;”。(2)工作指針p,利用p實現(xiàn)對鏈表的遍歷,p表示指向鏈表的當前結點,所以指向下一個結點應該是“p=p->next;”。四、程序設計題(本題共1題,每題1.0分,共1分。)43、編寫函數(shù)fun,它的功能是計算:s作為函數(shù)值返回。在C語言中可調用log(n)函數(shù)求ln(n)。log函數(shù)的引用說明是:doublelog(doublex)。例如,若m的值為:20,fun函數(shù)值為:6.506583。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<math.h>2#include<stdio.h>3doublefun(intm)4{56}7main()8{9voidNONO();10printf(’’%f\n’’,fun(20));11NONO();12}13voidNONO()14{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/15FILE*fp,*wf;16inti,n;17doubles;18fp=fopen(’’in.dat’’,’’r’’);19wf=fopen(’’out.dat’’,’’w’’);20for(i=0;i<10;i++){21fscanf(fp,’’%d’’,&n);22s=fun(n);23fprintf(wf,’’%f\n’’,s);24}25fclose(fp);26fclose(wf);27}標準答案:1doubles=0.0;2inti;3for(i=1;i<=m;i++)s+=log(1.0*i);4s=sqrt(s);5returns;知識點解析:(1)調用log(n)函數(shù)求ln(n)。(2)對調用log(n)進行累加求和,求得根號里的內容。(3)最后調用C語言的庫函數(shù)sqrt計算(2)中求得值的平方根。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、以下選項中可用做C程序合法實數(shù)的是()。A、3.0e0.2B、.1eoC、E9D、9.12E標準答案:B知識點解析:A選項中e后面的指數(shù)必須為整數(shù),所以錯誤。C語言規(guī)定,E之前必須要有數(shù)字,所以C選項錯誤。E后面必須要有數(shù)字,且必須為整數(shù),所以D選項錯誤。2、以下敘述中正確的是()。A、charc1,c2,*c3,c4[40];是合法的變量定義語句B、數(shù)組下標的下限由數(shù)組中第一個非零元素的位置決定C、數(shù)組下標的下限由數(shù)組中第一個被賦值元素的位置決定D、數(shù)組下標的下限是1標準答案:A知識點解析:A)正確,charc1,c2,*c3,c4[40]表示定義了兩個字符變量c1、c2,一個字符指針c3,一個字符數(shù)組c4。數(shù)組的下限永遠為0,選項B)、C)、D)錯,答案選A)。3、下列敘述中正確的是()。A、在棧中,棧中元素隨棧底指針與棧頂指針的變化而變化B、在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而變化C、在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而變化D、以上說法均不對標準答案:C知識點解析:棧是“先進后出”的數(shù)據(jù)結構,在整個過程中,棧底指針不變,入棧與出棧操作均由棧頂指針來操作,所以選擇C。4、下列程序的輸出結果是()。#includevoidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=1,b=2,*x=&a,/y=&b;fun(x,y);printf("%d%d",a,b);}A、21B、l2C、編譯出錯D、00標準答案:B知識點解析:本題考查函數(shù)調用時的參數(shù)傳遞。分析題目可知fun函數(shù)的形參是指向實參的指針,但main()函數(shù)中調用flm()函數(shù)時,實參是指針變量x、y(分別為指向a和b的指針),a、b的值在函數(shù)調用前后未發(fā)生變化,因而a=1,b=2,即輸出12。5、下列二維數(shù)組初始化語句中,正確且與語句inta[][3]={1,2,3,4,5}等價的是()。A、inta[2][]={{1,2,3},{4,5}};B、inta[][3]={1,2,3,4,5,0};C、inta[][3]={{1,0},{2,0},{3,0)};D、inta[2][]={{1,2,3},{4,5,6}};標準答案:B知識點解析:此題考查的是二維數(shù)組的初始化。題干中數(shù)組a的第二個下標為3,由此可知數(shù)組a是一個2行3列的數(shù)組,初始化時未賦初值的元素的值自動為0,所以與選項B是等價的,最后一個元素的值為0。6、設q1和q2是指向一個int型一維數(shù)組的指針變量,k為float型變量,下列不能正確執(zhí)行的語句是()。A、k=*q
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年建材市場商鋪租賃及品牌展示合同2篇
- 二零二五版A4一頁紙環(huán)保印刷定制合同2篇
- 二零二五年度活動板房租賃合同(含消防設施及安全檢查)3篇
- 二零二五版城市綠化帶基站場地租賃與景觀融合合同3篇
- 二零二五版辦公室能源管理合同3篇
- 二零二五年度高性能1號不銹鋼駁接爪批量采購供貨合同2篇
- 二零二五版企業(yè)清算注銷及員工安置及補償及債務清理合同3篇
- 二零二五版金融資產抵押交易合同范本3篇
- 二零二五版古建筑修復工程勞務承包施工合同2篇
- 二零二五版鋼材現(xiàn)貨及期貨交易合同示范文本3篇
- 2024質量管理理解、評價和改進組織的質量文化指南
- 手指外傷后護理查房
- 油氣回收相關理論知識考試試題及答案
- 我能作業(yè)更細心(課件)-小學生主題班會二年級
- 2023年湖北省武漢市高考數(shù)學一模試卷及答案解析
- 城市軌道交通的網(wǎng)絡安全與數(shù)據(jù)保護
- 英國足球文化課件
- 《行政職業(yè)能力測驗》2023年公務員考試新疆維吾爾新疆生產建設兵團可克達拉市預測試題含解析
- 醫(yī)院投訴案例分析及處理要點
- 燙傷的安全知識講座
- 工程變更、工程量簽證、結算以及零星項目預算程序實施細則(試行)
評論
0/150
提交評論