版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級(C語言)機試模擬試卷32(共9套)(共300題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、以下敘述中正確的是()。A、C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方B、C程序的書寫格式是固定的,每行只能寫一條語句C、構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名D、在對C語言程序進行編譯時,可以發(fā)現(xiàn)注釋行中的拼寫錯誤標準答案:A知識點解析:本題考查的是C語言程序設(shè)計的初步知識。選項A),程序中/*…*/表示注釋部分,注釋只是給人看的,對程序的編譯和運行不起作用,可以在程序中的任何位置;選項B),C語言的書寫格式自由,一行可以寫多條語句,一條語句也可以寫在不同行上;選項C),一個C程序中必須有且只能有一個由“main”命名的主函數(shù),其他函數(shù)由用戶自行命名:選項D),程序的注釋僅僅是提供閱讀之用,并不參與程序的編譯,所以編譯也就不會發(fā)現(xiàn)注釋行中的錯誤。2、有下列程序,其中%u表示按無符號整數(shù)輸出。main(){unsignedintx=0xFFFF;/*x的初值為十六進制數(shù)*/printf(’’%u\n’’,x);}程序運行后的輸出結(jié)果是()。A、-1B、65535C、32767D、0xFFFF標準答案:B知識點解析:“%u”格式符表示以十進制形式輸出無符號整形變量。本題中無符號整形變量x=0xFFFF表示的是十六進制無符號整型變量的最大值65535,所以最后輸出的結(jié)果為65535。3、以下選項中正確的語句組是()。A、chars[];s="HELLO!";B、char*s;s={"HELLO!"};C、chars[10];s="HELLO!";D、char*s;s="HELLO!";標準答案:D知識點解析:本題考查數(shù)組和字符串的賦值。選項A)中數(shù)組s沒有明確其大小就賦值是錯誤的。選項B)中不能有大括號,選項C)中的寫法應(yīng)該為{’H’’E’’L’’L’’O’’!’}。4、if語句的基本形式為:if(表達式)語句,其中“表達式”()。A、可以是任意合法的表達式B、必須是邏輯表達式C、必須是邏輯表達式或關(guān)系表達式D、必須是關(guān)系表達式標準答案:A知識點解析:本題考查if表達式。if(表達式)中的表達式可以為任何合法的表達式,一般情況下為邏輯、條件表達式,需要注意的是,當?shù)忍?==)誤寫為賦值號(=)時不會報錯的,但是其值恒為1。5、有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3,0,0},i;fp=fopen("d2.dat","wb");fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen("d2.dat","rb");fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i<10;i++)printf("%d,",a[i]);}程序的運行結(jié)果是()。A、1,2,3,0,0,0,0,0,0,0,B、1,2,3,1,2,3,0,0,0,0,C、123,0,0,0,0,123,0,0,0,0,D、1,2,3,0,0,1,2,3,0,0,標準答案:D知識點解析:首先用函數(shù)fopen()以“wb”的方式打開文件“d2.dat”,然后調(diào)用兩次fwrite函數(shù)將數(shù)組a的5個元素,依次輸出到文件fp中(共10個字節(jié)),然后關(guān)閉文件。再次打開文件,使用文件指針指向文件的開頭,調(diào)用fread函數(shù)從文件fb中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},因此最后的輸出結(jié)果為“1,2,3,0,0,1,2,3,0,0”。6、下列程序的運行結(jié)果是()。#include<stdio.h>voidmain()voidfun(int*s,int*p){inta[]={2,3,4,5},k,x;{staticintt=3;for(k=0:k<4:k++)*p=s[t]:{fun(a,&x);t--;}printf("%d,",x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,標準答案:A知識點解析:分析fun函數(shù)程序段,可知fun函數(shù)要實現(xiàn)的功能是將s中第(t+1)個元素前面(含該元素)的元素逆置賦給數(shù)組p。由于fun函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)劬(a,&x)時,就是將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。7、算法的空間復(fù)雜度是指()。A、算法在執(zhí)行過程中所需要的計算機存儲空間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A。8、下列不屬于軟件工程3個要素的是()。A、工具B、過程C、方法D、環(huán)境標準答案:D知識點解析:軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。9、C語言主要是借助以下哪種手段來實現(xiàn)程序模塊化()。A、定義函數(shù)B、定義常量和外部變量C、使用豐富的數(shù)據(jù)類型D、使用三種基本結(jié)構(gòu)語句標準答案:A知識點解析:該段程序的作用是將最后一個空格后面的字符串覆蓋數(shù)組a中的數(shù)據(jù),所以for循環(huán)執(zhí)行完畢后,a[]="you!",所以答案選A)。10、下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}A、32B、26C、10D、4標準答案:C知識點解析:“聯(lián)合體”所占用的內(nèi)存空間為最長的成員所占用的空間。題中聯(lián)合體的z[10]成員是聯(lián)合體中占空間最長的成員。11、對序線性表(23,29,34,55,60,70,78)用二分法查找值為60的元素時,需要比較次數(shù)為()。A、1B、2C、3D、4標準答案:C知識點解析:根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進行比較,由于60大于55,所以在線性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進行比較,由于60小于70,所以在線性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時兩者相等,即查找成功。12、若有定義:inta=7;floatx=2.5,y=4.7;則表達式“x+a%3*(int)(x+y)%2/4”的值是()。A、2.500000B、2.750000C、3.500000D、0.000000標準答案:A知識點解析:此題考查的是變量的類型轉(zhuǎn)換。表達式中“(int)(x+y)把x+y=(7.2)”的值強制轉(zhuǎn)化成整型即得到7,那么“a%3*(int)(x+y)%2”的值為整型常量1,所以“a%3*(int)(x+y)%2/4”的值為0;因為變量x是浮點型變量,所以表達式“x+a%3*(int)(x+y)%2/4”的結(jié)果也是浮點型,得到2.500000。13、若有定義語句:intx=12,y=8,z;在其后執(zhí)行語句:z=0.9+x/y:則z的值為()。A、1B、1.9C、2D、2.4標準答案:A知識點解析:x、y為整數(shù),x/y值為1,加上0.9為1.9,賦值給整型變量z,接收后為1。14、有以下程序#includeintfun(intas*intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){pfintf("%d\n",fun(4,2));}程序的運行結(jié)果是()。A、1B、2C、3D、4標準答案:B知識點解析:由程序可知,函數(shù)fun(inta,intb)是一個遞歸函數(shù)。所以當主函數(shù)中調(diào)用fun(4,2)時,其執(zhí)行過程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。所以正確答案為選項B)。15、有以下程序:#inc1ude#inc1ude"string.h"voidfun(char*s[],intn){char*t,inti,j,for(i=0;istrlen(s[j]){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的運行結(jié)果是()。A、xy,aaaaccB、aaaacc,xyC、bcc,aabccD、aabcc,bcc標準答案:A知識點解析:從main函數(shù)入手,定義了一個一維數(shù)組并賦初值,接著調(diào)用函數(shù)fun(),函數(shù)的功能是:比較數(shù)組中各元素的長度,按元素長度從小到大的順序排列元素,所以執(zhí)行“fun(ss,5)”函數(shù)后,“*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"}”,所以調(diào)用printf函數(shù)輸出ss[0],ss[4]的值分別為xy,aaaacc。16、有以下程序:#include<stdio.h>voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf("%d,",13.[i]);}程序運行后的輸出結(jié)果是()。A、6,2,3,4,5,B、2,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,標準答案:A知識點解析:本題考查的是函數(shù)的地址調(diào)用,將數(shù)組名作為數(shù)組首地址進行傳遞,然后取首個數(shù)組元素值進行加1運算,循環(huán)5次。因此A選項正確。17、有如下程序#include<stdio.h>main(){inti,data;scanf("%d",&data);for(i=0;i<5;i++){if((i<data&&i%2)||(i>data&&i%3==0))continue;printf("%d,",i);程序運行時,從鍵盤輸入:13<回車>后,程序輸出結(jié)果為()。A、0,2.4,B、1,3,5,C、0,1,2.3,4,5,D、0,1,2,3,標準答案:A知識點解析:程序通過scanf()函數(shù),輸入data的值13,for循環(huán)中,i的值遍歷0~4,對每個i的值執(zhí)行if語句判斷,其中:i>data始終為假;所以表達式i>data&&i%3==0始終為假;所以if語句的判斷條件需要看i<data&&i%2的值,由于i<data始終為真,所以i<data&&i%2的值又取決于i%2的值,也就是說整個if語句的判斷條件取決于i%2的值,如果i%2為真,那么if語句成立,執(zhí)行continue,否則執(zhí)行printf()函數(shù),所以當i取值l、3時,i%2的為1,if條件成立,執(zhí)行continue;當i取值0、2、4時,i%2的值為0,if條件不成立,執(zhí)行printf()函數(shù),輸出0,2,4,本題答案為A。18、軟件需求規(guī)格說明書的作用不包括()。A、軟件設(shè)計的依據(jù)B、軟件可行性研究的依據(jù)C、軟件驗收的依據(jù)D、用戶與開發(fā)人員對軟件要做什么的共同理解標準答案:B知識點解析:《軟件可行性分析報告》是軟件可行性研究的依據(jù)。19、以下程序的輸出結(jié)果是()。#includemain(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf(“%d,%d\n”,a,b);elseprintf(“%d,%d\n”,b,a);}A、2.2B、1,3C、3,2D、3.1標準答案:C知識點解析:解答本題的關(guān)鍵在于if語句條件中的表達式。初始時a=1,b=3,所以++a=2>0,因此++a<0為假:因為是進行邏輯與(&&)運算,在&&的一個運算對象為假的前提下不用判斷第二個運算對象的真假,就可以直接得出整個表達式的值為邏輯0,所以執(zhí)行else語句。20、下列敘述中正確的是()。A、在switch語句中,不一定使用break語句B、在switch語句中必須使用defaultC、break語句必須與switch語句中的case配對使用D、break語句只能用于switch語句標準答案:A知識點解析:defauh語句在switch語句中可以省略,所以B錯誤;switch語句中并非每個case后都需要使用break語句,所以C錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D錯誤。21、以下程序段中的變量已正確定義for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");該程序段的輸出結(jié)果是()。A、*B、****C、**D、********標準答案:A知識點解析:暫無解析22、下述程序的輸出結(jié)果是()。#includevoidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d",*(p++));printf("%d",**q);}A、22B、11C、34D、12標準答案:D知識點解析:程序首先定義了一個指向一維數(shù)組a的指針p,一個指向指針變量p的指針變量q,輸出*(p++)是先輸出*p即a[0]的值,再將指針p指向數(shù)組的下一個元素a[1],輸出**q是輸出指針p所指向單元的內(nèi)容,即a[1]的值。23、有以下程序#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}執(zhí)行后的輸出結(jié)果是A、1B、2C、3D、4標準答案:C知識點解析:該程序中int*p1=&a,*p2=&b,*p=&c;指定義三個指針變量,并賦值,即使p1指向a;p2指向b;p指向c。*p=*p1*(*p2);該條語句是給p所指的存儲單元c賦值,就是p1所指的存儲單元的值,即a的值,與p2所指的存儲單元b的值相乘,也就是c=a*b,等價于c=1*3=3;因此C選項正確。24、在數(shù)據(jù)庫的三級模式結(jié)構(gòu)中,描述數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)構(gòu)和特征的是()。A、內(nèi)模式B、用戶模式C、外模式D、概念模式標準答案:D知識點解析:數(shù)據(jù)庫系統(tǒng)在其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式??钅J绞菙?shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,全體用戶的公共數(shù)據(jù)視圖。外模式也稱子模式或者用戶模式,是用戶的數(shù)據(jù)視圖,也就是用戶所能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。內(nèi)模式又稱物理模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的捕述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。描述數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)構(gòu)和特征的是概念模式,故D選項正確。25、有以下程序:#iinclude<stdio.h>main(){inta=7,b=0;do{b+=a;a-=1;}while(a--);printf("%d,%d\n",b,a);}執(zhí)行后的輸出結(jié)果是()。A、28,0B、28,1C、16,0D、16,-1標準答案:D知識點解析:分析程序可知,do語句1…while(語句2),每次循環(huán)在語句1中a的值減1,在語句2中判斷a的值后,a的值又減1,所以在每次循環(huán)體執(zhí)行完后,b累加的a的值分別為7,5,3,1,a的值分別為6,4,2,0,最后當a為0時,while判斷條件為false,此時a的值再減1,為-1,到此循環(huán)結(jié)束,所以b的值為16,a的值為-1,故答案選D。26、有以下程序:#inelude<stdio.h>intfun(inta[],intn,intx){int*p=a;while(p<a+n&&*p!=x)p++;if(p<a+n)returnp-a;elsereturn-1;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};printf("%d\\n",fun(a,10,10));}程序運行后的輸出結(jié)果是()。A、9B、-1C、10D、0標準答案:A知識點解析:while(p<a+n&&*p!=x)p++;當p=a;n=10,x=10;時while循環(huán)條件成立,直到p=a+9,結(jié)束循環(huán),執(zhí)行下一條語句,if條件成立,返回p-a,此時執(zhí)行p-a=a+9-a=9;因此,輸出9。故答案為A選項。27、某二叉樹共有730個結(jié)點,其中度為1的結(jié)點有30個,則葉子結(jié)點個數(shù)為()。A、不存在這樣的二叉樹B、351C、1D、350標準答案:A知識點解析:在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件個數(shù)稱為該結(jié)點的度,所有結(jié)點中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結(jié)點總是比度為2的結(jié)點多一個。如果有一棵二叉樹,結(jié)點總數(shù)為730,假設(shè)度為0的結(jié)點個數(shù)為n。則有n+30+n-1=730,n=350.5,由于結(jié)點個數(shù)必須是整數(shù),所以不可能存在題目中這樣的二叉樹。故選A選項。28、數(shù)據(jù)庫系統(tǒng)的三級模式不包括()。A、數(shù)據(jù)模式B、內(nèi)模式C、外模式D、概念模式標準答案:A知識點解析:數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、內(nèi)模式和外模式。29、關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括()。A、排序、索引、統(tǒng)計B、選擇、投影、連接C、關(guān)聯(lián)、更新、排序D、顯示、打印、制表標準答案:B知識點解析:關(guān)系數(shù)據(jù)庫管理系統(tǒng)的專門關(guān)系運算包括選擇運算、投影運算和連接運算。30、若有以下定義,則對a數(shù)組元素地址的正確引用是()。inta[5],*p=a;A、p+5B、*a+lC、&a+lD、&a[0]標準答案:D知識點解析:本題考查如何引用數(shù)組元素的地址。選項A中,p+5引用的是a[5]的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤;選項B中,*a+1指的是將數(shù)組a的第一個元素加1;選項C中,這種引用方式錯誤;選項D中,&a[0]引用的是數(shù)組的首地址。31、以下敘述中正確的是A、循環(huán)發(fā)生嵌套時,最多只能兩層B、三種循環(huán)for,while,do-while可以互相嵌套C、循環(huán)嵌套時,如果不進行縮進形式書寫代碼,則會有編譯錯誤D、for語句的圓括號中的表達式不能都省略掉標準答案:B知識點解析:A選項中,循環(huán)發(fā)生嵌套時,沒有規(guī)定層數(shù);C選項中,循環(huán)嵌套時,書寫代碼時沒有要求必須縮進;D選項中,for語句的圓括號中的表達式都可以省略掉。因此B選項正確。32、有以下程序:#include#includestmctSTU{inta;charb[10];floatc;};voidfun(structSTUt);main(){structSTUa={1001,’’Tim’’,635.0};fun(a);printf(’’%d,%s,%5.1f\n’’,a.a(chǎn),a.b,a.c);}voidfun(structSTUt){t.a(chǎn)=1002:strcpy(t.b,’’Dom’’);t.c=701.0;}程序運行后的輸出結(jié)果是()。A、1001,Tim,635.0B、1002,Dom,701.0C、1002,Dom,701.0D、1001,Tim,701.0標準答案:A知識點解析:此題主要是考查結(jié)構(gòu)體作為子函數(shù)參數(shù)的值傳遞還是地址傳遞的問題,子函數(shù)的功能是將形參的值用一個固定的值覆蓋,但因為是值傳遞,所以實參的值不會變化,所以在主函數(shù)中的結(jié)構(gòu)體a的值沒有發(fā)生變化。33、在以下選項中,按照C語言規(guī)定,不能出現(xiàn)在標識符中的是()。A、大寫字母B、下劃線C、數(shù)字字符D、連接符標準答案:D知識點解析:按照C語言規(guī)定,標識符由字母、數(shù)字和下劃線組成,且開頭必須是字母或下劃線,所以選項D不合法。34、下列說法不正確的是A、int*fun();----fun是一個返回int指針的函數(shù)B、int(*fun)();---fun是一個返回int指針的函數(shù)C、int(*array[5])0;----array是一個有5個元素的數(shù)組,每一個元素都是一個函數(shù)指針,指向一個返回int的函數(shù)。D、int(*fun(int))(int);----fun是帶有一個int參數(shù)的函數(shù),返回值是一個函數(shù)指針,這個指針指向帶有一個int參數(shù)并返回int的函數(shù)。標準答案:B知識點解析:該函數(shù)中fun是一個函數(shù)指針。指向一個返回int的函數(shù)。35、有以下程序#include<stdio.h>main(){intx=0x13;if(x=0x12)printf("True");printf("False\n");}程序運行后的輸出結(jié)果是A、TrueB、TrueFalseC、FalseD、TrueFalseTrue標準答案:B知識點解析:if(x=0x12)表示x=0x12!=0即x=0x12為假時,執(zhí)行printf("True"),再執(zhí)行printf("False\n"),因此答案為B選項,注意賦值操作符"="與相等操作符"=="的區(qū)別。36、設(shè)有以下程序段floata[8]={1.0,2.0};intb[1]={0};charc[]={"A","B"};chard=="1";以下敘述正確的是A、只有變量c的定義是合法的B、只有變量a,b,c的定義是完全合法的C、所有變量的定義都是完全合法的D、只有變量a,b的定義是完全合法的標準答案:D知識點解析:floata[8]={1.0,2.0};定義了一個包含8個float型元素的數(shù)組,并初始化了數(shù)組的前2項,其他項是隨機數(shù)。intb[1]={0},定義了只有一個int型元素的數(shù)組,并初始化為0。charc[]={"A","B"};定義一個char型數(shù)組,大小有初始化元素決定,但初始化值是字符串,類型不兼容,編譯出錯。chard="1";定義一個char型變量,但是初始化賦值字符串,類型不兼容,編譯出錯。因此只有a,b定義和初始化正確。故答案為D選項37、有以下程序段:#include<stdio.h>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、for循環(huán)語句固定執(zhí)行8次B、當產(chǎn)生的隨機數(shù)n為4時結(jié)束循環(huán)操作C、當產(chǎn)生的隨機數(shù)n為1和2時不做任何操作D、當產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行標準答案:D知識點解析:case常量表達式只是起語句標號作用,并不是該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不再進行判斷,直到碰到break或函數(shù)結(jié)束為止。簡單的說break是結(jié)束整個循環(huán)體,而continue是結(jié)束單次循環(huán)。B)選項中當產(chǎn)生的隨機數(shù)n為4時要執(zhí)行打印操作。C)選項中當產(chǎn)生的隨機數(shù)為1和2時分別執(zhí)行case3與case4后面語句的內(nèi)容。由于存在break語句所以for循環(huán)不是固定執(zhí)行8次,執(zhí)行次數(shù)與產(chǎn)生的隨機數(shù)n有關(guān)系。38、若有以下定義,則對數(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個元素。39、若定義函數(shù)“int*func()”,則函數(shù)func的返回值為()。A、一個實數(shù)B、一個指向整型變量的指針C、一個指向整型函數(shù)的指針D、一個整型函數(shù)的入口地址標準答案:B知識點解析:本題考查函數(shù)返回值。fun函數(shù)的返回值類型為int*類型,即函數(shù)返回一個指向整型變量的指針。二、程序填空題(本題共1題,每題1.0分,共1分。)40、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和三門課的成績。所有學(xué)生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號從小到大排序后,再用二進制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#defineN53typedefstructstudent{4longsno;5charname[10];6floatscore[3];7}STU;8voidfun(char*filename)9{FILE*fp;inti,j;10STUs[N],t;11/*********found*********/12fp=fopen(filename,【1】);13fread(s,sizeof(STU),N,fp);14fclose(fp);15for(i=0;i<N-1;i++)16for(j=i+1;j<N;j++)17/*********found*********/18if(s[i].sno【2】s[j].sno)19{t=s[i];s[i]=s[j];20s[j]=t;}21fp=fopen(filename,’’wb’’);22/*********found*********/23【3】(s,sizeof(STU),N,fp);24fclose(fp);25}26main()27{STUt[N]={{10005,’’ZhangSan’’,95,80,88},{10003,’’LiSi’’,85,70,78},{10002,’’CaoKai’’,75,60,88},{10004,’’FangFang’’,90,82,87},{10001,’’MaChao’’,91,92,77}},ss[N];28inti,j;FILE*fp;29fp=fopen(’’student.dat’’,’’wb’’);30fwrite(t,sizeof(STU),5,fp);31fclose(fp);32printf(’’\n\nTheoriginaldata:\n\n’’);33for(j=0;j<N;j++)34{printf(’’\nNo:%idName:%-8sscores.’’,t[j].sno,t[j].name);35for(i=0;i<3;i++)36printf(’’%6.2f’’,t[j].score[i]);37printf(’’\n’’);38}39fun(’’student.dat’’);40printf(’’n\nThedataaftersorting:\n\n’’);41fp=fopen(’’student.dat’’,’’rb’’);42fread(ss,sizeof(STU),5,fp);43fclose(fp);44for(j=0;j<N;j++)45{printf(’’\nNo:%1dName:%-8sScores.’’,ss[j].sno,ss[j].name);46for(i=0;i<3;i++)47printf(’’%6.2f’’,ss[j].score[i]);48printf(’’\n’’);49}50}標準答案:(1)’’rb’’(2)>(3)fwrite知識點解析:填空l:題目中要求從形參filename所指的文件中讀入學(xué)生的數(shù)據(jù),以此可以看出本空應(yīng)該填寫’’rb’’。填空2:此處的if語句是比較學(xué)號的大小,如果學(xué)號大就和學(xué)號小的換位,以此本空填寫>。填空3:題目要求所有的學(xué)生數(shù)據(jù)均以二進制方式輸出到文件中,因此本空填寫fwrite。三、程序修改題(本題共1題,每題1.0分,共1分。)41、下列給定程序中函數(shù)fun的功能是:將s所指字符串的正序和反序進行連接,形成的新串放在t所指的數(shù)組中。例如,當s所指字符串為“ABCD”時,t所指字符串中的內(nèi)容應(yīng)為“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行.也不得更改程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>/*********found*********/voidfun(chars,chart){inti,d;d=strlen(s);for(i=0;i<d;i++)t[i]=s[i];for(i=0;i<d;i++)t[d+i]=s[d-1-i];/*********found*********/t[2*d-1]=’\0’;}main(){chars[100],t[100];printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%skn",t);}標準答案:(1)voidfun(char*s,char*t)(2)t[2*d]=’\0’;或t[d+i]=’\0’;或t[2*d]=0;或t[d+i]=0;知識點解析:(1)從調(diào)用函數(shù)來看,函數(shù)傳遞的是數(shù)組,所以函數(shù)的形參應(yīng)為指針。(2)循環(huán)結(jié)束后回文字符的個數(shù)為2*d個,因為數(shù)組下標是從0開始的,所以最后一個字符的下標為2*d一1,在最后一個字符的后面加上結(jié)束符’\0,因此為t[2*d]=’\0’;。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)42、編寫函數(shù)fun,其功能是:將s所指字符串中除了下標為奇數(shù)同時ASCII碼值也為奇數(shù)的字符之外,其余的所有字符全部刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若s所指字符串的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII碼值為奇數(shù),但所在元素的下標為偶數(shù),因此需要刪除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應(yīng)當刪除,其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){chars[100],t[100];printf("knPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("knTheresultis:%s\n",t);}標準答案:voidfun(char*s,chart[]){inti,j=0,n;n=strlen(s);for(i=0;i<n;i++)if((i%2)&&(s[i]%2)){t[j++]=s[i];/*將下標為奇數(shù)同時ASCII碼值為奇數(shù)的字符放入數(shù)組t中*/}t[j]=’\0’;/*最后加上結(jié)束標識符*/}知識點解析:本題要求除了下標為奇數(shù)同時ASCII碼值也為奇數(shù)的字符,其余的所有字符都刪除,即要留下下標為奇數(shù)同時ASCII碼值也為奇數(shù)的字符。所以if的條件語句應(yīng)為:if(i%2!=0&&s[i]%2!=0)。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參s所指字符串中下標為奇數(shù)的字符按ASCII碼大小遞增排序,并將排序后下標為奇數(shù)的字符取出,存入形參P所指字符數(shù)組中,形成一個新串。例如,形參s所指的字符為“baawrskjghzlicda”,執(zhí)行后p所指字符數(shù)組中的字符串應(yīng)為“aachjlsw”。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s,char*p)(inti,j,n,x,t;n=0;for(i=0;s[i]!=’\0’;i++)n++;for(i=1;i<n-2;i=i+2){/*********found*********/【1】;/*********found*********/for(j=【2】+2;j<n;j=j+2)if(s[t]>s[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=1,j=0;i<n;i=i+2,j++)p[j]=s[i];/*********found*********/p[j]=【3】;}main(){chars[80]="baawrskjghzlicda",p[50];printf("\nTheoriginalstringis:%s\n",s);fun(s,p);printf("\nTheresultis:%s\n",p);}標準答案:(1)t=i(2)i或t(3)’\0’或0知識點解析:本題中第1個for循環(huán)的作用是得到字符串的長度,第2個for循環(huán)的作用是對下標為奇數(shù)的字符按ASCII碼大小排序,最后將排好序的字符取出。填空1:取出字符串中下標為奇數(shù)的字符,所以將下標i賦值給中間變量t。填空2:此處for循環(huán)語句的作用是實現(xiàn)對下標為奇數(shù)的元素進行排序操作,所以循環(huán)變量初值應(yīng)填入i或t;。填空3:將下標為奇數(shù)的字符取出后,存入p所指的數(shù)組中,最后不要忘記在數(shù)組最后加入字符串結(jié)束標識’\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:用下面的公式求π的近似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止。π/4≈1-1/3+1/5-1/7+…例如,程序運行后,輸入0.0001,則程序輸出3.1414。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<math.h>#include<stdio.h>floatfun(floatnum){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;/*********found*********/while(t>=num){pi=pi+t;n=n+2;s=-s;/*********found*********/t=s%n;}pi=pi*4,returnpi;}voidmain(){floatn1,n2;system("CLS");printf("Enterafloatnumber:");scanf("%f",&n1),n2=fun(n1);printf("%6.4f\n",n2);}標準答案:(1)while(fabs(t)>=num)(2)t=s/n;知識點解析:(1)函數(shù)fun中while語句的作用是,當新的一項大于給定參數(shù)時,循環(huán)累計計算s的值。題目要求最后一項的絕對值小于給定參數(shù),因此循環(huán)條件應(yīng)當是while(fabs(t)>=num)。(2)變量t用來存放最后一項的值,因為每一項均為1或-1除以一個數(shù),所以此處應(yīng)使用除法運算符“/”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++加10打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun,其功能是:刪除一個字符串中指定下標的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標。例如,輸入一個字符串“World”,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為“Word”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn){}voidmain(){charstr1[LEN],str2[LEN];intn;system("CLS");printf("Enterthestring:\n");gets(str1);printf("Enterthepositionofthestringdeleted:");scanf("%d",&n);fun(str1,sir2,n);printf("Thenewstringis:%s\n",sir2);}標準答案:voidfun(chara[],chaxb[],intn){inti,k=0;for(i=0;a[i]!=’\0’;i++)if(i!=n)/*將不是指定下標的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=’\0’;/*在字符串最后加上結(jié)束標識*/}知識點解析:本題要求刪除字符串中指定下標的字符,即把非指定下標的字符保留,所以if語句條件表達式的內(nèi)容是if(i!=n)。字符串最后不要忘記加上字符串結(jié)束標識’\0’。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、下列敘述中正確的是()。A、循環(huán)隊列中的元素個數(shù)隨隊頭指針與隊尾指針的變化而動態(tài)變化B、循環(huán)隊列中的元素個數(shù)隨隊頭指針的變化而動態(tài)變化C、循環(huán)隊列中的元素個數(shù)隨隊尾指針的變化而動態(tài)變化D、以上說法都不對標準答案:A知識點解析:在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用隊頭指針front指向隊頭元素的前一個位置。因此,從隊頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間,所有的元素均為隊列中的元素。因此,循環(huán)隊列中的元素個數(shù)隨隊頭指針和隊尾指針的變化而變化,故A選項正確。2、下列關(guān)于棧的敘述中,正確的是()。A、棧底元素一定是最后入棧的元素B、棧頂元素一定是最先入棧的元素C、棧操作遵循“先進后出”的原則D、以上說法均錯誤標準答案:C知識點解析:棧頂元素總是后被插入的元素,也是最先被刪除的元素;棧底元素總是最先被插入的元素,也是最后才被刪除的元素;棧的修改是按“后進先出”的原則進行的。因此,棧稱為“先進后出”表或“后進先出”表,故C選項正確。3、設(shè)某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A、BCAB、CBAC、ABCD、CAB標準答案:C知識點解析:后序序列為CBA,中序序列為ABC,則說明A為根結(jié)點,并且B和C均在A的右子樹上;結(jié)點B和C中,后序序列為CB,中序序列為Bc,則說明結(jié)點C在結(jié)點B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC。4、結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()。A、程序的規(guī)模B、程序的效率C、程序設(shè)計語言的先進性D、程序易讀性標準答案:D知識點解析:結(jié)構(gòu)化程序設(shè)計強調(diào)的是程序的易讀性。5、為了使模塊盡可能獨立,要求()。A、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強B、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱C、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱D、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強標準答案:B知識點解析:系統(tǒng)設(shè)計的質(zhì)量主要反映在模塊的獨立性上。評價模塊獨立性的主要標準有兩個:一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度;二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。6、在結(jié)構(gòu)化方法中,軟件功能屬于軟件開發(fā)中的()階段。A、詳細設(shè)計B、需求分析C、總體設(shè)計D、編程調(diào)試標準答案:C知識點解析:總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進一步分解。分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復(fù)雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。7、一個算法應(yīng)當具有五個特性,以下敘述中正確的是()。A、有窮性、確定性、復(fù)雜性、有零個或多個輸入、有一個或多個輸出B、有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出C、有窮性、確定性、可行性、必須要有一個以上的輸入、有一個或多個輸出D、有窮性、確定性、復(fù)雜性、有零個或多個輸入、必須要多個輸出標準答案:B知識點解析:算法是指為解決某個特定問題而采取的確定且有限的步驟,一個算法應(yīng)當具有五個特征:有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出。8、關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。A、若干個二維表B、一個DBF文件C、一個DBC文件D、若干個DBC文件標準答案:A知識點解析:在關(guān)系數(shù)據(jù)庫中,一個袁就是一個關(guān)系,關(guān)系數(shù)據(jù)庫管理系統(tǒng)管理的關(guān)系就是多個二維表。9、結(jié)構(gòu)化程序設(shè)計中,下面對goto語句使用描述正確的是()。A、禁止使用goto語句B、使用goto語句程序效率高C、應(yīng)避免濫用goto語句D、以上說法均錯誤標準答案:C知識點解析:結(jié)構(gòu)化程序設(shè)計中,要注意盡量避免goto語句的使用,故C選項正確。10、設(shè)有如下三個關(guān)系表:下列操作中正確的是()。A、T=RnSB、T=RUSC、T=R×SD、T=R/S標準答案:B知識點解析:兩個相同結(jié)構(gòu)關(guān)系的“并”是由屬于這兩個關(guān)系的元組組成的集合。11、不列選項中,不屬于數(shù)據(jù)庫管理的是()。A、數(shù)據(jù)庫的建立B、數(shù)據(jù)庫的調(diào)整C、數(shù)據(jù)庫的監(jiān)控D、數(shù)據(jù)庫的校對標準答案:D知識點解析:數(shù)據(jù)庫管理一般包括:數(shù)據(jù)庫的建立、數(shù)據(jù)庫的調(diào)整、數(shù)據(jù)庫的重組、數(shù)據(jù)庫的安全性控制與完整性控制、數(shù)據(jù)庫的故障恢復(fù)和數(shù)據(jù)庫的監(jiān)控。12、以下敘述中錯誤的是()。A、C程序經(jīng)過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件B、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令C、用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中D、C語言源程序經(jīng)編譯后生成后綴為.obi的目標程序標準答案:B知識點解析:C語言程序編譯時將每條可執(zhí)行語句轉(zhuǎn)換為二進制的機器指令,但非執(zhí)行語句(如注釋語句)不被編譯,故B選項錯誤。13、若有定義:ima=0,b=0,c=0,d=0;,有C語言表達式(a++&&b++)?c++:d++,以下關(guān)于其執(zhí)行順序的敘述中正確是()。A、先執(zhí)行a++,表達式a++的值為0,由此即可確定(a++&&b++)值為0,因此執(zhí)行d++B、先執(zhí)行a++,表達式a++的值為0;再執(zhí)行b++,表達式b++的值為0,由此可確定(a++&&b++)值為0,因此執(zhí)行d++C、先執(zhí)行a++,表達式a++的值為1;再執(zhí)行b++,表達式b++的值為1,由此可確定(a++&&b++)值為1,因此執(zhí)行c++D、先執(zhí)行b++,表達式b++的值為1;再執(zhí)行a++,表達式a++的值為1,由此可確定(a++&&b++)值為1,因此執(zhí)行c++標準答案:A知識點解析:把握前置運算和后置運算的基本運算規(guī)則。14、表達式:(int)((double)9/2)-(9)%2的值是()。A、0B、3C、4D、5標準答案:B知識點解析:運算符“/”和“%6”的優(yōu)先級高于“-”,所以先進行除法和求余運算,再進行減法運算。強制類型轉(zhuǎn)換表達式的形式:(類型名)(表達式)?!埃ァ苯Y(jié)果為4,轉(zhuǎn)換成double類型再轉(zhuǎn)換成int類型結(jié)果依然為4,(9)%2的結(jié)果為1,4-1的最后結(jié)果為3。15、在銀行業(yè)務(wù)中,實體客戶和實體銀行之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:D知識點解析:一個客戶可以在多家銀行辦理業(yè)務(wù),一家銀行也有多個客戶辦理業(yè)務(wù),所以實體客戶和實體銀行之間的聯(lián)系是多對多。16、若有以下程序段:intr=8;print{("%d\n",r>>1);輸出結(jié)果是()。A、16B、8C、4D、2標準答案:C知識點解析:C語言中“>>”是對二進制的右移運算符,右移相當于將原數(shù)做除二操作,它將原數(shù)右移相應(yīng)位數(shù),并將移出的位舍去,在高位補0,將所得的結(jié)果再賦值給變量。本題中8的二進制為00001000,右移一位得到00000100,所以是4。17、以下能對一維數(shù)組a進行初始化的語句是()。A、inta[5]=(0,1,2,3,4);B、inta(5)={};C、inta[3]={0,1,2);D、inta{5)={10*1};標準答案:C知識點解析:A選項,數(shù)組可以看作是若干個相同數(shù)據(jù)類型元素的有序集合,所以以集合的形式對其初始化,使用{}對其初始化;BD選項,常量表達式只能放在中括號[]中。18、若有定義:inta;floatb;doublec;,程序運行時輸入:123<回車>,能把1輸入給變量a、把2輸入給變量b、把3輸入給變量c的輸入語句是()。A、scanf("%d%f%lf",&a,&b,&c);B、scanf("%d%f%lf",&a,&b,&c);C、scanf("%d%lf%lf",&a,&b,&c);D、scanf("%d%f%f",&a,&b,&c);標準答案:A知識點解析:在seal3f()函數(shù)中,a變量為整數(shù)用%d格式字符串,b變量為單精度數(shù)用%f格式字符串,c變量為雙精度數(shù)用%1f格式字符串,只有A選項正確。19、下列數(shù)據(jù)中屬于“字符串常量”的是()。A、"a"B、{ABC}C、abe\0'D、a'標準答案:A知識點解析:在C語言中,若干個字符構(gòu)成字符串,用單引號標識字符,用雙引號標識字符串。A選項,用雙引號標識字符串,正確;BC選項,分別用花括號和單引號標識字符串,錯誤;D選項,標識字符。20、當變量c的值不為2、4、6時,值為“真”的表達式是()。A、(c==2)∣∣(c==4)}∣∣(c==6)B、(c>=2&&c<=6)∣∣(c!=3)∣∣(c!=5)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)標準答案:B知識點解析:本題主要考查的是邏輯表達式。邏輯與運算中只有兩邊的表達式同時為真,最后結(jié)果才為真;參與邏輯或運算的表達式只要有一個為真,最后結(jié)果就為真。A選項中表達式的意思是當c等于2或4或6時,表達式的值為真,否則為假,所以不滿足題意。C選項中表達式的意思是當c大于等于2且小于等于6,并且c不是奇數(shù)時,表達式的值為真,否則為假。此時滿足該表達式的c只能取值為2、4、6,所以也不滿足題意。D選項中后面一個子表達式(c%2!=1)和C選項中的!(c%2)是等價的,都是判斷c不是奇數(shù),故也不滿足題意。21、有以下程序:#include<stdio.h>main(){floata,b,e,t:a=3;b=7;c=1;if(a>b){t=a;a=b.b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;)printf("%5.2f,%5.2f,%5.2f",a,b,c);}程序運行后的輸出結(jié)果是(其中□代表空格)()。A、□□3.00,□□1.00,□□7.00B、□□3.00,□□7.00,□□1.00C、□□1.00,□□3.00,□□7.00D、□□7.00,□□3.00,□□1.00標準答案:C知識點解析:本題考查if語句。該題包含了3個if語句,每個if語句后的{}都不可省略,因為每個{}中都包含了多條語句。首先判斷條件a>b,由于3小于7,表達式a>b不成立,因此不執(zhí)行{t=a;a=b;b=t;};然后判斷條件a>c,由于3大于1,因此表達式a>c成立,則執(zhí)行{t=a;a=c;c=t;},該表達式語句是用來交換a和c的值,執(zhí)行完后a為1,c為3;然后判斷條件b>c,由于7大于c中的3,因此b>c成立,則執(zhí)行{t=b,b=c;c=t;},過程同上,執(zhí)行后b為3,c為7。printf語句用來輸出a,b,c中的值,并且要求輸出的每個數(shù)據(jù)寬度為5,小數(shù)部分保留2位,數(shù)據(jù)右對齊。最后輸出為C選項中所示結(jié)果。22、有以下程序:#include<stdio.h>main(){intsum=10,n=1:while(n<3){sum=sum-n;n++;}printf("%d,%d",n,sum):}程序運行后的輸出結(jié)果是()。A、2,8B、3,7C、3,8D、2,7標準答案:B知識點解析:考查while循環(huán)。當循環(huán)條件n<3成立的時候,執(zhí)行循環(huán)體{sum=sum-n;n++;)中的語句。循環(huán)初值sum為10,n為1。首先判斷循環(huán)條件n<3成立,開始第1次循環(huán),執(zhí)行sum=sum-n=10-1=9,執(zhí)行n++,即將n中的值加1,執(zhí)行后n為2;此時n中的值為2,sum中的值為9,循環(huán)條件n<3成立,繼續(xù)執(zhí)行第2次循環(huán),執(zhí)行sum=sum-n=9-2=7,執(zhí)行n++,即將n中的值加1,執(zhí)行后n為3;n為3時,循環(huán)條件不成立,結(jié)束循環(huán),輸出結(jié)果為3,7。23、下列敘述正確的是()。A、只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句B、continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行C、在循環(huán)體內(nèi)使用break語句或continue語句的作用相同D、從多層循環(huán)嵌套中退出時,只能使用goto語句標準答案:A知識點解析:break語句可以出現(xiàn)在循環(huán)體內(nèi)及switch語句體內(nèi),不能用于其他的語句。continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著轉(zhuǎn)去判定循環(huán)條件是否成立,從而確定下一次循環(huán)是否繼續(xù)執(zhí)行,也就是說執(zhí)行continue語句不會使整個循環(huán)終止。在循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止,從多層循環(huán)嵌套中退出時,可以使用goto語句或者break語句。24、以下敘述中正確的是()。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,BCD選項錯誤。25、設(shè)有定義:charp[]={'1','2','3'},*q=P;以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。A、sizeof(*q)B、sizeof(char)C、sizeof(p)D、sizeof(p[0])標準答案:C知識點解析:數(shù)組名表示該數(shù)組的首地址,是一個地址常量,所以sizeof(p)求得的是一個地址占用的字節(jié)數(shù),即4個字節(jié),故答案為C選項。26、以下敘述中正確的是()。A、語句chara[Z]={"a","b");是合法的,定義了一個包含兩個字符的數(shù)組B、語句inta[]={0);是不合法的,遺漏了數(shù)組的大小C、語句inta[8]={0};是合法的D、語句chara[3];a="ab";是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符標準答案:C知識點解析:考查一維數(shù)組以及字符數(shù)組的初始化。初始化的時候可以只給數(shù)組的前面一部分元素設(shè)定初值,故C選項正確;字符數(shù)組中的每個元素為一個字符,需要用單引號,故A選項錯誤。若對數(shù)組全部元素賦初值時,可以不指定數(shù)組元素的個數(shù),故B選項錯誤;定義字符數(shù)組時可以將字符串直接賦給該字符數(shù)組,其他情況則不可以,故D選項錯誤。27、有以下程序:#include<stdio.h>intk=5;voidf(int*s){s=&k;}main(){intm=3,*p=&m;f(p);printf("%d%d\n",m,*p);}程序的運行結(jié)果是()。A、33B、55C、35D、53標準答案:A知識點解析:考查函數(shù)傳參。C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,指針作為函數(shù)參數(shù)時,形參仍然作為實參的副本被賦值,形參指針變量的指向改變不能影響實參指針變量的指向,結(jié)果不變,答案為A選項。28、有以下程序:#include<stdio.h>main(){intx[3][3]={1,2,3,4,5,6,7,8,9),i;for(i:1;i<3;i++)printf("%d",x[i][3-i]);}程序運行后的輸出結(jié)果是()。A、2,4B、6,8C、3,7D、2,6標準答案:B知識點解析:二維數(shù)組的起始行標和列標均為0,即x[0][0]=1。當i=1時,for循環(huán)判斷條件成立,輸出x[1][2]=6;此時i自增為2,開始第二次for循環(huán),條件成立,輸出X[2][1]=8,故B選項正確。29、下列錯誤的定義是()。A、int*p=&i,i;B、int*p,i;C、inti,*p=&i;D、inti,*P;標準答案:A知識點解析:A選項,先定義一個整型指針變量p,然后將變量i的地址賦給p。然而此時還未定義變量i,因此編譯器無法獲得變量i的地址,故A選項錯誤。C選項,先定義變量i,則在內(nèi)存中為i分配空間,因此i在內(nèi)存空間的地址就可以確定了,然后再定義p,此時可以為p賦i的地址,故C選項正確。30、有以下程序:#include<stdio.h>main(){inta[2]E3]={{1,2,3},(4,5,6));intb[3][2],i,j;for(i=0;i<=1;i++){for(j=0;j<=2;j++)b[j][i]=a[i][j];}for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%d",b[i][j]);}}程序的運行結(jié)果是()。A、123456B、135246C、142536D、132546標準答案:C知識點解析:本題考查for循環(huán)的嵌套以及二雛數(shù)組的賦值和輸出。第一個for循環(huán)嵌套用來給二維數(shù)組b中的各元素賦值,執(zhí)行完后得到b[3][2]={{1,4},{2,5),{3,6})。第二個for循環(huán)嵌套用來輸出二雛數(shù)組b中的各元素。依次輸出為b[0][0],b[0][1],b[1][0],b[1][1].b[2][0],b[2][1],故輸出結(jié)果為142536。31、若有定義語句:char*sl="GOOD",*s2="good":以下選項中,能夠輸出“GOOD”語句的是()。A、if(strcmp(s1,s2)!=0)puts(s2):B、if(strcmp(s1,s2)!=0)puts(s1):C、if(strcmp(s1,s2)==1)puts(s1):D、if(strcmp(s1,s2)==0)puts(s1);標準答案:B知識點解析:strcrop(s1,s2)是字符串比較函數(shù),比較方式是兩個字符串從左至右逐個字符進行比價(按照ASCII碼值大小),以第一個不相同字符的大小作為比較結(jié)果。由于大寫字母的ASCII碼值小于小寫字母的AsCII碼值,所以比較后的結(jié)果為負值,故只有B選項符合題意。32、有以下程序:#include<stdio.h>unsignedfun(unsignednum){unsignedk=1:do{k*=num%10;num/=10;}while(num);returnk;}main(){unsignedn=26:printf("%d\n",fun(n));)程序運行后的輸出結(jié)果是()。A、12B、10C、16D、8標準答案:A知識點解析:程序首先執(zhí)行main函數(shù),執(zhí)行printf("%d\n",fun(n));即輸出表達式fun(26)的值,為了計算該表達式,需要調(diào)用函數(shù)fun。此時inain將n中的26作為實參傳遞給fun的num,即num值為26,接著執(zhí)行do…while語句。第1次循環(huán),執(zhí)行k*=num%10,即k=k*(num%10)=1*(26%10)=6;執(zhí)行nam/=10,即num=nurn/10=26/10=2;while后面循環(huán)條件為num,此時nam為2,是非0值,即表示循環(huán)條件成立,繼續(xù)執(zhí)行循環(huán)體。此時k為6,num為2,執(zhí)行do…while中的語句后,k為12,num為0。由于while后面循環(huán)條件為num,此時num為0,表示循環(huán)條件不成立,結(jié)束循環(huán),執(zhí)行returnk,即返回至main函數(shù)中的被調(diào)用處,執(zhí)行main函數(shù),執(zhí)行printf語句,輸出結(jié)果為12。33、在C語言中,只有在使用時才占用內(nèi)存單元的變量的是()。A、auto和registerB、extern和registerC、auto和staticD、static和register標準答案:A知識點解析:C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內(nèi)存空間。auto變量的存儲單元是分配在內(nèi)存的動態(tài)存儲區(qū)中,每當進入函數(shù)體時自動分配存儲單元。register變量也是自動類變量。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內(nèi)存空間。34、若有如下定義:charps[]={"aa","bb","cc","dd"};,則以下敘述中正確的是()。A、*ps[0]是字符'A'B、*ps[0]是字符串"aa"C、ps[0]是字符'A'D、ps是字符串'aa'標準答案:B知識點解析:對于指針數(shù)組,ps[0]代表的就是第一個字符串的地址。35、以下敘述中正確的是()。A、在C語言中,預(yù)處理命令行都以#開頭B、預(yù)處理命令行必須位于C源程序的起始位置C、#include<stdio.h>必須放在C程序的開頭D、C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能標準答案:A知識點解析:C語言中,凡是以#開頭的都被稱為編譯預(yù)處理行,故A選項正確;預(yù)處理行可以放在C源程序的任何位置,習(xí)慣放在起始位置,故B選項錯誤;語句#include<stdio.h>必須放在使用文件stdio.h中相關(guān)方法的語句之前,但是不一定非要放在C程序開頭,故C選項錯誤;預(yù)處理包括宏定義、文件包含和條件編譯等,故D選項錯誤。36、有以下程序:#include<stdio.h>main(){staticchara[]="Program",*ptr;for(ptr=a;ptr<a+7;ptr+=2)putchar(*ptr);}程序運行后的結(jié)果為()。A、ProgB、PortoC、rgaD、Por標準答案:B知識點解析:首先定義一個字符型數(shù)組a,并對a進行初始化,然后定義字符型指針變量ptr。執(zhí)行for語句,ptr=a表示將數(shù)組a的首地址賦給ptr,ptr<a+7代表循環(huán)條件,ptr+=2即ptr=ptr+2。執(zhí)行putchar(*ptr);即輸出*pt所對應(yīng)的字符。此時ptr指向數(shù)組中的第1個元素,即a[0],所以*ptr表示a[0]中的值,即P,此時輸出P;然后執(zhí)行ptr+=2,此時ptr指向數(shù)組中的第3個元素,即a[2],輸出0;然后執(zhí)行ptr+=2,此時ptr指向數(shù)組中的第5個元素,即a[4],輸出r;然后執(zhí)行ptr+=2,此時ptr指向數(shù)組中的第6個元素,即a[5],輸出m;然后執(zhí)行ptr+=2,得到ptr=a+8<a+7,即循環(huán)條件不成立,循環(huán)結(jié)束,最終輸出結(jié)果為Porm。37、有以下程序:#include<stdio.h>main(){inti;FILE*fp;for(i=0;i<3;i++){fp=fopen("res.txt","w");fputc('K'+i,fp);fclose(fp);}}程序運行后,在當前目錄下會生成一個res.txt文件,其內(nèi)容是()。A、MB、EOFC、KLMD、L標準答案:A知識點解析:通過三次循環(huán),最后i的值定格在2,最后儲存值'K'+2='M',所以最后保存的數(shù)值為M。注意fclose函數(shù),每次都關(guān)閉文件,并且重新回到文件首地址。38、有以下程序:#include<stdio.h>structst{intx;inty;}a[2]={5,7,2,9};main(){printf("%d\n",aE03.y*a[1].x);}程序運行后的輸出結(jié)果是()。A、10B、18C、14D、63標準答案:C知識點解析:首先是定義結(jié)構(gòu)體st,st中共有兩個整型成員x,y。然后定義一個st類型的數(shù)組a,a的長度為2,即數(shù)組中含有兩個st類型的元素,分別是a[0]和a[1]。對a進行初始化,此題是按照存儲順序進行初始化,即將5賦給a[0]中的x(即a[0].x=5),將7賦給a[0]中的y(即a[0].y=7),將2賦給a[1]中的x(即a[1].x=2),將9賦給a[1]中的y(即a[1].y=9)。執(zhí)行main函數(shù),輸出表達式a[0].y*a[1].x的值,即7*2的值14。39、下列關(guān)于C語言文件的敘述中正確的是()。A、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進制文件B、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進制文件或文本文件C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進制文件或文本文件D、文件由字符序列組成,其類型只能是文本文件標準答案:C知識點解析:C語言將文件看作是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組成形式,可將文件分為兩種:①ASCII文件,又稱文本(text)文件,它的每一個字節(jié)可放一個ASCII碼,代表一個字符;②二進制文件,是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。因此,C文件就是一個字節(jié)流或一個二進制流。二、程序填空題(本題共1題,每題1.0分,共1分。)40、下列給定程序中,已建立了一個帶頭結(jié)點的單向鏈表,鏈表中的各結(jié)點按數(shù)據(jù)域遞增有序鏈接。函數(shù)fun的功能是:刪除鏈表中數(shù)據(jù)域值相同的結(jié)點,使之只保留一個。請在下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;structlist*next:}SLIST;voidfun(SLIST*h){SLIST*p,*q;p=h->next;if(P!=NULL){q=p->next;while(q!=NULL){if(p->data==q->data){p->next=q->next;/******found******/free(1);/******foun
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年建筑3D打印材料報告
- 2026年醫(yī)藥學(xué)知識考試題庫
- 2026年化工設(shè)備安全操作與火災(zāi)應(yīng)對策略題
- 2026廣東深圳大學(xué)藝術(shù)學(xué)部劉琨教授團隊博士后招聘1人備考題庫及一套參考答案詳解
- 2025年企業(yè)安全生產(chǎn)管理制度與執(zhí)行指南手冊
- 2026河北唐山市曹妃甸區(qū)選調(diào)公務(wù)員9人備考題庫及答案詳解(奪冠系列)
- 2026江蘇南京建鄴區(qū)眾拓人才科技有限公司招聘11人備考題庫及參考答案詳解
- 2026山東事業(yè)單位統(tǒng)考威海經(jīng)濟技術(shù)開發(fā)區(qū)鎮(zhèn)街招聘初級綜合類崗位15人備考題庫及答案詳解(新)
- 2026年中央廣播電視總臺招聘124人備考題庫及答案詳解一套
- 我們的校園周記寫作(12篇)
- (一診)重慶市九龍坡區(qū)區(qū)2026屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測(第一次)物理試題
- DGTJ08-10-2022 城鎮(zhèn)天然氣管道工程技術(shù)標準
- 彈藥庫防火防爆消防演示
- 江蘇省徐州市2022-2023學(xué)年高一上學(xué)期期末抽測政治試題(原卷版)
- 地基處理施工中的安全風(fēng)險與防范
- 食材配送服務(wù)方投標方案(技術(shù)標)
- 人教版六年級科學(xué)上期末測試題(2份)有答案
- 食品安全全球標準BRCGS第9版內(nèi)部審核全套記錄
- 成就心態(tài)的感悟
- 反洗錢風(fēng)險自評價制度
- 隱框、半隱框玻璃幕墻分項工程檢驗批質(zhì)量驗收記錄
評論
0/150
提交評論