2021-2022年江蘇省南京市全國計算機等級考試C語言程序設計真題二卷(含答案)_第1頁
2021-2022年江蘇省南京市全國計算機等級考試C語言程序設計真題二卷(含答案)_第2頁
2021-2022年江蘇省南京市全國計算機等級考試C語言程序設計真題二卷(含答案)_第3頁
2021-2022年江蘇省南京市全國計算機等級考試C語言程序設計真題二卷(含答案)_第4頁
2021-2022年江蘇省南京市全國計算機等級考試C語言程序設計真題二卷(含答案)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年江蘇省南京市全國計算機等級考試C語言程序設計真題二卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:

程序運行后的輸出結果是()。

A.0B.一1C.1D.7

2.下列程序的輸出結果是()。

A.13579B.48579C.48549D.48999

3.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,則對a數組元素不正確的引用是()

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

4.一個棧的入棧序列是a,b,c,d,e,f,則棧的不可能的輸出序列為()

A.fedcbB.defbcC.defcbD.abcdef

5.以下敘述中正確的是()。

A.構成C程序的基本單位是函數

B.可以在一個函數中定義另一個函數

C.main函數必須放在其他函數之前

D.C函數定義的格式是K&R格式

6.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

7.依次讀入數據元素序列{a,b,c,d,e,f,g}進棧,每進一個元素,機器可要求下一個元素進?;驈棗?,如此進行,則??諘r彈出的元素構成的序列是以下哪些序列?

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,b,c,a}

D.{c,d,b,e,f,a,g}

8.若某線性表最常用的操作是存取任一指定序號的元素和在最后進行插入和刪除運算,則利用()存儲方式最節(jié)省時間。

A.順序表B.雙鏈表C.帶頭結點的雙循環(huán)鏈表D.單循環(huán)鏈表

9.將E-R圖轉換到關系模式時,實體與聯系都可以表示成________。

A.屬性B.關系C.鍵D.域

10.設有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

11.若已定義:inta[9],*p=a;并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是_______。

A.p+1B.a+1C.a++D.++p

12.對初始狀態(tài)為遞增序列的數組按遞增順序排序,最省時間的是插入排序算法,最費時間的算法是()

A.堆排序B.快速排序C.插入排序D.歸并排序

13.以下程序的主函數中調用了在其面前定義的fun函數#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項中錯誤的fun函數首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

14.在瀏覽WWW時,如果連接到一個安全的站點,應當以()開頭來書寫統(tǒng)一資源定位器。

A.shttp://B.http:s//C.http://D.https//

15.下列敘述中正確的是:()A.C語言程序總是從第一個定義的函數開始執(zhí)行

B.C語言程序中,函數類型必須進行顯式聲明

C.C語言程序中,return語句必須放在函數的最后

D.C語言程序中,return語句中表達式的類型應該與函數的類型一致

16.下列敘述中錯誤的是()。

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和后件

D.線性表可以是空表

17.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要??臻g的大小為()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

18.在非線性結構中,每個結點()。

A.無直接前趨

B.只有一個直接前趨和個數不受限制的直接后繼

C.只有一個直接前驅和后繼

D.有個數不受限制的直接前驅和后繼

19.設有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。

A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

20.設有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

二、2.填空題(20題)21.下列程序中的數組a包括10個整數元素,分別將前項和后項之和存入數組b,并按每行4個元素輸出數組b。請?zhí)羁铡?/p>

#include<stdioh>

main()

{inta[10],b[10],i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

22.語句“int(*ptr)();”的含義是______是指向函數的指針,該函數返回一個血型數據。

23.有一個已排好序的數組,今輸入一個數,要求按原來的順序規(guī)律將它插入到數組中。算法是:假設排序順序是從小到大,對輸入的數,檢查它在數組中哪個數之后,然后將比這個數大的數順序后移一個位置,在空出的位置上將該數插入。請在程序中的空白處填上一條語句或一個表達式。

#defineN100

main()

{floata[N+1],x;

inti,p;

for(i=0;i<N;i++)

scanf("%f"&a[i]);

scanf("%f",&x);

for(i=0,p=N;i<N;i++)

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

a[i+1]=a[i];

a[p]=x;

for(i=0;【】;i++)

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

24.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。

25.以下程序中,函數SumColumMin的功能是:求出M行N列二維數組每列元素中的最小值,并計算它們的和值,和值通過形參傳回主函數輸出。請?zhí)羁眨?/p>

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

for(i=0;i<N;i++)

k=O;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+:【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

printf("%d\n",s);

}

26.設有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內容,請將語句補充家整。

seanf("%d",【】);

printf("%d\n",【】);

27.下面程序的輸出結果是【】。

#include<stdio.h>

main()

{char*p={"BOOL""OPK","H","SP"};

inti;

for(i=3,i>=0;i--,i--)printf("%",*p[i]);

printf("\n");

}

28.在printf格式字符中,以帶符號的十進制形式輸出整數的格式字符是【】;以八進制無符號形式輸出整數的格式字符是【】;以十六進制無符號形式輸出整數的格式字符是【】;以十進制無符號形式輸出整數的格式字符是【】。

29.以下程序運行后的輸出結果是()。main(){inta=3,b=4,c=5,t=79;if(b<a&&a<C)t=a;a=c;c=t;if(a<c&&b<C)t=b;b=a;a=t;printf("%d%d%d\n",a,b,C);}

30.定義inta=5,b;,則執(zhí)行表達式b=++a*--a之后,變量b的值為【】。

31.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

32.下列程序的循環(huán)次數是______。

x=2;

do

{x=x*x;}

while(!x);

33.用鏈表表示線性表的突出優(yōu)點是______。

34.以下程序運行后的輸出結果是()。

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<C)t=a;a=c;c=t;

if(a<c&&b<C)t=b;b=a;a=t;

printf("%d%d%d\n",a,b,A);

}

35.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

printf("%d,%d",x,y);}

則程序執(zhí)行后的x值為【】,y的值為【】。

36.以下程序的功能是建立—個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(struct

37.以下程序的輸出結果是【】。

#include<stdio.h>

main()

{inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("\n%2d,%2.1f,%2.11f",a,b,C);

}

38.函數sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數strcmp)。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

39.以下程序的輸出結果是______。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{inti-2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

40.以下程序中給指針p分配三個double型動態(tài)內存單元,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{dOuble*p;

p=(double*)malloc();

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

三、1.選擇題(20題)41.下列敘述中正確的是()。

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結束

D.軟件維護是指修復程序中被破壞的指令

42.在表示C語言的整型變量時,表示“無符號整型”的符號是()

A.unsignedintB.unsignedshortC.longintD.unsignedlong

43.若有如下定義和聲明:structs{intm;charch;doublex;uniont{chara[6];intb[3];}tt;}ss;則sizeof(struets)的值是()

A.6B.14C.17D.20

44.下列程序的輸出結果是______。main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

45.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運行該程序的輸出結果是______。

A.34B.42C.43D.33

46.下面對對象概念描述,不正確的是

A.任何對象都必須有繼承性B.對象是屬性和方法的封裝體C.對象間的通訊靠消息傳遞D.操作是對象的動態(tài)屬性

47.有以下程序main(){inti=0,s=0;for(;;){if(i==3‖i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運行后的輸出結果是

A.10B.13C.24D.程序進入死循環(huán)

48.下列二維數組的說明中,不正確的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

49.以下合法的十六進制數是()。

A.0xB.0x4deC.0x1hD.oX77

50.已知函數的調用形式為fread(buf,size,count,fp),參數buf的含義是

A.一個整型變量,代表要讀入的數據項總數

B.一個文件指針,指向要讀的文件

C.一個指針;指向要讀入數據的存放地址

D.一個存儲區(qū),存放要讀的數據項

51.樹是結點的集合,它的根結點的數目是()。

A.有且只有1個B.1或多于1C.0或1D.至少有2個

52.下面程序的輸出結果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}

A.abcdeB.aC.不確定D.bcdef

53.若有說明:long*p,a;,則不能通過scanf語句正確給輸入項讀入數據的程序段是()

A.*p=&a;scanf("%1d",p);

B.p=(long*)malloc(8);scanf("%1d",p);

C.scanf("%1d",p=&a);

D.scanf("%1d",&a);

54.以下能正確定義一維數組的選項是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

55.當說明一個結構體變量時系統(tǒng)分配給它的內存是()。

A.各成員所需要內存量的總和

B.結構中第一個成員所需的內存量

C.成員中占內存最大者所需的容量

D.結構中最后一個成員所需要的內存量

56.下列程序執(zhí)行后的輸出結果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

A.6B.7C.8D.9

57.下列程序的輸出結果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}

A.2B.3C.4D.5

58.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]=“abcddfefdbd”,c=‘d’;ss(strl,c);printf(“%s\n”,strl);}程序運行后的輸出結果是

A.ABCDDEFEDBDB.abeDDfefDbDC.abcAMefAbAD.Abcddfefdbd

59.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯誤D.lang

60.關系數據庫管理系統(tǒng)能實現的專門關系運算包括()。

A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關聯、更新、排序D.顯示、打印、制表

四、選擇題(20題)61.(63)線性表的順序存儲結構和線性表的鏈式存儲結構分別是______。

A.順序存取的存儲結構、順序存取的存儲結

B.隨機存取的存儲結構、順序存取的存儲結構

C.隨機存取的存儲結構、隨機存取的存儲結

D.任意存取的存儲結構、任意存取的存儲結構

62.

63.

64.

下列程序的輸出結果是()。

#include<stdio.h>

main()

{inti,S=0;

for(i=1;i<10;i++)

if(!(i%2)&&!(i%3))s+=i;

printf("%d\n",s);

}

A.4B.39C.45D.6

65.

66.

若希望下列的程序運行后輸出25,程序空白處的正確選項是()。

main

{intid=50,a[]=(7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=1;i<4;++i

B.i=l;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

67.

68.有以下函數:

函數的功能是()。

A.將Y所指字符串賦給x所指存儲空間

B.查找x和y所指字符串中是否有

C.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數

D.統(tǒng)計x和Y所指字符串中相同的字符個數

69.設有如下三個關系表:

70.有以下程序:

程序運行后的輸出結果是()。\\

A.Zhao,111,85,90,Qian,f,95,92

B.Zhao,m,85,90,Zha0,m,85,90

C.Qian,f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

71.下列選項中不會引起二義性的宏定義是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

72.

73.下列不屬于C語言關鍵字的是()。A.A.default

B.register

C.enum

D.external

74.設有表示學生選課的三張表,學生s(學號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學號,課號,成績),則表sc的關鍵字(鍵或碼)為()。

A.課號,成績B.學號,成績C.學號,課號D.學號,姓名,成績

75.有以下程序

#include<stdio.h>

#include<string.h>

main()

{chara[10]=”abcd”;

printf("%d,%d\n",strlen(a),sizeof(a));

}

程序運行后的輸出結果是()。

A.7,4

B.4,10

C.8,8

D.10,10

76.

77.

78.有以下程序:

程序執(zhí)行后的輸出結果是()。

A.45B.50C.60D.55

79.

80.下列定義數組的語句中,正確的是()。

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:在字符串str中找出ASCⅡ碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向后順序移動。例如,調用proc()函數之前給字符串輸入DcybkdGT,調用后字符串中的內容為yDcbkdOT。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.編寫一個函數,輸入n個字符串,串與串之間以Enter鍵分隔,找出最短字符串中第一個字符串,傳回該串地址(用一個新串“*”作為結束輸入的標志)。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數fun()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.Ba一一的含義是先用后減l,所以當a的值為0時,跳出循環(huán),但是仍要執(zhí)行a一一,g的值變?yōu)橐?。

2.C本題考查do-while循環(huán),在fun函數中,首先定義了靜態(tài)變量i=0,do-while循環(huán)要實現的功能是以b[0]=b[o]+b[1],b[1]=b[1]+b[2],其他元素不變的規(guī)則重新給b數組賦值。在主函數中,通過調用fun函數,按上面的規(guī)則對數組a重新賦值,最后輸出數組a。

3.D解析:通常,引用一個數組元素可以用下標法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數組范圍,注意,數組的下標是從0開始的。

4.B

5.A解析:本題考查C語言的綜合基礎知識。構成C程序的基本單位是函數,一個C程序總是從main函數開始執(zhí)行,而不論main函數在整個程序中的位置如何。C語言的函數定義都是互相平行、獨立的,在定義函數時,一個函數內不能定義另一個函數。C函數定義的一般格式有兩種:傳統(tǒng)格式和現代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現代格式又稱ANSI格式,是現代編譯系統(tǒng)使用的格式。

6.C

7.A

8.A

9.B解析:關系數據庫邏輯設計的主要工作是將\ue008E-R\ue009圖轉換成指定RDBMS中的關系模式。首先,從E-R圖到關系模式的轉換是比較直接的,實體與聯系都可以表示成關系,E-R圖中屬性也可以轉換成關系的屬性,實體集也可以轉換成關系。

10.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應為整型數據,所以需要對變量f進行強制類型轉換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術運算符、關系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術運算符、關系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據運算符的優(yōu)先級與結合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進行賦值。對于選取項B),先計算k什的值,再對其取負數。對于選項D),先計算k>=f的值(為假,即0),再用0與m進行比較,故最終結果為0。

11.C解析:數組名是指針常量,是個固定的指針,不能對數組名賦予一個新的地址值,也不能使這個指針常駐量“移動”,指向數組的其他元素。

12.B

13.A由題可知fun的參數為變量,而a[15]為常量,所以答案為A。

14.C

15.DC程序程序總是從main函數開始執(zhí)行。C程序中如果沒有對函數類型進行說明,則該函數默認為int類型。return語句可以放在函數任意位置,但是return之后的語句不會被執(zhí)行。

16.CC.【解析】線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前件,最后一個結點沒有后件,其他結點有且只有一個前件和后件,所以選項C.是錯誤的。

17.D

18.D

19.C本題考查while,while循環(huán)表達式k-1是個賦值表達式而不是邏輯表達式,k的初值為l2不符合循環(huán)條件,所以循環(huán)體語句一次也不執(zhí)行。

20.C結構體不能通過結構體名字整體賦值,通過結構體名.成員名的方式賦值。所以C選項錯誤。

21.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數組a中元素a[i]與a[i+1]值相加后的值賦予數組b中元素b[i]小即可實現將一個數組的前項和后項之和存入另一數組。

22.ptrptr解析:本題考查函數指針的概念。函數指針的定義格式是:類型標識符(葉旨針變量名)()。注:“類型標識符”為函數返回值的類型。

23.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本題主要考查了插入排序。由于程序中的數組在開始己經按從小到大順序排序排好。在插入時,首先要查到第一個大于恃插入數的數組下標,即當待插入元素小于數組中當前元素時,記下數組的當前下標p,并結束循環(huán),故第一空目的是為了記下數組下標,應填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動—位,故在循環(huán)時,要從最后一個元素到第p個元素都要后移一位,因此第二空應填>i=p。最后一個循環(huán)是將N+1個元素都輸出,故最后一空應為i<=N。(注:本題有多種答案,以上僅提供一種)

24.線性結構線性結構解析:數據的邏輯結構是指數據元素之間的邏輯關系,分為線性結構和非線性結構。常見的線性結構有線性表、棧和隊列等,常見的非線性結構有樹、二叉樹等。

25.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:程序段for(j=1;j<M;j++)if(a[k][i]>a[j][i]))k=j;是找出第i列的最小值,第一處應該是每列最小值累加,所以填a[k][i];和值要通過形參傳回主函數,第二處應該填*sum;根據形參可以確定第三處應該填x,&s。

26.k[7]*kk[7]*k解析:scanf()函數有兩個參數,第—個參數是格式控制部分(格式控制部分是字符串,主要由“%”號和格式字符組成)第二個參數是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空格處位于scanf()函數的第二個參數處,所以,第一個空應該填地址k。printf()函數有兩個參數,第一個參數是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成的,通常是字符常量。非格式字符作為輸出數據的間隔,輸出時原樣輸出)第二個參數為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出的表達式組成的,表達式之間用逗號分隔開)。而第二個空位于printf()函數的第二個參數處,所以應該填*K。

27.SO

28.d0xu

29.45794579解析:本題考查的是條件判斷語句。本題特別需要注意的是“;”的問題,不能把“t=a;a=c;c=t;”誤認為是第一個if的語句,實際上,只有“t=a;”才是第一個if的語句。所以判斷第一個if語句的表達式不成立后,執(zhí)行的是“a=c;c=t;”,此時a=5,c=79。然后判斷第二個if語句的條件表達式,表達式成立,執(zhí)行后面的3條語句,讓a、b、c分別為4、5和79。

30.2525解析:#NAME?

31.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

32.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。

33.便于插入和刪除操作。便于插入和刪除操作。解析:為了克服順序表中插入和刪除時需要移動大量數據元素的缺點,引入了鏈式存儲結構。鏈表表示線性表的突出優(yōu)點是插入和刪除操作方便,不必移動數據元素,執(zhí)行效率高。

34.45994599解析:a、b、c的初值為3、4、5,t的初值為99,if語句的條件“b<a&&b<c”為假,不執(zhí)行“t=a;”,但緊隨其后的“a=c;c=t;”與此if語句無關,仍被執(zhí)行。此時a的值為5,b的值仍是4,c的值為99。再執(zhí)行第二個if語句,由于此時“a<c&&b<c”為真,執(zhí)行“t=b;”,緊隨其后的“b=a;a=t;”與此if語句無關,也被執(zhí)行。此時a的值為4,b的值是5,c的值為99。因此輸出結果是:4599。

35.66

36.解析:本題考查的是鏈表這一數據結構對結構體變量中數據的引用。鏈表的特點是結構體變量中有兩個域,一個是數據,另一個是指向該結構體變量類型的指針,用以指明鏈表的下一個結點。

37.1234123.512345.51234,123.5,12345.5解析:在primf()函數的格式控制符中:'%2d'表示輸出一個有符號整數,如果輸出長度小于2,則左端補以空格,否則按實際長度輸出。所以本題中的a按原樣輸出為1234:'%2.1尸表示輸出一個單精度實數,只輸出小數點后1位,后面若有小數則四舍五入,如果輸出長度小于2,則左端補以空格,否則按實際長度輸出。所以本題中的b四舍五入到小數點后1位再輸出為123.5;'%2.11f'除了表示輸出一個雙精度實數外,其余參數和'%2.1f'一樣。所以本題中的c四舍五入到小數點后1位再輸出為12345.5。故輸出結果是:1234,123.5,12345.5。

38.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函數sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應的字符相等則接著比較下一個字符,一直到兩個字符串中對應字符不等,或者有一個為\\0,此時字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\\0,且*s和*t相同,第一處應填“*t”或其他等價形式。根據題意可知第二處應填*s-*t或其等價形式。

39.1616解析:首先將程序中宏替換掉,先把“MCRA(i)”替換成“2*i”,然后把“MCRA(j,2*i)”替換成“2*2*j+2*i”,經計算該表達式的值為16,所以最后輸出為16。

40.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本題考核的知識點是malloc()函數.該函數的調用格式是“malloc(n)”,作用是申請n個字符的存儲單元,并返回該存儲區(qū)的首地址,實際調用的時候可在前面加上“(類型說明符*)”,以轉換成需要的類型的地址.所以在此空格處應該填寫3*sizeof(double)或size(double)*3或其他等價的表達式。

41.A解析:維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學的目的就在于提高軟件的可維護性,同時也要設法降低維護的代價。

軟件維護通常有以下四類;

①為糾正使用中出現的錯誤而進行的改正性維護;

②為適應環(huán)境變化而進行的適應性維護;

③為改進原有軟件而進行的完善性維護;

④為將來的可維護和可靠而進行的預防性維護。

軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。

42.A

43.C

44.A

45.D解析:逗號表達式(++x,y++)的值應該是y++的值,由于y++是先引用后自增,所以y++的值是3。

46.A解析:有時為了保護某些特有的對象,可以通過定義其為私有屬性達到不被繼承的目的。

47.D解析:程序中for循環(huán)中省略了判斷退出循環(huán)的表達式,for循環(huán)將由里面的break語句控制是否結束循環(huán),第一次循環(huán),第一條if語句后面括號里的表達式的值為假,所以該if語句不被執(zhí)行,執(zhí)行下面的第二條語句,此時該if語句表達式的值為假,所以該if語句也不執(zhí)行,執(zhí)行下面的語句,i++、s+=i,執(zhí)行完畢后i的值為1,s的值為1,如此循環(huán),直到第三次之后i,s的值都為3,繼續(xù)第四次循環(huán),顯然這時滿足第一條if語句的,執(zhí)行后面的continue該次循環(huán)結束從頭開始下次循環(huán),而i的值為3一直沒有改變,所以第一條語句始終要執(zhí)行,因此for循環(huán)將一直循環(huán)下去。

48.D解析:C語言規(guī)定,對于二維數組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式:二維數組的一般定義格式是:類型說明符數組名[常量表達式][常量表達式]。

49.B解析:考查十六進制數的表示方法。十六進制數以0x開頭,后面跟著若干位1f的數,所以正確答案為B)。整形常量、實型常量和字符型常量的合法性判斷。

50.C解析:這是一道考查fread函數的題。buf是一個指針,fread是讀入數據的存放地址;fwrite是輸出數據的地址(以上指的是起始地址)。

51.CC?!窘馕觥繕渚哂忻黠@的層次關系,即樹是一種層次結構。在樹結構中,根結點在第一層上。當樹為非空時,樹中有且只有一個根結點,當樹為空時,樹中根結點的數目為0。

52.C解析:字符串少一個結束標志,所以輸出的結果不確定。

53.A

54.B解析:選項A定義數組時省略了長度,而C語言中規(guī)定,只有在定義并同時進行初始化時,數組的長度才可以省略,數組的長度為初始化時候的成員個數,故選項A錯誤;在C語言中規(guī)定,數組的長度必須是一個整數或整型常量表達式,故選項C不正確:定義時數組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。

55.A解析:本題主要考查結構體的內存使用:對結構體而言,結構中不同的成員分別使用不同的內存空間,一個結構所占內存空間的大小是結構中每個成員所占內存空間大小的總和,結構中每個成員相互獨立。

56.A解析:函數的參數不僅可以是整型、實型、字符型等數據,還可以是指針型。它的作用是將一個變量的地址傳遞到另一個函數中。當數組名作參數時,如果形參數組中的各元素的值發(fā)生變化,實參數組元素的值也將隨之發(fā)生變化。

57.C解析:帶參數的宏定義命令行形式如下:

#define宏名(形參表)替換文本

在編譯的時候編譯預處理程序用“替換文本”來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結果賦給a。注意,宏替換是在編譯時由預處理程序完成的,宏替換不占用運行的時間,而函數調用是在程序運行時進行的,在函數的調用過程中需要占用一系列的處理時間。

58.B解析:本題中的函數ss()有兩個參數,一個是字符型指針變量s;另一個是字符型變量t。在函數中通過一個while循環(huán),在循環(huán)中一次取出e指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“*s=t-'a'+'A';”(若是小寫字母,則把它轉換成大寫字母)語句。在主函數中執(zhí)行函數調用ss(strl,c),很顯然是把stfl數組中所有字符“d”變成大寫字母,其他字符不變。

59.B解析:本程序首先定義了靜態(tài)字符數組a,然后將指針p指向數組a的首地址。

第1次for循環(huán),p=a,p指向數組的第1個元素,*p是取指針p所指地址的內容,輸出1;第2次for循環(huán),p=p+

溫馨提示

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

評論

0/150

提交評論