版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
國家二級C語言機(jī)試(C語言程序設(shè)計)模擬試卷2(共9套)(共323題)國家二級C語言機(jī)試(C語言程序設(shè)計)模擬試卷第1套一、選擇題(本題共32題,每題1.0分,共32分。)1、以下能正確定義且賦初值的語句是A、intn1=n2=10;B、charc=32;C、floatf=f+1.1;D、doublex=12.3E2.5;標(biāo)準(zhǔn)答案:B知識點解析:本題主要考查變量的定義和賦值,C語言中變量的定義形式為:類型說明符變量名=初始值:選項A中,n1和n2只能單獨賦初值;選項B正確,定義了一個字符變量c,初值為32:選項C錯誤,初值設(shè)置自身不能參與運算;選項D中字母E后面的指數(shù)必須是整數(shù)。2、設(shè)有定義:intn1=0,n2,*p=n2,*q=n1;,以下賦值語句中與n2=n1;語句等價的是A、*p=*q;B、p=q;C、*p=n1;D、p=*q;標(biāo)準(zhǔn)答案:A知識點解析:本題考查指針的使用。指針p和q分別指向變量n2和n1,n2=n1可以用指針來代替,即*p代替n2,*q代替n1。3、以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。#include#defineN10voidfun(intx[N]){inti=0;while(i<N)scanf("%d",___);}在程序中下劃線處應(yīng)填入的是A、x+iB、x[i+1]C、x+(i++)D、x[++i]標(biāo)準(zhǔn)答案:C知識點解析:本題考查數(shù)組和scanf函數(shù)的使用。程序通過while循環(huán)來給數(shù)組元素賦值,賦值語句通過調(diào)用scanf函數(shù)來實現(xiàn)。scanf函數(shù)從鍵盤接收數(shù)據(jù),第二個參數(shù)是數(shù)據(jù)保存的地址,因此選項B和選項D不是地址,錯誤。選項A和選項C是地址,但是選項A的i值不會發(fā)生變化,循環(huán)體內(nèi)每次都是給同一個元素賦值,不滿足要求,選項C正確。4、fun函數(shù)的功能是:通過鍵盤輸入給x所指的整型數(shù)組所有元素賦值。在下劃線處應(yīng)填寫的是#include#defineN5Voidfun(intx[N]){intm;for(m=N-1;m>=0;m--)scanf("%d",___);}A、x+mB、x[m+1]C、x+(m++)D、x[++m]標(biāo)準(zhǔn)答案:A知識點解析:本題考查數(shù)組和scanf函數(shù)的使用。程序通過for循環(huán)來給數(shù)組元素賦值,賦值語句通過調(diào)用scanf函數(shù)來實現(xiàn)。scanf函數(shù)從鍵盤接收數(shù)據(jù),函數(shù)的第二個參數(shù)是數(shù)據(jù)保存的地址,因此選項B和選項D不是地址,錯誤。選項A和選項C是地址,但是選項C的m值會++自增,然后for循環(huán)里面又m-自減,會導(dǎo)致死循環(huán),不滿足要求,選項A正確。5、以下選項中,合法的是A、charname[10];name="char";B、charstrl[5]="pass",str2[6];str2=str1;C、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};D、charstr4;str4="helloworld";標(biāo)準(zhǔn)答案:C知識點解析:本題考查字符數(shù)組。選項A定義了一個字符數(shù)組name,接下來直接給name賦值字符串是錯誤的;選項B定義了兩個字符串?dāng)?shù)組str1和str2,str1和str2表示兩個字符串的首地址,直接把str1賦值給str2錯誤:選項C是正確的;選項D定義了一個字符變量str4,給字符變量賦值字符串是錯誤的。6、以下敘述中正確的是A、賦值語句是一種執(zhí)行語句,必須放在函數(shù)的可執(zhí)行部分B、scanf和printf是C語言提供的輸入和輸出語句C、由printf輸出的數(shù)據(jù)都隱含左對齊D、由printf輸出的數(shù)據(jù)的實際精度是由格式控制中的域?qū)捄托?shù)的域?qū)拋硗耆珱Q定的標(biāo)準(zhǔn)答案:A知識點解析:C語言本身沒有提供輸入輸出語句,但是可以通過調(diào)用標(biāo)準(zhǔn)庫函數(shù)中提供的輸入和輸出函數(shù)來實現(xiàn)輸入和輸出,選項B錯誤;采用printf輸出數(shù)據(jù),輸出數(shù)據(jù)都默認(rèn)為右對齊,若要左對齊,可以在格式控制中的“%”和寬度之間加一個“-”號來實現(xiàn),選項C錯誤;pfintf的輸出精度由變量的類型決定,與域?qū)挓o關(guān),選項D錯誤。7、有以下程序main(){inta=3:a+=a-=a*a;printf("%d\n",a);}程序的輸出結(jié)果是A、9B、3C、-12D、0標(biāo)準(zhǔn)答案:C知識點解析:對于表達(dá)式a+=a-=a*a相當(dāng)于a=a-(a*A,然后計算a=a+a,a的初值為3,則表達(dá)式的值為-12。8、設(shè)有定義語句intx[6]={2,4,6,8,5,7),*p=x,i;要求依次輸出x數(shù)組6個元素中的值不能完成此操作的語句是A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)printf("%2d",(*p)++);標(biāo)準(zhǔn)答案:D知識點解析:指針p指向數(shù)組x,因此可以使用p來輸出數(shù)組x的值。選項A中,*(p++)表示先取出p指向的元素的值,然后p++指向下一個元素,滿足要求;選項B中*(p+i)每次i的值發(fā)生變化,(p+i)指向x數(shù)組的x[i]元素,因此*(p+i)是取出數(shù)組x的x[i]元素的值,滿足要求;選項C和選項A相比,少了括號,由于*運算符的優(yōu)先級比++要求,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一個元素,滿足要求;選項D中(*p)++表示先取出p指向的元素的值,然后該值++,p沒有增加,每次循環(huán)都*p取出的x[0]的值,不滿足要求。9、有以下程序段intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c;k;執(zhí)行程序段后,k的值是A、3B、2C、1D、0標(biāo)準(zhǔn)答案:B知識點解析:本題主要考查條件表達(dá)式。k=a<b?b:a中a<b為真,因此k的值為b,即k=2。k=k>c?c:k中k>c為假,k的值為2。10、執(zhí)行以下程序段后,W的值為intw=’A’,x=14,y=15;w=((x‖y)&(w<’a’));A、-1B、NULLC、1D、0標(biāo)準(zhǔn)答案:C知識點解析:本題考查表達(dá)式和邏輯運算。x和y分別為14和15,因此(x‖y)的值是真。w的值為’A’,其ASCII值為65,’a’的ASCII值為97,因此(w<’a’)的值為真。表達(dá)式w=((x‖y)&(w<’a’))的前后兩個值均為真,整個表達(dá)式的值為真(1)。11、若有定義語句:chars[10]="1234567\0\0";,則strlen(s)的值是A、7B、8C、9D、10標(biāo)準(zhǔn)答案:A知識點解析:本題考查字符串?dāng)?shù)組和字符串函數(shù)。數(shù)組s有7個數(shù)字,然后跟著結(jié)束符“\0”,因此數(shù)組s的長度為7。12、程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);的輸出結(jié)果是A、123.141593B、123.141593C、12,3.141593D、123.142標(biāo)準(zhǔn)答案:A知識點解析:本題考查格式化輸出函數(shù)printf,,在printf函數(shù)調(diào)用里面首先輸入整型變量x的值12,然后按照%8.6f格式輸出double類型變量y的值,%8.6f表示輸出8位,小數(shù)點后輸出6位。13、有如下程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);其輸出結(jié)果是A、123.141593B、12,3.141593C、123.1415930D、123.142標(biāo)準(zhǔn)答案:D知識點解析:本題考查printf語句。printf()函數(shù)是格式化輸出函數(shù),一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息。在編寫程序時經(jīng)常會用到此函數(shù)。printf()函數(shù)的調(diào)用格式為:print:f("<格式化字符串>”,<參量表>)。其中,“格式化字符串”包括兩部分內(nèi)容:一部分是正常字符,這些字符將按原樣輸出;另一部分是格式化規(guī)定字符,以“%”開始,后跟一個或幾個規(guī)定字符,用來確定輸出內(nèi)容格式。格式化字符串的格式是:%[標(biāo)志][輸出最小寬度][精度[長度]格式字符①標(biāo)志:標(biāo)志字符為-、+、空格等,其意義如下所示:●-:結(jié)果左對齊,右邊填空格;●+:輸出符號(正號或負(fù)號);●空格:輸出值為正時冠以空格,為負(fù)時冠以負(fù)號。②輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)(包括小數(shù)點在內(nèi)至少要輸出這么多位)?!袢魧嶋H位數(shù)多于定義的寬度,則按實際位數(shù)輸出;●若實際位數(shù)少于定義的寬度,則右對齊,左邊留空:●有負(fù)號,左對齊,右邊留空;●表示寬度的數(shù)字以0開始,則右對齊,左邊留空。③精度:精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。它的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù),若實際位數(shù)大于所定義的精度數(shù),則四舍五入,若不足則補(bǔ)0;如果輸出的是字符,則表示輸出字符的個數(shù),若實際位數(shù)大于所定義的精度數(shù),則截去超過的部分;④長度:長度格式符為h和l兩種,h表示按短整型量輸出,l表示按長整型量輸出。14、若有以下程序#includemain(){intb=10,a=-11;a%=b%=4;printf("%d%d\n",a,b);}則程序的輸出結(jié)果是A、12B、-1-2C、-12D、1-2標(biāo)準(zhǔn)答案:C知識點解析:對于表達(dá)式a%=b%=4為復(fù)合的賦值運算,結(jié)合性自右至左,相當(dāng)于先計算b=b%4,a=a%b;結(jié)果的符號和第一個操作數(shù)的符號相同,因此b為2,a的結(jié)果為-1.15、有以下程序main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);}程序的輸出結(jié)果是A、a=%2,b=%5B、a=%d,b=%dC、a=2,b=5D、a=%%d,b=%%d標(biāo)準(zhǔn)答案:B知識點解析:輸出“%”,可以在格式控制中用“%%”表示,將輸出一個“%”,而沒有%表示格式符的開始,%%d不能表示格式符,因此僅輸出:a=%d.b=%d。16、有以下程序main(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第1列開始,代表回車,注意:回車也是一個字符)1234則輸出結(jié)果是A、12B、1234C、123D、1234標(biāo)準(zhǔn)答案:C知識點解析:scanf和getchar函數(shù)分別從鍵盤上讀入一個字符,因此輸入12空格34,則變量a中存放的為1,b中存放2,c中存放空格,d中存放3。17、有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s++;t=t-2;}while(t!=n);為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是A、任意正奇數(shù)B、任意負(fù)偶數(shù)C、任意正偶數(shù)D、任意負(fù)奇數(shù)標(biāo)準(zhǔn)答案:D知識點解析:本題考查基本輸入和循環(huán)。程序代碼的功能是通過scanf給變量n賦值,在dowhile循環(huán)中,s變量自增,t變量每次減2,t的初值為1,循環(huán)執(zhí)行執(zhí)行一次后t的值變成-1,然后是-3、-5…,直到t的值和n的值相同循環(huán)結(jié)束。從t的值的變化可知,t是一個變化的負(fù)奇數(shù),因此輸入的n如果是負(fù)奇數(shù),則循環(huán)能退出,否則是死循環(huán)。18、若變量已正確定義為int型,要通過語句scanf("%d,%d,%d"&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(注:口代表一個空格符)A、口口口1,2,3B、1,口口口2,口口口3C、1,2,3D、1口2口3標(biāo)準(zhǔn)答案:D知識點解析:本題主要考查scanf函數(shù)的輸入格式問題。scanf函數(shù)的一般形式為:scanf(格式控制字符串,地址1,地址2,…);格式控制字符串是由雙撇號括起來的字符串,它主要由兩種類型的字符組成:①格式說明符由“%”和格式字符組成,如%c,%d,%s,%f等。其作用是將輸入的數(shù)據(jù)轉(zhuǎn)換為指定的格式,賦給scanf的二個參量(是地址1)所指定的內(nèi)存單元(可能一次使用多個)中。格式說明以“%”字符為標(biāo)志。②普通字符,是需要用戶在輸入時原樣輸入的字符。在本題中格式控制字符串為“%d,%d,%d”,表示按十進(jìn)制輸入三個數(shù)據(jù)。要求在輸入數(shù)據(jù)時,兩個數(shù)據(jù)間一定以一個逗號“,”作為間隔符。19、設(shè)變量均已正確定義,若要通過scanf(”%d%c%d%c”,&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:口代表空格字符)A、10口X20口YB、10口X20口YC、10X20YD、10口X口20口Y標(biāo)準(zhǔn)答案:C知識點解析:在使用scanf函數(shù)進(jìn)行輸入數(shù)據(jù)時,輸入的數(shù)據(jù)之間必須用空格、回車符、制表符(Tab鍵)等間隔符隔開,但是空格為合法的字符型數(shù)據(jù)的輸入。而按照格式符"%d%c%d%c"說明,數(shù)值型數(shù)據(jù)和字符數(shù)據(jù)輸入之間不要加入空格間隔,而字符型數(shù)據(jù)和數(shù)值型數(shù)據(jù)的輸入?yún)s可以加入任意的空格,回車和跳格。20、設(shè)有定義:inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0則a和b的值分別是A、876和543.0B、87和6.0C、87和543.0D、76和543.0標(biāo)準(zhǔn)答案:B知識點解析:在輸入函數(shù)scanf的輸入格式符%2d%f中,2d表示輸入的數(shù)據(jù)的寬度為’2,所以當(dāng)從鍵盤輸入876543.0<CR>時,這時把輸入數(shù)字串的前兩位87賦給變量a,然后將緊接著將6按照格式控制符%f的形式賦給變量b,所以b的值為6.000000。21、若有定義:inta,b;通過語句scanf("%d;%d",&a,&b);能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是A、3,5B、35C、3;5D、35標(biāo)準(zhǔn)答案:C知識點解析:在采用seanf這個函數(shù)輸入數(shù)據(jù)時,要嚴(yán)格遵守其輸入的規(guī)則定義。本題此函數(shù)定義的規(guī)則是,在兩個整數(shù)之間加分號輸入。22、若有定義inta;floatb;doublec;程序運行時輸入:345能把值3輸入給變量a、4輸入給變量b、5輸入給變量c的語句是A、scanf("%d%lf%lf",&a,&b,&c);B、scanf("%d%f%lf",&a,&b,&c);C、scanf("%d%f%f",&a,&b,&c);D、scanf("%lf%lf%lf",&a,&b,&c);標(biāo)準(zhǔn)答案:B知識點解析:scanf函數(shù)進(jìn)行輸入的時候,默認(rèn)的輸入間隔為空格、跳格和回車,變量a、b和c均為數(shù)值型數(shù)據(jù),輸入時間隔為空格,因此scanf函數(shù)的第一個表示格式的參數(shù)之間不用加入分隔符,而要輸入double型數(shù)據(jù),格式控制必須用%lf(或%le)。否則,數(shù)據(jù)不能正確輸入。23、設(shè)有定義:doublea,b,c;若要求通過輸入分別給a、b、c輸入1、2、3,輸入形式如下(注:此處口代表一個空格)口口1.0□□2.0□□3.0則能進(jìn)行正確輸入的語句是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("%5.1lf%5.1lf%5.1lf",&a,&b,&c);標(biāo)準(zhǔn)答案:C知識點解析:輸入格式scanf(格式控制,輸入項1,輸入項2….),其中在scanf函數(shù)的格式字符前可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以用實數(shù)指定小數(shù)位的寬度。輸入double型數(shù)據(jù),格式控制必須用%lf(或%le)。否則,數(shù)據(jù)不能正確輸入。由于輸入是一個字符流,scanf函數(shù)從這個字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址的變量中。24、以下敘述中正確的是A、當(dāng)用scanf從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)在沒按下回車鍵(Enter鍵)前,可以任意修改B、花括號對{}只能用來表示函數(shù)的開頭和結(jié)尾,不能用于其他目的C、空語句就是指程序中的空行D、復(fù)合語句在語法上包含多條語句,其中不能定義局部變量標(biāo)準(zhǔn)答案:A知識點解析:當(dāng)使用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)在未按F回車鍵之前,可以任意修改。但按下回車鍵后,scanf函數(shù)即接受了這一行數(shù)據(jù),不能再修改。選項A正確,對于選項B,{}還可以表明復(fù)合語句的開頭結(jié)尾,或者循環(huán)體的開頭結(jié)尾等,選項B錯誤,而空語句為;,不是空行,選項C錯誤,在復(fù)合語句中可以定義變量為局部變量,選項D錯誤。25、以下敘述中正確的是A、在scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,不會輸出到屏幕上B、在使用scanf函數(shù)輸入整數(shù)或?qū)崝?shù)時,輸入數(shù)據(jù)之間只能用空格來分隔C、在printf函數(shù)中,各個輸出項只能是變量D、使用printf函數(shù)無法輸出百分號%標(biāo)準(zhǔn)答案:A知識點解析:scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,無論其中有什么字符,也不會輸出到屏幕上,因此若想在屏幕上輸出提示信息,應(yīng)該首先使用printf函數(shù)輸出,選項A正確;在使用scanf函數(shù)輸入整數(shù)或?qū)崝?shù)時,輸入數(shù)據(jù)之間可以用空格、跳格、回車來分隔,選項B錯誤;printf輸出項不但可以為變量,還可以表達(dá)式或者常量,選項C錯誤;如果要輸出“%”,可以在格式控制中用"%%”表示,將輸出一個“%”,選項D錯誤。26、以下敘述中正確的是A、在scanf函數(shù)的格式串中,必須有與輸入項一一對應(yīng)的格式轉(zhuǎn)換說明符B、只能在printf函數(shù)中指定輸入數(shù)據(jù)的寬度,而不能在scanf函數(shù)中指定輸入數(shù)據(jù)占的寬度C、scanf函數(shù)中的字符串,是提示程序員的,輸入數(shù)據(jù)時不必管它D、復(fù)合語句也被稱為語句塊,它至少要包含兩條語句標(biāo)準(zhǔn)答案:A知識點解析:輸入函數(shù)的調(diào)用格式:scallf(格式控制,輸入項1,輸入項2,…)格式控制的主要作用是指定輸入時的數(shù)據(jù)轉(zhuǎn)換格式,格式串中,必須含有與輸入項一一對應(yīng)的格式轉(zhuǎn)換說明符選項A正確,在scanf函數(shù)的格式字符前可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以用實數(shù)指定小數(shù)位的寬度,選項B錯誤,scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,無論其中有什么字符,也不會輸出到屏幕上,因此若想在屏幕上輸出提示信息,應(yīng)該首先使用printf函數(shù)輸出,選項C錯誤,復(fù)合語句還可以是空語句呢,并沒有規(guī)定語句條數(shù),選項D錯誤。27、有以下程序#includemain(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以下口代表空格,代表回車)A、12口a口34口bB、12,a,34,bC、12a34bD、12口a34□b標(biāo)準(zhǔn)答案:C知識點解析:本題考查scanf語句。scanf()函數(shù)是格式化輸入函數(shù),它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取輸入的信息。其調(diào)用格式為:scanf("<格式化字符串>",<地址表>)格式化字符串包括以下3類不同的字符;①格式化說明符:格式化說明符與前面用的printf()函數(shù)中的格式說明符基本相同。②空白字符:空白字符會使scanf()函數(shù)在讀操作中略去輸入中的一個或多個空白字符。③非空白字符:一個非空白字符會使scanf()函數(shù)在讀入時剔除掉與這個非空白字符相同的字符。由于在scanf函數(shù)中,幾個變量之間沒有任何間隔,所以輸入的時候,也同樣不應(yīng)該有間隔。28、有以下程序#includemain(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)12345678則輸出結(jié)果是A、1256B、1278C、1245D、1267標(biāo)準(zhǔn)答案:C知識點解析:當(dāng)用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)的未尾按下回車鍵(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(c1)(Enter鍵)之后,scanf函數(shù)即接受了這一行數(shù)據(jù),不能再回去修改。所以本題中,當(dāng)輸入123時,變量c1、c2、c3的值分別為1、2、3,當(dāng)輸入45678時,變量c5、c6的值4和5。所以用輸出函數(shù)putchar(c1)輸出1,putchar(c2)輸出2,print("%c%c\n",c5,c6)輸出45。29、若有定義語句:doublex,y,*px,*py;執(zhí)行px=&x;py=&y;正確的輸入語句是A、scanf("%f%f"&x,&y);B、scanf("%f%f",x,y):C、scanf("%lf%le",px,py);D、scanf("%lf%lf",x,y);標(biāo)準(zhǔn)答案:C知識點解析:本題考查scanf語句。scanf()函數(shù)的一般格式為:scanf("格式字符串",輸入項首地址表),對于double類型數(shù)據(jù),輸入時候要加上1修飾,否則會產(chǎn)生錯誤的輸入信息,同時輸入項必須是地址,可以使保存變量地址的指針變量。30、以下程序段完全正確的是A、intk,*p=&k;scanf("%d",p);B、int*p;scanf("%d",p);C、int*p;scanf("%d",&p);D、intk,*p;*p=&k;scanf("%d",p);標(biāo)準(zhǔn)答案:A知識點解析:選項B沒有對指針進(jìn)行初始化,無效指針。選項C錯在沒有對指針進(jìn)行初始化,無效指針,并且在scanf("%d",&p)中無需再進(jìn)行取地址操作。選項D,語句*p=&k;的左端*p是指針?biāo)竷?nèi)存空間的值,&k是地址,應(yīng)為p=&k。31、若在定義語句:inta,b,c,*p=&c;接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是A、scanf("%d%d%d",a,b,c);B、scanf("%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);標(biāo)準(zhǔn)答案:C知識點解析:程序語句inta,b,c,*p=&c;定義了三個整型變量a,b,c,和一個整型指針變量p,并且把變量c的地址賦給p。scanf函數(shù)的一般形式為“scanf(“格式控制字符串”,地址列表)”,其中的地址列表應(yīng)當(dāng)是存放輸入數(shù)據(jù)變量的地址。32、有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為A、55566.0B、7777.0C、566.0D、566777.0標(biāo)準(zhǔn)答案:C知識點解析:因為在輸入格式控制符中指定變量j的輸入格式控制符為“%2d”,即變量j所占的寬度為2,所以變量j只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項C。國家二級C語言機(jī)試(C語言程序設(shè)計)模擬試卷第2套一、選擇題(本題共36題,每題1.0分,共36分。)1、有以下程序段charname[20];intnurn;scanf("name=%snurn=%d",name,&nurn);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinurn=1001后,name的值為A、name=LiliB、Lilinurn=C、name=Lilinurn=1001D、Lili標(biāo)準(zhǔn)答案:D知識點解析:在題目中以字符串的形式給字符數(shù)組賦值,所以字符數(shù)組n鋤e的值為Lili。2、s1和s2已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句S;則以下選項中正確的是A、if(s1>s2)S;B、if(strcmp(s1,s2))S;C、if(strcmp(s2,s1)>0)S;D、if(strcp(s1,s2)>0)S:標(biāo)準(zhǔn)答案:D知識點解析:字符串標(biāo)記使用strcmp函數(shù),該函數(shù)有兩個參數(shù)分別是需要比較大小的兩個字符串s1和s2,如果s1大于s2則返回值大于0,如果s1小于s2則返回值小于0,否則s1和s2相同返回0。題目要求s1大于s2時執(zhí)行語句S,因此strcmp(s1,s2)的返回值大于o時執(zhí)行S。3、把以下四個表達(dá)式用作if語句的控制表達(dá)式時,有一個選項與其他三個選項含義不同,這個選項是A、k%2B、k%2==1C、(k%2)!=0D、!k%2=1標(biāo)準(zhǔn)答案:D知識點解析:本題考查if語句和if語句構(gòu)成的選擇。選項A表示k除以2的余數(shù),如果余數(shù)為1則if成立,否則不能成立,即if判斷k是否為奇數(shù);選項B是判斷k除以2的余數(shù)是否等于1,函數(shù)和選項A相同:選項C表示k除以2的余數(shù)不為0,和選項A一致;選項D中,!運算符優(yōu)先級高于%預(yù)算符,先計算!k,然后再取余數(shù),并判斷余數(shù)是否等于1。4、以下是if語句的基本形式:if(表達(dá)式)語句其中“表達(dá)式”A、必須是邏輯表達(dá)式B、必須是關(guān)系表達(dá)式C、必須是邏輯表達(dá)或關(guān)系表達(dá)D、可以是任意合法的表達(dá)式標(biāo)準(zhǔn)答案:D知識點解析:本題考查if語句,C語言中if語句中的表達(dá)式可以是任意合法的表達(dá)式。5、有以下程序main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序輸出A、0,0,0,3B、1,1,2,0C、編譯有錯D、0,1,2,0標(biāo)準(zhǔn)答案:C知識點解析:if語句的格式為:if(表達(dá)式)語句1else語句2if和else是C語言的關(guān)鍵字?!罢Z句1”稱為if子句,“語句2”稱為else子句,這些子句只允許為一條語句,若需要多條語句時,則應(yīng)該使用復(fù)合語句。因此題目if(a=1)b=1:c=2:elsed=3;if分支有兩條語句,沒構(gòu)成復(fù)合語句。6、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf("%d\n",y);}程序運行后的輸出結(jié)果是A、2B、0C、1D、3標(biāo)準(zhǔn)答案:B知識點解析:x=1,if和elseif的條件都不滿足,故y值不改變輸出。7、若變量已正確定義,在if(W)printf("%d\n",k);中,以下不可替代W的是A、ch=getchar()B、a==b+cC、a<>b+cD、a++標(biāo)準(zhǔn)答案:C知識點解析:在if()語句的括號是一個合法的C語言表達(dá)式即可,如果表達(dá)式的值為0,則不執(zhí)行if語句,否則執(zhí)行if語句,而在選項C中,符號<>不是C語言的合法運算符,如果要表達(dá)a大于或小于b+c可用a!=b+c或(a>b+c)‖(a<b+c=來表達(dá),而不能使用a<>b+c。所以它不是一個合法的C語言表達(dá)式。8、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的輸出結(jié)果是A、a=10b=50c=30B、a=10b=30c=10C、a=10b=50c=10D、a=50b=30c=50標(biāo)準(zhǔn)答案:C知識點解析:本題的程序段首先定義三個整型變量a,b,c,并且其初始值分別等于10,50,30,然后判斷a>b是否成立,如果條件成立,則把b的值賦給a,把c的值賦給b。由a和b的初始值可知,此條件表達(dá)式不成立,所以a和b的值保持不變。再執(zhí)行下一條語句,把a(bǔ)的值賦給c,所以c的當(dāng)前值等于10,最后由輸出語句輸出變量a,b,c的當(dāng)前值,分別為10,50,10。9、設(shè)有定義: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){c=a;a=b;b=c;}標(biāo)準(zhǔn)答案:A知識點解析:在C語言中,用分號表示一條語句的結(jié)束,用{}把幾條語句放在一塊表示一個語句塊,其整體表示一個功能。因而在題目給出的四個選項中,選項B、C、D表示的功能相同,而選項A表示的是一條if語句,兩條賦值語句。10、if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是A、必須是整數(shù)值B、必須是正數(shù)C、可以是任意合法的數(shù)值D、必須是邏輯值標(biāo)準(zhǔn)答案:C知識點解析:在if語句中,表達(dá)式可以是任意合法的數(shù)值。當(dāng)其值為非零時,執(zhí)行if語句,為0時執(zhí)行else語句。11、有如下嵌套的if語句if(a<b)if(a<c)k=a;elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是A、k=(a<b)?((bc)?b:c;B、k=(a<c)?b:c;C、k=(a<c)?a:c;D、k=(a<b)?((a<c)?a:c):((b<c)?b:c);標(biāo)準(zhǔn)答案:D知識點解析:嵌套的ifelse語句的含義是,在變量a的值小于變量b的值,同時,變量a的值小于變量c的值時,把變量a的值賦給變量k。在變量a的值小于變量b的值,同時,變量a的值大于等于變量c的值時,把變量c的值賦給變量k。在變量a的值大于等于變量b的值,同時,變量b的值小于變量c的值時,把變量b的值賦給變量k。在變量a的值大于等于變量b的值,同時,變量b的值大于等于變量c的值時,把變量c的值賦給變量k。12、有以下計算公式若程序前面已經(jīng)在命令行中包含math.h文件,不能夠正確計算上述公式的程序段是A、y=sqrt(x);if(x<0)y=sqrt(-x);B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);D、y=sqrt(x>=0?x:-x);標(biāo)準(zhǔn)答案:A知識點解析:由題意可知計算公式的含義是:當(dāng)x大于等于0時,y值等于x的算術(shù)平方根:當(dāng)x小于0時,y值等于x的相反數(shù)的算術(shù)平方根。所以選項B用一個完整的ifelse語句表達(dá)了計算公式的含義;選項C用兩個if語句表達(dá)了計算公式的含義;選項D在求平方根函數(shù)的后面用x≥0?x:-x條件表達(dá)式來表達(dá)了計算公式的含義。選項A沒有用C語言語句正確的表達(dá)計算公式的含義。13、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果A、不等于10的整數(shù)B、大于3或等于10的整數(shù)C、小于3的整數(shù)D、大于3且不等10的整數(shù)標(biāo)準(zhǔn)答案:D知識點解析:題目中,雖然else和第二個if不在同一行上,但等價于在同一行上,因此,程序的意思是當(dāng)x大于3且不等于10時打印出來。14、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2‖c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結(jié)果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1標(biāo)準(zhǔn)答案:C知識點解析:a,b,c,d初始值分別為1,2,3,0。嵌套的if語句中,第一個if中,表達(dá)式a=1&&b++==2值為1,執(zhí)行嵌套的if分支,此時b=3,b!=2成立,由于運算符是‖,不管后面一個表達(dá)式的值是不是1,其整個表達(dá)式的值總是1,c--!=3表達(dá)式不執(zhí)行,最后打印出a,b,c的值是1,3,3。15、下列條件語句中,輸出結(jié)果與其他語句不同的是A、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標(biāo)準(zhǔn)答案:A知識點解析:選項B、C、D這三條語句都是在變量不等于0的情況下,輸出x;等于0的情況下輸出y,而選項A則正好相反。16、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)‖(b=1))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}則程序的輸出結(jié)果是A、2,1,2,-1B、2,2,2,4C、5,1,2,-1D、1,2,3,4標(biāo)準(zhǔn)答案:B知識點解析:代碼中有兩條并列的if語句,第一條if語句執(zhí)行,(a=2)‖(b=1)值為1,由于邏輯或表達(dá)式,根據(jù)其短路運算規(guī)則,a=2,b=2,即b值不變執(zhí)行if分支c=2。并列的if語句中表達(dá)式(c==3)&&(d=-1)為邏輯與表達(dá)式,c==3不成立,不考慮d=-1表達(dá)式,d為5.邏輯表達(dá)式值為0,不執(zhí)行相應(yīng)if分支。17、若有以下程序#ineludemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結(jié)果是A、10B、6C、7D、3標(biāo)準(zhǔn)答案:C知識點解析:程序代碼中有四條并列的if語句,第一條if表達(dá)式a!=1不成立,執(zhí)行else分支,r=1;第二條if表達(dá)式b==2成立,執(zhí)行r+=2,r=3;第三條if語句c!=3不成立,執(zhí)行else分支,分支為空語句;第四條if分支d==4成立,執(zhí)行該if分支語句,r+=4,r=7。18、若有以下程序#ineludemain(){inta=1,b=2,c=3,d=4;if((a=2)&&(b=1))c=2;if((c==3)‖(d=-1))a=5;pfintf("%d,%d,%d,%d\n",a,b,c,d);}則程序的輸出結(jié)果是A、2,1,2,一1B、2,2,2,4C、1,2,3,4D、5,1,2,-1標(biāo)準(zhǔn)答案:D知識點解析:代碼中有兩條并列的if語句,第一條if語句,邏輯與表達(dá)式(a=2)&&(b=1)中,a=2,則執(zhí)行b=1,得到該邏輯與表達(dá)式值為1,執(zhí)行分支語句c=2;第二條if語句(c==3)‖(d=-1),c==3不成立,執(zhí)行d=-1,而后得出整個邏輯與表達(dá)式值為1,執(zhí)行分支語句a=5。19、若有以下程序main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;if(c!=3);r+=3;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結(jié)果是A、7B、10C、6D、3標(biāo)準(zhǔn)答案:B知識點解析:程序代碼中有四條并列的if語句,第一條if表達(dá)式a!=1不成立,執(zhí)行else分支,r==l;第二條if表達(dá)式b==2成立,執(zhí)行r+=2,r=3:第三條if語句c!=3不成立,執(zhí)行語句r+=3,r=6:第四條if分支d==4成立,執(zhí)行該if分支語句,r+=4,r=10。20、以下敘述中正確的是A、if語句只能嵌套一層B、不能在else子句中再嵌套if語句C、if子句和else子句中可以是任意的合法的C語句D、改變if-else語句的縮進(jìn)格式,會改變程序的執(zhí)行流程標(biāo)準(zhǔn)答案:C知識點解析:含else子句的if語句的格式為if(表達(dá)式)語句1else語句2其中if和else是C語言的關(guān)鍵字?!罢Z句1”稱為if子句,“語句2”稱為else子句,這些子句只允許為一條語句,若需要多條語句時,則應(yīng)該使用復(fù)合語句,對于if和else語句的嵌套原則是比較自由的。21、以下選項中與if(a==1)a=b;elsea++;語句功能不同的switch語句是A、switch(a){case1:a=b;break;default:a++;}B、switch(a==1){case0:a=b:break;case1:a++;}C、switch(a){default:a++;break;Case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}標(biāo)準(zhǔn)答案:B知識點解析:本題主要考查if和switch結(jié)構(gòu)。if(a==1)a=b;elsea++;代碼段的功能是如果a等于則把b的值賦值給a,否則a++。選項A使用switch對a進(jìn)行判斷,如果是1則a=b,跳出switch,如果是其他值則a++;選項B對a==1的結(jié)果進(jìn)行switch判斷,如果為0表示a不等于1則a=b,和題目要求不符合:選項C和選項A一樣;選項D和選項case條件相反,滿足題目要求。22、若以下選項中變量全部為整型變量,且己正確定義并賦值,則語法正確的switch語句是A、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}B、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b:break;}C、switch(a+9){casec1:y=a-b;casec2:y=a+b;}D、switcha*b{case10:x=a+b;default:y=a-b;}標(biāo)準(zhǔn)答案:B知識點解析:本題考查switch的使用。選項A中的case0和case4沒有break語句;選項B正確;選項C中的case后面不是常量,錯誤;選項D中switch后面沒有括號。23、有以下程序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=1,b=1C、a=1,b=0D、a=2,b=1標(biāo)準(zhǔn)答案:D知識點解析:本題考查的是用switch語句實現(xiàn)多分支選擇結(jié)構(gòu),首先進(jìn)入第一個switch(x)判斷,進(jìn)入case1中進(jìn)行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結(jié)束循環(huán),此時a=2,b=1。24、若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是A、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");}C、switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}D、switch(a+b){case1:printf("*\n");casec:printf("**\n");}標(biāo)準(zhǔn)答案:A知識點解析:在C語言中,switch()后一對圓括號中的可以是整型表達(dá)式或字符表達(dá)式。case語句后面的常量表達(dá)式的類型必須與switch后圓括號中的表達(dá)式類型相同,各case語句標(biāo)號的值應(yīng)該互不相同,選項B中switch后括號表達(dá)式出錯,選項C中case后面的常量類型不正確,選項D中case后面出現(xiàn)了變量表達(dá)式,所以D不正確。25、下列敘述中正確的是A、在switch語句中必須使用defaultB、break語句必須與switch語句中的case配對使用C、在switch語句中,不一定使用break語句D、break語句只能用于switch語句標(biāo)準(zhǔn)答案:C知識點解析:break為C語言關(guān)鍵字,又稱間斷語句。break語句的功能是跳出正在執(zhí)行的條件語句或循環(huán)語句。它可以出現(xiàn)在switch語句中,也可以出現(xiàn)在循環(huán)語句中。default是關(guān)鍵字,起標(biāo)號的作用,代表所有case標(biāo)號之外的那些標(biāo)號。default標(biāo)號可以出現(xiàn)在語句體中任何標(biāo)號位置上。在switch語句體中也可以沒有default標(biāo)號。26、有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5)}運行以后的輸出結(jié)果是A、0235B、235C、02356D、2356標(biāo)準(zhǔn)答案:B知識點解析:因為變量的初始值分別為k=5,n=0,所以程序第1次進(jìn)入循環(huán)時,執(zhí)行default語句,n=0,k=4,沒有break語句,因此執(zhí)行case2分支語句,n為2,k為3,程序進(jìn)行第2次循環(huán),執(zhí)行case3:n=3,k=2,輸出n值為3,程序進(jìn)行第3次循環(huán),執(zhí)行case3這個分支,結(jié)果是n=5,k=1,打印出5;這時因為n=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運行結(jié)束。27、以下選項中與if(a==1)a=b;elsea++;語句功能不同的switch語句是A、switch(a==1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}標(biāo)準(zhǔn)答案:A知識點解析:ifelse語句的含義是,如果變量a的值等于1,則把變量b的值賦給變量a,否則,變量a的值加1。在本題的4個選項中,與其含義不同的是選項A,表示如果變量a的值等于1,則把變量a的值加1,否則,把變量b的值賦給變量a。28、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序運行后的輸出結(jié)果是A、a=1,b=1B、a=1,b=0C、a=2,b=1D、a=2,b=2標(biāo)準(zhǔn)答案:C知識點解析:本題考查的是用switch語句實現(xiàn)多分支選擇結(jié)構(gòu),首先進(jìn)入第一個switch(x)判斷,進(jìn)入case1中進(jìn)行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結(jié)束循環(huán),此時a=2,b=1。29、若以下選項中的變量a,b,y均已正確定義并賦值,則語法正確的switch語句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b;caseb:y=a+b;}D、switcha*b{case10:y=a+b;default:y=a-b;}標(biāo)準(zhǔn)答案:A知識點解析:使用switch語句直接處理多個分支,其一般形式為:switch(表達(dá)式){case常量表達(dá)式1:語句1:break;case常量表達(dá)式2:語句2:break;case常量表達(dá)式n:語句n:break;default:語句n+1:break:}switch語句的執(zhí)行流程是:首先計算switch后面圓括號中表達(dá)式的值,然后用此值依次與各個case的常量表達(dá)式比較,若圓括號中表達(dá)式的值與某個case后面的常量表達(dá)式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇breal(語句就退出switch語句:若圓括號中表達(dá)式的值與所有case后面的常量表達(dá)式都不等,則執(zhí)行default后面的語句n+l,然后退出switch語句。對于選項B,case語句和常量之間沒有空格,而選項C中的case后面為變量,選項D中switch后面沒給出圓括號。30、在嵌套使用if語句時,C語言規(guī)定else總是A、和之前與其具有相同縮進(jìn)位置的if配對B、和之前與其最近的if配對C、和之前與其最近的且不帶else的if配對D、和之前的第一個if配對標(biāo)準(zhǔn)答案:C知識點解析:本題考查if語句,在C語言中,else總是和之前與其最近的且不帶else的if配對。31、以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是A、if((a>b)‖(b>c))k=1;elsek=0;B、if(a<=b)k=0;elseif(b<=c)k=1;C、if((a>b)&&(b>c))k=1;elsek=0;D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;標(biāo)準(zhǔn)答案:C知識點解析:題干中的表達(dá)式的功能是當(dāng)a>b并且b>c時,變量k的值等于1,其余情況下,變量k的值都是等于0。32、關(guān)于“while(條件表達(dá)式)循環(huán)體”,以下敘述正確的是A、循環(huán)體的執(zhí)行次數(shù)總是比條件表達(dá)式的執(zhí)行次數(shù)多一次B、條件表達(dá)式的執(zhí)行次數(shù)與循環(huán)體的執(zhí)行次數(shù)一樣C、條件表達(dá)式的執(zhí)行次數(shù)總是比循環(huán)體的執(zhí)行次數(shù)多一次D、條件表達(dá)式的執(zhí)行次數(shù)與循環(huán)體的執(zhí)行次數(shù)無關(guān)標(biāo)準(zhǔn)答案:C知識點解析:while語句中表達(dá)式是循環(huán)條件,語句為循環(huán)體。while語句中當(dāng)表達(dá)式計算的值為真(非0)時,執(zhí)行循環(huán)體語句。因此條件表達(dá)式執(zhí)行的次數(shù)總是比循環(huán)體多一次。33、有以下程序#includemain0{inty=10;while(y--);printf("y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是A、y=0B、y=-1C、y=1D、while構(gòu)成無限循環(huán)標(biāo)準(zhǔn)答案:B知識點解析:在while循環(huán)中每次變量y的值減1,直到其值等于0時退出循環(huán),這時y的再減1變?yōu)椋?。34、有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是A、2B、4C、1D、死循環(huán)標(biāo)準(zhǔn)答案:C知識點解析:在程序語句中,k的初始值為5,進(jìn)行第1次while循環(huán)后,k自減1為4,非0,執(zhí)行循環(huán)體里的printf語句,輸出1,此時k的值變?yōu)?。程序執(zhí)行第2次循環(huán)時,k自減1變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結(jié)果為1。35、有以下程序main0{inty=10;while(y--);printf("y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是A、y=0B、y=1C、y=-1D、while構(gòu)成無限循環(huán)標(biāo)準(zhǔn)答案:C知識點解析:while循環(huán)語句的循環(huán)體為空語句,所以每一次循環(huán)程序什么都不做。當(dāng)循環(huán)自變量y=0時,退出循環(huán)結(jié)束,變量y執(zhí)行自減運算,得-1,所以打印輸出變量y的值為-1。36、有以下程序#includevoidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf(”%d.t,&s);}}運行時,若輸入123450,則輸出結(jié)果是A、66656B、6566456C、66666D、6.66666e+006標(biāo)準(zhǔn)答案:B知識點解析:這道試題主要考查了switch和break(語句,當(dāng)變量s的值為1時,執(zhí)行case1、case2兩條語句,輸出65;當(dāng)變量s的值為2時,執(zhí)行case2語句,輸出6;變量s的值為3時,執(zhí)行case3、default兩條語句,輸出64;變量s的值為4時,執(zhí)行deflault語句,輸入5;變量s的值為5時,執(zhí)行default語句,輸出6;變量s的值為0時,程序運行結(jié)束。國家二級C語言機(jī)試(C語言程序設(shè)計)模擬試卷第3套一、選擇題(本題共37題,每題1.0分,共37分。)1、有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序運行后的輸出結(jié)果是A、0B、1C、-1D、7標(biāo)準(zhǔn)答案:C知識點解析:在while語句中,先判斷while后面的表達(dá)式是否為0,如果為0,則退出循環(huán),否則執(zhí)行循環(huán)體。在本題中,當(dāng)變量a的值經(jīng)過幾次循環(huán)后,其值等于0時,退出while循環(huán)語句,變量a再執(zhí)行自減運算,所以其值等于-1。2、在以下給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是A、(E>0‖E<0)B、(!E==0)C、(E!=0)D、(E==0)標(biāo)準(zhǔn)答案:A知識點解析:在while(E)中,表達(dá)式E可以是C語言中任意合法的條件表達(dá)式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項A中表達(dá)式E>OlIE<0是一個邏輯表達(dá)式。3、要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時結(jié)束循環(huán)。若變量己正確定義,以下正確的程序段是A、while(ch=getchar()=’N’)printf("%c",ch);B、while(ch=getchar()==”N”)printf("%c",ch);C、while((ch=getchar())!=’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);標(biāo)準(zhǔn)答案:C知識點解析:while循環(huán)的執(zhí)行過程如下:①計算while后面圓括號中表達(dá)式的值,當(dāng)值為非0時,執(zhí)行步驟②;當(dāng)值為0時,執(zhí)行步驟④;②執(zhí)行循環(huán)體一次;③轉(zhuǎn)去執(zhí)行步驟①;④退出循環(huán)。在選項C中,表達(dá)式(ch=getchar())!=’N’表示輸入的字符不等于N,如果這個條件表達(dá)式成立,則執(zhí)行循環(huán)體,打印輸出輸入的字符。如果這個條件表達(dá)式不成立,即輸入的字符等于N,則退出循環(huán)。4、若有以下程序main(){inta=-2,b=0;while(a++)++b;printf("%d,%d\n",a,b);}則程序的輸出結(jié)果是A、0,2B、1,2C、1,3D、2,3標(biāo)準(zhǔn)答案:B知識點解析:循環(huán)體執(zhí)行兩次,第一次表達(dá)式a++值為-2,a的值為-1,執(zhí)行循環(huán)體++b,b值為1,第二次表達(dá)式a++值為-1,a的值等于0,執(zhí)行++b,b值為2,第三次判斷條件a++,表達(dá)式值為0,不執(zhí)行循環(huán)體,但是條件判斷以后,a的值為1。5、由以下while構(gòu)成的循環(huán),循環(huán)體執(zhí)行的次數(shù)是intk=0;while(k=1)k++;A、一次也不執(zhí)行B、執(zhí)行一次C、無限次D、有語法錯,不能執(zhí)行標(biāo)準(zhǔn)答案:C知識點解析:循環(huán)條件表達(dá)式為賦值表達(dá)式k=1,因此循環(huán)執(zhí)行無限次。6、有以下程序main0{inta=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序運行后輸出結(jié)果是A、0,3B、1,2C、1,3D、0,2標(biāo)準(zhǔn)答案:B知識點解析:循環(huán)體為空,共執(zhí)行2次。第一次變量a初值為-2,b初值為0,表達(dá)式a++&&++b值為1,同時a的值為-1,b的值為1,第二次循環(huán)條件判斷以后,a的值為0,b的值2,執(zhí)行循環(huán)體空,第三次判斷條件表達(dá)式值為0,不執(zhí)行循環(huán)體,而a的值為1,但是表達(dá)式a++的值為0,因此不計算表達(dá)式++b的值,b的值仍為2。7、關(guān)于do循環(huán)體while(條件表達(dá)式);以下敘述中正確的是A、循環(huán)體的執(zhí)行次數(shù)總是比條件表達(dá)式的執(zhí)行次數(shù)多一次B、條件表達(dá)式的執(zhí)行次數(shù)總是比循環(huán)體的執(zhí)行次數(shù)多一次C、條件表達(dá)式的執(zhí)行次數(shù)與循環(huán)體的執(zhí)行次數(shù)無關(guān)D、條件表達(dá)式的執(zhí)行次數(shù)與循環(huán)體的執(zhí)行次數(shù)一樣標(biāo)準(zhǔn)答案:D知識點解析:do-while語句先執(zhí)行語句,后判斷表達(dá)式的值。故do-while語句又稱“直到型”循環(huán)結(jié)構(gòu)。由于是先執(zhí)行后判斷,因此do-while語句的循環(huán)語句至少被執(zhí)行一次,循環(huán)條件至少判斷一次。8、以下不構(gòu)成無限循環(huán)的語句或語句組是A、n=0;do{++n;)while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);{n--;}D、for(n=0,i=1;;i++)n+=i;標(biāo)準(zhǔn)答案:A知識點解析:選項B中while(1)永遠(yuǎn)為真所以進(jìn)入死循環(huán),選項C中,while(n=10)同理,選項D中for循環(huán)沒有循環(huán)限定條件也將進(jìn)入無限循環(huán),只有選項A中while(n<=0)循環(huán)判定成立,循環(huán)將不進(jìn)入無限循環(huán)。9、有以下程序main(){inti=5;do{if(i%3=1)if(i%5==2){printf("**%d",i);break;}i++;}while(i!=0);printf("\n");}程序的運行結(jié)果是A、*3*5B、*5C、*7D、*2*6標(biāo)準(zhǔn)答案:C知識點解析:由于循環(huán)變量i的初值等于5,所以第一、二次進(jìn)入do....while循環(huán)語句時,條件語句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;}不執(zhí)行,只執(zhí)行i++語句。當(dāng)i=7時,滿足條件語句if(i%3==1),if(i%5==2){printf("*%d",i);break;},所以輸出*7,結(jié)束循環(huán)。10、若變量已正確定義,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結(jié)果是A、0,0B、1,1C、0,1D、程序進(jìn)入無限循環(huán)標(biāo)準(zhǔn)答案:C知識點解析:d0…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達(dá)式的值。當(dāng)值為非0時,轉(zhuǎn)去執(zhí)行步驟①;當(dāng)值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達(dá)式i++的值,其值為0,所以循環(huán)結(jié)束。此時變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i的值“1”。11、若有以下程序main(){inta=-2,b=0;do{++b;}while(a++);printf("%d,%d\n",a,b);}則程序的輸出結(jié)果是A、0,2B、1,2C、1,3D、2,3標(biāo)準(zhǔn)答案:C知識點解析:由于a的初始值等于-2,所以while循環(huán)語言執(zhí)行三次結(jié)束,第一次a=-2,b=1,然后判斷循環(huán)條件a++非零,執(zhí)行第二次循環(huán)體a=-1,b=2,判斷循環(huán)條件非零,執(zhí)行循環(huán)體a=0,b=3,判斷循環(huán)條件為0,此時變量a的值等于1。12、有以下程序main(){inta=3;do{printf("%d,",a-=2);}while(!(-a);printf("\n");}程序運行后的輸出結(jié)果是A、1,B、1,-2,C、3,0,D、1,0標(biāo)準(zhǔn)答案:B知識點解析:循環(huán)體執(zhí)行兩次。首先輸出a=1,然后判斷表達(dá)式!(--A,a為0,循環(huán)條件表達(dá)式值為1,執(zhí)行第二次循環(huán)體,輸出a=-2。判斷循環(huán)條件表達(dá)式值為0,循環(huán)退出。13、若i和k都是int類型變量,有以下for語句for(i=0,k=-1;k=1;k++)printf("*\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是A、循環(huán)體執(zhí)行兩次B、循環(huán)體執(zhí)行一次C、循環(huán)體一次也不能執(zhí)行D、構(gòu)成無限循環(huán)標(biāo)準(zhǔn)答案:D知識點解析:本題考查for循環(huán)。本題的for循環(huán)初始條件為i=0,k=-1;循環(huán)結(jié)束條件為k=1永遠(yuǎn)為真(k不為0),因此循環(huán)不能結(jié)束。14、若k是int類型變量,且有以下for語句1for(k=-1;k<0;k++)printf("*\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是A、循環(huán)體執(zhí)行兩次B、循環(huán)體執(zhí)行一次C、循環(huán)體一次也不執(zhí)行D、構(gòu)成無限循環(huán)標(biāo)準(zhǔn)答案:B知識點解析:本題考查for循環(huán)的使用。在程序中,for循環(huán)的初始值k=-1,循環(huán)結(jié)束條件是k<0,每次循環(huán)k增加1,第一次進(jìn)入循環(huán)的時候k為-1,k小于0,執(zhí)行打印,然后k的值變成0,下次進(jìn)入循環(huán)k不小于0,循環(huán)結(jié)束,因此循環(huán)只能執(zhí)行一次。15、有以下程序段inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是A、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作B、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作C、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運行D、for循環(huán)語句固定執(zhí)行8次標(biāo)準(zhǔn)答案:C知識點解析:rand()函數(shù)功能為產(chǎn)生一個隨機(jī)數(shù),rand()%5,則產(chǎn)生0~4之間的任意隨機(jī)數(shù),當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時,執(zhí)行“case0:exit(0)”這條語句,結(jié)束程序的運行。16、有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是A、963B、852C、741D、875421標(biāo)準(zhǔn)答案:B知識點解析:y的值的初值為9,所以在for循環(huán)中,當(dāng)y的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達(dá)式--y的值。因為自減符號在y的前面,所以首先y的自減1,然后再輸出y的值,故輸出結(jié)果為852。17、有以下程序#includemain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}pfinff("m=%d\n",m);}程序運行后的輸出結(jié)果是A、m=2B、m=4C、m=5D、m=6標(biāo)準(zhǔn)答案:D知識點解析:這道題考查了for。循環(huán)的嵌套應(yīng)用。對于外層for循環(huán)來說,變量i從1增到2,循環(huán)執(zhí)行2次。當(dāng)變量i的值等于1時,對于內(nèi)層for循環(huán)來說,變量j從3減到1,求得變量m的值等于6。當(dāng)變量i的值等于2時,第一遍執(zhí)行內(nèi)層for循環(huán),變量j的值等于3,那么i*j的值等于6,其值大于3,這時執(zhí)行break語句,退出內(nèi)層for循環(huán)的執(zhí)行。所以程序輸出變量m的值為6。18、有以下程序#includevoidmain(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}pfintf("%d\n",c);}A、9B、7C、5D、3標(biāo)準(zhǔn)答案:D知識點解析:在這段程序中,整型變量c的初始值賦為0,在第一次執(zhí)行for循環(huán)語句時,因為此時變量k的值等于1,所以在switch語句中首先執(zhí)行default語句,給變量c的值加1,因為在default語句后面沒有break語句,所以就會接著執(zhí)行case2這條語句,再給變量c的值加1,其值變?yōu)?,這時退出switch語句塊,進(jìn)入第二次for循環(huán),此時k的值等于2,就會執(zhí)行switch語句塊中的case2這條語句,再給變量c的值加1,這時變量c的值就是3,此時退出switch語句塊,循環(huán)變量k的值加l,成為3,此時已不再滿足循環(huán)條件,執(zhí)行程序中的最后一條語句,把變量c的值在屏幕上輸出。19、有以下程序#includemain(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序的運行結(jié)果是A、432543B、233445C、453423D、233423標(biāo)準(zhǔn)答案:C知識點解析:本題中的外層行變量i從3逐次遞減到1,共輸出3行。內(nèi)層列變量j每次從1遞增到2,每行輸出2個數(shù)字。所以當(dāng)i=3時,第一行輸出i+1=4i+2=5,即45;當(dāng)i=2時,第一行輸出i+1=3和i+2=4,即34;當(dāng)i=1時,第一行輸出i+1=2和i+2=3,即23。20、設(shè)變量己正確定義,則以下能正確計算f=n!的程序段是A、f=0;for(i=1;i<=n;i++)f*=i;B、f=1;for(i=1;i<n;i++)f*=i;C、f=1;for(i=n;i>1;i++)f*=i;D、f=1;for(i=n;i>=2;i--)f*=i;標(biāo)準(zhǔn)答案:D知識點解析:本題主要考查for循環(huán)的使用。題目要求計算階乘n!,通過for循環(huán)來實現(xiàn),循環(huán)變量i可以從1到n(包括n)或者從n到1,在循環(huán)體內(nèi)做累乘。選項A中,累乘變量的初值為0,最終計算結(jié)果也為0;選項B中循環(huán)次數(shù)為n-1次,累乘結(jié)果少乘了n;選項C是死循環(huán);選項D正確。21、有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是A、24B、5C、32D、40標(biāo)準(zhǔn)答案:C知識點解析:在for循環(huán)體中,首先判斷自變量i能否被5整除,然后再自加兩次,最后判斷i能否被8整除。當(dāng)for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故執(zhí)行“printf("%d",i);”語句,即輸出32。22、有以下程序#includevoidmain(){charb,c;inti;b=’a’;c=’A’;for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf("\n");}程序運行后的輸出結(jié)果是A、ABCDEFB、aBeDeFC、abcdefD、AbCdEf標(biāo)準(zhǔn)答案:D知識點解析:循環(huán)變量i從0依次遞增到5,依次輸出字母.A,b,C,d,E,f。23、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是A、8,11B、10,14C、7,11D、9,18標(biāo)準(zhǔn)答案:B知識點解析:在這段程序中變量a的初值等于1,變量b的初值等于2。第1次執(zhí)行for循環(huán)語句后,變量a的值等于3,變量b的值等于3。第2次執(zhí)行for循環(huán)后,變量a等于6,變量b的值等于7。第3次執(zhí)行for循環(huán)后,變量a等于9,變量b的值等于14。第4次執(zhí)行for循環(huán)后,變量a等于10,這時退出for循環(huán),此時變量b的值等于14。因而程序輸出變量a,b的值分別為10,14。24、有以下程序段inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%d\n",n);}A、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作B、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作C、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運行D、for循環(huán)語句固定執(zhí)行8次標(biāo)準(zhǔn)答案:C知識點解析:rand()函數(shù)功能為產(chǎn)生一個隨機(jī)數(shù),rand(
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人二手車轉(zhuǎn)讓及二手車交易風(fēng)險防范合同4篇
- 二零二五版多房產(chǎn)離婚協(xié)議書-2025年度家庭財產(chǎn)分割實施標(biāo)準(zhǔn)3篇
- 二零二五年度城市綜合體項目投資典當(dāng)協(xié)議4篇
- 光伏區(qū)圍欄施工方案
- 建筑工程石材采購合同(2篇)
- 家具家居出海:機(jī)遇、挑戰(zhàn)與應(yīng)對策略 頭豹詞條報告系列
- 二零二五年度民宿布草租賃與民宿客棧服務(wù)質(zhì)量保障合同4篇
- 2024年咨詢工程師(經(jīng)濟(jì)政策)考試題庫帶答案(考試直接用)
- 2025年度個人商鋪買賣合同規(guī)范范本3篇
- 2025年度宅基地使用權(quán)流轉(zhuǎn)登記代理服務(wù)合同4篇
- 2024年縣鄉(xiāng)教師選調(diào)進(jìn)城考試《教育學(xué)》題庫及完整答案(考點梳理)
- 車借給別人免責(zé)協(xié)議書
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
- 第七章力與運動第八章壓強(qiáng)第九章浮力綜合檢測題(一)-2023-2024學(xué)年滬科版物理八年級下學(xué)期
- 醫(yī)療機(jī)構(gòu)診療科目名錄(2022含注釋)
- 微視頻基地策劃方案
- 光伏項目質(zhì)量評估報告
- 八年級一本·現(xiàn)代文閱讀訓(xùn)練100篇
- 2023年電池系統(tǒng)測試工程師年度總結(jié)及下一年計劃
- 應(yīng)急預(yù)案評分標(biāo)準(zhǔn)表
- 《既有建筑結(jié)構(gòu)安全監(jiān)測技術(shù)標(biāo)準(zhǔn)》(征求意見稿)及條文說明
評論
0/150
提交評論