




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2025年全國計算機等級考試二級C語言全真模擬試卷及答案(共四套)2025年全國計算機等級考試二級C語言全真模擬試卷及答案(一)一、選擇題在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應位置上,答在試卷上不得分。(1)算法的空間復雜度是指A)算法程序的長度B)算法程序中的指令條數C)算法程序所占的存儲空間 D)執行算法需要的內存空間(2)在結構化程序設計中,模塊劃分的原則是A)各模塊應包括盡量多的功能B)各模塊的規模應盡量大C)各模塊之間的聯系應盡量緊密D)模塊內具有高內聚度、模塊間具有低耦合度(3)下列敘述中,不屬于測試的特征的是A)測試的挑剔性B)完全測試的不可能性C)測試的可靠性D)測試的經濟性(4)下面關于對象概念的描述中,錯誤的是A)對象就是C語言中的結構體變量B)對象代表著正在創建的系統中的一個實體C)對象是一個狀態和操作(或方法)的封裝體D)對象之間的信息傳遞是通過消息進行的(5)下列關于隊列的敘述中正確的是A)在隊列中只能插入數據B)在隊列中只能刪除數據C)隊列是先進先出的線性表D)隊列是先進后出的線性表(6)已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是A)acbed B)decab C)deabc D)cedba(7)某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為A)n+1 B)n-1 C)2n D)n/2(8)設有如下三個關系表R S TA B C A B Cm 1 3 m 1 3n n 1 3下列操作中正確的是A)T=R∩SB)T=R∪SC)T=R×SD)T=R/S(9)下列敘述中,正確的是A)用E-R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系B)用E-R圖只能表示實體集之間一對一的聯系C)用E-R圖只能表示實體集之間一對多的聯系D)用E-R圖表示的概念數據模型只能轉換為關系數據模型(10)下列有關數據庫的描述,正確的是A)數據處理是將信息轉化為數據的過程B)數據的物理獨立性是指當數據的邏輯結構改變時,數據的存儲結構不變C)關系中的每一列稱為元組,一個元組就是一個字段D)如果一個關系中的屬性或屬性組并非該關系的關鍵字,但它是另一個關系的關鍵字,則稱其為本關系的外關鍵字(11)C語言規定,在一個源程序中,main函數的位置A)必須在最開始B)必須在系統調用的庫函數的后面C)可以任意D)必須在最后(12)以下敘述中錯誤的是A)計算機不能直接執行用C語言編寫的源程序B)C程序經C編譯程序編譯后,生成后綴為.obj的文件是一個二進制文件C)后綴為.obj的文件,經連接程序生成后綴為.exe的文件是一個二進制文件D)后綴為.obj和.exe的二進制文件都可以直接運行(13)下列選項可以正確表示字符型常量的是A)′\r′B)"a"C)"\897"D)296(14)以下敘述中正確的是A)構成C程序的基本單位是函數B)可以在一個函數中定義另一個函數C)main()函數必須放在其他函數之前D)C函數定義的格式是K&R格式(15)設變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)A)10□X□20□Y<回車> B)10□X20□Y<回車>C)10□X<回車>20□Y<回車> D)10X<回車>20Y<回車>(16)若有說明:int*p,m=5,n;,以下正確的程序段是A)p=&n;scanf("%d",&p);B)p=&n;scanf("%d",*p)C)scanf("%d",&n);*p=n;D)p=&n;*p=m;(17)在執行下述程序時,若從鍵盤輸入6和8,則結果為main(){inta,b,s;scanf("%d%d",&a,&b);s=aif(a<b)s=b;s*=s;printf("%d",s);}A)36 B)64 C)48 D)以上都不對(18)若執行下面的程序時,從鍵盤輸入5和2,則輸出結果是main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}A)5 B)3 C)2 D)0(19)在C語言中,函數返回值的類型最終取決于A)函數定義時在函數首部所說明的函數類型B)return語句中表達式值的類型C)調用函數時主調函數所傳遞的實參類型D)函數定義時形參的類型(20)已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是A)c=(c-′A′)%26+′a′B)c=c+32C)c=c-′A′+′a′D)c=(′A′+c)%26-′a′(21)以下選項中,當x為大于l的奇數時,值為0的表達式是A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0(22)有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結果是A)235 B)0235 C)02356 D)2356(23)有如下程序main(){intn=9;while(n>6){n--;printf("%d",n);}}該程序的輸出結果是A)987 B)876 C)8765D)9876(24)有以下程序#include<stdio.h>main(){intc;while((c=getchar())!=′\n){switch(c-′2′){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n")}從第一列開始輸入以下數據<CR>代表一個回車符。2743<CR>程序的輸出結果是A)66877 B)668966 C)6677877 D)6688766(25)有以下程序main(){intx=0,y=0,i;for(i=1;;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的輸出結果是A)2,1 B)2,2 C)2,5 D)5,2(26)有以下程序main(){inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序運行后的輸出結果是A)1,6,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1,(27)有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結果是A)4B)3C)2D)1(28)當運行以下程序時,從鍵盤輸入AhaMA(空格)Aha<CR>,則下面程序的運行結果是#include<stdio.h>main(){chars[80],c=′a′;inti=0;scanf("%s",s);while(s[i]!=′{if(s[i]==c)s[i]-32;elseif(s[i]==c-32)s[i]=s[i]+32;i++;}puts(s);}A)ahaMaB)AbAMaC)AhAMa[空格]ahAD)ahAMa[空格]ahA(29)下面程序輸出的結果是main(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",a[2-i][i]);}A)159 B)753 C)357 D)591(30)現有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結果為A)21 B)78 C)23 D)28(31)請選出正確的程序段A)int*p;scanf("%d",p);…B)int*s,k;*s=100;…C)int*s,k;char*p,c;s=&k;p=&c;*p=′a′;…D)int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…(32)下面程序段的運行結果是chara[]="lanuage",*p;p=a;while(*p!=′u′){printf("%c",*p-32);p++;}A)LANGUAGE B)language C)LAN D)langUAGE(33)以下程序的輸出結果是#include<stdio.h>inta[3][3]={1,2,3,4,5,6,7,8,9,},*p;main(){p=(int*)malloc(sizeof(int));f(p,a);printf("%d\n",*p);free(p);}f(int*s,intp[][3]){*s=p[1][1];}A)1 B)4 C)7 D)5(34)有以下程序voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運行后的輸出結果是A)2,2,3,4,5, B)6,2,3,4,5, C)1,2,3,4,5, D)2,3,4,5,6,(35)以下合法的字符型常量是A)′\x13′B)′\081′C)′65′D)"\n"(36)有以下語句,則對a數組元素的引用不正確的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))(37)有以下程序#include<string.h>main(){charp[20]={′a′,′b′,′c′,′d′},q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+strlen(q),q);printf("%d\n",strlen(p));}程序運行后的輸出結果是A)9 B)6 C)11 D)7(38)在C語言中,變量的隱含存儲類別是A)autoB)static C)extern D)無存儲類別(39)以下程序的輸出結果是main(){intc=35;printf("%d\n",c&c);}A)0 B)70 C)35 D)1(40)有以下程序#include<stdio.h>main(){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);}程序運行后的輸出結果是A)2030 B)2050 C)3050 D)3020二、填空題請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。(1)設一棵完全二叉樹共有700個結點,則在該二叉樹中有【1】個葉子結點。(2)常用的黑箱測試有等價類劃分法、【2】和錯誤推測法3種。(3)數據庫管理系統常見的數據模型有層次模型、網狀模型和【3】3種。(4)通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為【4】。(5)數據庫保護分為:安全性控制、【5】、并發性控制和數據的恢復。(6)執行以下程序后的輸出結果是【6】。main(){inta=10;a=(3*5,a+4);printf("a=%d\n",a);}(7)以下程序的輸出結果是【7】。#include<string.h>main(){printf("%d\n",strlen("IBM\n012\1\\"));}(8)已定義charch=′$′;inti=1,j;,執行j!=ch&&i++以后,i的值為【8】。(9)以下程序的運行結果是【9】。#include<stdio.h>longfib(intg){switch(g){case0:return0;case1:case2:return1;}return(fib(g-1)+fib(g-2));}main(){longk;k=fib(5);printf("k=%5ld\n",k);}(10)下面程序的功能是輸出數組s中最大元素的下標,請填空。main(){intk,p,s[]={1,-9,7,2,-10,3};for(p=0,k=p;p<6;p++)if(s[p]>s[k])【10】printf("%d\n",k);}(11)以下程序的功能是:求出數組x中各相鄰兩個元素的和依次存放到a數組中,然后輸出。請填空。main(){intx[10],a[9],I;for(I=0;I<10;I++)scanf("%d",&x[I]);for(【11】;I<10;I++)a[I-1]=x[I]+【12】;.for(I=0;I<9;I++)printf("%d",a[I]);printf("");}(12)設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數在a:\myfile.txt中有定義。)【13】main(){printf("\n");try_me();printf("\n");}(13)以下程序的功能是建立一個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請填空。#include<stdio.h>structlist{intdata;structlist*next;};structlist*creatlist(){structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");scanf("%d",&a);while(a!=-1){p=(structlist*)malloc(sizeof(structlist));【14】=a;q->next=p;【15】=p;scanf("%d",&a);}p->next=′\0;return(ph);}main(){structlist*head;head=creatlist();}(1)D【解析】算法的復雜度主要包括算法的時間復雜度和算法的空間復雜度。所謂算法的時間復雜度是指執行算法所需要的計算工作量;算法的空間復雜度是指執行這個算法所需要的內存空間。(2)D【解析】在結構化程序設計中,一般較優秀的軟件設計盡量做到高內聚、低耦合,這樣有利于提高軟件模塊的獨立性,也是模塊劃分的原則。(3)C【解析】軟件測試的目標是在精心控制的環境下執行程序,以發現程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經濟性。其中,沒有測試的可靠性這一說法。(4)A【解析】對象是由數據和容許的操作組成的封裝體,與客觀實體有直接的對應關系,對象之間通過傳遞消息互相聯系,從模擬現實世界中不同事物彼此之間的聯系,B)、C)、D)是正確的,對象的思想廣泛應用于C++、Java等語言中,因此A)錯誤。(5)C【解析】隊列是一種操作受限的線性表。它只允許在線性表的一端進行插入操作,另一端進行刪除操作。其中,允許插入的一端稱為隊尾(rear),允許刪除的一端稱為隊首(front)。隊列具有先進先出的特點,它是按"先進先出"的原則組織數據的。(6)D【解析】依據后序遍歷序列可確定根結點為c;再依據中序遍歷序列可知其左子樹由deba構成,右子樹為空;又由左子樹的后序遍歷序列可知其根結點為e,由中序遍歷序列可知其左子樹為d,右子樹由ba構成,如下圖所示,求得該二叉樹的前序遍歷序列為選項D)。(7)A【解析】對于任何一棵二叉樹T,如果其終端結點(葉子)數為n1,度為2的結點數為n2,則n1=n2+1,所以該二叉樹的葉子結點數等于n+1。(8)C【解析】對于兩個關系的合并操作可以用笛卡爾積表示。設有n元關系R和m元關系S,它們分別有p和q個元組,則R與S的笛卡兒積記為R×S它是一個m+n元關系,元組個數是p×q由題意可得,關系T是由關系R與關系S進行笛卡爾積運算得到的。(9)A【解析】兩個實體之間的聯系實際上是實體集間的函數關系,這種函數關系可以有下面幾種,即一對一的聯系、一對多(或多對一)的聯系和多對多的聯系;概念模型便于向各種模型轉換。由于概念模型不依賴于具體的數據庫管理系統,因此,容易向關系模型、網狀模型和層次模型等各種模型轉換。(10)D【解析】數據處理是指將數據轉換成信息的過程,故選項A)敘述錯誤;數據的物理獨立性是指數據的物理結構的改變,不會影響數據庫的邏輯結構,故選項B)敘述錯誤;關系中的行稱為元組,對應存儲文件中的記錄,關系中的列稱為屬性,對應存儲文件中的字段,故選項C)敘述錯誤。(11)C【解析】不論main函數在整個過程中的位置如何,一個C程序總是從main函數開始執行的。(12)D【解析】一個C語言的源程序(后綴名為.c)在經過編譯器編譯后,先生成一個匯編語言程序,然后由編譯程序再將匯編語言程序翻譯成機器指令程序,即目標程序(后綴名為.obj),目標程序不可以直接運行,它要和庫函數或其他目標程序連接成可執行文件(后綴名為.exe)后方可運行。(13)A【解析】C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號括起來作為字符常量,字符常量的的范圍是0~127。由于字符常量用單引號括起來,所以選項B),C)錯誤,選項D)超過了字符常量的表示范圍。(14)A【解析】本題考查C語言的綜合基礎知識。構成C程序的基本單位是函數,不論main函數在整個程序中的位置如何,一個C程序總是從main函數開始執行,C語言的函數定義都是互相平行、獨立的,在定義函數時,一個函數內不能定義另一個函數。C函數定義的一般格式有兩種:傳統格式和現代格式。傳統格式也稱K&R格式,是早期編譯系統使用的格式;現代格式又稱ANSI格式,是現代編譯系統使用的格式。(15)D【解析】本題中,scanf函數的格式控制沒有空格,所以,對于選項A)、B)、C),輸入的第一個空格會作為字符賦值給變量c1,而不會被解釋成分隔符。(16)D【解析】"&"是求址運算符,"*"是指變量說明符。選項A)、B)應改為scanf("%d",p);選項C)中指針變量p未指向一確定的內存單元,不能為其賦值,并且這樣做很危險,建議不使用。(17)B【解析】本題中a的值為6,b的值為8,最后s的值為8,s*=s等價于s=s*s。(18)C【解析】本題考查簡單的if…else語句。先執行條件if(a<b),顯然不成立,在執行else語句。(19)A【解析】在C語言中,應當在定義函數時指定函數值的類型,凡不加類型說明的函數,一律按整型處理。在定義函數時,對函數值說明的類型一般應該和return語句中的表達式類型一致。如果函數值的類型和return語句中的表達式類型不一致,則以函數類型為主,即函數類型決定返回值的類型。(20)D【解析】C語言中,字符數據參加運算時,實際上是其ASCII碼參與運算。大寫字母的ASCII碼比其對應的小寫字母的ASCII碼小32。因此大寫字母轉化為小寫字母只需將其加上32即可。所以選項B)、C)都符合條件,因為變量c中存儲的是大寫字母,所以"c-'A'"的值一定小于26,故選項A)與選項C)的含義相同。(21)D【解析】因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。(22)A【解析】因為變量的初始值分別為"k=5,n=0",所以程序第一次進入循環時,執行default語句,這時k=4,執行"case4:"這個分支,結果是"n=2,k=3",打印出2;程序然后進行第二次循環,這時"n=2,k=3",執行"case3:"這個分支,結果是"n=3,k=2",打印出3;程序進行第三次循環,這時"n=3,k=2",執行"case2:case4:"這兩個分支,結果是"n=5,k=1",打印出5,這時因為n=5不滿足n<5的循環條件,因此退出循環,程序運行結束,故輸出結果為235。(23)B【解析】該題目應該根據循環體第一次和最后一次執行時的輸出結果來決定哪一項是正確的。第一次進入循環時,n的值是9,循環體內,先經過n--運算,n的值變為8,所以第一次的輸出值是8,由此可以排除選項A)和D)。由循環條件n>6可以知道,最后一次循環開始時,n的值應該為7,所以最后一次執行循環時,輸出為6,由此可以排除選項C)。(24)A【解析】本題主要考查了字符輸入輸出函數getchar和putchar的使用。getchar函數用來從標準輸入設備上讀入一個字符,putchar(c)函數是將字符變量c中的字符輸出到標準輸出設備上,并且字符可以看作整數參與運算。(25)A【解析】本題考查了continue和break語句在循環語句中的作用。break語句的作用是結束本層循環,而continue語句的作用是結束本次循環直接進入到下次循環。(26)A【解析】本題利用多重for循環的嵌套來實現對二維數組元素的按列排序。利用最外層循環來實現對列的控制。內部循環利用選擇法對數組元素按照從小到大的順序進行排列,最后輸出對角線上的元素值。(27)B【解析】在main函數中,對f(1)和f(2)的值進行了累加。f(1)=1f(2)=f(1)+1=2最后,j的值為1+2=3(28)A【解析】本題主要考查的知識點是大寫字母比它對應的小寫字母ASCII碼值小32,并且字符可以看作整數進行算術運算等操作。(29)B【解析】本題用循環的方法考查對數組概念的掌握。首先,當i=0時,數組中的位置是a[2][0]=7,當然,如果用排除法,就不用考慮后面的循環,因為在4個選項中,第1個數為7的選項只有B)。本題執行第2次循環時,i的值為1,則printf函數中的數組指向為a[1][1]=5,依次循環,可求出答案。(30)A【解析】通過地址來引用二維數組,若有以下定義:inta[3][4],i,j;且當0≤i≤3,0≤j<4則可以有以下幾種方式來引用數組中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表達式&a[0][0]+2*i+j-2相當于是地址&a[0][0]加上多少偏移量。(31)C【解析】本題的選項A)和B)犯了同樣的錯誤,即指針變量在定義后并沒有指向具體的變量。也就是說,指針變量中沒有確定的地址值,它的值是不可預見的,所指的單元也是不可預見的,因此不能進行賦值操作。另外,在選項D)中,s是int型指針變量,p是char型指針變量,所指向的內存單元所占用的字節數是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。(32)C【解析】本段程序的作用是輸出字符串"lanuage"中字母u之前的字符,并將其轉化為大寫字母。注意:如果一個字符數組用來作為字符串使用,那么在定義該字符數組時,數組的大小就應該比它將要實際存放的最長字符多一個元素,以存放'\0'。(33)D【解析】本題考查了二維數組元素引用的方法。題中用動態存儲分配函數malloc分配了一個int型數據長度大小的內存,然后指針p指向了這段內存,函數f()中對p所指向的數據進行了賦值,p[1][1]為二維數組第二行第二列的元素,對應于實參a的元素5,所以輸出結果為5。(34)B【解析】調用函數f()時,將數組a的地址傳遞給了指針q,此時q指向的就是數組a的第一個元素a[0]。在5次循環過程中,q始終指向a[0],因此a[0]的值增加了5。最后的輸出結果為"6,2,3,4,5"。(35)A【解析】C語言的字符常量是用單引號(即撇號)括起來的一個字符。除此之外,在C語言中還允許用一個"\"開頭的字符序列來表示字符常量。其中,形式"\ddd"表示1到3位8進制數所代表的字符;形式"\xhh"表示1到2位16進制數所代表的字符。在本題中,'\x13'表示回車符,是一個字符常量;'\081'用8進制數所代表的字符,但形式不正確,因為8進制數所代表的字符中不會出現數字"8";'65'不是一個字符,而是一個十進制數字;"\n"是用雙引號括起來的一個字符,表示一個字符串,而不是字符常量。(36)D【解析】本題考查數組指針的應用。選項D)第一層括號中為數組a中第i項元素的值,外面再加指針運算符沒有意義。(37)B【解析】strcpy()函數的功能是將字符串q復制到從p[3]位置開始的存儲單元,同時復制字符串結束標志'\0'到p[6]中。函數strlen()返回的是字符串中不包括'\0'在內的實際長度,故本題答案為B)(38)A【解析】auto變量:無static聲明的局部變量。用auto作存儲類別的聲明時,可以不寫auto,存儲類別隱含確定為auto(自動存儲類別),是動態存儲方式。大多數變量是自動變量。用static聲明的局部變量是靜態局部變量。函數調用結束后靜態局部變量占據的內存存儲單元空間不釋放,局部變量保留原值,下次調用時可以繼續使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變全局變量的作用域,實際上,關鍵字"auto"可以省略,auto不寫則隱含確定為"自動存儲類別",屬于動態存儲方式。(39)C【解析】本題考查按位與"&"。因為1&1=1,0&0=0,所以任何數與自身按位與,結果仍為此數,不發生變化。(40)A【解析】本題中,最主要的是掌握幾個有關文件函數的應用。函數名:fopen功能:打開一個文件調用方式FILE*fp;fp=fopen(文件名,使用文件方式);函數名:fprintf功能:傳送格式化輸出到一個文件中調用方式:fprintf(文件指針,格式字符串,輸出表列);函數名:fclose功能:關閉一個文件調用方式:fclose(文件指針);函數名:fscanf功能:從磁盤文件執行格式化輸入調用方式:fscanf(文件指針,格式字符串,輸入列表)。二、填空題(1)【1】350【解析】完全二叉樹中,設高度為n,則除h層外其它層結點數都到達最大,可以算出h=10,1至9層結點個數為2^9-1=511,最后一層結點個數為700-511=189個,189/2=95,除最后一層外共有結點2^(9-1)-95=161個,所以所有的結點個數為:189+161=350個。(2)【2】邊界值分析法【解析】黑箱測試法完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例。常用的黑箱測試有等價類劃分法、邊界值分析法和錯誤推測法3種。(3)【3】關系模型【解析】數據庫管理系統是位于用戶與操作系統之間的一層系統管理軟件,屬于系統軟件是用戶與數據庫之間的一個標準接口,其總是基于某種數據模型,可以分為層次模型、網狀模型和關系模型。(4)【4】軟件生命周期【解析】軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設計、實現、測試、交付使用以及維護等活動。(5)【5】完整性控制【解析】安全性控制:防止未經授權的用戶有意或無意存取數據庫中的數據,以免數據被泄露、更改或破壞;完整性控制:保證數據庫中數據及語義的正確性和有效性,防止任何對數據造成錯誤的操作;并發控制:正確處理好多用戶、多任務環境下的并發操作,防止錯誤發生;恢復:當數據庫被破壞或數據不正確時,使數據庫將其恢復到正確的狀態。(6)【6】a=14【解析】本題考查的是表達式的優先級問題。先計算表達式3*5=15,再計算a+4=14,將數據14賦值給a,根據printf()函數內的輸出格式控制串,最后的輸出結果應為"a=14"。(7)【7】9【解析】本題的字符串中共有9個字符,它們分別是'I'、'B'、'M'、'\n'、'0'、'1'、'2'、'\1'、'\\',其中,"\n"表示換行,"\\"表示反斜杠字符"\",所以本題的最后輸出結果為9。(8)【8】1【解析】在執行邏輯表達式"j=!ch&&i++"時,首先判斷j=!ch的值,因為"ch='$'"不為0,所以"j=!ch=0",編譯系統便不再計算表達式"i++"的值,i的值不變,仍為1。(9)【9】k=5【解析】本題主要考查了函數的遞歸調用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結果。(10)【10】k=p;【解析】為尋找數組中最大元素的下標,需先預設1個臨時最大元素的下標,并順序逐一考查數組的元素,當發現當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數組的全部元素后,這臨時最大元素下標就是數組的最大元素下標。通常預設的最大元素下標是數組的首元素下標,考查通常從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環控制變量。當發現當前元素s[p]比臨時最大元素s[k]更大時,應該用p更新k,所以在空框處應填入代碼"k=p;"。(11)【11】I=1【12】x[I-1]【解析】對于10個數,相臨的兩個數相加取和,總共要進行9次加法運算,所以空14處應填入I=1。相臨的兩個數相加取和,放在數組a中,x[0]與x[1]的和存放在a[0]中,所以空15處應填入x[I-1]。(12)【13】#include<a:\myfile.txt>【解析】本題考查了函數的存儲分類的概念。如果沒有特別說明,函數的存儲范圍是從定義函數的位置到文件的結尾,如果其他文件想使用這個函數,需要用#include文件包含命令將定義函數的文件包含進來。(13)【14】p->data【15】q【解析】本題考查的是鏈表這一數據結構對結構體變量中數據的引用。鏈表的特點是結構體變量中有兩個域,一個是數據,另一個是指向該結構體變量類型的指針,用以指明鏈表的下一個結點。2025年全國計算機等級考試二級C語言全真模擬試卷及答案(二)一、選擇題在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應位置上,答在試卷上不得分。(1)程序流程圖中帶有箭頭的線段表示的是A)圖元關系B)數據流C)控制流D)調用關系(2)下面不屬于軟件設計原則的是A)抽象B)模塊化C)自底向上D)信息隱蔽(3)下列選項中,不屬于模塊間耦合的是A)數據耦合B)標記耦合C)異構耦合D)公共耦合(4)下列敘述中,不屬于軟件需求規格說明書的作用的是A)便于用戶、開發人員進行理解和交流B)反映出用戶問題的結構,可以作為軟件開發工作的基礎和依據C)作為確認測試和驗收的依據D)便于開發人員進行需求分析(5)算法的時間復雜度是指A)執行算法程序所需要的時間B)算法程序的長度C)算法執行過程中所需要的基本運算次數D)算法程序中的指令條數(6)已知數據表A中每個元素距其最終位置不遠,為節省時間,應采用的算法是A)堆排序B)直接插入排序C)快速排序D)B)和C)(7)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是A)ABCEDB)DCBEAC)DBCEAD)CDABE(8)數據庫設計包括兩個方面的設計內容,它們是A)概念設計和邏輯設計B)模式設計和內模式設計C)內模式設計和物理設計D)結構特性設計和行為特性設計(9)關系表中的每一橫行稱為一個A)元組B)字段C)屬性D)碼(10)設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關鍵字(鍵或碼)為A)課號,成績B)學號,成績C)學號,課號D)學號,姓名,成績(11)以下不正確的敘述是A)在C程序中,逗號運算符的優先級最低B)在C程序中,APH和aph是兩個不同的變量C)若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變D)當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,對于實型變量只能輸入實型數值(12)請選出可用作C語言用戶標識符的是A)void,define,WORDB)a3_b3,_123,IFC)FOR,--abc,CaseD)2a,Do,Sizeof(13)以下選項中,不能作為合法常量的是A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0(14)在C語言中,運算對象必須是整型數的運算符是A)%B)\C)%和\D)**(15)若變量均已正確定義并賦值,以下合法的C語言賦值語句是A)x=y==5;B)x=n%2.5;C)x+n=i; D)x=5=4+1;(16)有以下程序段charch;intk;ch=′a′; k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執行上述程序段后輸出結果是A)因變量類型與格式描述符的類型不匹配輸出無定值B)輸出項與格式描述符個數不符,輸出為零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達式是A)kk>=′A′&&kk<=′Z′B)!(kk>=′A′||kk<=′Z′)C)(kk+32)>=′a′&&(kk+32)<=′Z′D)isalpha(kk)&&(kk<91)(18)當變量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)(19)若有條件表達式(exp)?a++:b--,則以下表達式中能完全等價于表達式(exp)的是A)(exp==0) B)(exp!=0)C)(exp==1) D)(exp!=1)(20)以下不正確的定義語句是A)doublex[5]={2.0,4.0,6.0,8.0,10.0};B)inty[5]={0,1,3,5,7,9};C)charc1[]={′1′,′2′,′3′,′4′,′5′};D)charc2[]={′\x10′,′xa′,′\x8′};(21)下列程序執行后的輸出結果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2];)A)3B)6C)9D)隨機數(22)設有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則A)運行程序段后輸出0B)運行程序段后輸出1C)程序段中的控制表達式是非法的 D)程序段執行無限次(23)(23)下面程序段的運行結果是char*s="abcde";s+=2;printf("%d",s);A)cdeB)字符′c′C)字符′c′的地址 D)無確定的輸出結果(24)閱讀下列程序,則執行后的結果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}A)3e,6 B)62,5 C)56,5 D)3E,6(25)下面判斷正確的是A)char*a="china";等價于char*a;*a="china";B)charstr[5]={"china"};等價于charstr[]={"china"};C)char*s="china";等價于char*s;s="china";D)charc[4]="abc",d[4]="abc";等價于charc[4]=d[4]="abc";(26)若有定義:inta[2][3];,以下選項中對a數組元素正確引用的是A)a[2][!1]B)a[2][3] C)a[0][3] D)a[1>2][!1](27)有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是A)gets(&s[0]);B)scanf("%s",s+1);C)gets(s); D)scanf("%s",s[1]);(28)有以下程序#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的運行結果是A)1212B)117 C)1111D)127(29)若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是A)data的每個成員起始地址都相同B)變量data所占內存字節數與成員c所占字節數相等C)程序段:data.a=5;printf("%f\n",data.c);輸出結果為5.000000D)data可以作為函數的實參(30)有以下程序#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運行后的輸出結果是A)12 B)14 C)1234 D)123456(31)若已定義inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中則對a數組元素不正確的引用是A)a[p-a]B)*(&a[i])C)p[i]D)a[10](32)有以下程序#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<l0;k++)printf("%d",a[k]);printf("\n");}程序的運行結果是A)0987654321B)4321098765C)5678901234D)0987651234(33)閱讀下列程序,當運行函數時,輸入asdafaaz67,則輸出為#include<stdio.h>#include<ctype.h>#include<string.h>intfun(char*str){inti,j=0;for(i=0;str[i]!=′\0′;i++)if(str[i]!=′′)str[j++]=str[i];str[j]=′\0′;}main(){charstr[81];intn;printf("Inputastring:");gets(str);puts(str);fun(str);printf("%s\n",str);}A)asdafaaz67B)asdafaaz67C)asdD)z67(34)有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%d",&x);x=fun(x);printf("%d\n",x)}執行程序時,給變量x輸入10,程序的輸出結果是A)55 B)54 C)65D)45(35)下面程序段中,輸出*的個數是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");A)9 B)5 C)6 D)7(36)C語言結構體類型變量在程序運行期間A)TC環境在內存中僅僅開辟一個存放結構體變量地址的單元B)所有的成員一直駐留在內存中C)只有最開始的成員駐留在內存中D)部分成員駐留在內存中(37)已知函數的調用形式為fread(buf,size,count,fp),參數buf的含義是A)一個整型變量,代表要讀入的數據項總數B)一個文件指針,指向要讀的文件C)一個指針,指向要讀入數據的存放地址D)一個存儲區,存放要讀的數據項(38)設有以下語句charx=3,y=6,z;z=x^y<<2;則z的二進制值是A)00010100 B)00011011 C)00011100 D)00011000(39)在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是A)auto和register B)extern和registerC)auto和static D)static和register(40)設有定義語句int(*f)(int);,則以下敘述正確的是A)f是基類型為int的指針變量B)f是指向函數的指針變量,該函數具有一個int類型的形參C)f是指向int類型一維數組的指針變量D)f是函數名,該函數的返回值是基類型為int類型的地址二、填空題請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。(1)測試用例包括輸入值集和【1】值集。(2)在樹形結構中,樹根結點沒有【2】。(3)數據結構分為邏輯結構與存儲結構,線性鏈表屬于【3】。(4)一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯系屬于【4】的聯系。(5)數據庫設計分為以下6個設計階段:需求分析階段、【5】、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。(6)閱讀下面程序段,則執行后輸出的結果是【6】。#include"stdio.h"main(){charfun(char,int);chara=′A′;intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}(7)函數fun的返回值是【7】fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')mm++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}(8)以下程序的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。例如,若一維數組中的數據是:2223445666677899101010刪除后,數組中的內容應該是:2345678910。請填空。#include<stdio.h>#defineN80intfun(inta[],intn){inti,j=1;for(i=1;i<n;i++)if(a[j-1]【8】a[i])a[j++]=a[i];【9】;}main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%3d",a[i]);n=fun(a,n);printf("\nThedataafterdeleted:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}(9)以下程序的運行結果是【10】。#include<stdio.h>main(){intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0:a++;break; case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}(10)以下程序的輸出結果是【11】。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(6,3,a)printf("%d",a)}(11)函數my_cmp()的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負值。請填空。My_cmp(char*s,char*t){while(*s==*t){if(*s==′\0)return0;++s;++t;}return【12】;}(12)以下程序的輸出結果是【13】。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]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}(13)以下說明語句中,【14】是結構體類型名。typedefstruct{intn;charch[8];}PER;(14)以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請填空。#include<stdio.h>main(){FILE*fp;charch;fp=fopen(【15】);ch=fgetc(fp);while(!feof(fp)){putchar(ch);ch=fgetc(fp);}putchar('\n');fclose(fp);}一、選擇題(1)C【解析】程序流程圖是人們對解決問題的方法、思路或算法的一種圖形方式的描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內容;流程線表示操作的先后次序。帶箭頭的線段在數據流程圖中表示數據流;帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關系。在模塊之間用帶有箭頭的線段表示調用關系。(2)C【解析】軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關的概念,它們具有抽象、模塊化、信息隱蔽和數據獨立性。自底向上是集成測試中增量測試的一種。(3)C【解析】模塊之間的耦合程度反映了模塊的獨立性,也反映了系統分解后的復雜程度。按照耦合程度從強到弱分別是:內容耦合、公共耦合、外部耦合、控制耦合、標記耦合、數據耦合和非直接耦合,沒有異構耦合這種方式。(4)D【解析】軟件需求規格說明書(SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發中的重要文檔之一。它具有以下幾個方面的作用:①便于用戶、開發人員進行理解和交流;②反映出用戶問題的結構,可以作為軟件開發工作的基礎和依據;③作為確認測試和驗收的依據。(5)C【解析】算法的復雜度主要包括算法的時間復雜度和空間復雜度。所謂算法的時間復雜度是指執行算法所需要的計算工作量,即算法執行過程中所需要的基本運算的次數;算法的空間復雜度一般是指執行這個算法所需要的內存空間。(6)B【解析】堆排序的比較次數為nlog2n;直接插入排序的比較次數為n(n-1)/2;快速排序的比較次數為nlog2n。當數據表A中每個元素(7)B【解析】棧操作原則上"后進先出",棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧,所以出棧時一定是先出D,再出C,最后出A。(8)A【解析】數據庫設計包括數據庫概念設計和數據庫邏輯設計兩個方面的內容。(9)A【解析】關系表中,每一行稱為一個元組,對應表中的一條記錄;每一列稱為一個屬性,對應表中的一個字段;在二維表中凡能唯一標識元組的最小屬性集稱為該表的鍵或碼。(10)C【解析】"選課SC"表是"學生S"表和"課程C"表的映射表,主鍵是兩個表主鍵的組合。(11)D【解析】在C語言所有的運算符中,逗號運算符的優先級最低。C語言中區分大小寫,所以APH和aph是兩個不同的變量。賦值表達式a=b表示將b的值付給a,而b本身的值保持不變;通過鍵盤可以向計算機輸入允許的任何類型的數據。選項D)中當從鍵盤輸入數據時,對于整型變量可以輸入整型數值和字符,對于實型變量可以輸入實型數值和整型數值等。(12)B【解析】C語言規定用戶標識符由字母、數字和下劃線組成,且第一個字符必須是字母或下劃線,可見選項C),D)是錯誤的;此外,C語言不允許用戶將關鍵字作為標識符,而選項A)中的void正是C語言的關鍵字。(13)B【解析】C語言的語法規定,字母e(E)之前必須有數字,且e(E)后面的指數必須是整數,而選項B)中,e(E)后面的指數是小數,所以不合法。(14)A【解析】在C語言中,"%"運算符兩側的運算數必須是整型。(15)A【解析】賦值運算符左側的操作數必須是一個變量,而不能是表達式或者常量,選項C)和D)錯誤。"%"運算符兩側都應當是整型數據,選項B)錯誤。(16)D【解析】輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數輸出,所以第一個輸出語句輸出的結果為a,97;第二個輸出語句輸出的結果為k=12。(17)B【解析】C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在'A'和'Z'之間就可以了,選項A)和C)符合要求。函數isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。(18)B【解析】滿足表達式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當變量c的值不為2,4,6時,其值只能為3或5,所以表達式c!=3和c!=5中至少有一個為真,即不論c為何值,表達式B)都為"真"。(19)B【解析】條件運算符要求有3個操作對象,稱三目(元)運算符,它是C語言中惟一的一個三目運算符。條件表達式的一般形式為:表達式1?表達式2:表達式3其求解順序是:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值。若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值,注意++、--的用法。(20)B【解析】在一維數組中要注意的是作為下標表達式的常量表達式的值必須是大于等于0,選項B)中定義有5個元素,但賦值時有6個元素,所以是錯誤的。(21)B【解析】本題中,a[1][2]是二維數組中的第6個元素,對應for循環中i的值為5,p[5]=5+1。(22)B【解析】本題中,"!"表示邏輯非運算符,"!="表示不等于運算符,邏輯非運算符比不等于運算符的優先級高。(23)C【解析】對于字符串指針,其保留的是整個串的首地址,即第一個字符的起始地址;當該指針做算術運算時,就是該指針根據其類型向后移動相應的存儲空間。(24)A【解析】數組c[][4]表示一個4行4列數組,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通過十六進制輸出為3e,6。(25)C【解析】選項A)char*a;*a="china"應改為a=china;,選項B)應該是charstr[6];D)項表述方法有錯誤。(26)D【解析】C語言中數組下標是從0開始的,所以二維數組a[2][3]的第一維下標取值為0、1;第二維的下標取值為0、1、2,因而選項A)、B)、C)都是錯誤的,選項D)表示數組元素a[0][0]。(27)D【解析】在格式輸入中,要求給出的是變易的地址,而D)答案中給出的s[1]是一個值的表達式。(28)B【解析】根據宏替換的替換規則,我們可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。(29)D【解析】選項A),共用體的每個成員的起始地址都相同;選項B),共用體變量所占的內存長度等于最長的成員的長度;選項C)因為每個成員的起始地址相同,所以整型數5以浮點型輸出時為5.000000;選項D)C語言規定,不能把共用體變量作為函數的參數。(30)D【解析】將有6個元素的整型數組分兩行輸出到一個文件中,因為輸出的都是數字并且每行都沒有分隔符,所以當再對其進行讀取操作時,每一行都會被認為是一個完整的數,而換行符則作為它們的分隔符。(31)D【解析】通常,引用一個數組元素可以用下標法,如a[p-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出數組范圍,注意,數組的下標是從0開始的。(32)C【解析】函數fun(int*s,intn1,intn2)的功能是對數組s中的元素進行首尾互相調換。所以在主函數中,當fun(a,0,3)執行完后,數組a[12]={4,3,2,1,5,6,7,8,9,0};再執行fun(a,4,9),數組a[12]={4,3,2,1,0,9,8,7,6,5};再執行fun(a,0,9)后,數組a[12]={5,6,7,8,9,0,1,2,3,4}。(33)A【解析】本題題意要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用"留下"字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,每走到一個字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個空格),則將其保存str[j]中。注意j的下標變化、初值及最后加串結束符'\0'。(34)A【解析】本程序考察的是函數的遞歸調用,在調用一個函數的過程中又出現直接或間接地調用該函數本身,稱為函數的遞歸調用,執行結果為1+2+3+4+5+6+7+8+9+10=55。(35)C【解析】本題中,格式符0表示的是八進制無符號形式輸出整型數(不帶前導0),字符常量在內存中占一個字節,存放的是ACSII碼代碼值。C語言規定,所有字符常量都作為整型量來處理,在計算機內部,其對應的整數值就是ACSII字符集中該字符的序號,即&*s中有幾個字符就輸出幾個*。(36)B【解析】結構體類型的變量在程序運行期間要作為一個整體占用連續的內存單元。(37)C【解析】這是一道考查fread函數的題。buf是一個指針,fread是讀入數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司質量計劃書參考模板(3篇)
- 2025年健康教育工作總結范文(16篇)
- 2025年初工作計劃范文(15篇)
- 全國川教版信息技術七年級下冊第6課《文件查找》教學設計
- 運動會發言稿20字(18篇)
- 小學教師工作業務培訓計劃范文(4篇)
- 愛國主題詩歌朗誦(8篇)
- 《高效學習方法探索》課件
- 社會實踐招生心得體會范文(18篇)
- 《全球知名品牌》課件
- 2025屆浙江省溫州市高三二模數學試題及答案
- 2025年浙江國企湖州新倫供電服務有限公司招聘筆試參考題庫含答案解析
- 四川成都農業科技中心招聘考試真題2024
- 淄博藝術中考試題及答案
- 2025北京豐臺高三一模化學試題及答案
- 云南省氣象局歷年招聘考試真題庫
- 江蘇省南通市、宿遷、連云港、泰州、揚州、徐州、淮安蘇北七市2025屆高三第二次調研英語英語參考答案及聽力材料、評分標準
- 2025廣東醫科大學輔導員考試題庫
- 石油天然氣(海洋石油)工程AI智能應用行業深度調研及發展戰略咨詢報告
- 2024年7月國家開放大學專本科《法律文書》期末紙質考試試題及答案
- 氟化工產品考核試卷
評論
0/150
提交評論