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

下載本文檔

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

文檔簡介

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

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

intm=0xabc,n=0xabc;

m-=n;

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

執(zhí)行后的輸出結(jié)果是A.A.0X0

B.0x0

C.0

D.0xABC

2.

3.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)的敘述中,正確的是()。

A.數(shù)組是同類型值的集合

B.遞歸算法的程序結(jié)構(gòu)比迭代算法的程序結(jié)構(gòu)更為精煉

C.樹是一種線性結(jié)構(gòu)

D.用一維數(shù)組存儲二叉樹,總是以先序遍歷的順序存儲各結(jié)點

4.

5.輸出語句“printf(“%d\n”,11+011);”的輸出結(jié)果是()。

A.20B.22C.022D.021

6.程序中頭文件typel.h的內(nèi)容是:#defineN5#defineM1N*3程序如下:#include“typel.h”#defineM2N*2main(){inti;i=M1+M2;Printf(“%d\n”,0;}程序編譯后運行的輸出結(jié)果是:

A.10B.20C.25D.30

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

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號"{"和"}"只能作為函數(shù)體的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

8.利用E-R模型進行數(shù)據(jù)庫的概念設(shè)計,可以分成3步:首先設(shè)計局部E-R模型,然后把各個局部E-R模型綜合成一個全局的模型,最后對全局E-R模型進行(),得到最終的E-R模型。

A.簡化B.結(jié)構(gòu)化C.最小化D.優(yōu)化

9.有以下函數(shù):intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)功能敘述正確的是()。

A.將串s復(fù)制到串tB.比較兩個串的大小C.求字符串s的長度D.求字符串s所占字節(jié)數(shù)

10.用二分法查找一個長度為10的,排好序的線性表,查找不成功時,最多需要比較()次

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

11.在決定選取何種存儲結(jié)構(gòu)時,一般不考慮()。

A.各結(jié)點的值如何B.結(jié)點個數(shù)的多少C.對數(shù)據(jù)有哪些運算D.所用的編程語言實現(xiàn)這種結(jié)構(gòu)是否方便

12.

13.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8

14.

15.采用表結(jié)構(gòu)來表示數(shù)據(jù)和數(shù)據(jù)間聯(lián)系的模型是()。

A.層次模型B.概念模型C.網(wǎng)狀模型D.關(guān)系模型

16.

17.圖的BFS生成樹的樹高比DFS生成樹的樹高()

A.小或相等B.小C.大或相等D.大

18.算法是指為解決某個特定問題而采取的確定且有限的步驟,下面不屬于算法的五個特性的是A.A.有零個輸入或多個輸入B.高效性C.有窮性D.確定性

19.

20.設(shè)有兩個串p和q,求q在p中首次出現(xiàn)的位置的運算稱為()。

A.連接B.模式匹配C.求子串D.求串長

二、2.填空題(20題)21.已知head指向一個帶頭結(jié)點的單向鏈表,鏈表中每個結(jié)點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結(jié)點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

22.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

23.下列程序的輸出結(jié)果是【】。

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

24.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

printf("%d\n",p+2);

}

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

25.以下程序的輸出結(jié)果是______。

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);

}

26.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、______和自定義完整性。

27.與表達(dá)式a+=b等價的另一書寫形式是______。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

pfintf("%d,%d",y,x);

29.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

30.以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?/p>

voidfun(char*w,charx,int*n)

{inti,p;

p=0;

w[*n]=x;

while(x>w[p])p++;

for(i=*n;i>p;i--)w[i]=【】;

w[p]=x;

++*n;}

31.以下程序的輸出結(jié)果是【】。

main()

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

inti;

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

printf("\n");}

32.已有定義;charc='';inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。

33.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。

voidfun(intx,int*y)

{……}

main()

{inta=10,b=20;

【】;/*定義變量p*/

p=fun;p(&a,&b);

}

34.數(shù)據(jù)庫存管理系統(tǒng)常見的靈敏據(jù)模型有層次、網(wǎng)狀和【】三種。

35.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

36.以下程序的功能是:處理由學(xué)號和成績組成的學(xué)生記錄,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)高的學(xué)生可能不只一個,函數(shù)返回分?jǐn)?shù)最高學(xué)生的人數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

37.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

38.數(shù)據(jù)庫的邏輯模型設(shè)計階段的任務(wù)是將______轉(zhuǎn)換成關(guān)系模式。

39.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。

40.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{

inti,a[20],sum,count;

sum=count=0;

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

scanf("%d",(______);

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

{

if(a[i]>0)

{

count++;

sum+=(______);

}

}

printf("sum=%d,count-%dkn",sum,count);

}

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

A.預(yù)處理命令行必須位于C源程序的起始位置

B.在C語言中,預(yù)處理命令行都以“#”開頭

C.每個C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>

D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能

42.設(shè)整型數(shù)i=5,則printf("%d",i+++++i);的輸出為______。

A.10B.11C.12D.語法錯誤

43.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類說明是______。

A.auto和static

B.auto和register

C.register和static

D.extern和register

44.下列關(guān)系運算的敘述中,正確的是()。A.A.投影、選擇、連接是從二維表行的方向進行的運算

B.并、交、差是從二維表的列的方向來進行運算

C.投影、選擇、連接是從二維表列的方向進行的運算

D.以上3種說法都不對

45.程序中對fun()函數(shù)有如下說明void*fun();此說明的含義是______。

A.fun函數(shù)無返回值

B.fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型

C.fun函數(shù)的返回值是無值型的指針類型

D.指針fun指向一個函數(shù),該函數(shù)無返回值

46.以下對C語言函數(shù)的有關(guān)描述中,正確的是______。

A.在C程序中,調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C.函數(shù)必須有返回值,否則不能使用函數(shù)

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中

47.下面程序段中c的二進制值是______。chara=3,b=6,c;c=ab<<1;

A.1011B.1111C.11110D.11100

48.當(dāng)用“#defineF37.5f”定義后,下列敘述正確的是()。

A.F是float型數(shù)B.F是Char型數(shù)C.F無類型D.F是字符串

49.12.以下說法中正確的是()

A.#define和printf都是C語句

B.#define是C語句,而printf不是

C.printf是C語句,但#define不是

D.#define和printf都不是C語句

50.結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是()。

A.過程、子程序和分程序B.順序、選擇和重復(fù)C.遞歸、堆棧和隊列D.調(diào)用、返回和轉(zhuǎn)移

51.有以下程序:main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后輸出結(jié)果是()。

A.70B.07C.11D.430

52.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()

53.有以下程序intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);pfintf(“%d\n”,i);}程序運行后的輸出結(jié)果是

A.-4B.1C.4D.8

54.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>union{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

55.以下敘述中正確的是

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為stoic存儲類,其作用域?qū)⒈粩U大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

56.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運行階段得到初值0

57.有以下程序#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));程序運行后的輸出結(jié)果是

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

58.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rld

59.結(jié)構(gòu)化程序設(shè)計方法的3種基本控制結(jié)構(gòu)中不包括

A.循環(huán)結(jié)構(gòu)B.遞歸結(jié)構(gòu)C.順序結(jié)構(gòu)D.選擇結(jié)構(gòu)

60.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

四、選擇題(20題)61.下列關(guān)于Internet和Web的說法中,正確的是()。

A.Web就是Internet的別稱

B.Web是基于Internet之上的一個應(yīng)用服務(wù)

C.Internet是基于Web之上的一個信息系統(tǒng)

D.Internet與Web沒有任何關(guān)系

62.

63.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達(dá)式a/b+C—k值的類型為:()。

A.intB.doubleC.floatD.char

64.以下敘述中錯誤的是()。

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值.

D.當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL

65.若有以下程序段

intm=0xabc,n=0xabc;

m-=n;

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

執(zhí)行后的輸出結(jié)果是A.A.0X0

B.0x0

C.0

D.0xABC

66.

67.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個元組就是一個字段

D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

68.下面敘述中錯誤的是()。

A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B.對被調(diào)試的程序進行“錯誤定位”是程序調(diào)試的必要步驟

C.程序調(diào)試通常也稱為Debug

D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性

69.已知大寫:字母A的ASCIl碼是65,小寫字母a的ASCIl碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是()。

70.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

71.兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結(jié)果是()。

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

A.7和5B.6和3C.7和4D.6和4

72.下列敘述中正確的是()。A.A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句B.cotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用got0語句

73.有以下程序:

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

74.

75.

76.已定義以下函數(shù):

fun(int*p)

{return&p;}

該函數(shù)的返回值是()。

A.不確定的值

B.形參p中存放的值

C.形參p所指存儲單元中的值

D.形參p的地址值

77.在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。

A.外模式B.內(nèi)模式C.概念模式D.邏輯模式

78.

79.有以下程序:

voidmain()

{intk=10,n=0;

for(;n<k;)

{//n++;

if(n++%3!=0)continue;

k--;}

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

}

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

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

80.

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

main

{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7)

if(p[i]%2)j+=p[i];

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

}

A.42B.45C.56D.60

五、程序改錯題(1題)81.已知一個數(shù)列,從0項開始的前3項為0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc()的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當(dāng)n=11時,程序的輸出結(jié)果應(yīng)為32.197745。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf("The%ssstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1fkn",s.s[i]);printf("\nknave=%7.3fkn",s.aVe);printf("\n");}

參考答案

1.C本題考查C語言中的數(shù)據(jù)輸出格式。

題目中定義了兩個整型變量m、n,對這兩個變量賦值,輸入的數(shù)值為十六進制整數(shù),并且有m=n。進行m-n運算后,將減法所得到的值賦給m,并將m值輸出。其中printf的格式字符選用的格式字符為x,即以十六進制形式輸出整數(shù)。注意,0x是表示該數(shù)為十六進制的標(biāo)志,輸出數(shù)據(jù)時,數(shù)據(jù)前面不會自動加上進制的標(biāo)志。

2.A

3.B

4.B

5.A“printf(“%d\\n”,11+011);”中,“11”為十進制數(shù),“011”為八進制數(shù),%d表示以十進制格式輸出。因此,先將八進制數(shù)轉(zhuǎn)化為十進制數(shù),即(011)8=81×1+1×80=(9)10,相當(dāng)于“printf(“%d\\n”,11+9)”,輸出結(jié)果為20。故本題答案為A選項。

6.C解析:編譯預(yù)處理時,用“typel.h”中的內(nèi)容替代命令#include“typel.h”。表達(dá)式“i=M1+M2”經(jīng)過宏替換為“i=5*3+5*2”即i=25,所以最后輸出的i的值為25。

7.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確:在C語言中,函數(shù)體是從花括號{開始,到花括號}結(jié)束。但沒有規(guī)定花括號{和}只能作為函數(shù)體定界符,故選項B錯誤;選項C中前半句是正確的,C程序由一個或多個函數(shù)所組成,但不是所有的函數(shù)都由用戶自己命名,有些函數(shù),比如主函數(shù)main()就不能由用戶來命名,故選C不正確;在C語言中明確規(guī)定每條語句以分號;結(jié)束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。

8.D解析:在概念設(shè)計中按照模塊的劃分畫出每個模塊的E-R圖,然后把這些圖合成一張E-R圖作為全局模型,最后應(yīng)該對全局E-R圖進行優(yōu)化,看看是否有重復(fù)和不合理的地方。不能只是進行簡單的合并。

9.Caaa函數(shù)中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針t不斷遞增,直到t指向字符串結(jié)束標(biāo)識處。當(dāng)t指向結(jié)束標(biāo)識處時,由于后綴“運算符,它還會被再遞增1,因此“t--”語句讓它回到結(jié)束標(biāo)識處。最后返回t-s,s還是指向字符串第1個字符處,而t指向了字符串結(jié)尾,故返回值為字符串的長度。故本題答案為C選項。

10.C

11.A

12.D

13.B本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行b=2+1=3,最終t=2+3=5。

14.A

15.D關(guān)系模型采用二維表來表示,簡稱表。本題答案為D選項。

16.D

17.A

18.B

19.A

20.B

21.structlink*headstructlink*head解析:考查用指針引用結(jié)構(gòu)體變量成員數(shù)據(jù)的方法。因為本題中是用結(jié)構(gòu)體變量構(gòu)成了鏈表,所以要從鏈表頭節(jié)點,逐個節(jié)點的引用結(jié)構(gòu)體的數(shù)據(jù)域,需要有指向結(jié)構(gòu)體變量的指針,依次指向各個節(jié)點,即p=p->next,而用指針引用結(jié)構(gòu)體成員數(shù)據(jù)的方法為:p->data。

22.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

23.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

24.11解析:首先計算if語句后面的表達(dá)式,根據(jù)運算符的優(yōu)先級可知,先算“a!=0”,該值為1,再把1賦值給p,結(jié)果為1(真),執(zhí)行其后的printf語句,輸出的值為1。

25.在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]…b[9]的值相加,結(jié)果為盟。\r\n\r\n

26.參照完整性參照完整性

27.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

28.8208,20解析:本題考查while循環(huán)和++運算符的運用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8=20,此時y=8。

29.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構(gòu)來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實現(xiàn)的。

30.w[i-1]w[i-1]解析:在用數(shù)組實現(xiàn)的有序序列中插入內(nèi)容,必須先尋找插入位置。插入位置找到后,需將插入位置之后的元素向后移動一個位置,留出插入點。最后,將元素插入,并增加序列的元素個數(shù)。函數(shù)為了簡化尋找插入位置循環(huán)的循環(huán)條件,預(yù)先在序列的最后置入插入值。插入位置之后的元素向后移動一個位置必須從最后一個元素開始往前逆序移動,是將前一個元素向后移,所以在空框處應(yīng)填入w[i-1]。

31.SOSO解析:考查用指針引用字符串?dāng)?shù)組中元素的方法。題中需要注意兩個問題:一是for循環(huán)的修正表達(dá)式共執(zhí)行兩次'i--'操作;二是*p[i]是對某個字符的引用。

32.00解析:本題考查數(shù)據(jù)類型及其運算的邏輯運算,c為空格字符但其ASCII碼不為0,所以!c=0,在邏輯與運算中,只要有一項為假,其值為0,所以b的值為0。

33.void(*p)()或void(*p)(int*int*)void(*p)()或void(*p)(int*,int*)

34.關(guān)系關(guān)系

35.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。

36.max==a[i].smax==a[i].s解析:該程序使用循環(huán)嵌套,第1個for語句的作用是找出最大值。第2個循環(huán)的作用是找出與max相等的成績,也即最高成績的學(xué)生,并存入b中。

37.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用。可知,循環(huán)隊列應(yīng)當(dāng)是物理結(jié)構(gòu)。

38.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設(shè)計的任務(wù)是將概念模型進一步轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯設(shè)計的主要工作是將E-R圖轉(zhuǎn)換成關(guān)系模式。

39.數(shù)據(jù)存儲數(shù)據(jù)存儲

40.&a[i]或a+ia[i]或*(a+i)&a[i]或a+ia[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20得整形數(shù)組,然后通過—個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[1]或a+i,然后在通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于。將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a[i]或*(a+i)。

41.B解析:選項B)正確,預(yù)處理命令行之前都有一個“#”符號。C語言提供三種預(yù)處理:宏替換,文件包含,條件編譯。

42.D解析:C語言中有基本的算術(shù)運算符(+、-、*、/)還包括自增自減運算符(++、-),在C語言解析表達(dá)式時,它總是進行貪婪咀嚼,這佯,該表達(dá)式就被解析為i+++++i,顯然該表達(dá)式不合C語言語法。

43.B解析:extern、register、static、auto分別是定義外部變量、寄存器變量、靜態(tài)變量、自動變量,其中,自動變量和寄存器變量屬于動態(tài)存儲,調(diào)用時臨時分配單元而靜態(tài)變量和外部變量屬于靜態(tài)存儲,在整個程序運行時都存在。

44.C解析:在關(guān)系模型的數(shù)據(jù)語言中,一般除了運用常規(guī)的集合運算(并、交、差、笛卡爾積等),還定義了一些專門的關(guān)系運算,如投影、選擇、連接等。前者是將關(guān)系(即二維表)看成是元組的集合,這些運算主要是從二維表的行的方向來進行運算的。后者是從二維表的列的方向來進行運算的。

45.C解析:C語言中函數(shù)的定義分為有參函數(shù)的定義和無參函數(shù)的定義。無參函數(shù)的定義形式為:

類型標(biāo)識符函數(shù)名()

{說明部分

語句

}

有參函數(shù)的定義有兩種形式:

類型標(biāo)識符函數(shù)名(形式參數(shù)列表)

形式參數(shù)說明

{說明部分

語句

}

類型標(biāo)識符函數(shù)名(類型名形參1,類型名形參2,…)

{說明部分

語句

}

其中函數(shù)名為用戶定義的C語言的合法標(biāo)識符,其前面的類型標(biāo)識符用來說明函數(shù)值的類型,可以是C允許的任何類型,如int、char、float、double和指針類型等。當(dāng)函數(shù)值為整型時類型標(biāo)識符可以省略,如果函數(shù)沒有返回值,類型標(biāo)識符可以是void型。當(dāng)函數(shù)的形參多于一個時,各個形參之間用逗號分隔。

46.A解析:在C語言中,提供了許多庫函數(shù)供用戶使用,因此選項D錯誤。

47.B解析:C語言提供六種位運算符,按優(yōu)先級由高到低的順序分別為:取反(~)、左移(<<)和右移(>>)、按位與(&)、按位異或(∧)、按位或(|)。所以表達(dá)式c=ab<<1先運算b<<1得二進制值為00001100,再運算a∧00001100,最后得二進制值00001111。

48.D解析:字符替換定義格式為:#define標(biāo)識符(形參表)形參表達(dá)式。題中F是代表形參表達(dá)式的標(biāo)識符(字符串)。

49.CC[解析]#define是宏命令,而不是C語句

50.BB?!窘馕觥砍绦虻娜N基本控制結(jié)構(gòu)包括:順序、選擇和重復(fù)(循環(huán)),這三種結(jié)構(gòu)就足以表達(dá)出各種其他形式的結(jié)構(gòu)。

51.A解析:在位與運算符&中參加運算的兩位都為1時,其結(jié)果為1,否則結(jié)果為0。所以本題中的4|3:01002|00112=01112=7。位與運算符|中參加運算的兩位只要有一個為1,則結(jié)果為1,只有當(dāng)相應(yīng)的兩位都為0結(jié)果才為0。所以本題中的4&3=01002&00112=00002=0。最后輸出a和b的值為7和0。故4個選項中選項A符合題意。

52.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。

53.C解析:函數(shù)f()有3個形式參數(shù)f1、f2和x,其中f1、f2是指向函數(shù)的指針變量。在main()函數(shù)中執(zhí)行了函數(shù)調(diào)用“f(fa,fb,2)”,從而使f()的形式參數(shù)f1指向了fa,形式參數(shù)f2指向了fb,把實參2傳給了形參變量x。函數(shù)f()中的return語句相當(dāng)于“fb(2)-fa(2)”(fb(2)的返回值為2*2*2=8,fa(2)返回值為2*2=4)即(8-4),值為4。函數(shù)f()執(zhí)行后把返回值4賦給了i,輸出i的值是4。

54.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同—個存儲單元,且此存儲單元為2個字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以兄i的值為266。

55.A解析:靜態(tài)局部變量在整個程序運行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)著永久性的存儲單元。由此可知靜態(tài)局部變量的生存期將一直延長到程序運行結(jié)束。故選項A正確;而全局變量的只有一種靜態(tài)存儲類別,故全局變量說明為stattc存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運行結(jié)束,故選項B不正確;未賦初值的auto型變量的初值是隨機的,未賦初值的static型變量的初值是0(故選項C和選項D不正確)。所以;4個選項中選項A符合題意。

56.C本題主要考查數(shù)組的定義及初始化。在對數(shù)組進行定義和初始化時,需要注意以下事項。

(1)數(shù)組的內(nèi)存空間在編譯時確定,定義數(shù)組時的n值只能使用常量,不能使用變量。

(2)定義數(shù)組時可以不標(biāo)明數(shù)組元素的個數(shù),而是通過賦初值的方式確定,編譯系統(tǒng)將自動計算花括號內(nèi)的數(shù)據(jù)數(shù)量作為數(shù)組的元素個數(shù)。

(3)數(shù)組初始化時,當(dāng)初值的個數(shù)小于整型常量n時,編譯系統(tǒng)會自動補0。一旦給定初值數(shù)超過n,編譯系統(tǒng)將報錯。

(4)初始化數(shù)組的元素類型,必須與定義數(shù)組時的類型一致。

(5)數(shù)組名記錄了數(shù)組在內(nèi)存中的首地址,其值不能更改。

(6)除字符數(shù)組外,不能直接用數(shù)組名對數(shù)組進行整體輸入或輸出。

本題中定義了一個3行4列的數(shù)組,但沒有對其進行賦初值操作,可能我們會想在系統(tǒng)編譯時會自動補0,這只是在初值個數(shù)小于數(shù)組定義大小的情況下的操作,如果沒有進行賦初值操作,數(shù)組中的元素值是不能被確定的。因此,本題答案選C。

57.A解析:在程序中先用表達(dá)式將宏替換掉,則輸出語句中的表達(dá)式為(a++)*(b++),而a++的值為3,b++的值為4。因此最后的值為3*4=12。

58.A解析:C語言中文件有文本文件與二進制文件,對文件的使用前必須先打開,打開方式有只讀、寫入、讀寫等方式。

59.B解析:本題考查了程序的基本結(jié)構(gòu)。程序由一些基本結(jié)構(gòu)組成。任何一個大型的程序都由3種基本結(jié)構(gòu)組成,由這些基本結(jié)構(gòu)順序的構(gòu)成了一個結(jié)構(gòu)化的程序。這3種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

60.A解析:數(shù)據(jù)流圖包括4個方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體)。不包括選項中的控制流。

61.B

62.A

63.B雙目運算中兩邊運算量類型轉(zhuǎn)換規(guī)律:

運算數(shù)1\t\t\t\r\n\t\t\t\t\t運算數(shù)2\t\t\t\t\r\n\t\t\t\t\t轉(zhuǎn)換結(jié)果類型\t\t\t\t\r\n\t\t\t\t\t短整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t短整型一>長整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t整型一>長整型\t\t\t\t\r\n\t\t\t\t\t字符型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t字符型一>整型\t\t\t\t\r\n\t\t\t\t\t有符號整型\t\t\t\t\r\n\t\t\t\t\t無符號整型\t\t\t\t\r\n\t\t\t\t\t有符號整型一>無符號整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t浮點型\t\t\t\t\r\n\t\t\t\t\t整型一>浮點型\t\t\t\t\r\n\t在a/b的時候,a,b的類型不一致,根據(jù)類型轉(zhuǎn)換規(guī)則,把整型轉(zhuǎn)換成double類型,之后的加、減類似。轉(zhuǎn)化規(guī)則為char,short一>int->unsigned->long->double←float。

64.C解析:函數(shù)形參和實參分別占用不同的內(nèi)存單元,改變形參的值不會影響對應(yīng)實參的值,選項A)正確。指針類型的函數(shù)可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數(shù),選項C)錯誤。

65.C本題考查C語言中的數(shù)據(jù)輸出格式。

題目中定義了兩個整型變量m、n,對這兩個變量賦值,輸入的數(shù)值為十六進制整數(shù),并且有m=n。進行m-n運算后,將減法所得到的值賦給m,并將m值輸出。其中printf的格式字符選用的格式字符為x,即以十六進制形式輸出整數(shù)。注意,0x是表示該數(shù)為十六進制的標(biāo)志,輸出數(shù)據(jù)時,數(shù)據(jù)前面不會自動加上進制的標(biāo)志。

66.C

67.D數(shù)據(jù)處理是指將數(shù)

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論