2025年全國計算機等級考試二級C語言全真模擬試卷及答案(共三套)_第1頁
2025年全國計算機等級考試二級C語言全真模擬試卷及答案(共三套)_第2頁
2025年全國計算機等級考試二級C語言全真模擬試卷及答案(共三套)_第3頁
2025年全國計算機等級考試二級C語言全真模擬試卷及答案(共三套)_第4頁
2025年全國計算機等級考試二級C語言全真模擬試卷及答案(共三套)_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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)程序的效率第一,清晰第二B)程序的可讀性好C)程序中要有必要的注釋D)輸入數據前要有提示信息(5)軟件設計包括軟件的結構、數據接口和過程設計,其中軟件的過程設計是指A)模塊間的關系B)系統結構部件轉換成軟件的過程描述C)軟件層次結構D)軟件開發過程(6)數據處理的最小單位是A)數據B)數據元素C)數據項D)數據結構(7)假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為A)log2nB)n2C)O(n1..5) D)n(n-1)/2(8)在深度為5的滿二叉樹中,葉子結點的個數為A)32B)31C)16D)15(9)數據庫系統的核心是A)數據庫 B)數據庫管理系統 C)模擬模型 D)軟件工程(10)一個關系中屬性個數為1時,稱此關系為A)對應關系B)單一關系C)一元關系D)二元關系(11)下面各選項中,均是C語言合法標識符的選項組是A)33weautoB)_23me_3ewC)_433e_elseD)ER-DF32(12)可在C程序中用作用戶標識符的一組標識符是A)andB)Date C)Hi D)case_2007y-m-dDr.TomBigl(13)以下對C語言函數的有關描述中,正確的是A)在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參B)C函數既可以嵌套定義又可以遞歸調用C)函數必須有返回值,否則不能使用函數D)函數必須有返回值,返回值類型不定(14)若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是A)函數的實參和其對應的形參共占同一存儲單元B)形參只是形式上的存在,不占用具體存儲單元C)同名的實參和形參占同一存儲單元D)函數的形參和實參分別占用不同的存儲單元(15)現有定義inta;doubleb;floatc;chark;,則表達式a/b+c-k值的類型為:A)int B)double C)float D)char(16)以下關于long、int和short類型數據占用內存大小的敘述中正確的是A)均占4個字節B)根據數據的大小來決定所占內存的字節數C)由用戶自己定義D)由C語言編譯系統決定(17)有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);當執行上述程序段,從鍵盤上輸入555667777abc后,y的值為A)55566.0 B)566.0 C)7777.0 D)566777.0(18)若變量已正確定義,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結果是A)0,0B)0,1C)1,1 D)程序進入無限循環(19)下列程序的運行結果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}A)6 B)7 C)8 D)9(20)若程序執行時的輸入數據是"2473",則下述程序的輸出結果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=;'\n'){switch(cs-'2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}A)668977 B)668966 C)6677877 D)6688766(21)以下程序的輸出結果是main(){inta,i;a=0;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%d\n",a);}A)31 B)13 C)10 D)20(22)現有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}則程序段的輸出結果為A)7,8 B)8,8 C)7,10D)8,10(23)若有以下程序#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序的輸出結果是A)6 B)8 C)4 D)2(24)有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的運行結果是A)0 B)1 C)2 D)3(25)已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執行語句printf("%d,%d",c1,c2-2);后,輸出結果是A)A,B B)A,68 C)65,66 D)65,68(26)下列程序是用來判斷數組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun(a,10,&k);printf("%d,%d\n",k,a[k]);}如果輸入如下整數:876675896101301401980431451777則輸出結果為A)7,431 B)6 C)980 D)6,980(27)下面程序的文件名為t.exe,在DOS下輸入的命令行參數為:ttomeetme<回車>則程序輸出的結果是#include"stdio.h"main(argc,argv)intargc;char*argv[];{inti;printf("%d\n",argc);}A)3B)4C)2 D)以上答案都不正確(28)有如下程序inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=p[5];則b的值是A)5 B)6 C)9 D)8(29)以下敘述中錯誤的是A)改變函數形參的值,不會改變對應實參的值B)函數可以返回地址值C)可以給指針變量賦一個整數作為地址值D)當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL(30)下面程序的輸出結果是#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%d\n",*p+9);}A)0 B)1 C)10 D)9(31)有下面程序段#include"stdio.h"#include"string.h"main(){chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};chark[100]={0},*p=k;inti;for(i=0;i<3;i++){p=strcat(p,a[i]);}i=strlen(p);printf("%d\n",i);}則程序段的輸出結果是A)18 B)19 C)20 D)21(32)若有定義:char*st="howareyou";,下列程序段中正確的是A)chara[11],*p;strcpy(p=a+1,&st[4]);B)chara[11];strcpy(++a,st);C)chara[11];strcpy(a,st);D)chara[],*p;strcpy(p=&a[1],st+2);(33)有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}return(n);}main(){chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};printf("%d\n",fun(s));}程序的運行結果是A)9 B)61490 C)61 D)5(34)設有定義:charp[]={′1′,′2′,′3′},*q=p;,以下不能計算出一個char型數據所占字節數的表達式是A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])(35)有以下函數intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關于aaa函數的功能的敘述正確的是A)求字符串s的長度B)比較兩個串的大小C)將串s復制到串tD)求字符串s所占字節數(36)當用戶要求輸入的字符串中含有空格時,應使用的輸入函數是A)scanf() B)getchar() C)gets()D)getc()(37)下列選項中錯誤的說明語句是A)chara[]={′t′,′o′,′y′,′o′,′u′,′\0′};B)chara[]={"toyou\0"};C)chara[]="toyou\0";D)chara[]=′toyou\0′;(38)以下程序的輸出結果是intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A)20 B)24 C)25 D)15(39)下列程序的輸出結果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}A)2 B)3 C)4 D)5(40)假定當前盤符下有兩個如下文本文件:文件名 a1.txt a2.txt內容 123# 321#則下面程序段執行后的結果為#include"stdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!=′#′)putchar(c);}main(){FILE*fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);fp=fopen("a2.txt","r");fc(fp);fclose(fp);putchar('\n');}A)123321 B)123 C)321D)以上答案都不正確二、填空題請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。(1)軟件定義時期主要包括【1】和需求分析兩個階段。(2)軟件維護活動包括以下幾類:改正性維護、適應性維護、【2】維護和預防性維護。(3)數據的邏輯結構有線性結構和【3】兩大類。(4)某二叉樹中度為2的結點有n個,則該二叉樹中有【4】個葉子結點。(5)在ER圖中,矩形表示【5】。(6)閱讀下面程序,則執行后的輸出結果是【6】。#include"stdio.h"main(){intx,y,z;x=1;y=2;z=3;if(x>y)if(x>z)printf("%d",x);elseprintf("%d",y);printf("%d\n",z);}(7)以下程序的輸出結果是【7】。main(){inty=9;for(;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}(8)有以下程序段,且變量已正確定義和賦值for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("s=%f\n\n",s);請填空,使下面程序段的功能與之完全相同s=1.0;k=1;while(【8】){s=s+1.0/(k*(k+1));【9】;}printf("s=%f\n\n",s);(9)設有以下定義和語句,則*(*(p+2)+1)的值為【10】。inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;(10)以下程序的輸出結果是【11】。#include<stdio.h>main(){inti;for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);printf("\n");}(11)以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)中找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最后一個數對換。請填空。#include<stdio.h>voidf(intx[],intn){intp0,p1,i,j,t,m;i=j=x[0];p0=p1=0;for(m=0;m<n;m++){if(x[m]>i){i=x[m];p0=m;}elseif(x[m]<j){j=x[m];p1=m;}}t=x[p0];x[p0]=x[n-1];x[n-1]=t;t=x[p1];x[p1]=【12】;【13】=t;}main(){inta[10],u;for(u=0;u<10;u++)scanf("%d",&a[u]);f(a,10);for(u=0;u<10;u++)printf("%d",a[u]);printf("\n");}(12)mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請填空。intmystrlen(char*str){intI;for(I=0;【14】!='\n';I++);return(I);}(13)閱讀下列程序,則程序的輸出結果為【15】。#include"stdio.h"structty{intdata;charc;};main(){structtya={30,′x′};fun(a);printf("%d%c",a.data,a.c);}fun(structtyb){b.data=20;b.c=′y′;}一、選擇題1)D【解析】軟件生命周期分為軟件定義、軟件開發及軟件運行維護3個階段。本題中,詳細設計、軟件編碼和軟件測試都屬于軟件開發階段;維護是軟件生命周期的最后一個階段,也是持續時間最長,花費代價最大的一個階段,軟件工程學的一個目的就是提高軟件的可維護性,降低維護的代價。(2)D【解析】測試的目的是發現軟件中的錯誤。經驗表明,程序中存在錯誤的概率與該程序中已發現的錯誤成正比。這一現象說明,為了提高測試效率,測試人員應該集中對待那些錯誤群集的程序。(3)D【解析】面向對象思想中的三個主要特征是:封裝性、繼承性和多態性。(4)A【解析】當今主導的程序設計風格是"清晰第一,效率第二"的觀點。結構化程序設計思想提出之前,在程序設計中曾強調程序的效率,而在實際應用中,人們更注重程序的可理解性。(5)B【解析】軟件設計包括軟件結構設計、數據設計、接口設計和過程設計。其中,結構設計是定義軟件系統各主要部件之間的關系;數據設計是將分析時創建的模型轉化為數據結構的定義;接口設計是描述軟件內部、軟件和操作系統之間及軟件與人之間如何通信;過程設計則是把系統結構部件轉換成軟件的過程性描述。(6)C【解析】數據處理的最小單位是數據項;由若干數據項組成數據元素;數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。(7)D【解析】假設線性表的長度為n,則在最壞情況下,冒泡排序要經過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數為n(n-1)/2。(8)C【解析】滿二叉樹是指除最后一層外,每一層上的所有結點都有兩個葉子結點。在滿二叉樹中,層上的結點數都達到最大值,即在滿二叉樹的第k層上有2k-1個結點,且深度為m的滿二叉樹有2m-1個結點。(9)B【解析】數據庫管理系統(DatabaseManagementSystem,簡稱DBMS)是數據庫的機構,它是一種系統軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等,數據庫管理系統是數據庫系統的核心。(10)C【解析】在關系模型數據庫中,基本結構是二維表,這種二維表稱為關系。關系的列稱為屬性,一個具有N個屬性的關系稱為N元關系。(11)B【解析】合法的標識符是由字母、數字和下劃線組成,并且第一個字符必須為字母或下劃線,用戶定義的標識符不能與關鍵字相同。選項A),數字不能為第一個字母,auto為關鍵字;選項C)中,也是數字不能為第一個字母,else為關鍵字;選項D)中負號不合法。(12)A【解析】在C語言中,合法標識符的命名規則是:標識符可以由字母、數字和下劃線3種字符組成,且第一個字符必須為字母或下劃線。C語言的標識符可以分為關鍵字、預定義標識符和用戶標識符。選項B)和C)中的橫線以及點都不合法,選項D)中的case為C語言關鍵字。(13)A【解析】C語言中的函數可以進行遞歸調用,但是不能在函數中定義函數,函數不用有返回值,若有返回值,則返回值類型必確定。(14)D【解析】在內存中,實參單元與形參單元是不同的單元。在C語言中,僅在調用函數時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。(15)B【解析】雙目運算中兩邊運算量類型轉換規律:運算數1運算數2轉換結果類型短整型 長整型 短整型->長整型整型 長整型 整型->長整型字符型 整型 字符型->整型有符號整型 無符號整型 有符號整型->無符號整型整型 浮點型 整型->浮點型在a/b的時候,a、b的類型不一致,根據類型轉換規則,把整型轉換成double類型,之后的加、減類似。轉化規則為char,short->int->unsigned->long->double←float。(16)D【解析】在ANSI標準中,long、int和short分別占用4、2和2個字節。但實際上對于某些C編譯系統,int和short都占用4個字節,所以說各種類型數據占用內存大小是由選擇何種C編譯系統決定的。(17)B【解析】本題考查通過scanf函數輸入數據時的格式控制問題。變量j的格式控制為"%2d",即只接收輸入數據的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量y中,因為y為浮點型數據,所以輸出結果為選項B)。(18)B【解析】對于do…while循環,程序先執行一次循環體,再判斷循環是否繼續。本題先輸出一次i的值"0,",再接著判斷表達式i++的值,其值為0,所以循環結束。此時變量i的值經過自加已經變為1,程序再次輸出i的值"1"。(19)D【解析】if…else語句的執行過程如下,首先計算if后面一對圓括號內表達式的值,若表達式的值為非0,執行if子句,然后跳過else子句,去執行if語句后的下一條語句;若表達式的值為0,跳過if子句,去執行else子句,接著去執行if語句后的下一條語句。C語言的語法規定,else子句總是與前面最近的不帶else的if匹配,與書寫格式無關,本題目的后一個if-else相當于嵌套在第一個if子句里,相當于x<y&&y<0時,z=0;當x<y&&y>=0時,z=z+1。(20)A【解析】本題主要考查switch語句的使用方法。switch語句的執行過程為:進入switch結構后,對條件表達式進行運算,然后從上至下去找與條件表達式值相匹配的case,以此作為入口,執行switch結構中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時,則執行default后面的語句。(21)A【解析】本題考查用于多分支選擇的switch語句,其一般形式為:switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;…case常量表達式n:語句n;default:語句n+1;}其語義是:計算表達式的值,并逐個與其后的常量表達式值進行比較,當表達式的值與某個常量表達式的值相等時,即執行其后的語句,然后不再進行判斷,繼續執行后面所有case后的語句;如表達式的值與所有case后的常量表達式均不相等時,則執行default后的語句。(22)D【解析】在C語言中,定義一維數組的語句一般形式如下:類型名數組名[常量表達式];一維數組的引用形式為:數組名[下標表達式]。count表示能被2整除或被5整除的個數,i則計算有多少個數組元素。(23)D【解析】在C語言中,數組元素下標是從0開始的;指針變量p指向數組的首地址。for循環語句中,指針變量p始終指向數組的首地址,因而執行循環賦值語句后數組各元素的值均變為2。(24)B【解析】本題考查循環語句的嵌套以及條件的判斷問題。在程序中,內層循環判斷條件為"j<=i",而j的初值為3,故當i的值為1和2時,內層循環體都不會被執行。只有當i和j都等于3時才會執行一次。m的值為55對3取模,計算結果為1。(25)C【解析】在C語言中,字符型數據在內存中的存儲形式是ASCII碼值。當需要以整型格式輸出字符時,輸出的也是ASCII碼值。字符'A'和'D'的ASCII碼值分別為65和68。(26)D【解析】本題中直接使用指針變量k,但在使用時要注意對k的指針運算。此外,一開始應知道*k的值為數組中的某一下標值,即*k=0,本函數的功能是找出數組中的最大元素的位置及最大元素的值。(27)B【解析】argc中存入的是命令行中字符串的個數。argv是一個指向字符型的指針數組的指針。(28)C【解析】p=&a[3]將指針指向數組a的第4個元素,p[5]指向數組a的第9個元素,而a[8]=9,所以b=9。29)C【解析】函數形參和實參分別占用不同的內存單元,改變形參的值不會影響對應實參的值,選項A)正確。指針類型的函數可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數,選項C)錯誤。(30)C【解析】此題考查了指針引用一維數組元素的方法。*p+9因為運算符"*"的優先級高于"+",所以輸出結果為p指向的元素1,然后加9,值為10。(31)B【解析】字符串連接函數strcat的調用形式如下:strcat(s1,s2)。此函數將s2所指字符串的內容連接到s1所指的字符串后面,并自動覆蓋s1串末尾的尾標,函數返回s1的地址值。(32)A【解析】本題綜合考查字符數組的賦值和strcpy函數的用法。C語言不允許用賦值表達式對字符數組賦值,如下面的語句就是非法的:str1="China",如果想把"China"這5個字符放到數組str1中,除了逐個輸入外,還能使用strcpy函數,該函數的功能是將一個字符串復制到一字符數組中。例如:strcpy(str1,"China")或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數組直接給一個字符數組。strcpy函數的結構是:strcpy(字符數組1,字符串2)其中,需要注意的是,字符數組1的長度不應小于字符串2的長度,"字符數組1"必須寫成數組名形式,如(str1),"字符串2"可以是字符數組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數組直接給一個字符數組。(33)C【解析】在fun函數中,while循環的功能是:逐個取字符數組s的字符判斷其是否是數字。若是則將其作為個位數字保存到變量n中,n的原數據的各個數位將相應左移一個10進制位。當指針s指向數組的第3位時,循環條件不成立,循環結束,返回n的值,輸出n的值為61。(34)A【解析】在本題中,p和q同為指向字符類型數據的指針。*q和p[0]同為字符型數據。選項B)、C)和D)都符合題目的要求;選項A)計算得出的是指針類型數據所占的內存字節數。(35)A【解析】循環開始前,指針t和s都指向字符串的起始位置,然后通過while循環判斷t指向的位置是否為空,同時讓t向右移動一位。while循環結束時,t自減1,此時t指向的位置是字符串的結束標志'\0'處,故t-s的值是字符串的長度,并不包括結束標志。(36)C【解析】本題綜合考查了輸入函數的使用。scanf函數會將空格視為分隔符,getchar函數只能輸入單個字符,getc函數是文件操作函數,顯然都不符合題意。通過gets函數輸入字符串時,輸入的空格被認為是字符串的一個字符。(37)D【解析】通過賦初值的方式給一維數組賦字符串,可以用給一般數組賦初值的相同方式給一維字符數組賦字符串,也可以在賦值時直接賦字符串常量。選項B)和C)后面的'\0'是多余的,在C語言中,系統會自動在字符串的結尾處加上一個字符'\0'作為串的結束標記。(38)D【解析】函數的靜態局部變量在編譯時就賦初值,即只賦初值一次,在程序運行時它已有初值,以后每次調用函數時不再重新賦值,而只是保留上次函數調用結束時的值。(39)C【解析】帶參數的宏定義命令行形式如下:#define宏名(形參表)替換文本在編譯的時候編譯預處理程序用"替換文本"來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結果賦給a。注意,宏替換是在編譯時由預處理程序完成的,宏替換不占用運行的時間,而函數調用是在程序運行時進行的,在函數的調用過程中需要占用一系列的處理時間。(40)A【解析】本題的功能是順序的讀兩個文本文件,依次輸出。當打開文件時出現錯誤,fopen函數將返回NULL。二、填空題(1)【1】可行性研究【解析】軟件生命周期一般包括可行性研究與需求分析、設計、實現、測試、交付使用以及維護等,還可以將軟件生命周期分為三個階段:①軟件定義階段:可行性研究和需求分析;②軟件開發階段:設計、實現和測試;③軟件運行維護階段:交付使用和維護。(2)【2】完善性【解析】軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。改正性維護是指在軟件交付使用后,為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤使用,應當進行的診斷和改正錯誤的過程;適應性維護是指為了使軟件適應變化,而去修改軟件的過程;完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再次開發軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性;預防性維護是為了提高軟件的可維護性、可靠性等,為以后的進一步改進軟件打下良好基礎。(3)【3】非線性結構【解析】數據的邏輯結構有線性結構和非線性結構兩大類。(4)【4】n+1【解析】在任意一棵二叉樹中,度為O多結點(即葉子結點)總是比度為2多結點多一個。(5)【5】實體【解析】在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯系。(6)【6】3【解析】C語言的語法規定:else子句總是與前面最近的不帶else的if相結合。因為x不大于y,所以執行printf("%d\n",z);語句。(7)【7】852【解析】循環前,變量y的值為9,其中,循環語句在y大于0情況下循環,每次循環后y的值都減1。循環體是當y能被3整除時輸出表達式--y,輸出的是減1后的y值。這樣,第一次循環因y為9,能被3整除,輸出8,y也變成8。又經兩次循環,y的值變為6,又讓y減1變成5,并輸出5;又經兩次循環,y的值變成3,讓y減1變成2,輸出2;再經兩次循環后,y的值變成0,結束循環,所以程序輸出852。(8)【8】k<=n【9】k++【解析】本題要求將一個for循環改成while循環。首先要保證循環條件相同,在for循環中,每次執行循環之后,循環控制變量k都會加1,而while循環則沒有,故需在循環體中增加改變k數值的語句"k++;"。9)【10】60【解析】本題中,代碼定義3行2列的二維數組a,定義指向兩個元素的一維數組指針p,并讓p指向兩維數組a的首行,則代碼*(*(p+2)+1)中的p+2指向兩維數組a的第三行a[2],*(p+2)指向a[2][0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60(10)【11】ACE【解析】在本題中,for循環體每執行完一次,變量i的值自加兩次。i的初值為'a',執行一次循環后變為'c',之后再變成'e',當其變為'g'時,循環條件若不滿足,循環終止,故本題共輸出3個字符。表達式"i-'a'+'A'"即表示輸出i對應的大寫字母,結果為ACE。(11)【12】x[0]【13】x[0]【解析】函數f()通過for循環逐個比較數組x中的元素,循環結束后,p0和p1分別表示最大值和最小值在數組中的下標位置,然后按照題意將最大值x[p0]和數組的最后一個元素x[n-1]交換位置,再將最小值x[p1]和第一個元素(x[0])進行交換,所以空白處應該填入x[0]。(12)【14】*(str+I)或str[I]【解析】str是指針變量,它指向字符型數據,在循環過程中,可以用*(str+I)來訪問字符串中的第I個元素,判斷是否為結束標志,如果不是,I=I+1,繼續取下一個元素進行判斷,直到*(str+I)的值為'\0'為止,也可以用下標的方式引用字符,如*(str+I)相當于str[I]。(13)【15】30x【解析】本題的參數傳遞屬于值傳遞,所以被調用函數內不能改變調用函數中的數據。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是讀入數據的存放地址;fwrite是輸出數據的地址(以上指的是起始地址)。(38)B【解析】本題考查兩個位運算符。按位異或運算符"^"是雙目運算符,其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異或時,結果為1。左移運算符"<<"是雙目運算符,其功能把"<<"左邊的運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0,并且"<<"運算符的優先級于"^"。(39)A【解析】在C語言中只有自動變量和寄存器變量在使用時才占用內存單元。(40)B【解析】本題考查的是指向函數的指針。語句int(*f)(int);是對一個函數的聲明,其中f是指向該函數的指針,該函數有一個整型的參數,函數返回值類型為整型。二、選擇題(1)【1】輸出【解析】軟件測試用例是為了有效發現軟件缺陷面編寫的包含測試目的、測試步驟、期望測試結果的特定集合。正確認識和設計軟件測試用例可以提高軟件測試的有效性,便

溫馨提示

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

評論

0/150

提交評論