國家二級(jí)(C語言)機(jī)試模擬試卷30(共68題)_第1頁
國家二級(jí)(C語言)機(jī)試模擬試卷30(共68題)_第2頁
國家二級(jí)(C語言)機(jī)試模擬試卷30(共68題)_第3頁
國家二級(jí)(C語言)機(jī)試模擬試卷30(共68題)_第4頁
國家二級(jí)(C語言)機(jī)試模擬試卷30(共68題)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國家二級(jí)(C語言)機(jī)試模擬試卷30(共9套)(共68題)國家二級(jí)(C語言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按數(shù)據(jù)域遞增有序鏈接。函數(shù)fun的功能是:刪除鏈表中數(shù)據(jù)域值相同的結(jié)點(diǎn),使之只保留一個(gè)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#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】);/**********found**********/q=p->【2】;}else{p=q;/**********found**********/q=q->【3】;}}}}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("\nThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}main(){SLIST*head;inta[N]={1,2,2,3,4,4,4,5};head=creatlist(a);printf("\nThelistbeforedeleting:\n");outlist(head);fun(head);printf("\nThelistafterdeleting:\n");outlist(head);}標(biāo)準(zhǔn)答案:qnextnext知識(shí)點(diǎn)解析:第一空:p和q是兩個(gè)SLIST結(jié)構(gòu)體指針,分別指向兩個(gè)相鄰的結(jié)點(diǎn)?!癷f(p->data==q->data)”成立則應(yīng)該刪除其中一個(gè)結(jié)點(diǎn),“p->next=q->next;”p指向q的下一個(gè)結(jié)點(diǎn),那么q結(jié)點(diǎn)就可以刪除了,因此第一空處應(yīng)該為“free(q);”。第二空:在第一空處,q指向的結(jié)點(diǎn)已經(jīng)被刪除,如果要繼續(xù)循環(huán)搜索數(shù)據(jù)域值相同的結(jié)點(diǎn),那么q需要重新指向p的下一個(gè)結(jié)點(diǎn),因此第二空處應(yīng)該為“q=p->next;”。第三空:如果“if(p->data==q->data)”不成立,那么p和q都向結(jié)點(diǎn)尾移動(dòng)一個(gè)結(jié)點(diǎn)位置,因此第三空處應(yīng)該是“q=q->next;”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODII.C中函數(shù)fun的功能是:用冒泡法對(duì)6個(gè)字符串按由小到大的順序進(jìn)行排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0,i<5,i++){/**************found**************/for(j=i+1;j<6;j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(1stringateachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}標(biāo)準(zhǔn)答案:for(j=i+1;j<6;j++)*(pstr+i)=*(pstr+j);知識(shí)點(diǎn)解析:(1)C語言中,for語句形式是:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句。因此第一個(gè)標(biāo)識(shí)下,for使用錯(cuò)誤,應(yīng)該為“for(j=i+1;j<6;j++)”。(2)if語句后的復(fù)合語句的功能是把“*(pstr+i)”中和“*(pstr+j)”中的地址進(jìn)行交換,而“*(pstr+i)=pstr+j;”中“pstr+j;”并不是字符串的地址,所以第二個(gè)標(biāo)識(shí)下“*(pstr+i)=pstr+j;”改為“*(pstr+i)=*(pstr+j);”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個(gè)字符串(每串的長度不超過N),按順序合并組成一個(gè)新的字符串。例如,字符串?dāng)?shù)組中的M個(gè)字符串為則合并后的字符串的內(nèi)容應(yīng)是:AAAABBBBBBBCC。提示:strcat(a,b)的功能是將字符串b復(fù)制到字符串a(chǎn)的串尾上,成為一個(gè)新串。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#include#defineM3#defineN20voidfun(chara[M][N],char*b){}main(){charw[M][N]={"AAAA","BBBBBBB","CC"},a[100];inti;voidNONO();printf("Thestring:\n");for(i=0;i標(biāo)準(zhǔn)答案:{inti,j,k=0;for(i=0;i知識(shí)點(diǎn)解析:(1)二維字符數(shù)組第i行j列元素a[i][j],就是指針形式的*(*(a+i)+j)。因此,如果字符*(*(a+i)+j)是串的結(jié)束符,則說明該字符串已經(jīng)結(jié)束。(2)當(dāng)一維字符數(shù)組存放完字符串中各字符后,必須在一維字符數(shù)組的尾字符處加一個(gè)結(jié)束符’\0’,才能把字符數(shù)組變成字符串。否則,字符數(shù)組就只能是非字符串的一般字符數(shù)組。國家二級(jí)(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計(jì)出其出現(xiàn)的次數(shù)。例如,形參s所指的字符串為:abcAbsmaxless,程序執(zhí)行后的輸出結(jié)果為:letter’a;:3timesletter’s’:3times請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includevoidfun(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/**********found**********/ch=tolower(【1】);n=ch-’a’;/**********found**********/k[n]+=【2】;}s++;/**********found**********/if(max標(biāo)準(zhǔn)答案:*s1k[n]知識(shí)點(diǎn)解析:第一空:“ch=tolower(__1__);n=ch-’a’;”可知統(tǒng)一將字符*s轉(zhuǎn)化成小寫字母,然后和字母“’a’”比較,因此第一空處應(yīng)為“*s”。第二空:“k[n]+=__2__;”是統(tǒng)計(jì)字符“*s”出現(xiàn)的次數(shù),“ch-’a’”得到了應(yīng)存放的數(shù)組元素的下標(biāo)位置n,k[n]元素加1標(biāo)識(shí)該字符在上一次出現(xiàn)的基礎(chǔ)上又出現(xiàn)了一次,故第二空處應(yīng)為“1”。第三空:“if(max二、程序修改題(本題共1題,每題1.0分,共1分。)2、數(shù)列中,第一項(xiàng)值為3,后一項(xiàng)都比前一項(xiàng)的值增5:給定程序MODll.C中函數(shù)fun的功能是:計(jì)算前n(4#defineN20intfun(intn,int*a){inti,j,k,sum;/**************found**************/sum=j==0;for(k=3,i=0;i標(biāo)準(zhǔn)答案:sum=0;j=0;if(sum%4==2)知識(shí)點(diǎn)解析:(1)根據(jù)題意第一標(biāo)識(shí)下“sum=j==0;”是給sum和j賦初值0,故應(yīng)改成“sum=0;j=0;”。(2)第二個(gè)標(biāo)識(shí)下的if語句是根據(jù)題干要求,累加和被4除后余2,而原題是將2賦值給sum%4。所以,第二個(gè)標(biāo)識(shí)下“if(sum%4=2)”應(yīng)該改為“if(sum%4==2)”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:求出一個(gè)2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序存在文件PROGl.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#defineM4intfun(inta[][M]){}main(){intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();printf("max=%d\n",fun(arr));NONO();}voidNONO()(/*本函數(shù)用于打開文件。輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,一4,12,82};wf=fopen("out.dat","w");tpprintf(wf,"max=%d\n",fun(arr));fclose(wf);}標(biāo)準(zhǔn)答案:inti,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:(1)首先設(shè)置變量max,用來記錄最大值,賦予該變量初值。(2)遍歷整個(gè)數(shù)組,將每一個(gè)元素與max進(jìn)行比較,若大于max,則將此新值存入max。當(dāng)數(shù)組遍歷完成后,max中存放的即為數(shù)組的最大元素。(3)使用return語句返回max數(shù)值。國家二級(jí)(C語言)機(jī)試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、在關(guān)系代數(shù)運(yùn)算中,有5種基本運(yùn)算,它們是()。A、并(∪)、差(-)、交(∩)、除(÷)和笛卡兒積(×)B、并(∪)、差(-)、交(∩)、投影(Ⅱ)和選擇(o)C、并(∪)、交(∩)、投影(π)、選擇(σ)和笛卡兒積(×)D、并(∪)、差(-)、投影(π)、選擇(σ)和笛卡兒積(×)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:并、差、笛卡兒積、投影和選擇是5種基本的運(yùn)算,其他運(yùn)算即交、連接和除,均可以通過5種基本的運(yùn)算來表達(dá)。2、在數(shù)據(jù)庫系統(tǒng)的組織結(jié)構(gòu)中,下列()映射把用戶數(shù)據(jù)庫與概念數(shù)據(jù)庫聯(lián)系了起來。A、外模式/模式B、內(nèi)模式/外模式C、模式/內(nèi)模式D、內(nèi)模式/模式標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫有兩層映像,即外模式/模式和模式/內(nèi)模式映像。模式/內(nèi)模式映像定義數(shù)據(jù)庫全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。3、下列關(guān)于線性鏈表的描述中,正確的是()。Ⅰ、只含有一個(gè)指針域來存放下一個(gè)元素地址Ⅱ、指針域中的指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件)Ⅲ、結(jié)點(diǎn)由兩部分組成:數(shù)據(jù)域和指針域。A、僅Ⅰ、ⅡB、僅Ⅰ、ⅢC、僅Ⅱ、ⅢD、全部標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在定義的鏈表中,若只含有一個(gè)指針域來存放下一個(gè)元素地址,稱這樣的鏈表為單鏈表或線性鏈表。在鏈?zhǔn)酱鎯?chǔ)方式中,要求每個(gè)結(jié)點(diǎn)由兩部分組成:一部分用于存放數(shù)據(jù)元素值,稱為數(shù)據(jù)域;另一部分用于存放指針,稱為指針域。其中指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件)。4、下面關(guān)于數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)的敘述中,正確的是()。A、內(nèi)模式可以有多個(gè),外模式和模式只有一個(gè)B、外模式可以有多個(gè),內(nèi)模式和模式只有一個(gè)C、內(nèi)模式只有一個(gè),模式和外模式可以有多個(gè)D、模式只有一個(gè),外模式和內(nèi)模式可以有多個(gè)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)的外模式、模式和內(nèi)模式。一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式,但只有一個(gè)模式和一個(gè)內(nèi)模式。5、設(shè)有關(guān)鍵碼序列(66,13,51,76,81,26,57,69,23),要按關(guān)鍵碼值遞增的次序排序,若采用快速排序法,并以第一個(gè)元素為劃分的基準(zhǔn),那么第一趟劃分后的結(jié)果為()。A、23,13,51,57,66,26,81,69,76B、13,23,26,51,57,66,81,76,69C、23,13,51,57,26,66,81,69,76D、23,13,51,57,81,26,66,69,76標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:快速排序是起泡排序的改進(jìn)。在快速排序中,任取一個(gè)記錄,以它為基準(zhǔn)用交換的方法將所有的記錄分成兩部分,關(guān)鍵碼值比它小的在一部分,關(guān)鍵碼值比它大的在另一部分,再分別對(duì)兩個(gè)部分實(shí)施上述過程,一直重復(fù)到排序完成。6、下列哪一條不屬于數(shù)據(jù)庫設(shè)計(jì)的任務(wù)?()A、設(shè)計(jì)數(shù)據(jù)庫應(yīng)用結(jié)構(gòu)B、設(shè)計(jì)數(shù)據(jù)庫概論結(jié)構(gòu)C、設(shè)計(jì)數(shù)據(jù)庫邏輯結(jié)構(gòu)D、設(shè)計(jì)數(shù)據(jù)庫物理結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫設(shè)計(jì)工作量大而且過程復(fù)雜,既是一項(xiàng)數(shù)據(jù)庫工程也是一項(xiàng)龐大的軟件工程??紤]數(shù)據(jù)庫及其應(yīng)用系統(tǒng)開發(fā)全過程,將數(shù)據(jù)庫設(shè)計(jì)分為以下6個(gè)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫實(shí)施和數(shù)據(jù)庫的運(yùn)行和維護(hù)。7、數(shù)據(jù)庫技術(shù)的根本目標(biāo)是()。A、數(shù)扼存儲(chǔ)B、數(shù)據(jù)共享C、數(shù)據(jù)查詢D、數(shù)據(jù)管理標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)庫是長期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲(chǔ)介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個(gè)應(yīng)用程序所共享,所以數(shù)據(jù)庫技術(shù)的根本目標(biāo)是解決數(shù)據(jù)共享問題。8、需求分析階段的任務(wù)是()。A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費(fèi)用D、軟件系統(tǒng)功能標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:需求分析是軟件定義時(shí)期的最后一個(gè)階段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。9、關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括()。A、排序、索引、統(tǒng)計(jì)B、選擇、投影、連接C、關(guān)聯(lián)、更新、排序D、顯示、打印、制表標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:關(guān)系數(shù)據(jù)庫管理系統(tǒng)的專門關(guān)系運(yùn)算包括選擇運(yùn)算、投影運(yùn)算和連接運(yùn)算。10、數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中,()沒有專門的軟件對(duì)數(shù)據(jù)進(jìn)行管理。Ⅰ.人工管理階段Ⅱ.文件系統(tǒng)階段Ⅲ.?dāng)?shù)據(jù)庫階段A、僅ⅠB、僅ⅢC、Ⅰ和ⅡD、Ⅱ和Ⅲ標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中,只有人工管理階段,沒有操作系統(tǒng),沒有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。在文件系統(tǒng)階段,操作系統(tǒng)中已經(jīng)有了專門數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在數(shù)據(jù)庫系統(tǒng)階段,出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng),即數(shù)據(jù)庫管理系統(tǒng)。11、下面說法正確的是()。A、一個(gè)C程序可以有多個(gè)主函數(shù)B、一個(gè)C語言的函數(shù)中只允許有一對(duì)花括號(hào)C、C程序的書寫格式是自由的,一個(gè)語句可以寫在一行上,也可以寫在多行內(nèi)D、在對(duì)C程序進(jìn)行編譯時(shí),可以發(fā)現(xiàn)注釋行中的拼寫錯(cuò)誤標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題涉及C語言基本的3個(gè)知識(shí)點(diǎn):①C語言規(guī)定一個(gè)程序只允許有一個(gè)主函數(shù),一個(gè)函數(shù)內(nèi)可以允許有多個(gè)花括號(hào);②C程序的注釋部分僅僅是方便程序員閱讀,提高程序的可讀性和可移植性,它并不參與程序的編譯,所以編譯器也就不會(huì)發(fā)現(xiàn)注釋中的錯(cuò)誤。12、下列不合法的用戶標(biāo)識(shí)符是()。A、j2_KEYB、DoubleC、4dD、_8_標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語言程序中,合法標(biāo)識(shí)符的命名規(guī)則是:標(biāo)識(shí)符可以由字母、數(shù)字和下劃線組成,并且第一個(gè)字符必須是字母或下劃線。13、以下4個(gè)選項(xiàng),不能看作一條語句的是()。A、{;}B、intx=0,y=1,z=0;C、if(!a);D、if(b==0)m=1;n=2;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:if語句是用來判定所給的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。在if和else后面可以只含一個(gè)內(nèi)嵌的操作語句,也可以有多個(gè)操作語句,此時(shí)用花括號(hào)“{}”將幾個(gè)語句括起來成為一個(gè)復(fù)合語句。選項(xiàng)D)中沒有將兩個(gè)操作語句括起來,不能看作一條語句。14、設(shè)a和b均為int型變量,且a=6、b=11、c=3,則能使值為3的表達(dá)式是()。A、b%(c%4)B、b%(c-a%5)C、b%a-a%5D、(b%a)-(a%4)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:選項(xiàng)D)括號(hào)內(nèi)的運(yùn)算分別是b%a=11%6=5和a%c=6%4=2,最后得到5.2=3。15、以下程序的輸出結(jié)果是()。main(){inta=4,b=3,c=2,d=1;printf("%d",a>b?a:d>c?d:b);}A、1B、3C、2D、4標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題首先判斷a>b,當(dāng)a>b時(shí)結(jié)果等于a,否則等于“d>c?d:b”,因?yàn)閍>b,所以直接輸出a的值,注:這里“a:d>c?d:b”是用來干擾考生的。16、閱讀以下程序#includemain(){IntCase;floatprintF;printf("請(qǐng)輸入2個(gè)數(shù):");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下說法正確的是()。A、定義語句出錯(cuò),Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識(shí)符,printF不能用作用戶自定義標(biāo)識(shí)符.B、定義語句出錯(cuò),Int無法被識(shí)別。C、定義語句無錯(cuò),scanf不能作為輸入函數(shù)使用D、定義語句無錯(cuò),printf不能輸出Case的值標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:C語言是一種大小寫敏感的語言,因此Int應(yīng)為int,而CaseprintF則可以使用。17、若有定義:floatx=1.5:inta=1,b=3,c=2;則正確的switch語句是()。A、switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");)C、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");)D、switch(a+b){case1:printf("*\n");casec:printf("**\n");)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語言中,switch()后的一對(duì)圓括號(hào)中可以是整型表達(dá)式或字符表達(dá)式。case語句后面的常量表達(dá)式的類型必須與switch后圓括號(hào)中的表達(dá)式類型相同,各case語句標(biāo)號(hào)的值應(yīng)該互不相同。選項(xiàng)A)中case后面的常量表達(dá)式為實(shí)型,所以不正確;選項(xiàng)D)中case后面出現(xiàn)了變量表達(dá)式,所以選項(xiàng)D)錯(cuò)誤。18、有以下程序:main(){intk=33;printf("%d,%0,%x",k,k,k);}執(zhí)行后的輸出結(jié)果是()。A、33,033,0x21B、33,033,21C、3.3041e+007D、33,41,21標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查不同進(jìn)制間的轉(zhuǎn)換。printf輸出函數(shù)中輸出變量的格式,由輸出格式符決定。題中“%0”格式符表示以八進(jìn)制的形式輸出;“%x”格式符表示以十六進(jìn)制的形式輸出?!?3”的八進(jìn)制和十六進(jìn)制分別是41和21。19、當(dāng)輸入為”Fool&Swalow”時(shí),下面程序的執(zhí)行結(jié)果是()。#includemain(){charc;while(c!=’?’){c=getchar();putchar(c);.}}A、SwalowB、FoolC、Fool?D、?Swalow標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本程序是通過getchar()函數(shù)讀入字符,并通過putchar()函數(shù)將字符逐個(gè)輸出,當(dāng)用戶輸入“?”時(shí)停止輸出。20、下面程序段的輸出結(jié)果是()。#includemain(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}A、1.237B、輸出格式說明與輸出項(xiàng)不匹配,輸出無定值C、1.236D、1.24標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題中,(int)(x*1000+0.5)的結(jié)果為1237,(float))1000是將1000強(qiáng)制轉(zhuǎn)換成float類型;整個(gè)表達(dá)式(int)(x*1000+0.5)/(float)1000的結(jié)果為1.237000,再以實(shí)數(shù)(6位小數(shù))形式輸出。21、若變量都已正確說明,則以下程序段()。#includemain(){inta=8;intb=6:printf(a>b?"&&&a=%d":"!!!b=%d",a,b);}A、輸出為:&&&a=8B、輸出為:!!!b=8C、輸出為:&&&a=8!!!b=6D、全部錯(cuò)誤標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查prinff的輸出格式和條件表達(dá)式“?:”的使用。①printf函數(shù)輸出時(shí),“&&&%d\n”和“!!!%\n"中的“&&&”和“!!!”都是直接輸出。②條件表達(dá)式的基本格式為:a?b:c。其運(yùn)算規(guī)則為:當(dāng)a為非0時(shí)的值,當(dāng)a為0時(shí),整個(gè)表達(dá)式取c的值。printf函數(shù)中如果在格式說明符之前插入任何字符都將原樣輸出。本題中a>b為真,所以返回“&&&a=%d”。22、語句“printf("a\bhow\’are\’y\\\bou\n");”的輸出結(jié)果是()。A、a\bhow\’are\’y’\\bouB、a\bhow\’are\’y\bouC、how’are’youD、ahow’are’y\bou標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:“\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\b”格式符前面的字母不能輸出;“’\’”,格式符表示輸出單引號(hào)字符;“\\”格式符表示輸出反斜線字符。23、下面程序的運(yùn)行結(jié)果是()。#includemain(){inti:for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("≠");}}A、*#*#*B、#*#*#*C、*#*#D、#*#*標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:分析程序可知,程序循環(huán)5次,然后利用if語句決定每次循環(huán)時(shí)輸出的字符。當(dāng)i為奇數(shù)時(shí),i%2=1,if(i%2)為真,輸出“*”;當(dāng)i為偶數(shù)時(shí),i%2=0,if(i%2)為假,執(zhí)行else語句,輸出“#”,所以當(dāng)i取1、3、5值時(shí)輸出“*”,當(dāng)i取2、4值時(shí)輸出“#”。24、以下關(guān)于return語句的敘述中不正確的是()。A、一個(gè)自定義函數(shù)中必須有一條retum語句B、一個(gè)自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句C、如果一個(gè)函數(shù)有多個(gè)return語句,那么不論運(yùn)行到哪一個(gè)return語句,該函數(shù)將結(jié)束D、沒有return語句的自定義函數(shù)在執(zhí)行完最后一條語句時(shí)返回到調(diào)用處標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:return語句主要用于返回函數(shù)的值。在一個(gè)自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語句返回函數(shù)的值,也可以不包含return語句。25、有以下程序:main(){intn=0;do{n++;printf("%d\n",n);}while(n<=3);}程序的輸出結(jié)果是()。A、

B、

C、

D、

標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查do…while循環(huán)。在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值。當(dāng)執(zhí)行完第三次循環(huán)時(shí),得到n=3,while循環(huán)表達(dá)式仍然成立,接著執(zhí)行直到n=4,表達(dá)式不成立,跳出循環(huán),結(jié)束程序。26、下面程序的運(yùn)行結(jié)果是()。#includevoiddel(char*s){inti,j;char*a:a=s:for(i=0,j=0;a[i]!=’\0’;i++){ifa[i]>=’0’&&a[i]<=’9’){s[j]=a[i];j++;}s[j]=’\0’;}}main(){chars[]="aa89gggh";del(s);printf("\n%s",s);}A、aaB、89C、ggghD、aa89gggh標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題中del(char*s)函數(shù)實(shí)現(xiàn)的功能是:逐個(gè)讀入s數(shù)組中的字符,如果遇到數(shù)字,則將其重新存在s中,遇到非數(shù)字字符則跳過。所以最后輸出的應(yīng)該是字符串s中的所有數(shù)字。27、下列說法不正確的是A、int*fun():---fun是一個(gè)返回int指針的函數(shù)B、int(*fun)();---fun是一個(gè)返回int指針的函數(shù)C、int(木array[5])();---array是一個(gè)有5個(gè)元素的數(shù)組,每一個(gè)元素都是一個(gè)函數(shù)指針,指向一個(gè)返回int的函數(shù)。D、int(*fun(int))(int);---fun是帶有一個(gè)int參數(shù)的函數(shù),返回值是一個(gè)函數(shù)指針,這個(gè)指針指向帶有一個(gè)int參數(shù)并返回int的函數(shù)。標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:該函數(shù)中fun是一個(gè)函數(shù)指針。指向一個(gè)返回int的函數(shù)。28、下列程序的輸出結(jié)果是()。#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、12C、編譯出錯(cuò)D、00標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。分析題目可知fun函數(shù)的形參是指向?qū)崊⒌闹羔槪玬ain()函數(shù)中調(diào)用fun()函數(shù)時(shí),實(shí)參是指針變量x、y(分別為指向a和b的指針),a、b的值在函數(shù)調(diào)用前后未發(fā)生變化,因而a=1,b=2,即輸出12。29、下列二維數(shù)組初始化語句中,正確且與語句inta[][3]={1,2,3,4,5)等價(jià)的是()。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}};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是二維數(shù)組的初始化。題干中數(shù)組a的第二個(gè)下標(biāo)為3,由此可知數(shù)組a是一個(gè)2行3列的數(shù)組,初始化時(shí)未賦初值的元素的值自動(dòng)為0,所以與選項(xiàng)B)是等價(jià)的,最后一個(gè)元素的值為0。30、有以下字符串,說明表達(dá)式strlen(s)值的是()。chars[10]={’a’,’\n’,’a’,’b’,’\t’,’c’};A、10B、1C、6D、7標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:strlen(s)返回s字符串中字符的個(gè)數(shù),若s是一個(gè)數(shù)組,則返回?cái)?shù)組元素的個(gè)數(shù)。31、有以下程序:#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);)程序的輸出結(jié)果為()。A、g,GF,gB、g,F(xiàn)F,gC、G,fF,GD、f,gf,g標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是函數(shù)參數(shù)的傳遞。main函數(shù)中首先調(diào)用fun函數(shù),fun函數(shù)的功能是使字符c的ASCII碼值加1并輸出,使d加1并輸出對(duì)應(yīng)的字符;fim(&b,a)輸出“g,G”,但是由于fun函數(shù)的第一個(gè)參數(shù)進(jìn)行的是地址傳遞,而第二個(gè)參數(shù)進(jìn)行的是值傳遞,所以main函數(shù)中的printf函數(shù)輸出“F,g”。32、若有以下定義,則對(duì)a數(shù)組元素地址的正確引用是()。inta[5],*p=a;A、p+5B、*a+1C、&a+1D、&a[0]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查如何引用數(shù)組元素的地址。選項(xiàng)A)中,p+5引用的是a[5]的地址,而數(shù)組a只有5個(gè)元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯(cuò)誤;選項(xiàng)B)中,*a+l指的是將數(shù)組a的第一個(gè)元素加1;選項(xiàng)C)中,這種引用方式錯(cuò)誤;選項(xiàng)D)中,&a[0]引用的是數(shù)組的首地址。33、判斷字符串s1是否大于字符串s2,應(yīng)該使用()。A、if(strcmp(s1,s2)<0)B、if(s1>s2)C、if(strcmp(s2,s1)<0)D、if(strcmp(s1,s2))標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查字符串比較函數(shù)strcmp(),調(diào)用形式:strcmp(str+1,str+2),其中str+1、str+2分別是字符串存儲(chǔ)區(qū)的首地址,函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時(shí),返回值為負(fù)數(shù):當(dāng)str1=str2時(shí),返回0;當(dāng)str1>str2,返回值為正數(shù)。注意:不能使用關(guān)系運(yùn)算符比較兩個(gè)字符串的大小。34、若輸入bcdefgh、m、abcdefg,以下程序的輸出結(jié)果為()。#include#includemain(){inti;charstring[20],str[3][20];for(i=0;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標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查字符比較函數(shù)和字符復(fù)制函數(shù):strcmp(s1,s2);函數(shù)功能:比較字符串str1和str2比較的是字符的ASCII碼的值,當(dāng)str1<str2時(shí),返回值為負(fù)數(shù);當(dāng)str1=str2時(shí),返回0;當(dāng)str1>str2,返回值為正數(shù)。35、請(qǐng)閱讀以下程序:#include#includevoidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main(){intk,a[5]={1,3,5,4,9);fun(a);for(k=0;k<5;k++)printf("%d",a[k]);)上面程序的輸出是()。A、13579B、48579C、48549D、48999標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查的是for循環(huán)以及while循環(huán)。fun函數(shù)中定義了靜態(tài)變量i=0,fun(a)使得a[0]=a[0]+a[1]=4,a[1]=a[1]+a[2]=8,此時(shí)i的值變?yōu)?,++i<2不成立,所以do-while循環(huán)結(jié)束,輸出數(shù)組a的各元素即得到48549。36、在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d"s);break;}s+=i;}}A、4B、7C、5D、6標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:分析程序,i+=k;使得i的值每次增加2然后再和j進(jìn)行比較看i>=j是否成立,i的變化過程為:i=2,i=4,i=6,i=8,i=10,i=12,此時(shí)i>j成立,所以判斷i>j共執(zhí)行的次數(shù)為6次。37、下列程序的輸出結(jié)果是()。#includemain(){structst{inty,x,z;);union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}A、6,2B、6,4C、8,4D、8,6標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查的是結(jié)構(gòu)和數(shù)組元素所占的字節(jié)數(shù)。題目中定義的結(jié)構(gòu)st因?yàn)榘瑇、y、z這3個(gè)元素,所以size(structst)=2+2+2=6;而聯(lián)合體所占的字節(jié)數(shù),由于最后存入的元素會(huì)把前面存入的元素覆蓋掉,所以聯(lián)合體所占的字節(jié)數(shù)就是占據(jù)最多存儲(chǔ)單元的元素所占的字節(jié)數(shù),sizeof(un)=sizeof(long)=4。38、以下對(duì)聯(lián)合類型敘述正確的是()。A、可以對(duì)聯(lián)合變量名直接賦值B、使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存C、任何一個(gè)聯(lián)合變量可以同時(shí)引用聯(lián)合中的不同成員D、聯(lián)合類型定義中不能同時(shí)出現(xiàn)結(jié)構(gòu)類型的成員標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于聯(lián)合體是同一存儲(chǔ)區(qū)域由不同類型的變量共享,所以不可以直接對(duì)聯(lián)合體變量名進(jìn)行賦他,且聯(lián)合體中的空間在某一時(shí)刻只能保持某一成員的數(shù)據(jù):另外合體中可以出現(xiàn)結(jié)構(gòu)類型的成員。39、以下程序中C的二進(jìn)制值是()。chara=2,b=4,c;c=a^b>>2A、11B、10100C、11100D、11000標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考查按位異或和右移運(yùn)算。b=4的二進(jìn)制為00000100,b>>2后為0000000l,a=2的二進(jìn)制為00000010,兩者異或?yàn)?0000011。40、有以下程序#includemain(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n”,j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運(yùn)行后的輸出結(jié)果是()。A、2030B、2050C、3050D、3020標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:分析程序段,首先以只寫方式打開文件,利用fprintf函數(shù)將i和j的值寫入到文件d1.dat中,然后關(guān)閉文件;再以只讀方式打開文件,利用格式化輸入函數(shù)fscanf。將文件中的數(shù)據(jù)賦值給k和n,最后輸出k和n的值,分別是20和30。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中查找與形參t所指字符串相同的串,找到后返回該串在字符串?dāng)?shù)組中的位置(下標(biāo)值),未找到則返回-1。ss所指字符串?dāng)?shù)組中共有N個(gè)內(nèi)容不同的字符串,且串長小于M。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN5#defineM8intthn(char(*ss)[M],char*t){inti;/**********found**********/for(i=0;i<___1___;i++)/**********found**********/if(strcmp(ss[i],t)==0)return___2___;return-1;}main(){charch[N][M]={"if","while","switch","int","for"},t[M];intn,i;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(ch[i]);printf("\n");printf("reEnterastringforsearch:");gets(t);n=fun(ch,t);/**********found***********/if(n==__3__)printf("\nDon’tfound!\n");elseprintf("\nThepositionis%d.\n",n);}標(biāo)準(zhǔn)答案:(1)N(2)i(3)-1知識(shí)點(diǎn)解析:第一空:“for(i=0;i<___1___;i++)”補(bǔ)充循環(huán)的結(jié)束條件,fun的參數(shù)(*ss)[M]是指向N行M列的字符串?dāng)?shù)組,循環(huán)是逐行查找是否存在t所指的字符串,因此循環(huán)次數(shù)是N次,故第一空處應(yīng)為“N”。第二空:“if(strcmp(ss[i],t)=0)return___2___;”說明兩個(gè)字符串相同,按照題干要求,應(yīng)返回該串在字符串?dāng)?shù)組中的位置i,故第二空處為“i”。第三空:“if(n__3__)print("\nDon’tfound!\n");”,fun函數(shù)未找到則返回-1,因此這里是判斷n是否等于-1,如果n等于-1標(biāo)識(shí)沒有找到,在屏幕上輸出“Don’tfound!"因此第三空處為“-1”。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODI1.C中函數(shù)fun的功能是:從低位開始取出長整型變量S中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中,高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531。請(qǐng)改正程序中的錯(cuò)誤.使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/**********found**********/voidfun(10ngs,longt){longs2=10;*t=S%10:while(S>0){s=s/100;*t=s%1.0*s1+*t:/**********found**********/s1=s1*100;}}main(){longs,t;printf("\nPleaseenters:"):scanf("%1d",&s);fun(s,&t);prinff("Theresultis:%1d\n",t);}標(biāo)準(zhǔn)答案:(1)voidfun(longs,long*t)(2)s1=s1*10;知識(shí)點(diǎn)解析:(1)根據(jù)“*t=s%10”判斷,t應(yīng)該是個(gè)指針變量,所以“voidfun(longs,longtD”語句中的t只需改為“voidfun(longs,long*t)”。(2)分析函數(shù)內(nèi)的循環(huán)過程可知s1的用途是每次將*t擴(kuò)大,記錄每次得到的奇數(shù)位的數(shù)字的權(quán)值,s1的權(quán)值每次增加l位,因此第二個(gè)標(biāo)識(shí)下應(yīng)該是“s1=s1*10;”。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)43、請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:找出一維整型數(shù)組元素中最大的值和它所在的下標(biāo),最大的值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中X是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。注意:部分源程序存在文件PROG1.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#includevoidfun(inta[],intn,int*max,int*d){}main(){inti,x[20],max,index,n=10;voidNONO();for(i=0;i<n;i++){x[i]=rand()%50;printf("%4d",x[i]);}printf("\n");fun(x,n,&max,&index);printf("Max=%5d,Index=%4d\n",max,index);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,x[20],max,index,n=10,j;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<n;j++)fscanf(fp,"%d,",&x[j]);fun(x,n,&max,&index);fprintf(wf,"Max=%d,Index=%d\n",max,index);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:inti;*max=a[0];*d=0;/*把數(shù)組的第1個(gè)元素值賦值給最大值變量*max*/for(i=1;i<n;i++)if(*max<a[i]){/*判斷*max是否小于當(dāng)前值*/*max=a[i];/*重新把最大值賦值給*max*/*d=i:/*記住下標(biāo)*/}知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:(1)*max指針變量首先指向數(shù)組a的第一個(gè)數(shù)據(jù),同時(shí)將標(biāo)志位*d初始值賦為0。(2)然后利用for循環(huán)對(duì)每一個(gè)當(dāng)前數(shù)組數(shù)據(jù)與max標(biāo)記的數(shù)據(jù)進(jìn)行比較。(3)循環(huán)中將求得的最大數(shù)據(jù)a[i]賦值給*max,并將該數(shù)據(jù)項(xiàng)數(shù)組標(biāo)志位賦給標(biāo)志位d。國家二級(jí)(C語言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判斷形參s所指字符串是否是"回文"(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0。"回文"是正讀和反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includeintfun(char*s){char*ip,*rp;/***********found*********/lp=【1】;rp=s+strlen(s)一1;while((toupper(*lp)==toupper(*rp))&&(ip標(biāo)準(zhǔn)答案:(1)s(2)--(3)return0知識(shí)點(diǎn)解析:第一空:“rp=s+strlen(s)-1;"可知rp指向最后一個(gè)元素,因此lp是指向第一個(gè)元素,因此第一空應(yīng)為“s"。第二空:“l(fā)p++;rp【2】;"lp往后移動(dòng)。rp應(yīng)該往前移動(dòng),故第二空處應(yīng)為“--"。第三空:“if(1p二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:實(shí)現(xiàn)兩個(gè)整數(shù)的交換。例如給a和b分別輸入:60和65,輸出為:a=65b=60請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/**********found**********/voidfun(inta,b){intt;/**********found**********/t=b;b=a;a=t;}main(){inta,b;printf("Entera,b:");scanf("%d,%d",&a,&b);fun(&a,&b);printf("a=%db=%d\n",a,b);}標(biāo)準(zhǔn)答案:voidfun(int*a,int*b)t=*b;*b=*a;*a=t;知識(shí)點(diǎn)解析:(1)該題明顯是指針類型的錯(cuò)誤。主函數(shù)傳的形參分別是a、b的地址,而函數(shù)fun中卻定義a、b為整型,所以第一個(gè)標(biāo)識(shí)下的“voidfun(inta,b)”改為“voidfun(int*a,int*b)”。(2)根據(jù)上面的修改,第二個(gè)標(biāo)識(shí)下,“t=b;b=a;a=t;”明顯應(yīng)該是“t=*b;*b=*a;*a=t;”。三、程序設(shè)計(jì)題(本題共2題,每題1.0分,共2分。)3、編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。例如若n為1000時(shí),程序輸出應(yīng)為:s=153.909064。注意:部分源程序在文件PROGl.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#includedoublefun(intn){}main()/*主函數(shù)*/{voidNONO();printf("s=%f\n",fun(1000));NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("in.clat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n),fprintf(wf,"%f\n",s);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);知識(shí)點(diǎn)解析:(1)首先,利用循環(huán)逐個(gè)選出能同時(shí)被3與7整除的所有自然數(shù)。(2)然后,對(duì)這些自然數(shù)求和。最后求得平方根,并返回這個(gè)值。4、編寫函數(shù)fun,它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:部分源程序在文件PROGl.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#includedoublefun(doublex,intn){}main(){voidNONO();printf("%f\n",fun(0.3,10));NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,n;doubles,x;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%lf,%d",&x,&n);s=fun(x,n);fprintf(wf,"%f\n",s);}fclose(fP);fclose(wf);}標(biāo)準(zhǔn)答案:doubles=1.0,y=x;inti;longk=1;for(i=1;i<=n;i++){k=k*i;s+=y/k;y*=x;}returns;知識(shí)點(diǎn)解析:(1)根據(jù)題干中給出的數(shù)列,推出每一項(xiàng)分子是在前一項(xiàng)的基礎(chǔ)上乘以x,分母是每一項(xiàng)的階乘,它可以在前一項(xiàng)的基礎(chǔ)上乘以當(dāng)前項(xiàng)的項(xiàng)數(shù),即第n項(xiàng)是n。(2)在循環(huán)中求得每一項(xiàng),然后對(duì)其進(jìn)行累加求和。國家二級(jí)(C語言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。例如,形參s所指的字符串為:abs5defl26jkm8,程序執(zhí)行后的輸出結(jié)果為:22。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includeintfun(char*s){intsum=0;while(*s){/************found/***********/if(isdigit(*s))sum+=s【1】;/**************found************/【2】;}/**************found*************/return【3】;}main(){chars[81];intn;printf("\nEnterastring:\n\n");gets(s);n=fun(s),printf("\nTheresultis:%d\n\n",n);}標(biāo)準(zhǔn)答案:(1)48或’/0’(2)s++(3)sum知識(shí)點(diǎn)解析:第一空:“if(isdigit(*s))sum+=*s【1】;"如果*s是數(shù)字字符的話,sum累加其對(duì)應(yīng)的數(shù)字的和,第一空處是將*s轉(zhuǎn)化為對(duì)應(yīng)的數(shù)字,由審題分析可知,第一空為"’0’"或“48",’0’的ASCⅡ碼值為48。第二空:“while(*s)"循環(huán)的終止條件是達(dá)到s字符串的結(jié)束,因此在循環(huán)體內(nèi)s應(yīng)該不斷往字符串尾移動(dòng),故第二空處應(yīng)為“s++"。第三空:“return【3】:"是返回累加和sum,故第蔓空處為“sum"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為:87653142時(shí),t中的數(shù)為:8642。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意;不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(10ngs,long*t){intd;longsi=i;*t=0;while(s>0)(d=s%10;/**************found**************/if(d%2=0)(*t=d*s1+*t;s1*=10;}/**************found**************/s\=10;}}main()(longs,t;printf("\nPleaseenters:");scanf("%id",&s);fun(s,&t);printf("Theresultis:%Id\n",t);}標(biāo)準(zhǔn)答案:(1)if(d%2==0)(2)s/=10;知識(shí)點(diǎn)解析:(1)第一個(gè)標(biāo)識(shí)是判斷d是否是偶數(shù),即比較d%2是否等于0,在C語言中,“一"表示的是“等于",而“="是賦值,因此第一個(gè)標(biāo)識(shí)下“if(d%2=0)"應(yīng)改為“if(d%2==0)"。(2)第二個(gè)標(biāo)識(shí)下的“s\=10;"是對(duì)a的截取,這里的“\"本意應(yīng)該是除號(hào),但這個(gè)在c語言中是不可識(shí)別的,所以第二個(gè)標(biāo)識(shí)下“s\=10;"應(yīng)該改為“s/=10;"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。注意:部分源程序在文件PROGl.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includefloatfun(intm,intn){}main()/*主函數(shù)*/{voidNONO();pzintf("p=%f\n",fun(12,8));NONO();}VOidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,m,n;floats;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d,%d",&m,&n);s=fun(m,n);fprintf(wf,"%f\n",s);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:floatresult,temp=1.0;inti;for(i=1;i<=m;i++)temp=temp*i;//求m!result=temp;//result=m!for(temp=1.0,i=l;i<=n;i++)temp=temp*i;//求n!result=result/temp;//求m!/n!for(temp=1.0,i=1;i<=m—n;i++)temp=temp*i;//求(m—n)!result=result/temp;//求m!知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:首先,計(jì)算m!的值,先定義一個(gè)放階乘值的變量temp,初值為1.0,通過循環(huán)的方法,用累乘器"temp=temp*i;"實(shí)現(xiàn)n!。同理可以求得n!、(m-n)!。其中,result用來存放計(jì)算結(jié)果。最后,根據(jù)題意,函數(shù)fun的函數(shù)體以return語句結(jié)束。國家二級(jí)(C語言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有字母字符順序前移,其他字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。例如,s所指字符串為:asdl23fgh543df,處理后新字符串為:asdfghdfl23543。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i=’a’)&&(s[i]<=’z’))||((s[i]>=’A’)&&(s[i]<=’Z’))){/**********found**********/t[j]=【1】;j++;}else{p[k]=s[i];k++;}}/**********found**********/for(i=0;i<【2】;i++)t[j+i]=p[i];/**********found**********/t[j+k]=【3】;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("\nTheresultis:%s\n",fun(s));}標(biāo)準(zhǔn)答案:s[i]k0知識(shí)點(diǎn)解析:第一空:此處是將字母字符s[i]存儲(chǔ)在t字符串中,j記錄t字符串的長度,故第一空處應(yīng)為“s[i]”。第二空:“for(i=0;i<__2__;i++)t[j+i]=p[i];”循環(huán)變量i從0開始,“t[j+i]=p[i];”是將p字符串中的k個(gè)字符保存在t字符串的后面,p字符串的長度為k,故循環(huán)的終止條件是i>=k,因此第二空處應(yīng)為“k”。第三空:在C語言中,字符串以“’\0’”結(jié)束,故第三處應(yīng)為“’\0’”或“0”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)中,用0結(jié)束輸入并放在最后一個(gè)元素中。給定程序MODll.C中函數(shù)fun的功能是:計(jì)算數(shù)組元素中值為正數(shù)的平均值(不包括0)。例如:數(shù)組中元素中的值依次為:39,-47,21,2,-8,15,0,則程序的運(yùn)行結(jié)果為:19.250000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(intx[]){/************found************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/************found************/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}標(biāo)準(zhǔn)答案:doublesum=0.0;sum/=c;知識(shí)點(diǎn)解析:(1)fun函數(shù)的返回值是double型,返回值sum的定義類型原題定義為int型,與fun的定義類型不符,所以將“intsum=0.0;”改為“doublesum=0.0;”。(2)第二個(gè)標(biāo)識(shí)下的“sum\=c;”語句中的“\”符號(hào)是非法符號(hào),這里應(yīng)該是除號(hào)。所以,第二個(gè)標(biāo)識(shí)下“sum\=c;”應(yīng)該改為“sum/=c;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun(),對(duì)長度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按ASCII碼值升序排列。例如:原來的字符串為BdsihAd,則排序后輸出為BAdhisd。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<ctype.h>#include<conio.h>intfun(char*s,intnum){}main(){chars[10];clrscr();printf("輸入7個(gè)字符的字符串:");gets(s);fun(s,7);printf("\n%s",s);}標(biāo)準(zhǔn)答案:intfun(char*s,intnum){chart;inti,j;for(i=1;i<num-2;i++)/*下標(biāo)值從1開始,用循環(huán)依次取得字符串中的字符*/for(j=i+1;j<num-1;j++)/*將字符與其后的每個(gè)字符比較*/if(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/{t=s[i];/*則交換這兩個(gè)字符*/s[i]=s[j];s[j]=t;}}知識(shí)點(diǎn)解析:本題考查利用循環(huán)來控制數(shù)組元素的操作,首尾元素除外,因此,數(shù)組的下標(biāo)值要從1開始,用循環(huán)變量i來依次取得數(shù)組中的元素,用數(shù)組中的元素s[i]和s[j]進(jìn)行比較,如果后一個(gè)元素的ASCII碼值小于前一個(gè)元素的ASCII碼值,則交換這兩個(gè)數(shù)組元素的值。國家二級(jí)(C語言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能求能整除x且是偶數(shù)的數(shù),把這些數(shù)保存在數(shù)組bb中,并按從大到小的順序輸出。例如當(dāng)x=20時(shí),依次輸出:201042。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(intk,intbb[]){inti;intj=0;for(【l】;i<=k;i++){if(【】)bb[i++]=i;}printf("\n\n");for(i=【】;i>=0;i--)printf(“%d”,bb[i]);}main(){intk=1;intbb[100];clrscr();printf(“\nPleaseinputX=”);scanf(“%d”,&k);fun(k,bb);}標(biāo)準(zhǔn)答案:i=lk%i==0&&i%2==0-j知識(shí)點(diǎn)解析:第一空:為了求出能整除k,且是偶數(shù)的數(shù),尋找范圍是從1到k。第二空:如果i能整除k,則k對(duì)i求余為0,如果i為偶數(shù),則i對(duì)2求余為0,由于這兩個(gè)條件要同時(shí)滿足,所以要使用“與”運(yùn)算符“&&”。第三空:由于數(shù)組bb[]中的數(shù)是按從小到大的順序排列的,而題目要求按從大到小輸出,所以從數(shù)組的最后一個(gè)元素開始,依次輸出。因?yàn)樵趂or循環(huán)中,變量j多加了一次,所以這里要將j減1,得到數(shù)組最后一個(gè)元素的下標(biāo)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:將m(1≤m≤10)個(gè)字符串反著連接起來,組成一個(gè)新串,放入pt所指字符串中,例如:把3個(gè)串DEG,ac,df反著串聯(lián)起來,結(jié)果是dfacDEG。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或者刪行,也不得改變程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<string.h>#include<stdio.h>voidfun(charstr[][10],intm,char*pt){intk,q,i,j=0;/*************found*************/for(k=m;k>0;k--){q=strlen(str[k]);j+=q;for(i=0;i<q;i++)pt[i]=str[k][i];pt+=q;pt[0]=0;}/*************found**************/pt=j;}main(){intm,h;chars[10][10],p[120];clrscr();printf("\nPleaseenterm:");scanf("%d",&m);printf("\nPleaseenter%dstring:\n",m);gets(s[0]);for(h=0;h<m;h++)gets(s[h]);fun(S,m,p);printf("/nTheresultiS:%s\n",p);}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:for(k=m;k>0;k--)正確:for(k=m-1;k>=0;k--)(2)錯(cuò)誤:pt=j;正確:pt-=j;知識(shí)點(diǎn)解析:錯(cuò)誤1:本題旨在考查二維數(shù)組下標(biāo)的靈活使用,如果二維數(shù)組有m行,則行下標(biāo)取值從0到m-1。錯(cuò)誤2:此時(shí)指針pt指向字符串的尾部,而函數(shù)返回的應(yīng)是字符串的首地址,所以pt向前移動(dòng)j個(gè)字符,則到達(dá)字符串的首部。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineN12typedefstruct{charnum

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論