![國家二級(C語言)機試模擬試卷18(共336題)_第1頁](http://file4.renrendoc.com/view2/M02/3E/34/wKhkFma6tD6AX77fAAH9w1Fdjk8951.jpg)
![國家二級(C語言)機試模擬試卷18(共336題)_第2頁](http://file4.renrendoc.com/view2/M02/3E/34/wKhkFma6tD6AX77fAAH9w1Fdjk89512.jpg)
![國家二級(C語言)機試模擬試卷18(共336題)_第3頁](http://file4.renrendoc.com/view2/M02/3E/34/wKhkFma6tD6AX77fAAH9w1Fdjk89513.jpg)
![國家二級(C語言)機試模擬試卷18(共336題)_第4頁](http://file4.renrendoc.com/view2/M02/3E/34/wKhkFma6tD6AX77fAAH9w1Fdjk89514.jpg)
![國家二級(C語言)機試模擬試卷18(共336題)_第5頁](http://file4.renrendoc.com/view2/M02/3E/34/wKhkFma6tD6AX77fAAH9w1Fdjk89515.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級(C語言)機試模擬試卷18(共9套)(共336題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共37題,每題1.0分,共37分。)1、下列有關數(shù)據(jù)庫的描述,正確的是()。A、數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)共享的問題C、數(shù)據(jù)庫是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致標準答案:B知識點解析:數(shù)據(jù)庫設計的目的實質(zhì)上是設計出滿足實際應用需求的實際關系模型。數(shù)據(jù)庫技術的主要目的是有效地管理和存取大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的共享性,使多個用戶能夠同時訪問數(shù)據(jù)庫中的數(shù)據(jù);減小數(shù)據(jù)的冗余,以提高數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應用程序的獨立性,從而減少應用程序的開發(fā)和維護代價。2、以下程序的輸出結(jié)果是()。#includemain(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++;switch(b%3){default:m++;case0:m++:break;}}printf(”%d\n”,m);}A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為a=8,a%4=0,所以執(zhí)行case0后面的語句,將m加1,遇到break語句跳出switch。3、有以下程序:#include<stdio.h>voidfun(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(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A、321678B、876543C、1098765D、345678標準答案:A知識點解析:本題中的函數(shù)fun()的功能是將數(shù)組k中前5個元素倒序,所以返回后數(shù)組k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印輸出k[2]到k[7]元素的值,即321678,所以選擇A。4、若輸入’’abcdef’’、’’abdef’’,以下程序的輸出結(jié)果為()。#include<stdio.h>#include<string.h>main(){intn;chars1[201,s2[20],*p1,*p2;scanf(’’%s’’,s1);scanf(’’%s’’,s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf(’’%d\n’’,n);}A、-B、0C、’’abcdef’’D、’’abdef’’標準答案:A知識點解析:本題考查兩個知識點:①字符串比較函數(shù)strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。②字符串依次比較的是它們相同位置上字符的ASCII碼值。5、有以下程序:#include<stdio.h>voidfun(char*c,intd){*c=*c+1;d+=1;orintf("%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標準答案:A知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。main函數(shù)中首先調(diào)用fun函數(shù),fun函數(shù)的功能是使字符c的ASCII碼值加1并輸出,使d加1并輸出對應的字符;dun(&b,a)輸出“g,G”,但是由于fun函數(shù)的第一個參數(shù)進行的是地址傳遞,而第二個參數(shù)進行的是值傳遞,所以main函數(shù)中的printf函數(shù)輸出“F,g”。6、下面程序的輸出結(jié)果是()。#includemain(){chara[]={’a’,’b’,’c’,’d’,’f’,’g’},*p;P=a;prinff("%c\n",*p+4);}A、aB、bC、eD、f標準答案:C知識點解析:“*”號的優(yōu)先級比“+”的優(yōu)先級高,所以先執(zhí)行“*p”;指針p指向的是數(shù)組的首地址,因此*p=a,再加4得’e’。7、運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2;elses=l;i=num/100;j=(num—i*100)/10;k=(num—i*100—j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);casel:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1標準答案:A知識點解析:本題考查if…else語句和switch語句。scanf函數(shù)通過鍵盤讀入num的值。因為“num=321>99”,所以“s=3,i=3,j=2,k=1”。因為s=3,所以執(zhí)行case3.輸出k,j,i的值,然后通過break結(jié)束程序。8、以下程序的輸出結(jié)果是()。#include<stdio.h>intm=13:intfun(intx,intY){intm=2;return(x*y-m);}main(){inta=7,b=6;printf("%d",fun(a,b)/m);}A、1B、3C、7D、10標準答案:B知識點解析:本題考查的是函數(shù)調(diào)用時的參數(shù)的作用域。在函數(shù)調(diào)用時,當全局變量和局部變量的名稱相同時,在局部變量的作用域內(nèi),局部變量起作用,因而在fun函數(shù)內(nèi)m的應該等于2,main中的m為13,所以返回值為7×6-2=40,而fun(a,b)/m值為40/13=3。9、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊列D、二叉樹標準答案:A知識點解析:棧支持子程序調(diào)用。棧是一種只能在一端進行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為A)。10、在關系數(shù)據(jù)庫中,用來表示實體間聯(lián)系的是()。A、屬性B、二維表C、網(wǎng)狀結(jié)構(gòu)D、樹狀結(jié)構(gòu)標準答案:B知識點解析:關系模型實體間的聯(lián)系采用二維表來表示,簡稱表。選項C為網(wǎng)狀模型實體間的聯(lián)系,選項D為層次模型實體間的聯(lián)系,選項A屬性刻畫了實體。11、設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的值為E2000c,12、在數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系中,索引屬于()。A、模式B、內(nèi)模式C、外模式D、概念模式標準答案:B知識點解析:內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,它還未深入到設符級上(如磁盤及磁盤操作)。13、已知:intc[3][4];,則對數(shù)組元素引用正確的是()。A、c[1][4]B、c[1.5][0]C、c[1+0][0]D)以上表達都錯誤標準答案:C知識點解析:此題考查的是數(shù)組元素的引用。對于已定義的數(shù)組a[M][N],數(shù)組元素的正確引用必須滿足行下標小于M,列下標小于N,且為正整數(shù)。因此,選項A)中列下標溢出;選項B)中行下標出現(xiàn)小數(shù);選項C)滿足要求。14、設有定義:chars[10];inti=0;,以下不能將一行(不超過100個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、gets(s);B、scanf("%s",s);C、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標準答案:B知識點解析:本題考查標準輸出函數(shù)和循環(huán)語句。gets(s)函數(shù)的作用是將輸入的字符讀入字符串s,直到遇到回車。而scanf()函數(shù)接收字符串時的結(jié)束標志為回車或者空格。因此選項B不能,選項C和選項D中按字符逐個讀入字符串s中,直到讀入的字符是換行符為止,因此正確。15、以下標識符不是關鍵字的是()。A、breakB、charC、SwitchD、return標準答案:C知識點解析:此題考查標識符和關鍵字的概念。需要注意的是C語言是區(qū)分大小寫的,Switch是關鍵字,但Switch不是關鍵字。16、下列敘述中正確的是()。A、調(diào)用printf()函數(shù)時,必須要有輸出項B、使用putchar()函數(shù)時,必須在之前包含頭文件stdio.hC、在C語言中,整數(shù)可以以二進制、八進制或十六進制的形式輸出D、調(diào)節(jié)getchar()函數(shù)讀入字符時,可以從鍵盤上輸入字符所對應的.ASCII碼標準答案:B知識點解析:選項A),若pfintf函數(shù)沒有輸出項,且格式字符串中不含格式信息,則輸出的是格式字符串本身,若格式字符串含有格式信息,運行時則出現(xiàn)錯誤提示;選項C),在C語言中,整數(shù)可以十進制、八進制或十六進制的形式輸出;選項D),getchai函數(shù)是從標準輸入設備讀取一個字符。17、設Y為整型變量,A=1,A的地址為EF01;B=2,B的地址為EF02;執(zhí)行語句B=&A;Y=&B;后Y的值()。A、1B、2C、EF01D、EF02標準答案:D知識點解析:&是取地址運算符,“Y=&B”是將B的地址賦給Y,因此Y值為EF02。18、有以下程序段:intx,i;mr(i=1;i<=100;i++){$canf("%d",&x);if(x<0)continue;pfinff("%4d\n",x);}下列各項中,針對上述程序段的描述正確的是()。A、最多可以輸出100個非負整數(shù)B、當x<0時結(jié)束整個循環(huán)C、當x>=0時沒有任何輸出D、pfinff函數(shù)調(diào)用語句總是被跳過標準答案:A知識點解析:continue語句的功能是結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行,所以B選項錯誤;當x>=0時,程序執(zhí)行printf("%4d\n",x);語句,所以C、D選項錯誤。因為for循環(huán)的循環(huán)次數(shù)i是從1到100,如果先后輸入100個非負整數(shù),則這些數(shù)將全部輸出。19、有以下程序:#include<stdio.h>voidfun(char*c){while(*c){if(*c>=’a’&&*c<=’z’)*c=*c-(’a’-’A’);c++:}}main(){chars[81];gets(s);fun(s);puts(s);}當執(zhí)行程序時從鍵盤上輸入HelloBeijing<回車>,則程序運行后的輸出結(jié)果是()。A、hellobeijingB、HelloBeijingC、HELLOBEIJINGD、hELLOBeijing標準答案:C知識點解析:主程序讀取整個字符串存于s中,調(diào)用fun函數(shù),字符指針c指向數(shù)紺s。函數(shù)fun的功能是把指針c所指向的字符數(shù)組中的所有小寫字符轉(zhuǎn)換為大寫gets函數(shù)可以把空格作為字符串的一部分輸入,以回車作為輸入結(jié)束如果*c為小寫字符,則*c=*c-32(轉(zhuǎn)大寫),因此C選項正確。20、下列敘述中正確的是()。A、棧與隊列都只能順序存儲B、循環(huán)隊列是隊列的順序存儲結(jié)構(gòu)C、循環(huán)鏈表是循環(huán)隊列的鏈式存儲結(jié)構(gòu)D、棧是順序存儲結(jié)構(gòu)而隊列是鏈式存儲結(jié)構(gòu)標準答案:B知識點解析:棧是所有的插入與刪除都限定在表的同一端進行的線性表;隊列是指允許在一端進行插入,而在另一端進行刪除的線性表,二者既可以順序存儲也可以鏈式存儲。為了充分地利用數(shù)組的存儲空間,把數(shù)組的前端和后端連接起來,形成一個環(huán)形的表,稱為循環(huán)隊列,因此循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)。21、在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)用可以嵌套。22、大學中每個年級有多個班,每個班有多名學生,則實體班級和實體學生之間的聯(lián)系是()。A、一對多B、一對一C、多對一D、多對多標準答案:A知識點解析:實體集之問通過聯(lián)系來建立聯(lián)接關系分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。每個班有多名學生,但每個學生只能在一個班級里,故實體班級和實體學生之間的聯(lián)系是一對多,故A選項正確。23、以下是正確C語言實型常量的是()。A、.e-1B、e-1C、-1eD、1e-1標準答案:D知識點解析:所謂常量是指在程序運行過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。實型常量有兩種表示形式:十進制小數(shù)形式、指數(shù)形式。指數(shù)形式中e后面的指數(shù)必須是整數(shù),階碼標志e之前需要有數(shù)字,由此可知選項A,B,C錯誤。答案為D選項24、下面描述中不屬于數(shù)據(jù)庫系統(tǒng)特點的是A、數(shù)據(jù)共享B、數(shù)據(jù)完整性C、數(shù)據(jù)冗余度高D、數(shù)據(jù)獨立性高標準答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)的特點為高共享、低冗余、獨立性高、具有完整性等,C錯誤。25、有以下程序:#include<stdio.h>main(){inta=2,b;b=(a>>=1)+4;printf("%d,%d",a,b);}程序運行后的輸出結(jié)果是()。A、1,5B、2,4C、2,6D、2,5標準答案:A知識點解析:a>>=1等價于a=a>>1,即a除以2,則a=2,b=(a>>1)+4=1+4=5,因此,打印出來為1,5。答案為A選項。26、設有以下函數(shù):intfun(intn,char*s){……}則下面對函數(shù)指針的定義和賦值均正確的是()。A、int(*pf)(int,char);pf=&fun;B、int*pf();pf=fun;C、int*pf();*pf=fun;D、int(*pf)(int,char*);pf=fun;標準答案:D知識點解析:函數(shù)的參數(shù)可以是指針類型。它的定義形式為void(*pf)(),原函數(shù)定義的形參變量是一個整數(shù)型和一個字符指針型,所以答案D正確。27、計算機算法中有窮性的意思是()。A、算法程序的運行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標準答案:A知識點解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。28、計算機軟件通常分為應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。A、編譯程序B、操作系統(tǒng)C、圖書借閱系統(tǒng)D、匯編程序標準答案:C知識點解析:編譯程序、操作系統(tǒng)和匯編程序均是系統(tǒng)軟件。29、有以下程序:#include#includetypedefstrtut{charname[9];charsex;floatscore[2];}STU;STUfun(STUa){STUb={’’Tom’’,’m’,85,90};inti;strcpy(a.name,b.name);a.sex=b.sex:for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={’’Alex’’,’f’,95,92},d;d=fun(c);printf(’’%s,%c,%d,%d,’’,d.name,d.sex,d.score[0],d.score[1]);printf(’’%s,%c,%d,%d\n’’,c.name,c.sex,c.score[0],c.score[1]);}程序運行后的輸出結(jié)果是()。A、Tom,m,85,90,Alex,f,95,92B、Tom,m,85,90,Tom,m,85,90C、Qian,f,95,92,Alex,f,95,92D、Alex,f,95,92,Tom,m,85,90標準答案:A知識點解析:注意使用typedef定義結(jié)構(gòu)體時,大括號后面的標識符將成為該結(jié)構(gòu)體類型的定義關鍵字,可以用來定義新的結(jié)構(gòu)體變量。使用值傳遞調(diào)用函數(shù)時實參的值不會改變,所以調(diào)用后結(jié)構(gòu)c的值沒有發(fā)生變化,調(diào)用函數(shù)會返回一個固定的結(jié)構(gòu)體內(nèi)容,所以答案A正確。30、對長度為n的線性表作快速排序,在最壞情況下,比較次數(shù)為A、nB、n-1C、n(n-1)D、n(n-1)/2標準答案:D知識點解析:快速排序最壞情況就是每次選的基準數(shù)都和其他數(shù)做過比較,共需比較(n-1)+(n-2)+…+1=n(n-1)/2,選D。31、有以下程序#include<stdio.h>inta=1,b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf("%d%d\n",a,b);}程序運行后的輸出結(jié)果是A、5612B、3456C、1256D、5634標準答案:D知識點解析:fun1函數(shù)中的a、b為局部變量,fun2函數(shù)中的a、b為全局變量。執(zhí)行fun1函數(shù)后輸出5,6執(zhí)行完fun2后a變?yōu)?,b變?yōu)?,所以結(jié)果為3,4D選項正確。32、當輸入為"Fool&Swalow"時,下面程序的執(zhí)行結(jié)果是()。#includemain(){charc;while(c!=’?’){c=getchar();putchar(c);}}A、SwalowB、FoolC、Fool?D、?Swalow標準答案:C知識點解析:本程序是通過getchar()函數(shù)讀入字符,并通過putchar()函數(shù)將字符逐個輸出,當用戶輸入“?”時停止輸出。33、當沒有指定C語言中函數(shù)形參的存儲類別時,函數(shù)形參的存儲類別是A、外部(extern)B、靜態(tài)(static)C、寄存器(register)D、自動(auto)標準答案:D知識點解析:auto變量又稱為自動變量,函數(shù)定義變量時,如果沒有指定存儲類別,系統(tǒng)就認為所定義的變量具有自動類別,D選項正確。static變量又稱為靜態(tài)變量,編譯時為其分配的內(nèi)存在靜態(tài)存儲區(qū)中。register變量又稱為寄存器變量,變量的值保留在CPU的寄存器中,而不是像一般變量那樣占內(nèi)存單元。當定義一個函數(shù)時,若在函數(shù)返回值的類型前加上說明符extern時,稱此函數(shù)為外部函數(shù),外部函數(shù)在整個源程序中都有效。34、設二叉樹如下:則前序序列為A、ABDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH標準答案:A知識點解析:二叉樹遍歷可以分為3種:前序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之后)。本題中前序遍歷為ABDEGCFH,中序遍歷為DBGEAFHC,后序遍歷為DGEBHFCA,故A選項正確。35、以下敘述正確的是A、C程序由函數(shù)組成,可以不包含main函數(shù)B、每個C程序文件中的main函數(shù)都應當放在最前面C、每個C程序文件都應當包含一個main函數(shù)D、每個C程序都只能有一個main函數(shù)標準答案:D知識點解析:雖然一個C程序可以包含多個文件,但是有且只有一個文件中包含main函數(shù),因此,選項A,C錯誤。main函數(shù)可以放在程序的任意位置。因此,選項B錯誤。答案為D選項。36、有以下程序#include<stdio.h>main(){intm,n;scanf("%d%d",&m,&n);while(m!=n){while(m>n){m=m-n;}while(n>m){n=n-m;}}printf("%d\n",m);}該程序的功能是A、計算m和n的最小公倍數(shù)B、計算m和n的最大公約數(shù)C、計算m和n的差值D、找出m和n中的較大值標準答案:B知識點解析:題目使用更相減損術求最大公約數(shù),其思想:1、任意給定兩個正整數(shù),判斷它們是否都是偶數(shù)。若是,則用2約簡,若不是則執(zhí)行第二步。第二步:以較大的數(shù)減較小的數(shù),接著把所得的差與較小的數(shù)比較,并以大數(shù)減小數(shù)。繼續(xù)這個操作,直到所得的減數(shù)和差相等為止。則第一步中約掉的若干個2與第二步中等數(shù)的乘積就是所求的最大公約數(shù)。因此。故答案為B選項37、下列4個程序中,完全正確的是()。A、#include<stdio.h>main();{/*programming*/printf("programming!\n");}B、#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}C、#include<stdio.h>main(){/*/programming*/*/printf("programming!\n");}D、include<stdio.h>main(){/*programming*/printf("programming!\n");}標準答案:B知識點解析:選項A)中,main()函數(shù)后面的分號是錯誤的,C語言在函數(shù)名后面不能有分號:在C語言中注釋內(nèi)容必須放在“/*”和“*/”之間,“/*”和“*/”必須成對出現(xiàn),按語法規(guī)定在注釋之間不可再嵌套“/*”和“*/”,選項C)的程序段中注釋語句之間有嵌套;C語言用#include命令行來實現(xiàn)文件包含的功能。#include命令行的形式為:#include“文件名”,選項D)中的include前面少了一個#符號。二、程序填空題(本題共1題,每題1.0分,共1分。)38、下列給定程序中,函數(shù)fun的功能是:從形參ss所指字符串數(shù)組中,刪除所有串長超過k的字符串,函數(shù)返回剩余字符串的個數(shù)。SS所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/*********found*********/for(i=0;i<【1】;i++){len=strlen(ss[i]);/*********found*********/if(len<=【2】)/*********found*********/strcpy(ss[j++],【3】);}returnj;}voidmain(){charx[N][M]={"Beijing","Shanghai","Tianjin","Nanjing","Wuhan");inti,f;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");f=fun(x,7);printf("Thestringwitchlengthislessthanorequalto7:\n");for(i=0;i<f;i++)puts(x[i]);printf("\n");}標準答案:(1)N(2)k(3)ss[i]知識點解析:本題考查:for循環(huán)語句;if語句條件表達式;字符串復制函數(shù)strcpy的使用。填空1:for循環(huán)語句的作用是遍歷字符串數(shù)組中的每一個字符串,所以循環(huán)變量i的循環(huán)條件是i<N。填空2:題目要求刪除串長度大于k的字符串,所以if條件語句的條件表達式是len<=k。填空3:通過字符串復制函數(shù)將串長不大于k的字符串另存,并記錄個數(shù)。字符串復制函數(shù)strcpy,其格式為:strcpy(字符數(shù)組名1,字符數(shù)組名2)功能:把字符數(shù)組2中的字符串復制到字符數(shù)組1中。字符串結(jié)束標識‘\0’也一同復制。字符數(shù)組名2,也可以是一個字符串常量,這時相當于把一個字符串賦予一個字符數(shù)組。三、程序修改題(本題共1題,每題1.0分,共1分。)39、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:計算s所指字符串中含有t所指字符串的數(shù)目,并作為函數(shù)值返回。請改正程序中的錯誤或在下畫線處填上正確的內(nèi)容并把下畫線刪除,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#defineN80intfun(char*s,char*t){int;n;char*p,*r;n=0;/*********found*********/*r=t;while(*s){p=s;while(*r){if(*r==*p){r++;p++;}elsebreak;if(*r==’\0’)n++;}/*********found*********/【1】s++;}returnn;}voidmain(){chara[N],b[N];intm;printf("\nPleaseenterstringa:");gets(a);printf("\nPleaseentersubstringb:");gets(b);m=fun(a,b);printf("\nTheresultis:m=%d\n",m);}標準答案:(1)r=t;(2)r=t;或r=&t[0];知識點解析:從字符串s中找出子字符串的方法是:從第一個字符開始,對字符串進行遍歷,若s串的當前字符等于t串的第一個字符,兩字符串的指針自動加1,繼續(xù)比較下一個字符;若比較至字符串t的末尾,則跳出循環(huán);若s串的字符與t串的字符不對應相同,則繼續(xù)對s串的下一個字符進行處理。四、程序設計題(本題共1題,每題1.0分,共1分。)40、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:將放在字符串數(shù)組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串數(shù)組中的M個字符串為{“AAAA”,“BBBBBBB”,“CC”},則合并后的字符串內(nèi)容應該是“AAAABBBBBBBCC”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidfun(chara[M][N],char*b){}voidmain(){charw[M][N]={"AAAA","BBBBBBB","CC"};chara[100]={"##################};inti;printf("Thestring:\n");for(i=0;i<M;i++)puts(w[i]);printf("\n");fun(W,a);printf("TheAstring:\n");printf("%s",a);printf("\n\n");}標準答案:voidfun(chara[M][N],char*b){inti,j,k=0;for(i=0;i<M;i++)/*將字符串數(shù)組中的M個字符串,按順序存入一個新的字符串*/for(j=0;a[i][j]!=’\0’;j++)b[k++]=a[i][j];b[k]=’\0’;/*在字符串最后加上字符串結(jié)束標記符*/}知識點解析:本題考查:字符串連接操作。本程序中第1個for循環(huán)的作用是對二維數(shù)組行的控制,第2個循環(huán)的作用是從同一行中取出字符并存放到一維數(shù)組b中,語句是b[k++]=a[i][j];。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,已建立一個帶有頭結(jié)點的單向鏈表,鏈表中的各結(jié)點包含數(shù)據(jù)域(da-ta)和指針域(next),數(shù)據(jù)域為整型。函數(shù)fun的作用是:找出鏈表各結(jié)點數(shù)據(jù)域中的最大值,其最大值由函數(shù)值返回。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在文件BLANK1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<stdlib.h>#pragmawarning(disable:4996)structlist{intdata;structlist*next:};structlist*createlist(intdata[],intn){structlist*head=0,*p,*q;inti;head=(structlist*)malloc(sizeof(structlist));head->data=data[0];p=q=head;for(i=1,i<n,i++){p=(structlist*)malloc(sizeof(structlist));p->data=data[i];q->next=p;q=p;}p->next=NULL;returnhead;}/*********found*********/intfunc(【1】head){intpmax=head->data;structlist*p=head->next;while(p!=NULL){if(p->data>pmax)pmax=p->data;/*********found*********/p=【2】;}/*********found*********/【3】}voidmain(){intdata[]={123,21,65,789,32,310,671,651,81,101},pmax;structlist*head:head=createlist(data,10);pmax=func(head);printf("Max=%d\n",pmax);}標準答案:(I)structlist(2)p->next;(3)returnpmax;知識點解析:程序定義了結(jié)構(gòu)體類型list,用來作為鏈表的結(jié)點類型,它包含兩個成員:data數(shù)據(jù)成員,next指針成員。func()函數(shù)參數(shù)為鏈表的頭結(jié)點指針,pmax用來存放最大值,通過while循環(huán)遍歷整個鏈表,在遍歷的過程中,將當前結(jié)點的data與pmax比較,若pmax小于當前結(jié)點的data,則使用當前結(jié)點的data更新pmax,最后將pmax的值作為函數(shù)返回值返回。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODII.C中函數(shù)fun的功能是:從低位開始依次取長整型變量s中奇數(shù)位上的數(shù),構(gòu)成一個新數(shù)放在t中(注意:位置從0開始計算)。例如:輸入:12345678,則輸出:1357輸入:123456789,則輸出:2468請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#pragmawarning(disable:4996)voidfun(10ngs,long*t){longs1=10;s/=10;/*********found*********/*t=s/10;while(s>0){s=s/100;/*********found*********/t=s%10*s1+t;/*********found*********/s1/=10;}}main(){longs,t;printf("\nPleaseenterlongnumber:");scanf("%1d",&s);fun(s,&t);printf("Theresultis:%1d\n",t);}標準答案:(1)*t=s%10;(2)*t=s%10*s1+*t;(3)s1*=10;知識點解析:fun()函數(shù)中,s是待處理的數(shù),t是用來存放新數(shù)的指針,s1表示當前數(shù)字在新數(shù)中某位上的基數(shù)。由于題意從s的低位到高位從0開始,所以第1個奇數(shù)位是S的十位數(shù)字,需要將s除以10去掉個位數(shù)字,s1賦初值為十位的基數(shù)10,將處理后的s的個位數(shù)字存放到指針t中。接著通過while循環(huán),每次將S除以100,跳過偶數(shù)位上的數(shù)字,然后將奇數(shù)位上的數(shù)字乘以對應的基數(shù)s1后,與t指向的數(shù)累加,重新存放到指針t中,并將基數(shù)s1乘以10,表示下一位的基數(shù),直到s為0。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:在一含有11個四位數(shù)的數(shù)組中,統(tǒng)計出這些數(shù)的奇數(shù)、偶數(shù)個數(shù),然后計算出個數(shù)多的那些數(shù)的算術平均值并由函數(shù)返回,個數(shù)通過yy傳回。例如,若11個數(shù)據(jù)為:1101,1202,1303,1404,1505,2611,2712,2813,2914,3202,4222則輸出:yy=6,pjz=2609.33注意:部分源程序在文件PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。#include<stdio.h>#pragmawarning(disable:4996)#defineN11doublefun(intxx[],int*yy){}main(){intyy,xx[N]=(1101,1202,1303,1404,1505,2611,2712,2813,2914,3202,4222};doublepjz;voidNONO();pjz=fun(xx,&yy);printf("yy=%d,pjz=%.21f\n",yy,pjz);NONO();}voidNONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/inti,j,xx[N],yy;doublepjz;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<N;j++)fscanf(rf,"%d",&xx[j]);pjz=fun(xx,&yy);fprintf(wf,"%d,%.21f\n",yy,pjz);}fclose(rf);fclose(wf);}標準答案:doublefun(intxx[],int*yy){inti,odd_count=0,even_count=0;doubleave,odd_sum=0.0,even_sum=0.0;for(i=0;ieven_count){*yy=odd_count;ave=odd-sum/odd_count;}else{*yy=even_count;ave=even_sum/even_count;}returnave;}知識點解析:程序首先定義循環(huán)變量i,odd_count統(tǒng)計奇數(shù)個數(shù),初值為0,even_count統(tǒng)計偶數(shù)個數(shù),初值為0,odd_sum統(tǒng)計奇數(shù)之和,初值為0.0,even_sm統(tǒng)計偶數(shù)之和,初值為0.0,另外還定義了平均值ave。接著遍歷數(shù)組,對當前元素對2求余,若結(jié)果為0,表示是偶數(shù),統(tǒng)計偶數(shù)個數(shù)同時累加到even_sum中;若結(jié)果為1,表示奇數(shù),統(tǒng)計奇數(shù)個數(shù)同時累加到odd_sum中。最后比較odd_count和even_count的大小,若odd_count較大,則求得奇數(shù)的平均值ave,并將odd_count存放到y(tǒng)y指向的地址;若even_count較大,則求得偶數(shù)的平均值ave,并將even_count存放到y(tǒng)y指向的地址,最后將ave作為函數(shù)返回值返回。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、當變量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%21=1)和選項C中的!(c%2)是等價的,都是判斷c不是奇數(shù),因此也不滿足題意。故B選項正確。2、執(zhí)行以下程序段后,w的值為()。intw=’A’,x=14,y=15;w=((x|y)&&(w<’a’));A、—1B、NULLC、1D、0標準答案:C知識點解析:因為x=14,y=15都是非零整數(shù),因此x|y=1。又因為’A’+32=’a’,知w<’a’也為真,因此(x|y)&&(w<’a’)的值為1。3、有以下程序段:inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d",a,b,c);程序的輸出結(jié)果是()。A、a=10b=50c=10B、a=10b=50c=30C、a=10b=30c=10D、a=10b=30c=50標準答案:A知識點解析:因為a=10,b=50,所以a<b,if語句判斷條件不成立,于是執(zhí)行c=a,得到c=10,a和b的值不變。4、有以下程序:#include<stdio.h>intfun(inta,intb){if(b=—0)returna;elsereturn(fun(——a,——b));}main(){printf("%d\n",fun(4,2));}程序運行的結(jié)果是()。A、1B、2C、3D、4標準答案:B知識點解析:fun函數(shù)是一個遞歸函數(shù),其功能是:當b的值為零時,返回此時a的值;否則,返回fun(——a,——b),即將a和b的值分別減1后返回fun(a,b)。當b不斷遞減時,a也不斷遞減,直到b為零。執(zhí)行過程為:執(zhí)行fun(4,2),b=2,返回f(3,1),此時b=1,返回f(2,0),b=0,返回a的值2。5、有以下程序段: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);}以下關于程序段執(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知識點解析:當產(chǎn)生的隨機數(shù)n為0時,執(zhí)行“case0:exit(0)”這條語句,結(jié)束程序的運行。6、有以下程序:#include#includemain(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*aa=1;*b=2,*c=3;a=b;prinff(“%d,%d,%d\n”,*a,*b,*c);}程序運行后的輸出結(jié)果是()。A、1,1,3B、2,2,3C、1,2,3D、3,3,3標準答案:D知識點解析:malloc函數(shù)動態(tài)分配一個整型的內(nèi)存空間,然后把函數(shù)返回的地址用(int:*c)強制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內(nèi)存空間。所以只有最后一個賦值語句*c=3的值保留在了該空間內(nèi),因為a、b、c三個指針變量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3。7、在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()。A、邏輯設計B、需求分析C、詳細設計D、物理設計標準答案:B知識點解析:軟件開發(fā)階段包括需求分析、總體設計、詳細設計、編碼和測試五個階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。8、若有定義“intx,y;”并已正確給變量賦值,則下列選項中與表達式“(x-y)?(x++):(y++)”中的條件表達式“(x-y)”等價的是()。A、(x-y>0)B、(x-y<0)C、(x-y<0||x-y>0)D、(x-y=0)標準答案:C知識點解析:條件表達式的形式如下:“表達式1?表達式2:表達式3”。其含義為當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當“表達式1”的值為零時,則求“表達式3”的值,這時“表達式3”的值就是整個表達式的值。本題條件表達式的執(zhí)行順序是先求解表達式“x-y”的值,若其值為非0(可以是正數(shù),也可以是負數(shù)),則再求表達式“x++”的值,其值就是條件表達式的值;若表達式“x-y”的值為0,則再求表達式“y++”的值,其值就是條件表達式的值。因此,本題的答案為選項C。9、下列敘述中正確的是()。A、在switch語句中,不一定使用break語句B、在switch語句中必須使用defaultC、break語句必須與switch語句中的case配對使用D、break語句只能用于switch語句標準答案:A知識點解析:default語句在switch語句中可以省略,所以B錯誤;switch語句中并非每個case后都需要使用break語句,所以C錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D錯誤。10、有以下程序:#include<stdio.h>main(){chaurx=2,y=2,z;z=(y<<1)&(x>>1);pnnff("%d\n",z);}程序的輸出結(jié)果是()。A、1B、0C、4D、8標準答案:B知識點解析:本題考查位運算<<和&。y<<1為4,x>>1為1,二者與運算后為0,故B選項正確。11、C語言規(guī)定,函數(shù)返回值的類型是()。A、由調(diào)用該函數(shù)時的主調(diào)函數(shù)類型所決定B、由return語句中的表達式類型所決定C、由調(diào)用該函數(shù)時系統(tǒng)臨時決定D、由定義該函數(shù)時所指定的數(shù)值類型決定標準答案:D知識點解析:本題考查函數(shù)調(diào)用時的數(shù)值類型。函數(shù)調(diào)用時,函數(shù)返回值的類型既不由主調(diào)函數(shù)類型所決定,也不由return語句中的表達式類型所決定,更不是由系統(tǒng)臨時決定,而是由定義該函數(shù)時所指定的數(shù)值類型所決定。12、有以下程序:#include<stdio.h>main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);}程序運行后的輸出結(jié)果是()。A、1,1,2,6,B、6,2,1,1,C、6,4,3,2,D、2,3,4,6,標準答案:C知識點解析:首先對二維數(shù)組進行賦值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值為1、4、…、6、1。通過for嵌套循環(huán)語句和if條件語句,對二維數(shù)組對角線元素進行由大到小的排序操作,程序最后通過for語句輸出二維數(shù)組第1行的4個元素。因此C選項正確。13、在下列敘述中,錯誤的是()。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)可以為常量,也可以為常量表達式,但不可以為變量。14、下面函數(shù)的功能是()。SSS(S,t)char*s,*t;{while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}A、將字符串s復制到字符串t中B、比較兩個字符串的大小C、求字符串的長度D、將字符串S接續(xù)到字符串t中標準答案:B知識點解析:*s-*t的輸出實際是比較兩個字符的ASCII碼值,比較兩個字符串的大小。15、對于循環(huán)隊列,下列敘述中正確的是()。A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標準答案:D知識點解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結(jié)構(gòu),所以隊頭指針有時可能大于隊尾指針,有時也可能小于隊尾指針。16、有以下程序:#include<stdio.h>main(){inta=3:a+=a-=a*a;printf("%d\n",a);}程序的輸出結(jié)果是()。A、0B、9C、3D、-12標準答案:D知識點解析:等號“=”運算符是從右到左,且與“+、-、*”運算符比,優(yōu)先級較低。首先計算a*a,結(jié)果為9,執(zhí)行a=a-9后a的值為-6,然后執(zhí)行a+=a,即a=a+a=-6+(-6),所以值為-12。17、以下選項中,能用做數(shù)據(jù)常量的是()。A、115LB、0118C、1.5e1.5D、0115標準答案:A知識點解析:A選項中115L表示115是長整型數(shù)據(jù),合法。B選項是八進制常量的表示方法,但是在八進制中不能含有數(shù)字8,所以B錯誤。C選項中e后面應該是整數(shù)不能是小數(shù)1.5,所以c錯誤。D選項中八進制常量應該是數(shù)字“0”開始,而不是字母“o”開始。18、下面程序運行后的輸出結(jié)果是()。#include<stdio.h>main(){inta[5]={1,0,4,2,0},b[5]={1,2,3,4,5},i,s=0;for(i=0;i<5;i++)s=s+b[a[i]];printf(’’%d\n’’,s);}A、12B、15C、11D、8標準答案:A知識點解析:這道題目是計算一維數(shù)組b中某些元素的和。這些元素的下標值是一維數(shù)組a中元素值。s=0+b[1]+b[0]+b[4]+b[2]+b[0]=2+l+5+3+1=12。19、若有定義語句:inta=3,b=2,c=1;,以下選項中錯誤的賦值表達式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=c=4);標準答案:A知識點解析:這道題目主要考察賦值表達式,對于賦值表達式來說,賦值號“=”的左邊一定為變量名,右邊為一個C語言合法的表達式。20、有以下程序:#include<stdio.h>main(){unsignedchara=8,c;c=a>>3:printf("%d\n",c);}程序運行后的輸出結(jié)果是()。A、32B、16C、1D、0標準答案:C知識點解析:字符常量與其ASCII碼值一一對應,在計算的時候,可以使用該字符的ASCII碼參與運算,輸出時會根據(jù)格式控制符輸出對應的字符或者ASCII碼。右移運算符“>>”的運算規(guī)則是把左邊運算數(shù)的各二進制位全部右移n位,n取決于“>>”右邊的數(shù)值。字符a的ASCII碼值為8,對應二進制為1000,所以a>>3=1,輸出的字符c的ASCII碼值為1,答案選C。21、棧和隊列的共同點是()。A、都是先進后出B、都是先進先出C、只允許在端點處插入和刪除元素D、沒有共同點標準答案:C知識點解析:棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種“后進先出”的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種“先進先出”的線性表。22、C語言規(guī)定,在一個C程序中,main()函數(shù)的位置()。A、必須在系統(tǒng)調(diào)用的庫函數(shù)之后B、必須在程序的開始C、必須在程序的最后D、可以在任意位置標準答案:D知識點解析:每個C程序有且只有一個主函數(shù)(main),且程序必須從“main()”函數(shù)開始執(zhí)行,而且“main()”函數(shù)可以放在程序中的任意位置。23、以下敘述中正確的是()。A、a是實型變量,a=10在C語言中是允許的,因此可以說:實型變量中可以存放整型數(shù)B、在賦值表達式中,賦值號的右邊可以是變量,也可以是任意表達式C、若有inta=4,b=9;執(zhí)行了a=b后,a的值已由原值改變?yōu)閎的值,b的值變?yōu)?D、若有inta=4,b=9;執(zhí)行了a=b;b:a;之后,a的值為9,b的值為4標準答案:B知識點解析:A選項中a是實型變量,a=10在C語言中是允許的,但是實型變量中不可以存放整型數(shù)。C選項中執(zhí)行a=b后,a的值變?yōu)閎的值,為9,b的值不變,仍為9。D選項中執(zhí)行a=b后,a的值為9,b的值為9,執(zhí)行b=a后,a的值為9,b的值也為9,所以選擇B。24、下列方法中,屬于白盒法設計測試用例的方法的是()。A、錯誤推測B、因果圖C、基本路徑測試D、邊界值分析標準答案:C知識點解析:白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。25、設有宏定義:#defineIsDIV(k,n)((k%n==1):1:0)且變量m已正確定義并賦值,則宏調(diào)用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是A、判斷m是否能被5和7整除B、判斷m被5和7整除是否都余2C、判斷m被5或者7整除是否余1D、判斷m是否能被5或者7整除標準答案:A知識點解析:暫無解析26、需求分析階段的任務是()。A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費用D、軟件系統(tǒng)功能標準答案:D知識點解析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎上確定新系統(tǒng)的功能。27、有以下程序:#includemain(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是()。A、1B、2C、4D、死循環(huán)標準答案:A知識點解析:--k先自減再使用,所以第一次判斷條件即為while(4),條件為真,打印k的值,k=4-3,結(jié)果為1;第二次判斷條件即為while(0),條件為假,結(jié)束循環(huán),打印回車換行符。所以選擇A選項。28、軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N-S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:結(jié)構(gòu)化解析方法是結(jié)構(gòu)化程序設計理論在軟件需求解析階段的運用,數(shù)據(jù)流圖(DataFlowDiagram,DFD))是結(jié)構(gòu)化解析常用的工具之一,數(shù)據(jù)字典、判定樹和判定表也是常用的結(jié)構(gòu)化分析工具。程序流程圖、NS圖、PAD圖等圖形工具用于詳細設計的過程中。29、若有定義語句:doublea,*P=&a;以下敘述中錯誤的是()。A、定義語句中的*號是一個間址運算符B、定義語句中的*號是一個說明符C、定義語句中的P只能存放double類型變量的地址D、定義語句中,*P=&a把變量a的地址作為初值賦給指針變量P標準答案:A知識點解析:在變量定義doublea,*p=&a;中,*號是一個指針運算符,而非間址運算符,所以A錯誤。30、有以下程序#include<stdio.h>main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是A、輸出字符c的ASCII碼B、程序出錯C、輸出字符cD、輸出字符a的ASCII碼標準答案:B知識點解析:本題重點考察數(shù)組名的概念。在C語言中,數(shù)組名類似于一個指向數(shù)組首地址的指針常量,一旦定義就不能修改其內(nèi)容。所以本題中的s+=2;語句讓數(shù)組名s的內(nèi)容加2是錯誤的,編譯無法通過。因此B選項正確。31、下面關于編譯預處理的命令行中,正確的是()。A、#defineintINTB、##defineeps0.001C、##DEFINETRUED、#defineE2.88標準答案:D知識點解析:選項A中,int是關鍵字,不能作為用戶標識符,錯誤;選項B中,兩個#號錯誤;選項C中兩個#號錯誤,另外DFINE大寫也是錯誤的;選項D正確;本題答案為D。32、有以下程序:#includemain(){inta=2,b=3,c=4;int*p1=&a,*p2=&b,*p=&c;*p=2+*p1*(*p2);printf(’’/%d\n’’,c);}程序執(zhí)行后的輸出結(jié)果是()。A、4B、2C、3D、8標準答案:D知識點解析:指針指向的是變量的地址,所以指針變量所指向的空間的值發(fā)生變化,其指向的變量的值會同時發(fā)生變化,因此,c=2+a*b=2+2*3=8。33、設有定義:intx=11,y=12,z=0;,以下表達式值不等于12的是A、(z,x,y)B、(z=x,y)C、z=(x,y)D、z=(x==y)標準答案:D知識點解析:逗號表達式的計算過程是從左到右逐個求每個表達式的值,取最右邊一個表達式的值作為該逗號表達式的值。賦值運算結(jié)合性為由右向左結(jié)合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。成功實現(xiàn)賦值后以左值為返回值。邏輯表達式成立則返回1,不成立返回0。A選項邏輯表達式x==y不成立,則z=0,表達式值為0。B選項中逗號表達式x,y取y值為表達式值,然后賦值給z=12,表達式值為12。C選項逗號表達式(x,y)取y值為表達式值,然后賦值給z=12,表達式值為12。D選項逗號表達式(z,x,y)取y值為表達式值12。選擇D選項。34、有如下程序段int*p,a=1;p=&a;*p=10;則變量a的值為A、不能確定B、1C、10D、11標準答案:C知識點解析:題中定義一個指針變量p和整數(shù)并將a賦值為1,再把a地址的值賦給指針p,最后把10賦給指針p所對應的地址單元,此時改變了a的值,a=10,答案為C選項。35、有以下程序#defineOut(n)n%2==0?"%c":"%d"#include<stdio.h>main(){intx;for(x=65;x<69;x++)printf(Out(x),x);}程序的運行結(jié)果是A、ABCDB、A66C68C、65666768D、65B67D標準答案:D知識點解析:#define命令定義一個函數(shù),該函數(shù)判斷一個數(shù)能否整除2,如果能,默認當前數(shù)值為字符類型的ASCII碼值,否則認為當前數(shù)值為整數(shù)類型,在for循環(huán)中,調(diào)用該函數(shù)進行輸出,答案為D選項。36、對于if(表達式)語句,以下敘述正確的是A、表達式不能是變量B、表達式的值只能是整數(shù)值C、表達式可以是常量D、表達式中不可以出現(xiàn)字符型變量的比較標準答案:C知識點解析:C語言沒有規(guī)定if(表達式)中的"表達式"的形式,可以是任意合法表達式。故答案為C選項。37、在三級模式之間引入兩層映像,其主要功能之一是()。A、使數(shù)據(jù)與程序具有較高的獨立性B、使系統(tǒng)具有較高的通道能力C、保持數(shù)據(jù)與程序的一致性D、提高存儲空間的利用率標準答案:A知識點解析:數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫的三級模式之間提供了兩層映像,保證了數(shù)據(jù)庫中數(shù)據(jù)的較高的邏輯獨立性和物理獨立性。38、兩次運行下面的程序,如果從鍵盤上分別輸入3和2,則輸出結(jié)果是()。#include<stdio.h>main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}A、4和3B、4和2C、4和1D、3和2標準答案:A知識點解析:本題考查if…else語句。首先,scanf函數(shù)通過鍵盤讀入x的值。當x=3時,第一個if語句先判斷條件,取x的值3和2比較,然后將x的值加1,if條件成立,執(zhí)行下面的printf語句,輸出x的值4。當x=2時,第一個if語句先判斷條件,先取x的值2和2比較,然后將x的值加1(x的值變?yōu)?),if條件不成立,執(zhí)行下面的else語句,先輸出x的值3,再將x的值減1。39、有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。A、以上的說明形式非法B、NODE是一個結(jié)構(gòu)體類型C、OLD是一個結(jié)構(gòu)體類型D、OLD是一個結(jié)構(gòu)體變量標準答案:C知識點解析:C語言允許用typedef說明一種新類型名,其一般形式為:typedef類型名標識符。typedef語句的作用僅僅是使“標識符"來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用typedef定義了新的類型OLD結(jié)構(gòu),所以OLD為結(jié)構(gòu)體類型。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復制到指定的目標文件中,復制成功時函數(shù)返回值為1,失敗時返回值為0。在復制的過程中,把復制的內(nèi)容輸出到終端屏幕。主函數(shù)中源文件名放在變量sfname中,目標文件名放在變量tfname中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includeintfun(char*source,char*target;)(FILE*fs,*ft;charch;/**********found**********/if((fs=fopen(source,______1______))==NULL)return0;if((ft=fopen(target,"w"))==NULL)return0;printf("\nThedatainfile:\n");ch=fgetc(fs);/**********found**********/while(!feof(______2______)){putchar(ch);/**********found**********/fputc(ch,______3______);ch=fgetc(fs);}fclose(fs);fclose(ft);printf("\n\n");return1;}main()(charsfname[20]="myfile1",tfname[20]="myfile2";FILE*myf;inti;chac;myf=fopen(sfname,"w");printf("\nTheoriginaldata:\n");for(i=1;i<30;i++){c=’A’+rand()%25;fprintf(myf,"%c",c);printf("%c",c);)fclose(myf);printf("\n\n");if(fun(sfname,tfname))printf("Succeed!");elseprintf("Fail!");}標準答案:(1)"r"(2)fs(3)ft知識點解析:第一空:將指定源文件中的內(nèi)容復制到指定的目標文件中,源文件只需讀,因此以只讀方式打開即可,故第一空處應該是“if((fs=fopen(source,"r"))=NULL)”。第二空:“while(!feof(__2__))”循環(huán)的目的是不斷讀取源文件直至到達源文件的末尾,循環(huán)結(jié)束標志是已達到文件的末尾。用feof()函數(shù)來檢查是否已經(jīng)到了文件末尾,文件狀態(tài)檢測函數(shù)feof()的調(diào)用形式是:feof(fs),如果已經(jīng)到達文件尾函數(shù)返回非零值,否則返回0,故第二空處應該是“while(!feof(fs))”。第三空:考察fputc函數(shù)的使用方法,fputc函數(shù)的調(diào)用形式是:fputc(ch,ft),ch是要輸出的字符,由“ch=fgetc(fs)”從源文件讀到字符ch,然后將ch寫到目標文件中,故第三空處應該是“fputc(ch,ft);”。三、程序修改題(本題共1題,每題1.0分,共1分。)41、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>intfun(intk){intm=0,mc=0,j;while((k>=2)&&(mc<10)){/*********found*********/if((k%13=0)||(k%17=0)){m=m+k;mc++;}k--;/*********found*********/returnm;}voidmain(){system("CLS");printf("%d\n",fun(500));}標準答案:(1)if((k%13==0)||(k%17==0))(2)}returnm;知識點解析:(1)C語言中,x能被y整除的表示方法是x%y=0,而不是題目中所表示的x%y=0。所以,if((k%13=0)||(k%17=0))修改后的結(jié)果應該是答案所示信息。(2)程序中缺少程序完整所需的"}",此類信息在做題時一定要注意,可以在做題前先運行一下程序,這樣明顯的錯誤一般都會有錯誤信息顯示出來。比如丟失"}"的錯誤信息是"Compoundstatementmissing}infunctionfun"。四、程序設計題
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《13潔凈的水域》說課稿-2023-2024學年科學六年級下冊蘇教版
- Unit 2 Months of a Year Lesson Three(說課稿)-2024-2025學年重大版英語六年級上冊
- Unit 6 Chores Lesson 4 Let's spell(說課稿)-2024-2025學年人教新起點版英語五年級上冊001
- 2025水泥磚銷售合同范文
- 2024年七年級數(shù)學下冊 第10章 一元一次不等式和一元一次不等式組10.4一元一次不等式的應用說課稿(新版)冀教版
- 中型臭氧設備購買合同范例
- 8 安全地玩(說課稿)-部編版道德與法治二年級下冊
- 農(nóng)業(yè)設備供貨合同范例
- 冷庫設備購銷合同范例
- 個人借還款合同范例
- 《 西門塔爾牛臉數(shù)據(jù)集的研究》范文
- 八年級上冊 第三單元 11《簡愛》公開課一等獎創(chuàng)新教學設計
- 真實世界研究指南 2018
- 2024年燃氣輪機值班員技能鑒定理論知識考試題庫-上(單選題)
- 中小商業(yè)銀行數(shù)字化轉(zhuǎn)型現(xiàn)狀及對策研究
- 2024-2030年中國車載冰箱行業(yè)市場發(fā)展調(diào)研及投資戰(zhàn)略分析報告
- 親子非暴力溝通培訓講座
- 保險投訴處理流程培訓
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設計規(guī)范
- JJG 707-2014扭矩扳子行業(yè)標準
- 2024-2029年中國電力工程監(jiān)理行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
評論
0/150
提交評論