2021-2022年陜西省商洛市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021-2022年陜西省商洛市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021-2022年陜西省商洛市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021-2022年陜西省商洛市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021-2022年陜西省商洛市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2021-2022年陜西省商洛市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.函數(shù)調(diào)用:strcat(strcpy(str1,str2),str3)的功能是______。

A.將串str1復(fù)制到串str2中后再連接到串str3之后

B.將串str1連接到串str2之后再復(fù)制到串str3之后

C.將串str2復(fù)制到串str1中后再將串sir3連接到串str1之后

D.將串str2連接到串str1之后再將串str1復(fù)制到串str3中

3.

4.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.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;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

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

}

當(dāng)運行程序時,輸入asdafaaz67<回車>,則輸出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

5.在進行單元測試時,常用的方法是

A.采用白盒測試,輔之以黑盒測試B.采用黑盒測試,輔之以白盒測試C.只使用白盒測試D.只使用黑盒測試

6.下列敘述中正確的是()。A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化

B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化

C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化

D.在棧中,棧中元素不會隨棧底指針與棧頂指針的變化而動態(tài)變化

7.有以下程序

#include<stdio.h>

intfun()

{staticintx=1;

x*2;returnx;

}

main()

{inti,s=1,

for(i=1;i<=2;i++)s=fun();

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

程序運行后的輸出結(jié)果是A.A.0B.1C.4D.8

8.以下選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0

9.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1=“China”,*s2=“Beijing”;pf=fopen(“abc.dat”,“wb+”);fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}程序執(zhí)行后,abc.dat文件的內(nèi)容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

10.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf('%d,%d\n",m,i);}執(zhí)行后的輸出結(jié)果是()。

A.8,6B.8,3C.6,4D.7,4

11.下述哪一條是順序存儲結(jié)構(gòu)的優(yōu)點()。

A.插入運算方便B.可方便地用于各種邏輯結(jié)構(gòu)的存儲表示C.存儲密度大D.刪除運算方便

12.有以下程序:

程序運行后的輸出結(jié)果是()。A.4B.2C.3D.1

13.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。

A.2B.3C.4D.無確定值

14.若變量已正確定義為int型,要通過語句“scanf(“%d,%d,%d”,&a,&b,&c);”將a賦值為1、將b賦值為2、將c賦值為3,以下輸入形式中錯誤的是(注:□代表一個空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

15.

16.有以下程序:#include<stdio.h>#defineSUB(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,SUB(a++,b++));程序運行后的輸出結(jié)果是()。

A.15B.12C.16D.20

17.若有定義和語句:int**pp),*P,a=20,b=10;pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,*PP);則輸出結(jié)果是()。A.20,10B.20,20C.10,20D.10,10

18.最大容量為n的循環(huán)隊列,隊尾指針是rear,隊頭是front,則隊空的條件是()。

A.(rear+1)MODn=front

B.rear=front

C.rear+1=front

D.(rear-l)MODn=front

19.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的運行結(jié)果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

20.軟件詳細設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

二、2.填空題(20題)21.在樹型結(jié)構(gòu)中,根結(jié)點沒有【】結(jié)點,其余每個結(jié)點有且僅有【】個前驅(qū)結(jié)點;葉結(jié)點沒有后繼結(jié)點,其余每個結(jié)點的【】結(jié)點數(shù)不受限制。

22.如果一個工人可管理多個設(shè)施,而一個設(shè)施只被一個工人管理,則實體“工人”與實體“設(shè)備”之間存在______聯(lián)系。

23.有以下程序:

#include<stdio.h>

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后的輸出結(jié)果是【】。

24.閱讀程序:

#include<string.h>

#include<strdio.h>

strle(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!='0')num++;

while(b[n])

{*(a+num)=b[n];num++;n++;}

return(num);

}

main()

{charstrl[81],str2[81],*p1=strl,*p2=str2;

gets(p1);gets(p2);

prinf("%d\n",strle(p1,p2));

}

運行上面的程序,如果從鍵盤上輸入字符串qwerty和字符串a(chǎn)bcd,則程序的輸出結(jié)果是【】。

25.Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種面向______的設(shè)計方法。

26.若有定義doublea[5];,則a數(shù)組元素下標的上限為______。

27.表示條件;10<x<100或x<0的C語言表達式是【】。

28.下列程序的運行結(jié)果是【】。

#include<stdio.h>

voidmain()

{ints=0,k;

for(k=7;k>4;k--)

{switch(k)

{case1:

case4:

case7:s++;break;

case2:

case3:

case6:break;

case0:

case5:s+=2;break;}}

printf("s=%d",s);}

29.程序如下:

main()

{inti=4;

printf("%d",-++i);

}

該程序執(zhí)行后的輸出結(jié)果以及i的值分別是______、_______。

30.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與()。

31.若有以下定義:

chara;intb;

floatc;doubled;

則表達式a*b+d-c值的類型為【】。

32.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序運行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。

33.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

34.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單詞鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。[*]

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{…}

voiddisp(Node*h)

{Node*

35.請在以下程序第一行的下劃線處填寫適當(dāng)內(nèi)容,使程序能正常運行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

36.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

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

38.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

pfintf("i=%d,j=%d\n",i,j);

}

要求給i賦10,給j賦20,則應(yīng)該從鍵盤輸入【】。

39.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為為算法的【】。

40.關(guān)系操作的特點是______操作。

三、1.選擇題(20題)41.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

42.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

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

43.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執(zhí)行該程序段后,x的值為()

A.1B.0C.FALSED.TRUE

44.若變量都已正確說明,則以下程序段()。#include<stdio.h>main(){inta=8;intb=6;printf(a>b?"&&&a=%d":"!!!b=%d",a,B);}

A.輸出為:&&&a=8

B.輸出為:!!!b=8

C.輸出為:&&&a=8!!!b=6

D.全部錯誤

45.設(shè)有下列的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;執(zhí)行上面的程序段后,*(ptr+10)的值為()。

A.'\0'B.'0'C.不確定的值D.'0'的地址

46.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。

A.12B.11C.10D.編譯出錯

47.下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是A.內(nèi)模式B.外模式C.概念模式D.邏輯模式

48.在C語言中,表達式10!=9的值是______。

A.真B.非零值C.0D.1

49.下述程序向文件輸出的結(jié)果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TESY","wb");fprintf(fp,"%d%5.0f%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件為二進制文件而不可讀

50.下列程序的運行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數(shù)B.負數(shù)C.零D.不確定的值

51.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

52.以下程序執(zhí)行后x的值是main(){intx,y=252,i=386,*m=&y,*z=&i;x=(z==y);printf("%d",x);}

A.252B.1C.0D.運行時出錯,x無定值

53.若有定義:inta=8,b=4,C;執(zhí)行語句“c=a/b+0.4;”后,c的值為()。

A.1.4B.1C.2D.2

54.表達式~0x11的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFE1

55.將二進制數(shù)10100101轉(zhuǎn)換為十六進制數(shù)應(yīng)該是______。

A.245B.A5C.B5D.165

56.有以下程序intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運行后的輸出結(jié)果是

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

57.

(3)

A.p->nextB.pC.sD.s->next

58.表達式~0x11的值是()。

A.OxFFEEB.0x71C.0x0071D.0xFFE1

59.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。

A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示

60.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是______。

A.typedefstructaa{intn;floatm;}AA;AAtd1;

B.#defineAAstructaaAA{intn;floatm;}td1;

C.struct{intn;floatm;}aa;srtuctaatd1:

D.struct{intn;floatm;}tdl;

四、選擇題(20題)61.

62.有以下函數(shù)定義:

voidfun(intn,doublex){……}

若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun正確調(diào)用的語句是

A.fun(inty,doublem);B.k=fun(10,12.5);

C.fun(x,n);D.voidfun(n,x);

63.以下四個程序中,完全正確的是()。

64.若a是數(shù)直類型,則邏輯表達式的值是()。A.1B.0C.2D.不知道a的值,不能確定

65.若有下的定義:"intt[3][2];",能正確表示t數(shù)組元素地址的表達式是()。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

66.在C語言中,運算對象必須是整型數(shù)的運算符是()。

A.%B.\C.%和\D.**

67.

68.若程序有宏定義:#defineNl00,則以下敘述中正確的是()。

A.宏定義中定義了標識符N的值為整數(shù)100

B.在編譯程序?qū)源程序進行預(yù)處理時用l00替換標識符N

C.對C源程序進行編譯時用100替換標識符N

D.在運行時用100替換標識符N

69.在深度為5的滿二叉樹葉中,葉子結(jié)點的個數(shù)為()。

A.32B.31C.16D.15

70.

執(zhí)行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

71.如果將主文件型指針fp指向的文件內(nèi)部指針置于文件尾,正確的語句是()。

A.feof(fp);

B.rewind(fp);

C.fseek(fp,OL,0);

D.fseek(fp,OL,2);

72.有以下程序:

voidmain()

{inta=15,b=21,m=0;

switch(a%3)

{case0:m++;break;

case1:m++;

switch(b%2)

{defaule:m++;

case0:m++;break;

}

}

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

}

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

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

73.

74.有以下程序該程序試圖通過指針p為變量rl讀人數(shù)據(jù)并輸出,但程序有多處錯誤,以下語句正確的是()。

75.數(shù)據(jù)的存儲結(jié)構(gòu)是指

A.存儲在外存中的數(shù)據(jù)B.?dāng)?shù)據(jù)在計算機中的順序存儲方式

C.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示D.?dāng)?shù)據(jù)所占的存儲空間量

76.

定義結(jié)構(gòu)體數(shù)組:

structstu

{intnum;

charnameE20];

}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU");

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

printf("%d%c",x[i].num,x[i].name[2]);

以上程序段的輸出結(jié)果為()。

A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I

77.設(shè)變量已正確定義并賦值,以下正確的表達式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

78.

79.C源程序中不能表示的數(shù)制是

A.十進制B.八進制

C.二進制D.十六進制

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算n!。例如,若輸人:6,則輸出:6!=720.000000。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開觸文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是移動字符串中的內(nèi)容,移動的規(guī)則是把第1~m個字符,移動到字符串的最后,把第m+1到最后的字符移動到于符串的前面。例如,字符串中原有的內(nèi)容為“ABCDEFGHIJK”,m的值為3,移動后,字符串中的內(nèi)容應(yīng)該是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.D

2.C解析:題目中所給函數(shù)的功能是;先用函數(shù)strcpy把參數(shù)串str2復(fù)制到參數(shù)串str1中去,然后用函數(shù)strcat把參數(shù)串str3連接到經(jīng)過修改后的參數(shù)串str1后,因此選項C正確。

3.B

4.A在本題中,程序首先定義一個返回類型為整型的函數(shù)fun,該函數(shù)帶有一個指針型的形參變量str,從主函數(shù)中對其調(diào)用時傳遞的參數(shù)我們可以知道,該指針指向的是一個數(shù)組,在該函數(shù)體中,首先定義兩個整型變量,然后執(zhí)行循環(huán),循環(huán)變量i的初始值為0,循環(huán)結(jié)束的條件是str[i]!=’\\0’,表示取到的數(shù)組元素是字符串結(jié)束標識,即字符串中的字符被處理完,在循環(huán)體中,首先執(zhí)行條件判斷語句if(str[i]!=’’),如果結(jié)果為真,說明取到的當(dāng)前字符不是空字符,這時執(zhí)行str[j++]=str[i],即將非空格字符保存到數(shù)組中;如果為假,說明取到了空格字符,此時不保存,而接著執(zhí)行下次循環(huán)跳過空格字符。循環(huán)結(jié)束后執(zhí)行str[j]=’\\0’;,即保存字符結(jié)束標識符,用來標識字符串結(jié)束。通過上面的這些分析,我們可以知道函數(shù)fun的作用是去掉字符數(shù)組中的空格字符。

在主函數(shù)中,首先定義了一個大小為81的字符數(shù)組,然后調(diào)用函數(shù)clrscr()清除輸入文本窗口,接著輸出一條提示語句,執(zhí)行g(shù)ets(str);語句,該語句的作用是從鍵盤輸入一個字符串到str數(shù)組,碰到換行符結(jié)束。然后調(diào)用函數(shù)fun,其實參為str。通過上面對函數(shù)fun作用的分析我們可以知道,調(diào)用函數(shù)后輸入字符串中的空格符都被刪除了,最后得到的字符串為asdafaaz67。

程序最后執(zhí)行輸出語句,輸出字符數(shù)組str中的字符串,因此,程序最終的輸出結(jié)果是asdafaaz67,本題答案選A。

5.A解析:單元測試的步驟如下:

①理解需求和設(shè)計。清楚被測試模塊在整個軟件中所處的位置。一個原則是:好的設(shè)計,各模塊只負責(zé)完成自己的事情,層次與分工明確。單元測試時,可以不測試不屬于被測模塊所負責(zé)的功能,以減少測試用例的冗余。

②概覽源代碼。瀏覽源代碼,初步檢查源代碼的編碼風(fēng)格與規(guī)范,大致估算測試工作量,確定模塊的復(fù)雜程度,初步制定測試的優(yōu)先級等。

③精讀源代碼。認真閱讀和分析代碼,理解代碼的業(yè)務(wù)邏輯,檢查代碼與設(shè)計是否相符,仔細研究邏輯復(fù)雜的模塊,可采用一些檢查列表來檢查程序可能會出現(xiàn)的問題。

④設(shè)計測試用例。綜合運用白盒測試方法(并結(jié)合黑盒測試方法)設(shè)計測試用例,包括功能測試、性能測試等,要達到一定的測試覆蓋率。本題正確答案為選項A。

⑤搭建單元測試環(huán)境。這個階段主要就是寫樁模塊和驅(qū)動模塊,然后驅(qū)動模塊想辦法獲取被測試模塊對數(shù)據(jù)的處理結(jié)果,并判定返回的實際結(jié)果與測試用例的預(yù)

期結(jié)果是否一致,通過測試框架來記錄執(zhí)行的結(jié)果,對于出現(xiàn)的錯誤,還需統(tǒng)計錯誤的信息,供執(zhí)行完之后分析。

⑥執(zhí)行測試。運行寫好的驅(qū)動模塊完成對被測試模塊的測試。

⑦補充和完善測試用例。在測試過程中不斷補充測試用例,直到滿足要求為止。

⑧分析結(jié)果,給出評價。根據(jù)測試的結(jié)果分析、查找錯誤的原因,并找到解決的辦法。測試結(jié)束之后,根據(jù)測試過程的數(shù)據(jù)統(tǒng)計,給出被測試對象評價。

6.C棧是先進后出的數(shù)據(jù)結(jié)構(gòu),在對棧操作的整個過程中,棧底指針不變,入棧與出棧操作均由棧頂指針的變化來完成,因此本題答案為c)。

7.C

8.D解析:因為x的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1,因此,選項A)、C)中表達式的結(jié)果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結(jié)果為假,即等于0。

9.B題目中先是將s2字符串寫入adc.dat中,然后執(zhí)行rewind函數(shù)將寫指針放置于文件開頭,寫入s1字符串。s1字符串將前5個字符覆蓋,所以最終結(jié)果為Chinang。故本題答案為B選項。

10.C解析:本題考查的知識點是運算符的優(yōu)先級.在復(fù)合賦值語句中,應(yīng)該由右向左依次賦值,在表達式中,右端由i*=k得i=2*2為4,k=k+i,即k值為6,m=k故m=6.所以4個選項中C正確。

11.C

12.D條件表達式形式:表達式1?表達式2:表達式3。當(dāng)表達式1的值為非零值時,整個表達式的值是表達式2的值;當(dāng)表達式1的值為零值時,整個表達式的值是表達式3的值。題干中的表達式是嵌套的條件表達式w﹤x?w:z﹤y?z:x,等價于w﹤x?w:(z﹤y?z:x)。由于w取值為4,x取值為3,所以w﹤x的值為零值,整個表達式的值為z﹤y?z:x,z取值為1,y取值為2,所以z﹤y的值為非零值,整個表達式的值為z的值1。本題答案為D選項。

13.B解析:本題考查二維數(shù)組第一維的大小如何確定。二維數(shù)組第一維的大小由下列規(guī)則確定:①當(dāng)初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大?。孩诋?dāng)初值的個數(shù)不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數(shù)加1。

14.D在輸入整數(shù)或?qū)崝?shù)這類數(shù)值型數(shù)據(jù)時,輸入數(shù)據(jù)之間必須用空格、回車符、制表符等間隔符隔開,間隔符個數(shù)不限。scanf的格式控制字符串也可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配,所以逗號必須輸入。故本題答案為D選項。

15.A

16.B#define命令是C語言中的一個宏定義命令,標識符一般使用大寫,用標識符定義一個:字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。后綴自增運算a++表示先運算,后自加。意思是遇到a++了,先把當(dāng)前的a的值拿來參加運算,后面再自加。SUB(a++,b++)→(a++)*(b++)=3*4。故本題答案為B選項。

17.D本題考查指針變量的賦值。**PP是定義一個指針變量,語句pp=&p是將pp指向指針P,*P和**PP都是指針P所指的內(nèi)存空間的內(nèi)容,即b的值。

18.B

19.A程序首先使用typedef定義一種新的類型名PER,它包含3種數(shù)據(jù)成員:整數(shù)num,字符數(shù)組name,整數(shù)score。main函數(shù)使用PER定義結(jié)構(gòu)體數(shù)組s,s包含兩個PER類型的元素。然后調(diào)用函數(shù)fun將數(shù)組s傳入。fun函數(shù)的功能是比較形參數(shù)組x的兩個元素的score值的大小。若第1個元素的score值大于第2個元素的score值,就使用臨時變量t將兩個元素的score值交換。由于621大于585且x等價于實參s的指針,因此實參s的兩個元素的score也會進行交換,執(zhí)行完fun函數(shù)之后,for循環(huán)將兩個元素輸出。故本題答案為A選項。

20.CN—s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設(shè)計的圖形表示工具,所以8不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進行軟件詳細設(shè)計時使用的程序流程圖。

21.前驅(qū)一后繼前驅(qū)\r\n一\r\n后繼

22.一對多(或1:N)一對多(或1:N)

23.00解析:本題是計算5*4*3*2*1*0的值,結(jié)果為0。

24.10

25.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)

26.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。

27.(x>10&&x<100)||x<0

28.s=3s=3解析:當(dāng)k=7時,執(zhí)行case7,s++,s的值為1。當(dāng)k=6時,直接break出switch結(jié)構(gòu);當(dāng)k=5時,執(zhí)行case5,s+=2,s的值為3;當(dāng)k=4時由于不滿足for循環(huán)的條件,所以結(jié)束循環(huán),所以輸出的s的值為3。注意:循環(huán)語句和條件的嵌套使用。

29.-55。

30.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,即數(shù)據(jù)的組織形式。它分為數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的存儲結(jié)構(gòu)。

31.double或雙精度型double或雙精度型解析:C語言中,如果運算符兩邊的數(shù)據(jù)類型不同,將進行類型轉(zhuǎn)換,根據(jù)轉(zhuǎn)換規(guī)則,短整型轉(zhuǎn)為長整型;整型轉(zhuǎn)換為實型。注意:數(shù)據(jù)類型的強制轉(zhuǎn)換。

32.BB解析:因為c是字符類型變量,它只能接收一個字符,所以c=A,字符型變量在參與算術(shù)運算的時候是用其相應(yīng)的ASCII碼參與運算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。

33.->->解析:若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的標記形式有abc.a和p_abc->a。

34.

35.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數(shù)中調(diào)用了一個max函數(shù),而max函數(shù)是在調(diào)用之后定義的,所以要求填空的內(nèi)容應(yīng)該是對函數(shù)進行聲明的語句。由max函數(shù)的定義可知此函數(shù)是double型的,因此空格處應(yīng)該填doublemax或externdoublemax。

36.存儲結(jié)構(gòu)

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

38.i=0j=20i=0,j=20解析:scanf()函數(shù)的使用,該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應(yīng)要輸入的變量,所以說本題中應(yīng)該原樣輸入i=,j=,后面分別給變量0和20,所以說空格處應(yīng)該填入i=0,j=20。

39.空間復(fù)雜度和時間復(fù)雜度空間復(fù)雜度和時間復(fù)雜度解析:算法的復(fù)雜性是指對—個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。

40.集合集合

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

42.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>

分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

43.A解析:a=14,b=15,第一個&&兩側(cè)均為非零值。c='A',表達式c<'B'的值為真即1,第二個&&兩側(cè)也均為非零值。表達式(a&&b)&&(c<'B')的值為1,賦值給變量x。

44.A

45.A解析:本題涉及字符數(shù)組和指針兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以題中數(shù)組str有11個元素;②ptr指向數(shù)組str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值。

46.B解析:執(zhí)行p=&a;后,p指向整數(shù)a,*p即p的目標變量,也就是a;所以a=*p+b等價于a=a+b,可知a的值最終為11。

47.A數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。

外模式,或子模式,或用戶模式,是指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式,或邏輯模式,是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。外模式是模式的一一部分。內(nèi)模式,或存儲模式,或物理模式,是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。

48.D

49.C解析:fprintf函數(shù)工作時,多個數(shù)據(jù)間不會自珈口分隔符,選項A錯誤;浮點數(shù)的輸出格式是“%5.0f”表明其小數(shù)部分輸出0位,即沒有輸出,所以選項B也是錯誤的。

50.A解析:本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點,①原則是依次比較兩個字符串同一位置的對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值<0;當(dāng)str1=str2時,返回值為0;當(dāng)str1>str2,返回值>0。

51.C解析:在n個結(jié)點的單向鏈表(無表頭結(jié)點)中,每個結(jié)點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。

52.C解析:指針變量m和z分別指向整型變量y和i,所以這兩個指針變量中存儲的地址是不同的。變量x接受的是一個關(guān)系運算的結(jié)果,因為兩個地址是不同的,所以“z=y”的判斷結(jié)果為0。注意:C語言中,邏輯值的表示方法。

53.D解析:a、b、c為整型,賦值運算符兩側(cè)的數(shù)據(jù)類型不一致,系統(tǒng)先自動將右側(cè)表達式求得的數(shù)值,按賦值號左邊變量的類型進行轉(zhuǎn)換,再賦值給左邊的變量。去掉右側(cè)表達式值的小數(shù)部分變?yōu)檎麛?shù)賦值給變量c,c的值為2。

54.A解析:本題主要考查按位求反運算和整型常量的表示:①十六進制整型常量的形式是以數(shù)字0x或0X開頭的十六進制字符串;②按位求反運算的規(guī)則是:將二進制表示的運算對象按位取反,即將1變0,將0變1?!?x11”即0000000000010001,進行按位求反運算“~0x11”后為1111111111101110,即OxFFEE。

55.B解析:(1010010)2=(165)10=(A5)16。

56.A解析:函數(shù)f1(x,y)的功能返回x,y中較大的一個,而函數(shù)f2(x,y)的功能是返回x,y中較小的一個,所以f1(a,b)=4,f1(c,d)=3,f2(c,d)=2,故e=f2(4,5),f=(3,2)=3,g=4+3+5+2-4-3=7。

57.B解析:在主函數(shù)中,定義了一個結(jié)構(gòu)體型指針變量head,然后將函數(shù)CreatList()的返回值賦給指針變量head,從這里可知函數(shù)CreatList()的返回值為struetnode*類型,所以第48處的空格處應(yīng)該填struetnode*;在函數(shù)CreatList()中首先定義三個結(jié)構(gòu)體型指針變量h,p和q,然后調(diào)用malloc()函數(shù)分配了一個結(jié)點空間,并讓指針h指向它,開始指針p、q和h都指向它,然后調(diào)用一個while循環(huán)語句,當(dāng)?shù)竭_字符串?dāng)?shù)組s的末尾結(jié)束循環(huán),在每次循環(huán)中,分配一個結(jié)點空間,并讓p指向它,然后讓該結(jié)點的data域的值等于字符串指針s所指的值,故49處的空格處應(yīng)填*s;接下來讓指針q所指結(jié)點的指針域指向結(jié)點p,然后讓指針q指向該指針的所指結(jié)點的下一個結(jié)點即p。

58.A解析:本題主要考查按位求反運算和整型常量的表示:①十六進制整型常量的形式是以數(shù)字0x或OX開頭的十六進制字符串;②按位求反運算的規(guī)則是:將二進制表示的運算對象按位取反,即將1變0,將0變I?!癘xll”即0000000000010001,進行按位求反運算“~Ox11”后為1111111111101110,即0xFFEE。

59.D數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)則是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的物理實現(xiàn),有時也稱作數(shù)據(jù)的物理結(jié)構(gòu)。兩者的區(qū)別是數(shù)據(jù)的邏輯結(jié)構(gòu)只涉及到數(shù)據(jù)之間抽象的數(shù)學(xué)關(guān)系。存儲結(jié)構(gòu)則涉及到如何在計算機中通過對數(shù)據(jù)的物理存儲進行組織來表達數(shù)據(jù)元素之間的邏輯關(guān)系。比如在線性表的順序存儲中是利用物理存儲空間上的連續(xù)性來表達線性表中數(shù)據(jù)的前后件關(guān)系;在線性表的鏈式存儲中是通過指針域構(gòu)成的邏輯鏈條來表達數(shù)據(jù)的前后件關(guān)系。一般的,一種數(shù)據(jù)的邏輯結(jié)構(gòu)對應(yīng)的物理實現(xiàn),即數(shù)據(jù)的存儲結(jié)構(gòu)不止一種。因此選項D正確。

60.C解析:選項A是先定義一個結(jié)構(gòu)體類型,然后再定義結(jié)

溫馨提示

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

最新文檔

評論

0/150

提交評論