版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級(C語言)機試模擬試卷2(共9套)(共67題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、線性表常采用的兩種存儲結(jié)構(gòu)是()。A、散列方法和索引方式B、鏈表存儲結(jié)構(gòu)和數(shù)組C、順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)D、線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)標準答案:C知識點解析:線性表的存儲通常要用兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。2、軟件需求分析階段的工作,可以分為四個方面:需求獲取、編寫需求規(guī)格說明書、需求評審和()。A、階段性報告B、需求分析C、需求總結(jié)D、都不正確標準答案:B知識點解析:軟件需求分析階段的工作,可以概括為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求獲取的目的是確定對目標系統(tǒng)的各方面需求。涉及到的主要任務是建立獲取用戶需求的方法框架,并支持和監(jiān)控需求獲取的過程。需求分析是對獲取的需求進行分析和綜合,最終給出系統(tǒng)的解決方案和目標系統(tǒng)的邏輯模型。編寫需求規(guī)格說明書作為需求分析的階段成果,可以為用戶、分析人員和設計人員之間的交流提供方便,可以直接支持目標軟件系統(tǒng)的確認,又可以作為控制軟件開發(fā)進程的依據(jù)。需求評審是對需求分析階段的工作進行復審,驗證需求文檔的一致性、可行性、完整性和有效性。3、在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A、需求分析B、詳細設計C、軟件設計D、概要設計標準答案:A知識點解析:軟件生命周期的主要活動階段為:可行性研究和計劃制定、需求分析、軟件設計、軟件實現(xiàn)、軟件測試、運行和維護。其中需求分析是對開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能,編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。4、對建立良好的程序設計風格,下面描述正確的是()。A、程序應簡單、清晰、可讀性好B、符號名的命名只要符合語法C、充分考慮程序的執(zhí)行效率D、程序的注釋可有可無標準答案:A知識點解析:程序設計應該簡單易懂,語句結(jié)構(gòu)應該簡單直接,不應該為提高效率而把語句復雜化。5、下列工具中,不屬于結(jié)構(gòu)化分析的常用工具的是()。A、數(shù)據(jù)流圖B、數(shù)據(jù)字典C、判定樹D、N-S圖標準答案:D知識點解析:結(jié)構(gòu)化分析的常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹和判定表。6、在軟件生產(chǎn)過程中,需求信息的來源是()。A、程序員B、項目經(jīng)理C、設計人員D、軟件用戶標準答案:D知識點解析:軟件需求是指用戶對目標軟件系統(tǒng)在功能、性能、設計約束等方面的要求,是由用戶提出的。7、對關系S和R進行集合運算,結(jié)果中既包含S中的所有元組也包含尺中的所有元組,這樣的集合運算稱為()。A、并運算B、交運算C、差運算D、積運算標準答案:A知識點解析:關系的并運算是指由結(jié)構(gòu)相同的兩個關系合并,形成一個新的關系,新關系中包含兩個關系中的所有元組。8、設有關鍵碼序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法進行排序,經(jīng)過初始建堆后關鍵碼值B在序列中的序號是()。A、1B、3C、7D、9標準答案:B知識點解析:建堆的算法:首先將要排序的所有關鍵碼放到一棵完全二叉樹的各個結(jié)點中(這時的二叉樹不具備堆的特性),然后,從i=[n/2](n為結(jié)點的個數(shù))的結(jié)點Ki開始,逐步把以K[n/2],K[n/2]-1,K[n/2]-2,…為根的子樹排成堆,直到以K1為根的樹排成堆,就完成了建堆過程。此題中,n=16,i=[16/2]=8,即從第8個結(jié)點開始,建堆完成后如下圖:所以經(jīng)過初始建堆后關鍵碼值B在序列中的序號是3。9、數(shù)據(jù)庫的故障恢復一般是由()來執(zhí)行恢復。A、電腦用戶B、數(shù)據(jù)庫恢復機制C、數(shù)據(jù)庫管理員D、系統(tǒng)普通用戶標準答案:C知識點解析:數(shù)據(jù)庫一旦發(fā)生故障,需要及時進行故障恢復,并由數(shù)據(jù)庫管理員負責執(zhí)行故障恢復。10、下列選項中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()。A、數(shù)據(jù)類型B、數(shù)據(jù)操作C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)約束標準答案:A知識點解析:數(shù)據(jù)模型描述的內(nèi)容包含數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。11、程序設計的任務包括()。A、編寫程序代碼并上機調(diào)試B、確定所用數(shù)據(jù)結(jié)構(gòu)C、確定所削算法D、以上選項均正確標準答案:D知識點解析:程序設計是一門技術,需要相應的理論、技術、方法和工具來支持。程序設計的任務包括選項A)、B)、C)等方面。12、下列合法的標識符是()。A、123B、#256C、a.55D、abhj1_2_3標準答案:D知識點解析:C語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線?!?”、“.”不允許出現(xiàn)在標識符中。13、以下程序的運行結(jié)果是()。#includemain(){inta=3,b=4,c=8,d=4,m=l,n=3;printf("%d\n",(m=a>b)&&(n=c>d));}A、0B、1C、2D、3標準答案:A知識點解析:邏輯與(&&)運算符的功能是:當“&&”運算符兩邊的運算對象均為1時,整個表達式的值為1,否則為0。因為a=3<b=4,即m=0,所以整個表達式的值為0。14、以下選項中,能用作數(shù)據(jù)常量的是()。A、o18B、o11C、0.8e2.5D、25L標準答案:D知識點解析:本題考查常量定義。數(shù)據(jù)常量可有10進制、8進制、16進制、指數(shù)法等,8進制數(shù)字為0-7,第一個字符為0,而不是o,因此選項A)和B)錯誤。為指數(shù)法時,指數(shù)部分須為整形,因此選項C)錯誤,選項D)中數(shù)字后加入L是說明此變量為長整型。15、有下列程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);pfintf("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,則正確的輸入是()。A、m=123n=456p=789B、m=123n=456p=789C、m=123,n=456,p=789D、123456789標準答案:A知識點解析:scanf()函數(shù)中格式控制字符串是為了輸入數(shù)據(jù)用的,無論其中有什么字符,在輸入數(shù)據(jù)時,按照一一對應的位置原樣輸入這些字符。16、以下關于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是()。A、均占4個字節(jié)B、根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C、由用戶自己定義D、由C語言編譯系統(tǒng)決定標準答案:D知識點解析:不同的編譯系統(tǒng)或計算機系統(tǒng)對幾類整型數(shù)所占用的字節(jié)數(shù)有不同的規(guī)定。long、int和short類型數(shù)據(jù)占用內(nèi)存大小是由選擇何種C編譯系統(tǒng)決定的。17、有以下程序#includemain(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k:}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是A、0B、4C、6D、7標準答案:D知識點解析:因為沒有break語句,當k=2的時候,會順序執(zhí)行兩條語句,k=1的時候,會順序執(zhí)行3條語句。18、有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A、55566B、566C、7777D、566777標準答案:B知識點解析:因為在輸入格式控制符中指定變量j的輸入格式控制符為“%2d”,即變量.j所占的寬度為2,所以變量j只接收輸入數(shù)據(jù)的前兩位,從第3位開始直到空格之間的輸入整數(shù)都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項B)。19、若變量已正確定義,有以下程序段:i=0:doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結(jié)果是()。A、0,0B、0,1C、1,1D、程序進入無限循環(huán)標準答案:B知識點解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達式的值。當值為非O時,轉(zhuǎn)去執(zhí)行步驟①;當值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達式i++的值,其值為0,所以循環(huán)結(jié)束。此時變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i的值“1”。20、設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。A、(EXP==0)B、(EXP!=0)C、(EXP==1)D、(EXP!=1)標準答案:B知識點解析:條件表達式的形式為:“表達式17表達式2:表達式3”。其含義為:當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值:當“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當表達式EXP為非0值時條件成立,即執(zhí)行語句i++:當EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++;j++;”。21、)有以下程序#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf("%",--y);}程序的運行結(jié)果是()。A、741B、963C、852D、875421標準答案:C知識點解析:y的初值為9,所以在for循環(huán)中,當y的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達式一y的值。因為自減符號在y的前面,所以首先y自減l,然后再輸出y的值,故輸出結(jié)果為852。22、若要求從鍵盤讀入含有空格字符的字符串,應使用函數(shù)()。A、getc()B、gets()C、getchar()D、scanf()標準答案:B知識點解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數(shù)不能輸入空格;getchar()函數(shù)用于輸入字符,其調(diào)用形式為:ch=getchar(),getchar()函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets()函數(shù)的調(diào)用形式為:gets(str_adr,),其中str_adr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。gets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc()函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。23、當a=4,b=5,c=7,d=6時,執(zhí)行下面一段程序:if(a<b)if(c<d)x=1;elseif(a<c)if(b<c)x=2;elsex=3;elsex=4;elsex=5;程序執(zhí)行后,x的值為()。A、1B、2C、3D、4標準答案:B知識點解析:本題考查ifelse語句。第一個if語句,先判斷條件,a<b成立,則執(zhí)行下面的語句;第二個if語句,先判斷條件,c<d不成立,則執(zhí)行其對應的else語句;第三個if語句,先判斷條件,a<c成立,執(zhí)行其后語句:第四個if語句,先判斷條件,b<c成立,執(zhí)行語句x=2。24、在C語言程序中,以下說法正確的是()。A、函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套B、函數(shù)的定義不可嵌套,但函數(shù)的調(diào)用可以嵌套C、函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套D、函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套標準答案:B知識點解析:本題考查函數(shù)調(diào)用的基本概念。因為函數(shù)的結(jié)果是一個未知量,而函數(shù)定義時不能使用未知量,所以函數(shù)定義不可以嵌套,但是函數(shù)調(diào)用可以嵌套。25、以下程序運行后的輸出結(jié)果是()。#include<stdio.h>voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={10,9,8,7,6,5,4,3,2,1);inti,s=0;reverse(b,10);for(i=0;i<3;i++)s+=b[i];printf("%d\n",s);}A、27B、6C、25D、30標準答案:B知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)reverse將數(shù)組b進行了逆置,此時b[10]={10,9,8,7,6,5,4,3,2,1),后面for語句的功能是將b中的后3個數(shù)累加,并將結(jié)果放在s中,最后將s輸出,結(jié)果s=1+2+3=6。26、設y為整型變量,a=6,a的地址為E2000,b=14,b的地址為E2001;執(zhí)行語句b=&a;y=&a;后Y的值為()。A、E2000B、E2001C、6D、14標準答案:D知識點解析:&是取地址運算符,y=&a是將a的地址賦給y,而a的地址沒有發(fā)生變化,因此y的值為E2000。27、若有以下程序段:structst{intn;int*m;};.inta=2,b=3,c=5;structsts[3]=({101,&a),{102,&c),{103,&b}};main(){structst*p;p=s;}則以下表達式中值為5的是()。A、(*p).mB、*(p+1)->mC、*(p++)->nD、(p++).(*m)標準答案:B知識點解析:本題考查如何通過指針引用數(shù)組元素。首先定義了一個結(jié)構(gòu)體,然后定義了一個結(jié)構(gòu)體變量s[3],并賦了初值。在主程序中,定義了一個指向結(jié)構(gòu)體變量s的指針p,要使表達式的值為5,就應該引用s[1].m的值,使指針p指向s[1],++p可以實現(xiàn)將p指針加1,指向s[1]。28、在下列敘述中,錯誤的是()。A、C語言中,二維數(shù)組或多維數(shù)組是按行存放的B、賦值表達式b[1][2]=a[2][3]是正確的C、chara[1];a[0]=’A’與inta[1];a[0]=’A’等價D、數(shù)組名后的方括號內(nèi)可以為常量表達式,也可以為變量標準答案:D知識點解析:本題考查數(shù)組的4個知識點:①C語言中,二維數(shù)組或多維數(shù)組元素排列的順序是按行存放;②不同數(shù)組的元素之間可以相互賦值;③字符型數(shù)組中存放的是字符,int型數(shù)組中存放的是字符對應的ASCII碼值,雖然在計算機內(nèi)部字符常量都是作為整型量來處理的,其對應的整數(shù)值就是ASCII碼值,但兩者并不完全等價;④數(shù)組名后的方括號內(nèi)可以為常量,也可以為常量表達式,但不可以為變量。29、若已包括頭文件和,運行下面程序的輸出結(jié)果是()。chars1[10]="12345",s2[10]="089",s3[]="67";strcat(strcpy(s1,s2),s3);puts(s1);A、8967B、894567C、89567D、89567標準答案:A知識點解析:本題考查字符串復制函數(shù)和字符串連接函數(shù):字符串復制函數(shù)strcpy(s1,s2)是把s2的字符串復制給s1,執(zhí)行后s1=089:字符串連接函數(shù)strcat(s1,s2),功能是把s2字符串連接到s1字符串的末尾,執(zhí)行后s1=08967。30、下列說法正確的是()。A、auto和register將聲明的對象說明為自動存儲類對象,這些對象可用在函數(shù)中或函數(shù)外。B、將變量其定義為static類型,則其初值默認為隨機值。C、typedef說明符并不會為對象預留存留空間。D、如果一個對象被聲明為register,則對它應用一元運算符&,意在取得其存儲的地址標準答案:C知識點解析:①這種聲明也具有定義的作用,并將預留存儲空間。register說明的聲明等價于auto說明的聲明,所不同的是,register暗示了聲明的對象將被頻繁地訪問,將盡可能存儲在寄存器中。如果一個對象被聲明為register,則將不能對它應用一元運算符&,聲明為register但實際按照auto類型處理的對象的地址進行計算是非法的。②static將聲明的對象說明為靜態(tài)存儲類。這種對象可以用在函數(shù)內(nèi)部或者函數(shù)外部。在函數(shù)內(nèi)部,該說明符將引起存儲空間的分配,具有定義的作用。在函數(shù)外部,該說明符將引起聲明對象為具有內(nèi)部鏈接。另外,若將其定義為static類型,則其初值默認為0。③函數(shù)內(nèi)部的extern聲明表明,被聲明的對象的存儲空間定義在其他地方。在函數(shù)外部,說明聲明的對象具有外部鏈接。④typedef說明符并不會為對象預留存留空間。31、以下有關宏的描述不正確的是()。A、宏定義不做語法檢查B、雙引號中出現(xiàn)的宏名不進行替換C、宏名無類型D、宏名必須用大寫字母表示標準答案:D知識點解析:本題考查宏的使用規(guī)則:①字符替換格式:#define標識符字符串,標識符稱為宏名,無類型;②雙引號中出現(xiàn)的宏名不替換:③宏名的定義通常用大寫字母,但不是必須用大寫;④宏定義不是賦值語句,不做語法檢查。32、以下程序段的輸出結(jié)果為()。staticchara[]="programme";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);A、programmeB、pormC、有語法錯誤D、prog標準答案:B知識點解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址,第一次for循環(huán),p=a,p指向數(shù)組的第一個元素,*p是取指針p所指地址的內(nèi)容,輸出p;第二次for循環(huán),p=p+2,則p指向數(shù)組的第三個元素,*p是取指針p所指地址的內(nèi)容,輸出o:第三次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出r;第四次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出m;結(jié)束循環(huán)。33、下列關于C語言數(shù)據(jù)文件的敘述中正確的是()。A、文件由ASCII碼字符序列組成,C語言只能讀寫文本文件B、文件由二進制數(shù)據(jù)序列組成,C語言只能讀寫二進制文件C、文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件D、文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件標準答案:D知識點解析:本題考查數(shù)據(jù)文件的基本概念。①文件由數(shù)據(jù)流形式組成,可以按數(shù)據(jù)的存放形式分為二進制文件和文本文件;②C語言既能讀寫文本文件,又可以讀寫二進制文件。34、已知char**s,下面正確的語句是()。A、s="ABCDEF";B、*s="ABCDEF";C、**s="ABCDEF";D、*s=’A’;標準答案:C知識點解析:“s”是代表數(shù)組首地址的地址常量,不是變量,“=”左邊不能出現(xiàn)常量,因此s="ABCDEF"語法錯誤?!?*s”和“s”一樣:“*s”是指變量地址,不能給其賦字符串。35、下列程序的運行結(jié)果是()。#includevoidfun(int*s,int*P){staticintt=3;*p=s[t];t--:}voidmain(){inta[]={2,3,4,5},k,x;for(k=0;k<4;k++){fun(a,&x);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ù)fun(a,&x)時,就是將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。36、以下函數(shù)findmin擬實現(xiàn)在數(shù)組中查找最小值并作為函數(shù)值返回,但程序中有錯導致不能實現(xiàn)預定功能。#defineMAX2147483647intfindmin(intx[],intn){inti,min;min=MAX;for(i=0;i<n;i++){if(min<x[i])min=x[i];)returnmin;}造成錯誤的原因是()。A、定義語句inti,min;中min未賦初值B、賦值語句min=MAN;中,不應給min賦MAX值C、語句if(rain<X[i])min=X[i];中判斷條件設置錯誤D、賦值語句min=MAX;放錯了位置標準答案:D知識點解析:在C語言中,一個整型變量占用4個字節(jié)的內(nèi)存單元,并按整型數(shù)的存儲方式存放數(shù)據(jù),允許存放的數(shù)值范圍是:-2147483648~2147483647。所以在這個題目中定義的宏變量MAX的值就是整數(shù)范圍內(nèi)最大的數(shù)值,因而對于任意一個整數(shù)來說,其值都比MAX小,而判斷最小值,是當找到的數(shù)比min小時,才交換。37、以下程序的輸出結(jié)果是()。#includestructst{intx;int*y;}*p;intdt[41={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],);main(){p=aa;printf("%d\n",++(p->x));}A、1B、2C、3D、4標準答案:C知識點解析:程序首先將指針p指向結(jié)構(gòu)體數(shù)組aa的首地址,通過p->x引用了結(jié)構(gòu)體數(shù)組aa[0]的第一個成員2;++(p->x)是將p->x的值加1,所以輸出結(jié)果為3。38、有以下定義和語句:structstudents{intnum;charname[20];charc;struct{intgrade1;intgrade2;}s;};structstudentsw,*pw;*pw=w:下列賦值語句不正確的是()。A、w.hum=1002;B、w.grade1=85:C、pw->num=1002;D、w.s.grade2=85;標準答案:B知識點解析:本題主要考查的是結(jié)構(gòu)體變量的嵌套定義,也就是說一個結(jié)構(gòu)體變量也可以是一個結(jié)構(gòu)體。在本題中student這個結(jié)構(gòu)體中包含了結(jié)構(gòu)體s。所以對結(jié)構(gòu)體變量w中gradel成員的引用是w.s.gradel或w->s->gradel。39、設有以下語句:charx=3,y=6,z;z=X^y<<2;則Z的二進制值是()。A、10100B、11011C、11100D、11000標準答案:B知識點解析:本題考查的是位運算符的應用。x和y寫成二進制表示分別為x=00000011,y=00000110,由于左移位運算符“<<”的優(yōu)先級高于按位異或運算符“^’,左移兩位后y<<2=00011000,此結(jié)果和x按位異或后x^y<<2=00011011。40、有以下程序:#includemain(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標準答案:B知識點解析:本題考查函數(shù)fwrite的使用。函數(shù)fwrite的調(diào)用形式為:intfwrite(char*pt,unsignedn,FILE*fp);其功能是把pt所指向的n*size個字節(jié)輸出到fp所指文件中,第二次調(diào)用該函數(shù)時,從文件的第一個位置開始寫入,之前已有的會被覆蓋掉,如果第二次寫入的長度沒有第一次的長,則后面短出的部分保留原樣。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:計算下式前n項的和作為函數(shù)值返回。例如,當形參n的值為10時,函數(shù)返回:-0.204491。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>doublefun(intn){inti,k;doubles,t;s=0;/**********found**********/k=___1___;for(i=1;i<=n;i++){/**********found**********/t=___2___;s=s+k*(2*i-1)*(2*i+1)/(t*t);/**********found**********/k=k*___3___;}rgtumS;}main(){intn=-1;while(n<0){printf("Pleaseinput(n>0):");scanf("%d",&n);}printf("\nTheresultis:%f\n",fun(n));}標準答案:(1)1(2)2*i(3)(-1)知識點解析:第一空:由“s=s+k*(2*i-1)*(2*i+1)/(1*t);”可知t*t表示的是級數(shù)項的分母,t=2*i,t=2,4,6…,故t的初始化值應為1,因此第一空處應為“1”。第二空:由第一空的分析可知,第二空處應為“2*i”。第三空:由“s=S+k*(2*i-1)*(2*j+1)/(t*t);”可知,k是級數(shù)項的(-1)-1部分,所以在循環(huán)中k是每次都乘以-1,故第三處應為“(-1)”。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODI1.C中函數(shù)fun的功能是:從整數(shù)1到55之間,選出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個位數(shù),a2放十位數(shù)。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includeintfun(int*b){intk,a1,a2,i=0;for(k=10;k<=55;k++){/**********found**********/a2=k/10;a1=k-a2*10;if((k%3==0&&a2==5)‖(k%3==0&&al==5)){b[i]=k;i++;}}/**********found**********/returnk:}main(){inta[100],k,m;m=fun(a);printf("Theresultis:\n");for(k=0;k標準答案:(1)a2=k/10;(2)returni;知識點解析:(1)第一標識下“a2=k/10;”是截取十位數(shù),截取個位數(shù)是k%10,而截取十位數(shù)是k/10,因此第一標識下應改成“a2=k/10;”。(2)變量i是標識數(shù)組b的下標也就是數(shù)組的個數(shù),題目中“returnk;”返回的是循環(huán)條件表達式中的變量,所以這里應該將“returnk;”改為“retumi;”。四、程序設計題(本題共1題,每題1.0分,共1分。)43、學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分數(shù)最低的學生數(shù)據(jù)放在b所指的數(shù)組中,注意:分數(shù)最低的學生可能不止一個,函數(shù)返回分數(shù)最低的學生的人數(shù)。注意:部分源程序在文件PROG1.C文件中。請勿改動豐函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*out:n=fun(s,h);printf("The%dlowestscore:\n",n);for(i=0;i<n;i++)printf("%s%4d\n",h[i].hum,h[i].s);printf("\n");out=fopen("out.dat","w");fprintf(out,"%dha",n);for(i=0;i<n;i++)fprintf(out,"%4d\n",h[i]s);fclose(out);}標準答案:inti,j=0,minfa[0].s;for(i=o;i<N;i++){if(min>a[i].s){j=0;b[j++]=a[i]:min=a[i].s;}elseif(min==a[i].s)b[j++]=a[i];}returnj;知識點解析:(1)要把最低分數(shù)的學生數(shù)據(jù)放在數(shù)組中,首先求出最低分數(shù),再使用一個for循環(huán)把所有的成績進行比較,找出最低的分數(shù)來。(2)找出所有與最低分數(shù)相等的學生,并將最低分數(shù)的人數(shù)累加。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結(jié)果。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標準答案:(1)i(2)ps[j](3)tp知識點解析:本題中函數(shù)fun的功能是利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結(jié)果。在fun函數(shù)中采用了選擇排序法,在選擇排序法中的降序排序,首先從數(shù)組中挑選一個最大的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最大的元素,把它和第二個元素交換,不斷重復以上過程,直到比較完最后兩個元素。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計算小于形參k的最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。請改正程序中的錯誤,使程序能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標準答案:(1)if((k%13==0)II(k%17==0))(2)}知識點解析:該題中函數(shù)功能是求能被13或17整除的自然數(shù)之和。從已給定源程序的main主函數(shù)開始入手,“printf("%d\n",fun(500));”語句中的fun函數(shù)將500傳給n,計算小于500的能被13或17整除的自然數(shù)之和。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)fun,它的功能是:將一個數(shù)字字符串轉(zhuǎn)換為一個整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。標準答案:知識點解析:該程序功能是將一個數(shù)字字符串轉(zhuǎn)換為一個整數(shù)。其中,解題思路是將每位數(shù)字字符串的ASCII碼減去48(字符“0”的ASCII碼值),變成數(shù)字0~9。然后再不斷進行高位乘以10加低位的運算,或者反過來從低位向高位求,即不斷進行低位加高位乘以10的運算。國家二級(C語言)機試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:調(diào)用隨機函數(shù)產(chǎn)生20個互不相同的整數(shù)放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN20voidfun(int*a){inti,x,n=0;x=rand()%20;/***********found************/while(n<【1】){for(i=0;i標準答案:(1)N(2)break(3)n知識點解析:第一空:fun的功能是調(diào)用隨機函數(shù)產(chǎn)生20個互不相同的整數(shù)放在形參a所指數(shù)組中,故第一空處的循環(huán)條件是n二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:從s所指字符串中刪除所有小寫字母“c”。請改正程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s){inti,j;for(i=j=0;s[i]!=’\0’;i++)if(s[i]!=’c’)/************found************/s[j]=s[i];/************found************/s[i]=’\0’;}main(){chars[80];printf("Enterastring:");gets(s);printf("Theoriginalstring:");puts(s);fun(s);printf("Thestringafterdeleted:");puts(s);printf("\n\n");}標準答案:s[j++]=s[i];s[j]=’\0’;知識點解析:(1)fun函數(shù)中for循環(huán)過程是把s中不是字母“c”的字符s[i]復制到s[j],j指向重新排序后的數(shù)組下標。j的初值為0,且在循環(huán)過程中一直沒有變,所以將“s[j]=s[i];”改為“s[j++]=s[i];”。(2)操作字符串s結(jié)束后,要在j所指位置添加尾符標志,所以第二個標識下“s[i]=’\0’;”應該改為“s[j]=’\0’;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,函數(shù)返回所求出的素數(shù)的個數(shù)。注意:部分源程序在文件PROGI.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineNAX100intfun(intlim,intaa[MAX]){}main(){intlimit,i,sumjvoidNONO();intaa[NAX];printf("輸入一個整數(shù)");scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i標準答案:inti,j,k=0;/*其中變量k用于統(tǒng)計素數(shù)個數(shù)*/for(i=2;i<=lim;i++){/*以下完成判斷aa數(shù)組中小于或等于lim的素數(shù)并統(tǒng)計個數(shù)*/for(j=2;j<=(i/2);j++)if(i%j==0)break;if(j>(i/2))aa[k++]=i;}returnk;知識點解析:進入fun函數(shù),根據(jù)前面的分析:(1)首先,判斷i是否是素數(shù)。即是否能被2~(i/2)整除。(2)若是素數(shù),就將i存入數(shù)組aa,并對計數(shù)器k加1。(3)最后返回素數(shù)的個數(shù)k。其中,對于素數(shù)的判斷并不只局限于上面提到的方法,也可以采用其他的方法進行判斷。國家二級(C語言)機試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定的程序中,函數(shù)fun()的功能是:求輸入的兩個數(shù)中較小的數(shù)。例如:輸入510,結(jié)果為minis5。[注意]部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達式或語句。[試題源程序]#include<stdio.h>#include<conio.h>intfun(intx,(1);intz;z=x<y(2)x:y;return(z);}main()inta,b,c;scanf("%d,%d\n",(3));c=fun(a,b);printf("minis%d:,c);}標準答案:[1]inty[2]?[3]&a,&b知識點解析:填空1:根據(jù)題目的意思,這里應該是子函數(shù)的參數(shù)聲明部分。C語言規(guī)定,在函數(shù)的形參中不允許出現(xiàn)intx,y之類的語句,必須指定每一個參數(shù)的類型,所以不能直接寫y。填空2:根據(jù)題目的意思,此處是使用三目運算符“?”比較兩個數(shù)的大小,使用規(guī)則是:如果運算符前面的表達式中哪個變量成立,則整個式子就取運算符后面的這個變量。填空3:由算法可以看出,此處是輸入變量a和b的值,因為使用了scanf函數(shù),所以應該使用符號“&”,注意兩個變量之間的“,”不能省略。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[1]中的數(shù)對調(diào)。請改正程序中的錯誤,使它能得到正確結(jié)果。[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。[試題源程序]#include<stdio.h>#include<conio.h>#defineN20voidfun(int*a,intn){inti,m,t,k;/************************found************************/for(i=0;i<n;i++){m=i;for(k=i;k<n;k++)if(a[k]<a[m])/************************found************************/k=m;t=a[i];a[i]=a[m];a[m]=t;}}標準答案:(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)(2)錯誤:k=m;正確:m=k;知識點解析:錯誤1:由于題目要求將最小數(shù)和次最小數(shù)分別與a[0]和a[1]中的數(shù)對調(diào),因此,這層循環(huán)只需循環(huán)兩次。錯誤2:賦值語句的執(zhí)行方向是從右到左,即把右邊的值賦給左邊的變量。三、程序設計題(本題共1題,每題1.0分,共1分。)3、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫一個函數(shù)fun(),函數(shù)的功能是:求數(shù)組周邊元素的平方和,并作為函數(shù)值返回給主函數(shù)。例如,若數(shù)組a中的值為012791112155221611197910254141則返回主程序后s的值應為310。[注意]部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。[試題源程序]#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5intfun(intw[][N]){}main(){inta[N][N]=(0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1);inti,j;ints;clrscr()printf("*****Thearray*****\n");for(i=0;i<N;i++){for(j=0;j<N;j++){printf("%4d",a[i][j]);}printf("\n");}s=fun(a);printf("*****THERESULT*****\n");printf("Thesumis:%d\n",s);}標準答案:intfun(intw[][N]){inti,j,k=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1){s=s+w[i][j]*w[i][j];}returns;}知識點解析:暫無解析國家二級(C語言)機試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是計算下式直到≤10-3,并把計算結(jié)果作為函數(shù)值返回。例如:若形參e的值為le-3,函數(shù)的返回值為0.551690。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(doublee){inti,k;doubles,t,x;s=0;k=1;i=2;/*****************found***************/x=【1】/4;/*****************found***************/while(x【2】e){S=s+k*x;k=k*(-1);t=2*i;/*****************found***************/x=【3】/(t*t);i++;}returns;}main(){doublee=le-3;printf("\nTheresultis:%f\n",fun(e));}標準答案:(1)3.(2)>(3)(2*i+1)知識點解析:第一空:“k=k.(-1);"可知第一次進入循環(huán)時,級數(shù)項是負數(shù),故循環(huán)累加是從第二項開始的,因此s的初始化值是級數(shù)的第一項值3/4,s是double變量,因此不能直接用3除以4,而應該是3.0除以4或3除以4.0,因為整數(shù)相除得到的結(jié)果仍然是整數(shù),故第一空處應為“3."。第二空:由題干要求可知,循環(huán)的終止條件是級數(shù)項的絕對值小于等于e,故第二空處應填“>",在級數(shù)項大于e的時候不停的計算累加和。第三空:x是級數(shù)項的絕對值,第三處是補充級數(shù)項的分子,由題干的級數(shù)可知,分子是2*i+1,故第三處應為“(2*i+1)"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當s中的數(shù)為:87653142時,t中的數(shù)為:8642。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意;不要改動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);}標準答案:(1)if(d%2==0)(2)s/=10;知識點解析:(1)第一個標識是判斷d是否是偶數(shù),即比較d%2是否等于0,在C語言中,“一"表示的是“等于",而“="是賦值,因此第一個標識下“if(d%2=0)"應改為“if(d%2==0)"。(2)第二個標識下的“s\=10;"是對a的截取,這里的“\"本意應該是除號,但這個在c語言中是不可識別的,所以第二個標識下“s\=10;"應該改為“s/=10;"。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,函數(shù)返回所求出的素數(shù)的個數(shù)。注意:部分源程序在文件PROGI.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineNAX100intfun(intlim,intaa[MAX]){}main(){intlimit,i,sumjvoidNONO();intaa[NAX];printf("輸入一個整數(shù)");scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i標準答案:inti,j,k=0;/*其中變量k用于統(tǒng)計素數(shù)個數(shù)*/for(i=2;i<=lim;i++){/*以下完成判斷aa數(shù)組中小于或等于lim的素數(shù)并統(tǒng)計個數(shù)*/for(j=2;j<=(i/2);j++)if(i%j==0)break;if(j>(i/2))aa[k++]=i;}returnk;知識點解析:進入fun函數(shù),根據(jù)前面的分析:(1)首先,判斷i是否是素數(shù)。即是否能被2~(i/2)整除。(2)若是素數(shù),就將i存入數(shù)組aa,并對計數(shù)器k加1。(3)最后返回素數(shù)的個數(shù)k。其中,對于素數(shù)的判斷并不只局限于上面提到的方法,也可以采用其他的方法進行判斷。國家二級(C語言)機試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:計算直到。若x=2.5,函數(shù)值為:12.182494。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行。也不得更改稗序的結(jié)構(gòu)!#include#includedoublefun(doublex){doublef,t;intn;/**************found***************/f=1.0+【1】;t=x;n=1;do{n++;/**************found***************/t*=x/【2】;/**************found***************/f+=【3】;}while(fabs(t)>=le-6);returnf;}main(){doublex,y;x=2.5;y=fun(x);printf("\nTheresultis:\n");printf("x=%一12.6t:y=%一12.6f\n",x,y);}標準答案:(1)x(2)n(3)t知識點解析:第一空:“f=1.0+x;"f的初始化為級數(shù)的前兩項之和,dowhile循環(huán)從第三項x2/2開始計算,第一空處是給t賦初值,t表示級數(shù)項,“n++;t*=x/【2】;"即第一次進入do循環(huán)之后n的值為2,故t的初值應該為x,第一空處應為"x"。第二空:由審題分析可知,后一項x除以n,故第二空處應為“n"。第三空:t代表級數(shù)項,故“f+=【3】;"是將t累加到f,因此第三空處應為“t"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個數(shù),最大的放在a中,最小的放在c中,中間的放在b中。例如,輸入的數(shù)為:551234,輸出結(jié)果應當是:a=55.0,b=34.0,e=12.0。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includevoidfun(float*a,float*b,float*c){/********found***********/float*k;if(*a<*b){k=*a;*a=*b;*b=k;}/***********found*********/if(*a>*c){k=*c;*c=*a;*a=k;}if(*b<*c){k=*b;*b=*c,*c=k;}}main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);fun(&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);}標準答案:(1)floatk;(2)if(*a<*c)知識點解析:(1)第一個標識下的變量k是在比較過程中,臨時存放數(shù)據(jù)的變量,因此k不應是指針,所以將“float*k;"改為“floatk:"。(2)分析函數(shù)中第一個if語句,如果主函數(shù)中ac,則進行對調(diào),又把大數(shù)放在c中,這樣的邏輯顯然是混亂的。因此第二個標識下“if[*a>*c)"應該改為“if(*a<8c)"。三、程序設計題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將s所指字符串中下標為偶數(shù)同時ASCⅡ值為奇數(shù)的字符刪除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為"ABCDEFGl2345",其中字符c的ASCⅡ碼值為奇數(shù),在數(shù)組中的下標為偶數(shù),因此必須刪除:而字符1的ASCⅡ碼值為奇數(shù),在數(shù)組中的下標也為奇數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是"BDFl2345"。注意:部分源程序存在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);NONO(),}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關閉文件。*/chars[100],t[100];FTLE*rf,*wf;inti;rf=fopen("in.clat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s\n",t);}fclose(rf);fclose(wf);}標準答案:inti,j=0;for(i=0;i知識點解析:(1)判斷一個字符串中的某一字符下標i是否為偶數(shù),可用“i%2==0"來判斷,而判斷字符中的ASCⅡ碼值是否為奇數(shù),則可用“s[i]%2!=0"來判定。(2)對串s中各個字符逐個進行考查,滿足條件的字符就順序放在新串t中,否則就不存放。(3)所有字符處理完后,記得在新串t的末尾加上結(jié)束符"’\0’"。國家二級(C語言)機試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補充函數(shù)fun(),該函數(shù)的功能是將字符串tt中的大寫字母都改為對應的小寫字母,其他字符不變。例如,若輸入“AreyoucomefromSichuan?”,則輸入“areyoucomefromsichuan?”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達式或語句。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>char*fun(chartt[]){inti;for(i=0;tt[i];i++){if((tt[i]>=’A’)&&(【】))【】;}return(【】);}main(){chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}標準答案:tt[i]<=’Z’tt[i]+=32tt知識點解析:第一空;此處考查判斷大寫字母的方法,如果字符的ASCII碼大于字符A的ASCII碼,并且小于字符Z的ASCII碼,則此字符為大寫字母。第二空;考生必須掌握,大寫字母轉(zhuǎn)換為小寫字母的方法,小寫字母的ASCII碼比大寫字母的ASCII碼大32。第三空:函數(shù)fun的返回值為字符型指針,而字符型的數(shù)組名就是字符型指針,所以返回tt。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:計算整數(shù)n的階乘。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>doublefun(intn){doubleresult=l.0;whil(n>l&&n<170)/**************found********************/result*=--n;/**************found********************/return;main(){int.n;clrscr();printf("Enteraninteger:");scanf("%d",&n);printf("\n\n%d!=%lg\n\n",n,fun(n));}標準答案:(1)錯誤:result*=--n;正確:result*=n--;(2)錯誤:return;正確:returnresult;知識點解析:該題采用循環(huán)語句計算n的階乘。當n大于1且小于170時,令result與n相乘,同時n自動減1,循環(huán)至n=2(n=1時無需相乘):注意:o和1的階乘都等于1,可用條件語句和循環(huán)語句實現(xiàn)上述功能。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun(),該函數(shù)的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCⅡ碼值為偶數(shù)、…、字符2的ASCⅡ碼值為偶數(shù)、…,都應當刪除,其他依次類推。最后t所指的數(shù)組中的內(nèi)容應是ACEGl35。注定:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序;#include<stdio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart[]){}main(){chars[100],t[100];clrscr();printf(,\nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);}標準答案:voidfun(char*s,chart[]){inti=0;for(;*s!=’\0’;s++)/*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/if(*s%2==1)t[i++]=*s;t[i]=’\0’;/*在字符串的末尾口上串結(jié)束符*/}知識點解析:要刪除ASCH值為偶數(shù)的字符,也就是要留下ASCH值為奇數(shù)的字符,由于最終是要求求出剩余字符(BPASCⅡ值為奇數(shù))形成的新串,所以本題程序的算法是從原字符串的頭到尾掃描并找出ASCⅡ值為奇數(shù)的字符依次存入數(shù)組沖。此外,還要注意數(shù)組t的下標變化和下標的初值(初值必須為0,即i=0),t[i++]州的作用是先使用t[i]然后再使自增1。任何字符串的末尾都要有串結(jié)束符。這種算法在很多題中都要用到,學習者可以舉一反三地找一些其他相關習題練習一下。國家二級(C語言)機試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:求ss所指字符串數(shù)組中長度最短的字符串所在的行下標,作為函數(shù)值返回,并把其串長放在形參n所指變量中。ss所指字符串數(shù)組中共有M個字符串,且串長#include#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/**********found**********/for(i=0;i<【1】;i++){len=strlen(ss[i]);if(i==0)*n=len;/**********found**********/if(len【2】*n){*n=len;k=i;}}/**********found**********/return(【3】);}main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};intn,k,i;printf("\nTheoriginalstringsare:\n");for(i=0;i標準答案:M<k知識點解析:第一空:循環(huán)的目的是在M個字符串中尋找長度最短的字符串,因此循環(huán)變量i從0變化到M-1,故第一空處應為“M”。第二空:*n記錄最小字符串的長度,由審題分析可知,字符串ss[i]長度比min小,則交換最小長度值和下標位置,故第二空處應為“<”。第三空:變量k記錄了最小字符串的下標位置,函數(shù)的返回值是最短的字符串所在的行下標,故第三空處應為“k”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、由N個有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,給定程序MODll.C中函數(shù)fun的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標值;反之,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(10whigh,查找結(jié)束。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#defineN10/************found************/voidfun(inta[],intm){intlow=0,high=N-1,mid;while(low<=high){mid=(low+high)/2;if(ma[mid])low=mid+1;elsereturn(mid);}return(-1);}main(){inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;printf("a數(shù)組中的數(shù)據(jù)如下:");for(i=0;i=0)printf("m=%d,index=%d\n",m,k);elseprintf("Notbefound!\n");}標準答案:intfun(inta[],intm)elseif(m>a[mid])知識點解析:(1)根據(jù)主函數(shù)中“k=fun(a,m);”,知道函數(shù)fun應該是返回int型的函數(shù),所以第一個標識下面定義的“voidfun(inta[],intm)”應該改為“intfun(inta[],intm)”。(2)第二個標識下的“elseIf(m>a[mid])”是判斷m是否比a[mid]大,在while循環(huán)中采用的是if-elseif-else語句,顯然“elseIf”當中“If”應當小寫,故第二標識下“elseIf(m>a[mid])”應改為“elseif(m>a[mid])”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將s所指字符串中ASCⅡ值為奇數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。例如。若s所指字符串中的內(nèi)容為:”ABCDEFGl2345”,其中字符A的ASCⅡ碼值為奇數(shù)、…、字符1的ASCⅡ碼值也為奇數(shù)、…都應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是:”BDF24”。注意:部分源程序存在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("\nPleaseenterstringS:");scanf("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色環(huán)保廠房改造合同協(xié)議3篇
- 專屬擔保義務拓展協(xié)議樣本版B版
- 2025年度拆除工程安全評估與裝修監(jiān)理合同樣本4篇
- 個人住宅裝修協(xié)議樣例一
- 二零二五年度車輛租賃行業(yè)信用體系建設合同3篇
- 2025年度假離婚后子女撫養(yǎng)權爭奪法律合同3篇
- 專業(yè)油漆工程2024年度承包協(xié)議版B版
- 上海二手房買賣合同書范本(2024版)
- 2025年度拆遷拆除工程進度款支付協(xié)議書4篇
- 2025年度戶外活動場地及設施租賃合同范本4篇
- 大數(shù)據(jù)管理與考核制度大全
- 大學面試后感謝信
- 2022屆上海高考語文調(diào)研試測卷詳解(有《畏齋記》“《江表傳》曰…”譯文)
- SBT11229-2021互聯(lián)網(wǎng)舊貨交易平臺建設和管理規(guī)范
- 如何打造頂尖理財顧問團隊
- 土壤農(nóng)化分析課件
- 小區(qū)大型團購活動策劃
- NEC(新生兒壞死性小腸結(jié)腸炎)92273
- 2023年租賃風控主管年度總結(jié)及下一年展望
- 開關插座必看的七個安全隱患范文
- 高分子成型加工課件
評論
0/150
提交評論