2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在順序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找關(guān)鍵碼12需做()次關(guān)鍵碼比較。

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

2.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

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

A.不確定的值B.2C.1D.0

4.設散列表中m個存儲單元,散列函數(shù)為H(key)=key%p,p是最好選擇()。

A.小于等于m的最大奇數(shù)B.小于等于m的最大素數(shù)C.小于等于m的最大偶數(shù)D.小于等于m的最大合數(shù)

5.在一個鏈式隊列中,假設f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點的運算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

6.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的運行結(jié)果是()。

A.500B.401C.503D.1404

7.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。

A.—個存儲區(qū),存放要讀的數(shù)據(jù)項

B.一個整數(shù),代表要讀入的數(shù)據(jù)項總數(shù)

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

D.—個指針,指向讀入數(shù)據(jù)要存放的地址

8.

9.對于C語言的函數(shù),下列敘述中正確的是()。

A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套

B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套

C.函數(shù)的定義和調(diào)用都不能嵌套

D.函數(shù)的定義和調(diào)用都可以嵌套

10.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

11.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序運行結(jié)果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

13.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有‘\0’

14.若有定義“inta=3,*p=&a,**q=&p;”,則以下敘述中錯誤的是()。

A.q是指針變量,*q就是變量a

B.p是指針變量,p指向變量a

C.q指向變量p,所以*q指向變量a

D.*p與**q都代表變量a

15.以下程序段中,與語句“k=a>b?(b>c?1:0):0;”功能相同的是()。

A.if((a>b)||(b>c))k=1;elsek=0;

B.if((a>b)&&(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

16.對于順序存儲的線性表,訪問結(jié)點和增加、刪除結(jié)點的時間復雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

17.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

18.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序運行后的輸出結(jié)果是()。

A.CBB.BCAC.CCBBD.CDBCA

19.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序運行后的輸出結(jié)果是()。A.1313B.2234C.3234D.1234

20.常采用的兩種存儲結(jié)構(gòu)是()。

A.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B.散列方法和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

二、2.填空題(20題)21.以下程序運行時,若從鍵盤輸入:102030<回車>,輸出的結(jié)果是【】。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

prinff("%d%d%d\n",i,j,k);

}

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

23.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.Fibonacci數(shù)列中的頭兩個數(shù)是1和1,從第3個數(shù)開始,每個數(shù)等于前兩個數(shù)之和。下述程序計算此數(shù)列的前20個數(shù),且每行輸出5個數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intf,f1=1,f2=1;

inti;

printf("%6d%6d",f1,f2);

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

{f=【】;

printf("%6d",f);

if(【】)

printf("\n");

f1=f2;

【】;

}

}

25.“printf("%d\n",strlen("\t\"023\xABC\n");”語句的輸出結(jié)果是______。

26.以下程序運行結(jié)果是【】。

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

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

intx=0,y=0;

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

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

28.以下函數(shù)用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

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

if(【】>max)max=【】;

return(max);

}

29.下面的程序為6個整型變量A、B、C、D、E、F輸入整數(shù),并按從大到小的順序輸出整數(shù)及其所對應的變量名。例如,輸入的數(shù)為3、2、5、7、4、6,則輸出的形式為:D(7)F(6)C(5)E(4)A(3)B(2)。

#include<stdio.h>

intA,B,C,D,E,F(xiàn);

struct

{

charn;

【】;

}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;

main()

{

inti,j;

for(i=0;i<6;i++)scanf("%d",【】);

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

for(j=0;j<5-i;j++)

if(【】)

{

t=tb1[j];

tb1[j]=tb1[j+1];

tb1[j+1]=t;

}

for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);

printf("\n");

}

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

#include<stdio.h>

#include<stdlib.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]);

}

31.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

32.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

33.以卜函數(shù)sstrcat()的功能是實現(xiàn)寧符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:s所指字符串為abcd,t所指字符申為efgh,函數(shù)調(diào)用后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

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

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

35.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

36.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為______。

37.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

38.單元測試又稱模塊測試,一般采用【】測試。

39.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

40.以下函數(shù)的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

三、1.選擇題(20題)41.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.數(shù)組元素引用不合法,輸出結(jié)果不定

42.若有說明:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

43.下面選項中不屬于面向?qū)ο蟪绦蛟O計特征的是()。

A.繼承性B.多態(tài)性C.類比性D.封閉性

44.設有數(shù)組定義:chararray[]="China";則數(shù)組array所占的空間為()

A.4個字節(jié)B.5個字節(jié)C.6個字節(jié)D.7個字節(jié)

45.有以下程序:#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei--;}i+=13,a+=i;}pfintf("%d\n",A);}程序的輸出結(jié)果是()。

A.62B.63C.23D.36

46.C語言中運算對象必須是整型的運算符是()。

A.%=B./C.=D.<=

47.在設計程序時,應采納的原則之一是______。

A.程序結(jié)構(gòu)應有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

48.設有下列二叉樹:[*]對此二叉樹前序遍歷的結(jié)果為A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

49.下列敘述中,正確的是

A.用E-R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E-R圖只能表示實體集之間一對一的聯(lián)系

C.用E-R圖只能表示實體集之間一對多的聯(lián)系

D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

50.下列敘述中正確的是()。

A.接口復雜的模塊,其耦合程度一定低

B.耦合程度弱的模塊,其內(nèi)聚程度一定低

C.耦合程度弱的模塊,其內(nèi)聚程度一定高

D.上述3種說法都不對

51.在C語言中,不適用于局部變量的存儲類說明符是()

A.autoB.registerC.staticD.extern

52.下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()

A.內(nèi)模式可以有多個,外模式和模式只有一個

B.外模式可以有多個,內(nèi)模式和模式只有一個

C.內(nèi)模式只有一個,模式和外模式可以有多個

D.模式只有一個,外模式和內(nèi)模式可以有多個

53.數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是()

A.概念設計和邏輯設計B.模式設計和內(nèi)模式設計C.內(nèi)模式設計和物理設計D.結(jié)構(gòu)特性設計和行為特性設計

54.設有如下三個關(guān)系表:

下列操作中正確的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

55.按條件f對關(guān)系R進行選擇,其關(guān)系代數(shù)表達式為

A.

B.

C.

D.

56.以下敘述中,正確的是______。

A.do…while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替

B.do…while語句構(gòu)成的循環(huán)只能用break語句退出

C.用do…while語句構(gòu)成的循環(huán),在while后的表達式為非零時結(jié)束循環(huán)

D.用do…while語句構(gòu)成的循環(huán),在while后的表達式為零時結(jié)束循環(huán)

57.下列四個敘述中,錯誤的是_______。

A.C語言中的關(guān)鍵字必須小寫

B.C語言中的標識符必須全部由字母組成

C.C語言不提供輸入輸出語句

D.C語言中的注釋行可以出現(xiàn)在程序的任何位置

58.下列說法正確的是()。

A.一個C程序可以有多個主函數(shù)

B.一個C語言的函數(shù)中只允許有一對花括號

C.C程序的書寫格式是自由的,一個語句可以寫在一行上,也可以寫在多行內(nèi)

D.在對C程序進行編譯時,可以發(fā)現(xiàn)注釋行中的拼寫錯誤

59.在函數(shù)調(diào)用過程中,如果函數(shù)funA調(diào)用了函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)funA,則

A.稱為函數(shù)的直接遞歸調(diào)用B.稱為函數(shù)的間接遞歸調(diào)用C.稱為函數(shù)的循環(huán)調(diào)用D.C語言上不允許這樣的遞歸調(diào)用

60.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。

A.在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3

B.由于p數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符串長度為3

C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但p數(shù)組中字符串長度為3

D.由于p和q數(shù)組中都沒有字符串結(jié)束符,故長度都不能確定

四、選擇題(20題)61.有以下程序則輸出結(jié)果是()。A.1245B.1256C.1278D.1267

62.在滿足實體完整性約束的條件下()。

A.一個關(guān)系中應該有一個或多個候選關(guān)鍵字

B.一個關(guān)系中只能有一個候選關(guān)鍵字

C.一個關(guān)系中必須有多個候選關(guān)鍵字

D.一個關(guān)系中可以沒有候選關(guān)鍵字

63.以下能正確定義字符串的語句是(

)。

64.用鏈表表示線性表的優(yōu)點是()。A.A.便于隨機存取B.花費的存儲空間較順序存儲少

C.便于捅入和刪除操作

D.數(shù)據(jù)元素的物理順序與邏輯順序相同

65.

66.閱讀下面程序,則執(zhí)行后的結(jié)果是()。

A.tomeetme

B.tmem

C.oete

D.tome

67.有以下程序:

程序運行后,若從鍵盤輸入(從第l列開始.:

123<回車>

45678<回車>

則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

68.若有定義語句:"inta[4][10],*P,*q[4];"且0≤i<4,則錯誤的賦值是()。

A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

69.

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

71.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

72.

73.

74.有以下程序段:

當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

75.選出下列標識符中不是合法的標識符的是()。

A.hot_doB.cat1C._priD.2ab

76.瀏覽器中用于負責向用戶顯示數(shù)據(jù)的是()。

A.WWWB.IP地址C.HTMLD.DNS

77.設有定義:intx[2][3];,則以下關(guān)于二維數(shù)組X的敘述錯誤的是()。

A.x[0]可看做是由3個整型元素組成的一維數(shù)組

B.x[0]和x[l]是數(shù)組名,分別代表不同的地址常量

C.數(shù)組X包含6個元素

D.可以用語句x[o]=0;為數(shù)組所有元素賦初值0

78.在最壞情況下,堆排序的時間復雜度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

79.

80.有以下程序程序運行后的輸出結(jié)果是()。

A.8B.4C.6D.2

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是按以下遞歸公式求函數(shù)值。例如,當給n輸入3時,函數(shù)值為60;當給n輸入6時,函數(shù)值為480。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將s所指字符串中ASCII值為奇數(shù)的字符刪除,將剩余字符形成的新字符串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII值為奇數(shù),字符1的ASCII值也為奇數(shù),都應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是“BDF24”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

參考答案

1.B

2.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

3.D

\n本題for循環(huán)中,當i=0時,判斷條件i&printf('%d\n',n[k]),此時i的值是0,輸出n[k]的值也為0,0&0結(jié)果還是0,條件不成立,退出循環(huán)。所以最后輸出結(jié)果為0。

\n

4.B

5.B

6.Cfor循環(huán)中,函數(shù)f的返回值累加到變量a中。第1次循環(huán),a=0,i=0,返回值a=0*0+1=1;第2次循環(huán),a=1,i=10,返回值a=10*10+1+1=102;第3次循環(huán),a=102,i=20,返回值a=20*20+1+102=503;第4次循環(huán)a=503,i=30,不符合1<30,跳出循環(huán),最后結(jié)果輸出a=503。故本題答案為C選項。

7.Dfread函數(shù)用來讀二進制文件,其中buffer是數(shù)據(jù)塊的指針,它是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存中;size表示每個數(shù)據(jù)塊的字節(jié)數(shù);count用來指定每讀一次讀入的數(shù)據(jù)塊個數(shù);fp是文件指針,指向要讀的文件。選項A、B、C錯誤。本題答案為D選項。

8.D

9.A

10.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進行賦值后,然后返回變量a。

11.D

12.Aswitch語句中不一定使用break語句,選項A正確;break語句除了用于switch語句,還可以用于循環(huán)語句中,選項B、C錯誤;switch語句不一定需要使用default語句,選項D錯誤。本題答案為A選項。

13.A題目的fun函數(shù)內(nèi),while循環(huán)條件為“(*b=*a)!=‘\\0’”,執(zhí)行時先把指針a所指向的字符賦給指針b所在的內(nèi)存單元。如果該字符不是結(jié)束標識‘\\0’,執(zhí)行循環(huán)體“a++;b++;”,指針a、b分別指向下一個字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針a所指向的字符賦給指針b所在的內(nèi)存單元,直到遇到結(jié)束標識為止。故本題答案為A選項。

14.A由題意可知:指針變量p指向變量a,p的值是a的地址;指針變量q指向變量p,q的值是P的地址。q是指針變量,q指向p,*q是變量P,選項A錯誤;p是指針變量,p指向變量a,選項B正確;由于q指向P,因此*q指向a,選項C正確;*p和**q都代表變量a,選項D正確。故本題答案為A選項。

15.B條件表達式的含義是:如果表達式1成立,結(jié)果為表達式2的值,如果不成立,則為表達式3的值。在題干中,如果“a>b”且“b>c”,則k值為1;如果“a>b”且“b<c”,則k值為0;如果“a<b”,則k值為0。條件“a>b”與“b>c”中只要有一個條件不成立,k的值就為0。故本題答案為B選項。

16.C

17.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯Γ部梢圆捎面準酱鎯?。

18.Dputchar函數(shù)的功能是輸出一個字符,由whlie判斷條件和ch初始值可知,只要“ch≠‘A’”,執(zhí)行兩次putchar函數(shù),否則跳出循環(huán)。第1次輸出“CD”,第2次輸出“BC”,第3次輸出“A”后跳出循環(huán)。故本題答案為D選項。

19.C本題考查了宏定義與局部變量的區(qū)別,宏定義的作用范圍為整個程序,而變量的作用范圍只在定義它的函數(shù)體的部分,因此,主函數(shù)中定義的i與fun中的i互不相干。

20.AA。【解析】線性表的存儲通常分為兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。

\n

21.1030010300解析:在scanf格式控制符中有一個“*”附加說明符,表示跳過它指定的列數(shù)。程序中'%d%*d%d'表示首先將10賦給i,然后遇%。d讀入整數(shù)但不賦給任何變量,最后將讀人的整數(shù)30賦給變量j,變量k并沒有重新賦值,仍為初始值0。所以輸出的結(jié)果為10300。

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

23.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

24.f1+f2i%5==0f2=ff1+f2\r\ni%5==0\r\nf2=f解析:f用來保存前兩個數(shù)之和,并作為第三個數(shù),計算后把第二個數(shù)(f2)賦給f1,第三個數(shù)(f)賦給f2,再執(zhí)行for循環(huán)。

25.66解析:strlen()函數(shù)的作用是計算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標志\'\\0\'。

\'\\t\'f是轉(zhuǎn)義字符,代表橫向跳若干格:'\\'是轉(zhuǎn)義字符,代表雙引號;\'\\023\'只代表一個字符,而不管轉(zhuǎn)義字符后面有幾個字符;’僅AB,是以兩位十六進制數(shù)AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。

5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。

26.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結(jié)果。

27.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。

28.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩陣實際上就是一個二維數(shù)組,結(jié)合本題應為arr[2][4],所以在第一個循環(huán)中應當填寫“4”;第二個橫線處是要判斷當前的數(shù)組元素值是否大于max,所以應填寫arr[i][j];第三個橫線處是要將當前大于max的數(shù)組元素的值賦給變量max,所以應當填寫“arr[i][j]”。

29.int*ptb1[i].p*tb1[j].p<*tb1[j+1].p

30.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。

31.1010解析:函數(shù)sub遞歸調(diào)用的返回值被作為再次調(diào)用sub函數(shù)的實參傳給函數(shù)sub的形參,共進行3次遞歸調(diào)用。第1次調(diào)用sub(1234)的返回值為1234/10+1234%10=127;第2次調(diào)用sub(127)的返回值為127/10+127%10=19;第3次調(diào)用sub(19)的返回值為19/10+19%10=10。所以程序的輸出為10。

32.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

33.*t*t解析:函數(shù)中首先讓n=stxlen(s)所以while循環(huán)的循環(huán)條件表達式中*(s+n)指向字符串s的結(jié)束標志'0',處,而該處應該等于字符串t的第1個字符,另外循環(huán)體中讓s和t指向下一個字符,即s+n和t同時被移動到下一個位置,所以該處應該填*t,即t所指內(nèi)容.當t指向字符串結(jié)束標志'\\0'的時候,整個循環(huán)條件表達式的值也為0(“假”)了,循環(huán)結(jié)束.正好滿足將t所指字符串復制到s所指的字符串的尾部。

34.指針P指向數(shù)組a的首地址,執(zhí)行語句p++;后p指向數(shù)組a的第2個元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

35.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

36.1616解析:函數(shù)運算不改變數(shù)據(jù)類型,所以結(jié)果也是double型,fabs(x)是對x取絕對值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。

37.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。

38.白盒法白盒法

39.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

40.求出數(shù)組元素平均值求出數(shù)組元素平均值解析:函數(shù)有一個數(shù)組形參a和一個整型形參n。函數(shù)首先用循環(huán)求數(shù)組a的前n個元素和,然后將和除以n。即求數(shù)組元素的平均值。

41.B解析:第一個for循環(huán),給數(shù)組a的20個元素分別賦值0~19;第二個for循環(huán),給數(shù)組p賦值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三個for循環(huán),將數(shù)組p中元素的值進行累加,k=1+2+5+10=18。

42.D解析:本題中首先定義了一整型變量n并賦初值為2,接著定義了一個整型指針變量p并讓它指向n,接著又定義了一指向指針的指針變量q。選項A中給指針變量p賦值q,故這個賦值語句正確。選項B中*p=*q就是將*q的值賦給指針變量p所指向的變量n,故這個賦值語句不是非法的賦值語句。選項C中是將*q的值賦給變量n,故這個表達式不是非法的賦值語句。選項D中p為一指針變量,應該將一地址賦給它,而在此選項的表達式中將變量n而不是n的地址賦給它,故這個表達式不合法。

43.C解析:面向?qū)ο蟪绦蛟O計的特征有以下幾點:分類性、繼承性、封裝性、多態(tài)性、模塊性等。

44.C解析:在給數(shù)組賦值時,可以用一個字符串作為初值,這種方法直觀、方便,而且符合人們的習慣。數(shù)組array的長度不是5,而是6,這點必須要注意。因為字符串常量的最后由系統(tǒng)加上一個'\\0',因此,上面的初始化與下面的等價:

Chararray[]={'C','h','i','n','a','\\0'};

45.D

46.A解析:C++語言規(guī)定:取余運算符的運算對象必須是整型,復合運算符“%=”中包含%運算,它的運算對象也必須是整型。

47.A解析:程序設計的風格主要強調(diào)程序的簡單、清晰和可理解性,以便讀者理解。因此選項A是正確答案。程序濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應減少或取消;程序的長短要依照實際需要而定,并不是越短越好。因此選項B、C、D都是錯誤的。

48.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時,上述規(guī)則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結(jié)果為“ATBZXCYP”。注意:對于本題,若使用后序遍歷和中序遍歷的結(jié)果分別為"ZBTYCPXA"和"TZBACYXP"。

49.A解析:兩個實體之間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和多對多的聯(lián)系;概念模型便于向各種模型轉(zhuǎn)換。由于概念模型不依賴于具體的數(shù)據(jù)庫管理系統(tǒng),因此,容易向關(guān)系模型、網(wǎng)狀模型和層次模型等各種模型轉(zhuǎn)換。

50.C解析:影響模塊之間耦合的主要因素有兩個:模塊之間的連接形式,模塊接口的復雜性。一般來說,接口復雜的模塊,其耦合程度要比接口簡單的的模塊強,所以選項A的說法錯誤;耦合程度弱的模塊,其內(nèi)聚程度一定高,選項B錯誤;選項C正確。

51.D

52.BB)【解析】數(shù)據(jù)庫的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)

\n的外模式、模式和內(nèi)模式。一個數(shù)據(jù)庫可以有多個外模式,但只有一個模式和一個內(nèi)模式。

53.A解析:模式設計和內(nèi)模式設計是概念設計的兩種方法。物理設計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設計和行為特性-設計是數(shù)據(jù)庫應用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設計,設計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。

54.C解析:本題考查數(shù)據(jù)庫的關(guān)系代數(shù)運算。R表中只有一個域名A,有兩個記錄(也叫元組),分別是m和n;S表中有兩個域名,分別是B和C,其所對應的記錄分別為1和3。注意觀察表T,它是由R的第一個記錄依次與S的所有記錄組合,然后再由R的第二個記錄與S的所有記錄組合,形成的一個新表。上述運算恰恰符合關(guān)系代數(shù)的笛卡兒積運算規(guī)則。關(guān)系代數(shù)中,笛卡兒積運算用“×”來表示。因此,上述運算可以表示為T=R×S。因此,本題的正確答案為C。

55.C解析:選擇運算是一個一元運算,關(guān)系R通過選擇運算(并由該運算給出所選擇的邏輯條件)后仍為一個關(guān)系。這個關(guān)系是由R中那些滿足邏輯條件的元組所組成。如果關(guān)系的邏輯條件為f,則R滿足f的選擇運算可以寫成;бf(R)。

56.D

57.B解析:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線3種字符組成,且第—個字符必須為字母或下劃線。

58.C解析:本題涉及C語言基本的3個知識點:①C語言規(guī)定一個程序只允許有一個主函數(shù),一個函數(shù)內(nèi)可以允許有多個花括號;②C語言的標識符是由字母、數(shù)字、下劃線組成的,可以是大寫字母,而且標識符區(qū)分字母的大小寫;③C程序的注釋部分僅僅是方便程序員閱讀,提高程序的可讀性和可移植性,它并不參與程序的編譯,所以編譯器也就不會發(fā)現(xiàn)注釋行中的錯誤。

59.B解析:本題考核的知識點是函數(shù)遞歸調(diào)用的基本概念。在C語言中所謂函數(shù)的遞歸是在指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用.顯然題目中所說得函數(shù)調(diào)用為函數(shù)的間接遞歸調(diào)用。所以,4個選項中選項B符合題意。

60.A解析:在給p和q數(shù)組賦初值時,系統(tǒng)會自動添加字符串結(jié)束符,從題目中可以看出數(shù)組p和q都有3個字符,所以長度均為3。

61.A本題考查的是輸入輸出函數(shù)。sCanf()是格式化輸入函數(shù);getChar()函數(shù)從鍵盤緩沖區(qū)讀一個字符;putChar()輸出一個字符;printf()函數(shù)是格式化輸出函數(shù)。在題目中,程序執(zhí)行到sCanf()函數(shù)時,會暫停等待用戶輸A4個字符,按題意輸)k123<回車>后,字符l-3被分別賦值到Cl-C3中,而C4會得到一個換行符’\\\\n’。然后執(zhí)行第1個getChar()函數(shù),由于前面的sCanf()函數(shù)讀完了緩沖區(qū)中的所有字符,所以此時程序又會暫停等待用戶輸入,按題意輸入45678<回車>后,緩沖區(qū)第一個字符4賦值到。5,第二個字符5賦值給C6,所以本題應該選擇A)。

62.A【答案】:A

【知識點】:實體完整性與候選關(guān)鍵字

【解析】:在滿足數(shù)據(jù)完整性約束的條件下,一個關(guān)系可以有一個或多個候選關(guān)鍵字,但至少有一個候選關(guān)鍵字,故選A。

63.A字符串末尾一定要有結(jié)束標記,雙引號括起來的默認添加了結(jié)束標記,所以選擇A)。

64.C數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈式存儲結(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當查找元素時就需要逐.個元素查找,因此查找的時間相對更長。

65.C

66.B存放字符串的字符數(shù)組的名字就是這個字符串的首地址。本題的功能是對字符串”tomeetme”進行選擇式輸出,從第一個字母開始,每輸出一個字符即跳過一個。

67.Dputchar(c1)輸出l,putchar(c2)輸出2,

68.A\n數(shù)組名是一個存放一個數(shù)組首地址的值,是一個地址常量。而p=a不是合法的,因為p和a的基本類型不同。

\n

69.C

70.A函數(shù)的功能是對數(shù)組某一區(qū)域內(nèi)的元素隔個求和;a[3]=4,所以從4開始進行隔個求和,a[7]=8,即對4到8的元素隔個求和,4+6=10。

71.B

\n用'w'方式打開文件,意思是如果文件名相同則覆蓋原來的文件,所以當再次輸入時覆蓋了第一次的內(nèi)容,B選項正確。\n

72.B

73.B

74.B本題考查通過scanf函數(shù)輸入數(shù)據(jù)時的格式控制問題。變量J的格式控制為”%2d”,即只接收輸人數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量Y中,因為Y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項B。

75.D

76.C

77.Dx[0]是不能賦值的。

78.B若有n個元素的序列,將元素接腰序組成一棵完全二叉樹,當且僅當滿足下列條件時稱為堆。大根堆是指所有結(jié)點的值大于或等于左右子結(jié)點的值;小掇堆是指所有結(jié)點的值小于或等于左右子結(jié)點的值。在調(diào)整建堆的過程中,總是將根結(jié)點值與左、右子樹的根結(jié)點進行比較,若不滿足堆的條件,則將左、右子樹根結(jié)點值中的大者與根結(jié)點值進行交換。堆排序最壞情況需要0(nl092n)次比較,所以時間復雜度是0(nl092n),B選項正確。

79.B

80.Aa左移2位后值為8,所以答案選擇A)。

81.(1)錯誤:fun(intn);

正確:fun(intn)

(2)錯誤:if(n=1)

正確:if(n==1)

【解析】根據(jù)C語言的語法規(guī)則,函數(shù)定義之后是不加分號的。由整個程序看,函數(shù)fun()是函數(shù)定義。因此“fun(intn);”應改為“fun(intn)”;表達式n-1表示的是將1賦給變量n,顯’然是不對的。這里應該判斷變量n是否等于l,因此“if(n=1)”應改為“if(n==1)”。

82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s);/*遍歷整個數(shù)組*/ for(i=0;i<=""p="">/*如果元素的ASCII值為偶數(shù)*/ if(s[i]%2==0) {/*將元素保存到t中*/ t[j]=s[i]; j++; } t[j]=-‘\0’;}要刪除ASCII值為奇數(shù)的字符,也就是要保留ASCII值為偶數(shù)的字符,將ASCII值為偶數(shù)的字符保存到新字符串。所以本題的算法是對原字符串從頭到尾進行掃描,找出ASCII值為偶數(shù)的字符并依次存入數(shù)組。2022-2023年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在順序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找關(guān)鍵碼12需做()次關(guān)鍵碼比較。

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

2.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

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

A.不確定的值B.2C.1D.0

4.設散列表中m個存儲單元,散列函數(shù)為H(key)=key%p,p是最好選擇()。

A.小于等于m的最大奇數(shù)B.小于等于m的最大素數(shù)C.小于等于m的最大偶數(shù)D.小于等于m的最大合數(shù)

5.在一個鏈式隊列中,假設f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點的運算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

6.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的運行結(jié)果是()。

A.500B.401C.503D.1404

7.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。

A.—個存儲區(qū),存放要讀的數(shù)據(jù)項

B.一個整數(shù),代表要讀入的數(shù)據(jù)項總數(shù)

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

D.—個指針,指向讀入數(shù)據(jù)要存放的地址

8.

9.對于C語言的函數(shù),下列敘述中正確的是()。

A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套

B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套

C.函數(shù)的定義和調(diào)用都不能嵌套

D.函數(shù)的定義和調(diào)用都可以嵌套

10.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

11.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序運行結(jié)果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

13.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有‘\0’

14.若有定義“inta=3,*p=&a,**q=&p;”,則以下敘述中錯誤的是()。

A.q是指針變量,*q就是變量a

B.p是指針變量,p指向變量a

C.q指向變量p,所以*q指向變量a

D.*p與**q都代表變量a

15.以下程序段中,與語句“k=a>b?(b>c?1:0):0;”功能相同的是()。

A.if((a>b)||(b>c))k=1;elsek=0;

B.if((a>b)&&(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

16.對于順序存儲的線性表,訪問結(jié)點和增加、刪除結(jié)點的時間復雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

17.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

18.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序運行后的輸出結(jié)果是()。

A.CBB.BCAC.CCBBD.CDBCA

19.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序運行后的輸出結(jié)果是()。A.1313B.2234C.3234D.1234

20.常采用的兩種存儲結(jié)構(gòu)是()。

A.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B.散列方法和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

二、2.填空題(20題)21.以下程序運行時,若從鍵盤輸入:102030<回車>,輸出的結(jié)果是【】。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

prinff("%d%d%d\n",i,j,k);

}

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

23.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.Fibonacci數(shù)列中的頭兩個數(shù)是1和1,從第3個數(shù)開始,每個數(shù)等于前兩個數(shù)之和。下述程序計算此數(shù)列的前20個數(shù),且每行輸出5個數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intf,f1=1,f2=1;

inti;

printf("%6d%6d",f1,f2);

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

{f=【】;

printf("%6d",f);

if(【】)

printf("\n");

f1=f2;

【】;

}

}

25.“printf("%d\n",strlen("\t\"023\xABC\n");”語句的輸出結(jié)果是______。

26.以下程序運行結(jié)果是【】。

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

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

intx=0,y=0;

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

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

28.以下函數(shù)用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

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

if(【】>max)max=【】;

return(max);

}

29.下面的程序為6個整型變量A、B、C、D、E、F輸入整數(shù),并按從大到小的順序輸出整數(shù)及其所對應的變量名。例如,輸入的數(shù)為3、2、5、7、4、6,則輸出的形式為:D(7)F(6)C(5)E(4)A(3)B(2)。

#include<stdio.h>

intA,B,C,D,E,F(xiàn);

struct

{

charn;

【】;

}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;

main()

{

inti,j;

for(i=0;i<6;i++)scanf("%d",【】);

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

for(j=0;j<5-i;j++)

if(【】)

{

t=tb1[j];

tb1[j]=tb1[j+1];

tb1[j+1]=t;

}

for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);

printf("\n");

}

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

#include<stdio.h>

#include<stdlib.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]);

}

31.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

32.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

33.以卜函數(shù)sstrcat()的功能是實現(xiàn)寧符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:s所指字符串為abcd,t所指字符申為efgh,函數(shù)調(diào)用后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

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

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

35.在面向?qū)ο蠓椒ㄖ校惖膶嵗Q為______。

36.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為______。

37.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

38.單元測試又稱模塊測試,一般采用【】測試。

39.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

40.以下函數(shù)的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

三、1.選擇題(20題)41.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.數(shù)組元素引用不合法,輸出結(jié)果不定

42.若有說明:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

43.下面選項中不屬于面向?qū)ο蟪绦蛟O計特征的是()。

A.繼承性B.多態(tài)性C.類比性D.封閉性

44.設有數(shù)組定義:chararray[]="China";則數(shù)組array所占的空間為()

A.4個字節(jié)B.5個字節(jié)C.6個字節(jié)D.7個字節(jié)

45.有以下程序:#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei--;}i+=13,a+=i;}pfintf("%d\n",A);}程序的輸出結(jié)果是()。

A.62B.63C.23D.36

46.C語言中運算對象必須是整型的運算符是()。

A.%=B./C.=D.<=

47.在設計程序時,應采納的原則之一是______。

A.程序結(jié)構(gòu)應有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

48.設有下列二叉樹:[*]對此二叉樹前序遍歷的結(jié)果為A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

49.下列敘述中,正確的是

A.用E-R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E-R圖只能表示實體集之間一對一的聯(lián)系

C.用E-R圖只能表示實體集之間一對多的聯(lián)系

D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

50.下列敘述中正確的是()。

A.接口復雜的模塊,其耦合程度一定低

B.耦合程度弱的模塊,其內(nèi)聚程度一定低

C.耦合程度弱的模塊,其內(nèi)聚程度一定高

D.上述3種說法都不對

51.在C語言中,不適用于局部變量的存儲類說明符是()

A.autoB.registerC.staticD.extern

52.下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()

A.內(nèi)模式可以有多個,外模式和模式只有一個

B.外模式可以有多個,內(nèi)模式和模式只有一個

C.內(nèi)模式只有一個,模式和外模式可以有多個

D.模式只有一個,外模式和內(nèi)模式可以有多個

53.數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是()

A.概念設計和邏輯設計B.模式設計和內(nèi)模式設計C.內(nèi)模式設計和物理設計D.結(jié)構(gòu)特性設計和行為特性設計

54.設有如下三個關(guān)系表:

下列操作中正確的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

55.按條件f對關(guān)系R進行選擇,其關(guān)系代數(shù)表達式為

A.

B.

C.

D.

56.以下敘述中,正確的是______。

A.do…while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替

B.do…while語句構(gòu)成的循環(huán)只能用break語句退出

C.用do…while語句構(gòu)成的循環(huán),在while后的表達式為非零時結(jié)束循環(huán)

D.用do…while語句構(gòu)成的循環(huán),在while后的表達式為零時結(jié)束循環(huán)

57.下列四個敘述中,錯誤的是_______。

A.C語言中的關(guān)鍵字必須小寫

B.C語言中的標識符必須全部由字母組成

C.C語言不提供輸入輸出語句

D.C語言中的注釋行可以出現(xiàn)在程序的任何位置

58.下列說法正確的是()。

A.一個C程序可以有多個主函數(shù)

B.一個C語言的函數(shù)中只允許有一對花括號

C.C程序的書寫格式是自由的,一個語句可以寫在一行上,也可以寫在多行內(nèi)

D.在對C程序進行編譯時,可以發(fā)現(xiàn)注釋行中的拼寫錯誤

59.在函數(shù)調(diào)用過程中,如果函數(shù)funA調(diào)用了函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)funA,則

A.稱為函數(shù)的直接遞歸調(diào)用B.稱為函數(shù)的間接遞歸調(diào)用C.稱為函數(shù)的循環(huán)調(diào)用D.C語言上不允許這樣的遞歸調(diào)用

60.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。

A.在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3

B.由于p數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符串長度為3

C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但p數(shù)組中字符串長度為3

D.由于p和q數(shù)組中都沒有字符串結(jié)束符,故長度都不能確定

四、選擇題(20題)61.有以下程序則輸出結(jié)果是()。A.1245B.1256C.1278D.1267

62.在滿足實體完整性約束的條件下()。

A.一個關(guān)系中應該有一個或多個候選關(guān)鍵字

B.一個關(guān)系中只能有一個候選關(guān)鍵字

C.一個關(guān)系中必須有多個候選關(guān)鍵字

D.一個關(guān)系中可以沒有候選關(guān)鍵字

63.以下能正確定義字符串的語句是(

)。

64.用鏈表表示線性表的優(yōu)點是()。A.A.便于隨機存取B.花費的存儲空間較順序存儲少

C.便于捅入和刪除操作

D.數(shù)據(jù)元素的物理順序與邏輯順序相同

65.

66.閱讀下面程序,則執(zhí)行后的結(jié)果是()。

A.tomeetme

B.tmem

C.oete

D.tome

67.有以下程序:

程序運行后,若從鍵盤輸入(從第l列開始.:

123<回車>

45678<回車>

則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

68.若有定義語句:"inta[4][10],*P,*q[4];"且0≤i<4,則錯誤的賦值是()。

A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

69.

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

71.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

72.

73.

74.有以下程序段:

當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

75.選出下列標識符中不是合法的標識符的是()。

A.hot_doB.cat1C._priD.2ab

76.瀏覽器中用于負責向用戶顯示數(shù)據(jù)的是()。

A.WWWB.IP地址C.HTMLD.DNS

77.設有定義:intx[2][3];,則以下關(guān)于二維數(shù)組X的敘述錯誤的是()。

A.x[0]可看做是由3個整型元素組成的一維數(shù)組

B.x[0]和x[l]是數(shù)組名,分別代表不同的地址常量

C.數(shù)組X包含6個元素

D.可以用語句x[o]=0;為數(shù)組所有元素賦初值0

78.在最壞情況下,堆排序的時間復雜度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

79.

80.有以下程序程序運行后的輸出結(jié)果是()。

A.8B.4C.6D.2

五、程序改錯題(1題)81.下列給定程

溫馨提示

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

評論

0/150

提交評論