版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022-2023年江蘇省南京市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0
2.
有以下程序:
main
{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,
12,},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<i;j++)printf("%4c",);
for(j=________;J<4;j++)printf("%4d",num
[i][j]);
printf("\n");}}
若要按以下形式輸出數(shù)組右上半三角
1234
678
1112
16
則在程序下劃線處應(yīng)填入的是()。
A.i-1B.iC.i+1D.4一i
3.對(duì)n個(gè)數(shù)進(jìn)行排序,哪種算法,其時(shí)間復(fù)雜度在最壞和最好都是O(nlogn)()
A.快速排序B.希爾排序C.堆排序D.選擇排序
4.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成________。
A.屬性B.關(guān)系C.鍵D.域
5.若變量已正確定義,要求程序段完成5!的計(jì)算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
6.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
7.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運(yùn)行后的輸出結(jié)果是(選項(xiàng)D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No
8.如有inta=11;則表達(dá)式(a/1)的值是()。
A.0B.3C.4D.11
9.C語言中的標(biāo)識(shí)符分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符,以下敘述正確的是()。
A.預(yù)定義標(biāo)識(shí)符(如庫(kù)函數(shù)中的函數(shù)名)可用做用戶標(biāo)識(shí)符,但失去原有含義
B.用戶標(biāo)識(shí)符可以由字母和數(shù)字任意順序組成
C.在標(biāo)識(shí)符中大寫字母和小寫字母被認(rèn)為是相同的字符
D.關(guān)鍵字可用做用戶標(biāo)識(shí)符,但失去原有含義
10.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點(diǎn)p的直接后繼,則應(yīng)執(zhí)行下列()操作。
A.p->next=p->next->next;
B.p=p->nextp->next=p->next->next;
C.p->next=p->next;
D.p=p->next->next;
11.在一個(gè)有頭結(jié)點(diǎn)的鏈隊(duì)列中,假設(shè)f和r分別為隊(duì)首和隊(duì)尾指針,則隊(duì)頭出隊(duì)的運(yùn)算是()。
A.q=f->next;f->next=f->next->next;free(q);
B.q=f;f->next=f->next->next;free(q);
C.f->next=f->next->next;q=f->next;free(q);
D.q=f->next->next;f=f->next;free(q);
12.采用折半查找法查找長(zhǎng)度為n的線性表時(shí),每個(gè)元素的平均查找長(zhǎng)度為()。
A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)
13.對(duì)于循環(huán)隊(duì)列()。
A.無法判斷隊(duì)列是否為空B.無法判斷隊(duì)列是否為滿C.隊(duì)列不可能滿D.以上說法都不對(duì)
14.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
15.以下說法正確的是()。
A.數(shù)據(jù)項(xiàng)是數(shù)據(jù)的基本單位
B.數(shù)據(jù)元素是數(shù)據(jù)的最小單位
C.數(shù)據(jù)結(jié)構(gòu)是帶結(jié)構(gòu)的數(shù)據(jù)項(xiàng)的集合
D.一些表面上很不相同的數(shù)據(jù)可以有相同的邏輯結(jié)構(gòu)
16.
17.在以下一組運(yùn)算中,優(yōu)先級(jí)最高的運(yùn)算符是()
A.<=B.=C.%D.&&
18.參加百年阿里培訓(xùn)的n位同學(xué)結(jié)伴去西湖旁邊為游人指路,兩人一組,他們打算先讓體重之和恰好為102公斤的同學(xué)一組,請(qǐng)給出一個(gè)算法找到這樣的組合,或者確定他們中不存在這樣的組合,其中最優(yōu)的算法時(shí)間復(fù)雜度為?(假設(shè)體重均為整數(shù))()
A.O(log(n))B.O(n)C.O(nlog(n))D.O(n^2)
19.該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯(cuò)誤,以下語句正確的是()A.intn,*p=NULL;
B.*p=&n;.
C.scanf("%d",&p)
D.printf("%d\n",p);
20.
二、2.填空題(20題)21.媒體在計(jì)算機(jī)領(lǐng)域中的含義,是指存儲(chǔ)信息的實(shí)體和【】。
22.以下程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{intx=27;
while(x>20&&x<30)
{x++;
if(x/3){x++;break;}
else
continue;
}
printf("%d\n",x);
}
23.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
}
printf("%d%d\n",a,b);
}
24.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]\'\0';
}
25.若有以下程序:
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",a);
}
執(zhí)行后的輸出結(jié)果是【】。
26.對(duì)長(zhǎng)度為10的線性表進(jìn)行冒泡排序,對(duì)壞情況下需要比較的次數(shù)為______
27.在數(shù)據(jù)庫(kù)理論中,數(shù)據(jù)庫(kù)總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要修改相應(yīng)的應(yīng)用程序,稱為【】。
28.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
29.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
30.下面的程序可對(duì)指定字符串進(jìn)行從大到小排序,請(qǐng)將程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
31.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使()解釋其中的圖形元素。
32.以下函數(shù)用以求x的y次方。補(bǔ)足所缺語句。
Doublefun(doublex,inty)
{inti;doublez=1;
for(i=1;i【】;i++)
z=【】;
returnz;
}
33.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。
34.以下程序的運(yùn)行結(jié)果是()。main(){inta=1,b=2,c;if(a>B)c=1;elseif(a==B)c=0;elsec=-1;printf("%d\n",C);}
35.下面程序的運(yùn)行結(jié)果是【】。
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{intx==3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
36.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【】。
37.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運(yùn)行后,如果從鍵盤上輸入1298,則輸出結(jié)果為
38.—個(gè)類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方法提高了軟件的【】。
39.以下程序的輸出結(jié)果是______。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti-2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
40.有如下圖所示的雙鏈表結(jié)構(gòu),請(qǐng)根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
三、1.選擇題(20題)41.設(shè)有下列二叉樹:
對(duì)此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
42.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
A.-1B.1C.8D.0
43.在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是______。
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好
44.關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)原則和方法描述錯(cuò)誤的是()。
A.選用的結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口
B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)
C.不允許使用GOTO語句
D.語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬
45.下面程序段的運(yùn)行結(jié)果是char*s="abcde";s+=2;printf("%d",s);
A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結(jié)果
46.執(zhí)行下列程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain()
{ihta=9,k=3,m=2;
a/=S(k+m)/S(k+m);
printf("%d",A);
}
A.1B.4C.9D.0
47.若定義了以下函數(shù);voidsub(……){……*t=(int*)malloc(10*sizeof(int));……}其中t是該函數(shù)的形參,要求通過t把動(dòng)態(tài)分配存儲(chǔ)單元的地址傳回主調(diào)函數(shù),則形參t的正確定義應(yīng)該是()
A.int*tB.int**tC.long**tD.long*t
48.下列程序段的輸出結(jié)果是______。voidfun(int*x,int*y){pnntf("%d%d",*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}
A.2143B.1212C.1234D.2112
49.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+");for(i=1;i<6;i++){fprimtf(fp,"%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運(yùn)行后的輸出結(jié)果是()。
A.00B.12345C.14D.12
50.第
13
題
設(shè)有程序段
intk=10;
while(k=0)k=k-1;
則下面描述中正確的是A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次
51.為使*p=20,下面正確的程序是()
A.#include<stdio.h>main(){inta=10,b=20,*p=&b;printf("%d\t%d\n",p,*p);}*p)
B.#include<stdio.h>main(){inta=10,b=20,*p=b;printf("%d\t\%d\n",p,*p)}
C.#include<stdio.h>main(){inta=10,b=20,*p;p=&a;p++;printf("%d\t\%d\n",p,*p);}}
D.#include<stdio.h>main(){inta=10,b=20,*p;*p=20;printf("%d\t\%d\n",p,*p);}
52.下面程序輸出的結(jié)果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);}
A.159B.753C.357D.591
53.如下程序的輸出結(jié)果是#include<stdio.h>main(){chsrch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0'printf("%d\n",s);}
A.69825B.63825C.6385D.693825
54.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指針從文件末尾向前移2*sizeof(int)字節(jié)):#include<stdio.h>main(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen("data.dar","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dar","rb");fseek(fp,-2L*sizeof(int),SEEK_END);fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/fclose(fp);printf("%d\n",b);}執(zhí)行后的輸出結(jié)果()。
A.2B.1C.4D.3
55.有以下程序:#include<string.h>main(){charp[20]={'a','b','c','d'),q[]="abc",r[]="abcde"strcat(p,r);strcpy(p+strlen(q),q);printf("%d\n",sizeof(p));}程序運(yùn)行后的輸出結(jié)果是()。
A.9B.6C.11D.7
56.下面程序的輸出結(jié)果是()main(){intx=2,y=0,z;x+=3+2;printf("%d",x);x*=y(tǒng)=z=4;printf("%d",x);}
A.728B.無法計(jì)算C.7,4D.8,4
57.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是
A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,編譯出錯(cuò)D.程序運(yùn)行時(shí)產(chǎn)生錯(cuò)信息
58.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是()。
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
59.下列程序執(zhí)行后的輸出結(jié)果是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.隨機(jī)數(shù)
60.以下敘述中錯(cuò)誤的是()。
A.改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值
B.函數(shù)可以返回地址值
C.可以給指針變量賦一個(gè)整數(shù)作為地址值
D.當(dāng)在函數(shù)的開頭包括頭文件stdio.h時(shí),可以給指針變量賦NULL
四、選擇題(20題)61.設(shè)A為存放(短)整型的一維數(shù)組,如果A的首地址為P,那么A中第i個(gè)元素的地址為()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i
62.
63.
64.下列哪個(gè)不屬于DOM元素結(jié)點(diǎn)類型?
A.元素結(jié)點(diǎn)B.文本結(jié)點(diǎn)C.屬性結(jié)點(diǎn)D.樣式結(jié)點(diǎn)
65.以三級(jí)模式為框架形成的3種數(shù)據(jù)庫(kù)中,真實(shí)存在于計(jì)算機(jī)外存的數(shù)據(jù)庫(kù)是()。
A.概念數(shù)據(jù)庫(kù)B.用戶數(shù)據(jù)庫(kù)C.物理數(shù)據(jù)庫(kù)D.邏輯數(shù)據(jù)庫(kù)
66.若有下的定義:"intt[3][2];",能正確表示t數(shù)組元素地址的表達(dá)式是()。
A.&t[3][2]
B.t[3]
C.t[l]
D.t[2][2]
67.
68.有以下程序段
structSTU
{charnum[10];floatscore[3];};
main()
{
structSTUs[3]={
{"20021",90,95,85},
{"20022",95,80,75},
{"20023",100,95,90},
},*p=s;
inti;floatsum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序運(yùn)行后的輸出結(jié)果是
A.260.00B.270.00
C.280.00D.285.00
69.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指()。
A.數(shù)據(jù)所占的存儲(chǔ)空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存放形式
C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式
D.存儲(chǔ)在計(jì)算機(jī)外存中的數(shù)據(jù)
70.若有定義inta[9],+P=a;,則P+5表示()。
A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5
71.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.11C.20D.21
72.
73.下面描述中錯(cuò)誤的是()。
A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)
B.軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過程
C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一
D.PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具
74.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[o]的值加上6
75.定義無符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。
A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}
76.在c語言中,變量的隱含存儲(chǔ)類別是()。
A.autoB.staticC.externD.無存儲(chǔ)類別
77.有以下程序:
fun(intx)
{intP;
if(x==0||x==l)return(3);
p=x-fun(x-2);
returnp;
}
main
{printf("%d\n",fun(7));}
程序執(zhí)行后的輸出結(jié)果是()。A.A.7B.3C.2D.0
78.
79.
80.選出下列標(biāo)識(shí)符中不是合法的標(biāo)識(shí)符的是()。
A.hot_doB.cat1C._priD.2ab
五、程序改錯(cuò)題(1題)81.給定程序MODll.C中,函數(shù)fun的功能是:在有n名學(xué)生,2門課成績(jī)的結(jié)構(gòu)體數(shù)組std中,計(jì)算出第l門課程的平均分,作為函數(shù)值返回。例如,主函數(shù)中給出了4名學(xué)生的數(shù)據(jù),則程序運(yùn)行的結(jié)果為:第l門課程的平均分是:76.125000請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.請(qǐng)編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入XX所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過k傳回。例如,輸入20,則應(yīng)輸出4689101214151618。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
參考答案
1.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。
2.B
\n本題中要求輸出右上半角的數(shù),對(duì)角線上的數(shù)的下標(biāo)相同,所以j=i。
\n
3.C
4.B解析:關(guān)系數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實(shí)體集也可以轉(zhuǎn)換成關(guān)系。
5.B解析:選項(xiàng)B中每次執(zhí)行循環(huán)體都要執(zhí)行p=1,無法保存上次的運(yùn)算結(jié)果,執(zhí)行完while循環(huán)后p=5。
6.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號(hào)先算括號(hào)的原則,先計(jì)算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1
7.B本題考核的知識(shí)點(diǎn)是puts()函數(shù)的應(yīng)用。主函數(shù)中定義了一個(gè)字符數(shù)組s并賦初值,一個(gè)字符串指針變量ps并讓它指向s。程序中p+4的地址為數(shù)組第5個(gè)元素的地址,而調(diào)用put(str_adr)函數(shù)時(shí),將從str_adr這一地址開始,依次輸出存儲(chǔ)單元中的字符,遇到第一個(gè)“\\0”時(shí)結(jié)束輸出,并自動(dòng)輸出一個(gè)換行符。所以put(p++4)將輸出n/No,put(s)將從s第一個(gè)元素開始輸出到第3個(gè)元素結(jié)束(因?yàn)閳?zhí)行*(p4)c0語句后s中的第5個(gè)元素的值為0,而s中的第4個(gè)元素為“\\”,puts將遇到“\\0”,結(jié)束輸出),即輸出yes。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。
8.D
9.A用戶標(biāo)識(shí)符不能以數(shù)字開頭,C語言中標(biāo)識(shí)符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識(shí)符。
10.A
11.A
12.D
13.D
14.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。
15.D
16.C
17.C
18.B
19.A[解析]選項(xiàng)B)的正確寫法應(yīng)為p=&n;選項(xiàng)C)的正確寫法應(yīng)為scanf("%d",p);選項(xiàng)D)的正確寫法應(yīng)為printf("%d\\n",*p)。
20.C
21.載體載體
22.2929解析:本題考查while循環(huán)和++運(yùn)算,x=27符合循環(huán)條件,執(zhí)行循環(huán)體中x++后,x=28,if條件也成立,執(zhí)行x++后退出,x的值增1,結(jié)果x=29。
23.21
24.length++i<lengthlength++\r\ni<length解析:第一個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。
25.77解析:本題考查英文字母ASCII碼值的概念。字符參與運(yùn)算的值是其對(duì)應(yīng)的ASCII碼,字符H的ASCII碼為72,A的ASCII碼為65,0的ASCII碼為48,所以a=72-65+48=55,ASCII碼值為55的字符是7。
26.在最壞情況下冒泡排序法需要比較的次數(shù)為n(n-1)/2。
27.邏輯獨(dú)立性邏輯獨(dú)立性解析:數(shù)據(jù)庫(kù)總體邏輯結(jié)構(gòu)改變,而不需要相應(yīng)修改應(yīng)用程序叫做邏輯獨(dú)立性。
28.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個(gè)表達(dá)式前面有一個(gè)邏輯運(yùn)算符!,表示反操作,所以整個(gè)語句的值應(yīng)當(dāng)為false,即為0。
29.101091101091解析:for(表達(dá)式1;表達(dá)式2:表達(dá)式3)語句的功能是:首先計(jì)算表達(dá)式1的值,然后檢測(cè)表達(dá)式2的值,若其值為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢后,再計(jì)算表達(dá)式3的值。然后再檢測(cè)表達(dá)式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語句,若為假,則退出循環(huán):第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=1,執(zhí)行y=++i操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=1,然后x的值減1,循環(huán)條件不成立,則退出循環(huán)。
30.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個(gè)字詞進(jìn)行比較,如果當(dāng)前字符小于下一個(gè)字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。
31.數(shù)據(jù)字典數(shù)據(jù)字典解析:數(shù)據(jù)字典的作用是對(duì)數(shù)據(jù)流圖中出現(xiàn)的披命名的圖形元素進(jìn)行確切解釋。通常數(shù)據(jù)字典包含的信心有名稱、別名、何處使用/如何使用、內(nèi)容描述、補(bǔ)充信息等。
32.<y+1z*x
33.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類型,所以結(jié)果也是double型,fabs(x)是對(duì)x取絕對(duì)值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。
34.-1-1解析:if~else語句的形式:if(表達(dá)式)語句1elseif語句2else語句3它的功能是:若表達(dá)式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達(dá)式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷;a=1,b=2,條件a>b不成立,繼續(xù)判斷a==b,仍不成立,則執(zhí)行c=-1,輸出-1。
35.3535解析:主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用swap(p,q),把p和q中的地址值傳給了形參指針變量a和b,此時(shí)a和b分別指向了主函數(shù)中的變量x和y。在函數(shù)swap()中交換了指針變量a和b的值,但并沒有改變a和b所指向的內(nèi)容,所以函數(shù)調(diào)用返回后x和y依舊是原來的值。故運(yùn)行結(jié)果為35。
36.存儲(chǔ)結(jié)構(gòu)
37.89218921
38.可重用性可重用性解析:繼承的優(yōu)點(diǎn):相似的對(duì)象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。
39.1616解析:首先將程序中宏替換掉,先把“MCRA(i)”替換成“2*i”,然后把“MCRA(j,2*i)”替換成“2*2*j+2*i”,經(jīng)計(jì)算該表達(dá)式的值為16,所以最后輸出為16。
40.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對(duì)鏈表的定義。
41.B解析:所謂中序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且在遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。
42.D解析:本題考查“++”和“--”運(yùn)算符,運(yùn)算符“++”是操作數(shù)加1,而“--”則是操作數(shù)減1。在do-while循環(huán)中,首先執(zhí)行y--,再執(zhí)行--y。當(dāng)y=2時(shí),執(zhí)行y--,y的值變?yōu)?,--y使y值變?yōu)?,循環(huán)結(jié)束。執(zhí)行輸出時(shí),先輸出y的值0,然后執(zhí)行y--,使y的值變?yōu)?1。
43.A解析:程序設(shè)計(jì)的風(fēng)格主要強(qiáng)調(diào)程序的簡(jiǎn)單、清晰和可理解性,以便讀者理解。因此選項(xiàng)A是正確答案。程序?yàn)E用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對(duì)程序的理解,不應(yīng)減少或取消;程序的長(zhǎng)短要依照實(shí)際需要而定,并不是越短越好。因此選項(xiàng)B、C、D都是錯(cuò)誤的。
44.C解析:限制使用GOTO語句是結(jié)構(gòu)化程序設(shè)計(jì)的原則和方法之一,但不是絕對(duì)不允許使用GOTO語句。其他3項(xiàng)為結(jié)構(gòu)化程序設(shè)計(jì)的原則。
45.C解析:對(duì)于字符串指針,其保留的是整個(gè)串的首地址,即為第一個(gè)字符的起始地址,當(dāng)該指針做算術(shù)運(yùn)算時(shí),就是該指針根據(jù)其類型向后移動(dòng)相應(yīng)的存儲(chǔ)空間。
46.D解析:本題主要是考查帶參數(shù)的宏定義及其相關(guān)運(yùn)算。本題中宏運(yùn)算過程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。
47.B
48.A解析:本題中函數(shù)傳遞的是變量的地址,如果形參在函數(shù)中發(fā)生改變,相劉應(yīng)的實(shí)參也就有了改變。
49.D解析:語句“fprintf(fp,”%d”,i);”的作用是將變量i的值直接按“%d”的格式輸出到文件fp指向的文件上;“rewind(fp)”的作用是使指針重新返回文件的開頭;“fscanf(fp,'%d%d',&k,&n);”的作用是將磁盤文件中的數(shù)據(jù)傳送給變量k和n。
50.C本題中,首先將0賦給k,表達(dá)式變?yōu)?,跳出循環(huán),沒有執(zhí)行循環(huán)體語句。解答本題的關(guān)鍵是掌握while語句。
51.A
52.B解析:本題用循環(huán)的方法考查對(duì)數(shù)組概念的掌握。首先,當(dāng)i=0時(shí),數(shù)組中的位置是a[2][0]=7,當(dāng)然,如果用排除法,就不用考慮后面的循環(huán),因?yàn)樵?個(gè)選項(xiàng)中,第1個(gè)數(shù)為7的選項(xiàng)只有B)。本題執(zhí)行第2次循環(huán)時(shí),i的值為1,則printf函數(shù)中的數(shù)組指向?yàn)閍[1][1]=5,依次循環(huán),可求出答案。
53.C
54.D解析:Leek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指針從文件末尾向前移2*sizeof(int)字節(jié),調(diào)用此函數(shù)后指針指向a[2],fread(&b,sizeof(int),1,fp)是從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中,也就是從文件中讀取數(shù)據(jù)3到變量b中。
55.B解析:題目中首先通過strcat(p,r)函數(shù)將r所指字符串內(nèi)容連接到p所指的字符串后面,p[20]={'a','b','c','d','a','b','c','d','e'},然后通過strcpy(p+strlen(q),q),首先在p[0]地址的基礎(chǔ)上向后移動(dòng)三位,然后將q所指字符串的內(nèi)容復(fù)制到p所指的存儲(chǔ)空間中,從字符d往后全部覆蓋,p[20]={'a','b','c','a','b','c'}。在輸出語句中strlen(p)是求字符串的長(zhǎng)度。
56.A
57.B解析:本題考查的是逗號(hào)表達(dá)式。因?yàn)檎麄€(gè)逗號(hào)表達(dá)式的值為逗號(hào)表達(dá)式最后一個(gè)于表達(dá)式的值,所以本題輸出的是a2的值'm'。故應(yīng)該選擇B。
58.B解析:題目中定義了一個(gè)指針變量作為函數(shù)f()的參數(shù)。主函數(shù)main()中調(diào)用f()函數(shù),當(dāng)i=0時(shí),執(zhí)行語句“(*q)++;”,此處*q就代表數(shù)組a[0]的地址,也即將q進(jìn)行加1操作;當(dāng)i=1時(shí),q仍指向數(shù)組元素a[0]的地址,因?yàn)樵诤瘮?shù)f()中并未對(duì)指針變量q做任何變動(dòng),即*q仍代表數(shù)組元素a[0]的值,所以此次(*q)++即為2+1,a[0]的值變?yōu)?;直到i=4時(shí),執(zhí)行(*q)++后a[0]的值變?yōu)?,最后輸出數(shù)組a的結(jié)果為6、2、3、4、5。
59.B解析:本題中,a[1][2]是二維數(shù)組中的第6個(gè)元素,對(duì)應(yīng)for循環(huán)中i的值為5,p[5]=5+1。
60.C
61.B
62.B
63.B
64.D
65.B
\n①以內(nèi)模式為框架所組成的數(shù)據(jù)庫(kù),1物理數(shù)據(jù)庫(kù);②以概念模式為框架所組成的數(shù)據(jù)庫(kù)叫概念數(shù)據(jù)庫(kù);③以外模式為框架所組成的數(shù)據(jù)庫(kù)叫用戶數(shù)據(jù)庫(kù)。它是真實(shí)存在于計(jì)算機(jī)外存中的數(shù)據(jù)庫(kù)。
\n
66.C\n數(shù)組的下標(biāo)是從0開始的,A中越界,行下標(biāo)和列下標(biāo)都不能越界;B中,雖然是個(gè)地址,但是也同樣越界了;選項(xiàng)c中表示的是第一個(gè)的首地址;選項(xiàng)D表示的為其元素的值,并不是地址。
\n
67.D
68.B在本題中,程序首先定義一個(gè)結(jié)構(gòu)體,結(jié)構(gòu)體中含有兩個(gè)結(jié)構(gòu)體成員,兩個(gè)結(jié)構(gòu)體成員都是數(shù)組。
在主函數(shù)中,首先定義了一個(gè)大小為3的該結(jié)構(gòu)體數(shù)組s,并對(duì)其進(jìn)行初始化操作,然后定義了一個(gè)該結(jié)構(gòu)體類型的指針變量p,使其指向結(jié)構(gòu)體數(shù)組s,接著定義兩個(gè)變量,整型變量i作為循環(huán)變量,浮點(diǎn)型變量sum用來保存和計(jì)算結(jié)果。然后執(zhí)行for循環(huán)。
當(dāng)循環(huán)變量i=0時(shí),執(zhí)行sum=sum+p->score[i];語句,p->score[0]表示結(jié)構(gòu)體數(shù)組中第一個(gè)結(jié)構(gòu)體變量的score[0]值,即90,本次循環(huán)結(jié)束后,sum的值為90。
當(dāng)循環(huán)變量i=1時(shí),同理,求得sum=90+95=185。
當(dāng)循環(huán)變量i=2時(shí),求得sum=185+85=270。
然后循環(huán)結(jié)束,用格式%6.2f對(duì)sum進(jìn)行輸出操作,這個(gè)輸出格式的意思是輸出數(shù)據(jù)的寬帶為6且要輸出兩位小數(shù)位,那么輸出的結(jié)果為270.00。因此,本題的正確答案是B。
69.B解析:數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存放形式,數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、散列結(jié)構(gòu)和索引結(jié)構(gòu)等。
70.B本題考查了通過指針來引用一維數(shù)組元素的方法。題中*P=a;這一賦值語句是指針P指向了數(shù)組a的首地址,P+5是指針P向后移動(dòng)了5個(gè)int類型的存儲(chǔ)單元,所以P+5指向了數(shù)組元素a[5]。
71.D聲明data是結(jié)構(gòu)S數(shù)組。初始化data『0].a(chǎn)=10;data[0].b=100;data[1].a(chǎn)=20;data[1].b=200。主函數(shù)中P=data[1];即P.a(chǎn)=data[1].a(chǎn);P.b=data[1].b;執(zhí)行語句prinff(”%d\n”,++(P.a(chǎn)));打印輸出時(shí)p.a(chǎn)先增l再打印。P.a(chǎn)=data[1].a(chǎn)=20,先增1等于21。
72.D
73.A詳細(xì)設(shè)計(jì)的任務(wù)是為軟件結(jié)構(gòu)圖中而非總體結(jié)構(gòu)圖中的每一個(gè)模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié),所以A錯(cuò)誤。
74.B指針中存放的是變量的地址,指針也可以進(jìn)行增減運(yùn)算,這時(shí)指針移動(dòng)的最小單位是一個(gè)存儲(chǔ)單元,而不是一個(gè)字節(jié)。所以題中p+6指的是將指針向后移動(dòng)了6個(gè)存儲(chǔ)單元,即指向b[6],存放的是b[6]的地址。
75.BB【解析】只有B選項(xiàng)369可以用無符號(hào)整數(shù)來表示和存儲(chǔ)。A選項(xiàng)一369有負(fù)號(hào),選項(xiàng)C0.369是小數(shù)都不能用無符號(hào)整數(shù)類存儲(chǔ)。選項(xiàng)D是一個(gè)整數(shù)集合得用數(shù)組來存儲(chǔ)。
76.A解析:auto變量:無static聲明的局部變量。用auto作存儲(chǔ)類別的聲明時(shí),可以不寫auto,存儲(chǔ)類別隱含確定為auto(自動(dòng)存儲(chǔ)類別),是動(dòng)態(tài)存儲(chǔ)方式。大多數(shù)變量是自動(dòng)變量。用static聲明的局部變量是靜態(tài)局部變量。函數(shù)調(diào)用結(jié)束后靜態(tài)局部變量占據(jù)的內(nèi)存存儲(chǔ)單元空間不釋放,局部變量保留原值,下次調(diào)用時(shí)可以繼續(xù)使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變?nèi)肿兞康淖饔糜?實(shí)際上,關(guān)鍵字'auto'可以省略,auto不寫則隱含確定為'自動(dòng)存儲(chǔ)類別',屬于動(dòng)態(tài)存儲(chǔ)方式。
77.C在函數(shù)fun(intx)中,有個(gè)if語句判斷,如果參數(shù)x等于0或1時(shí),返回值,否則進(jìn)入下面的p=x-fun(x-2)遞歸函數(shù)。當(dāng)在主函勢(shì)中調(diào)用fun(7)時(shí),其過程為:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的輸出結(jié)果為2。
78.C
79.B
80.D
81.(1)doublesum改為doublesunl=0.0;(2)for(i=0;i<2;i*)改為細(xì)(i=0;i<2;i++)改為for(i_0;i82.
【解析】題目中要求將所有大于l小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,因此需要判斷所有大干1小于m的整數(shù)是否為素?cái)?shù)。將所有大干1小于m的非素?cái)?shù)放入數(shù)組xx中,并將非素?cái)?shù)的個(gè)數(shù)通過形參k傳遞回主函數(shù)中。
2022-2023年江蘇省南京市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0
2.
有以下程序:
main
{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,
12,},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<i;j++)printf("%4c",);
for(j=________;J<4;j++)printf("%4d",num
[i][j]);
printf("\n");}}
若要按以下形式輸出數(shù)組右上半三角
1234
678
1112
16
則在程序下劃線處應(yīng)填入的是()。
A.i-1B.iC.i+1D.4一i
3.對(duì)n個(gè)數(shù)進(jìn)行排序,哪種算法,其時(shí)間復(fù)雜度在最壞和最好都是O(nlogn)()
A.快速排序B.希爾排序C.堆排序D.選擇排序
4.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成________。
A.屬性B.關(guān)系C.鍵D.域
5.若變量已正確定義,要求程序段完成5!的計(jì)算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
6.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
7.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運(yùn)行后的輸出結(jié)果是(選項(xiàng)D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No
8.如有inta=11;則表達(dá)式(a/1)的值是()。
A.0B.3C.4D.11
9.C語言中的標(biāo)識(shí)符分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符,以下敘述正確的是()。
A.預(yù)定義標(biāo)識(shí)符(如庫(kù)函數(shù)中的函數(shù)名)可用做用戶標(biāo)識(shí)符,但失去原有含義
B.用戶標(biāo)識(shí)符可以由字母和數(shù)字任意順序組成
C.在標(biāo)識(shí)符中大寫字母和小寫字母被認(rèn)為是相同的字符
D.關(guān)鍵字可用做用戶標(biāo)識(shí)符,但失去原有含義
10.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點(diǎn)p的直接后繼,則應(yīng)執(zhí)行下列()操作。
A.p->next=p->next->next;
B.p=p->nextp->next=p->next->next;
C.p->next=p->next;
D.p=p->next->next;
11.在一個(gè)有頭結(jié)點(diǎn)的鏈隊(duì)列中,假設(shè)f和r分別為隊(duì)首和隊(duì)尾指針,則隊(duì)頭出隊(duì)的運(yùn)算是()。
A.q=f->next;f->next=f->next->next;free(q);
B.q=f;f->next=f->next->next;free(q);
C.f->next=f->next->next;q=f->next;free(q);
D.q=f->next->next;f=f->next;free(q);
12.采用折半查找法查找長(zhǎng)度為n的線性表時(shí),每個(gè)元素的平均查找長(zhǎng)度為()。
A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)
13.對(duì)于循環(huán)隊(duì)列()。
A.無法判斷隊(duì)列是否為空B.無法判斷隊(duì)列是否為滿C.隊(duì)列不可能滿D.以上說法都不對(duì)
14.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
15.以下說法正確的是()。
A.數(shù)據(jù)項(xiàng)是數(shù)據(jù)的基本單位
B.數(shù)據(jù)元素是數(shù)據(jù)的最小單位
C.數(shù)據(jù)結(jié)構(gòu)是帶結(jié)構(gòu)的數(shù)據(jù)項(xiàng)的集合
D.一些表面上很不相同的數(shù)據(jù)可以有相同的邏輯結(jié)構(gòu)
16.
17.在以下一組運(yùn)算中,優(yōu)先級(jí)最高的運(yùn)算符是()
A.<=B.=C.%D.&&
18.參加百年阿里培訓(xùn)的n位同學(xué)結(jié)伴去西湖旁邊為游人指路,兩人一組,他們打算先讓體重之和恰好為102公斤的同學(xué)一組,請(qǐng)給出一個(gè)算法找到這樣的組合,或者確定他們中不存在這樣的組合,其中最優(yōu)的算法時(shí)間復(fù)雜度為?(假設(shè)體重均為整數(shù))()
A.O(log(n))B.O(n)C.O(nlog(n))D.O(n^2)
19.該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯(cuò)誤,以下語句正確的是()A.intn,*p=NULL;
B.*p=&n;.
C.scanf("%d",&p)
D.printf("%d\n",p);
20.
二、2.填空題(20題)21.媒體在計(jì)算機(jī)領(lǐng)域中的含義,是指存儲(chǔ)信息的實(shí)體和【】。
22.以下程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{intx=27;
while(x>20&&x<30)
{x++;
if(x/3){x++;break;}
else
continue;
}
printf("%d\n",x);
}
23.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
}
printf("%d%d\n",a,b);
}
24.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]\'\0';
}
25.若有以下程序:
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",a);
}
執(zhí)行后的輸出結(jié)果是【】。
26.對(duì)長(zhǎng)度為10的線性表進(jìn)行冒泡排序,對(duì)壞情況下需要比較的次數(shù)為______
27.在數(shù)據(jù)庫(kù)理論中,數(shù)據(jù)庫(kù)總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要修改相應(yīng)的應(yīng)用程序,稱為【】。
28.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
29.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
30.下面的程序可對(duì)指定字符串進(jìn)行從大到小排序,請(qǐng)將程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
31.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使()解釋其中的圖形元素。
32.以下函數(shù)用以求x的y次方。補(bǔ)足所缺語句。
Doublefun(doublex,inty)
{inti;doublez=1;
for(i=1;i【】;i++)
z=【】;
returnz;
}
33.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。
34.以下程序的運(yùn)行結(jié)果是()。main(){inta=1,b=2,c;if(a>B)c=1;elseif(a==B)c=0;elsec=-1;printf("%d\n",C);}
35.下面程序的運(yùn)行結(jié)果是【】。
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{intx==3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
36.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【】。
37.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運(yùn)行后,如果從鍵盤上輸入1298,則輸出結(jié)果為
38.—個(gè)類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方法提高了軟件的【】。
39.以下程序的輸出結(jié)果是______。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti-2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
40.有如下圖所示的雙鏈表結(jié)構(gòu),請(qǐng)根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
三、1.選擇題(20題)41.設(shè)有下列二叉樹:
對(duì)此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
42.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
A.-1B.1C.8D.0
43.在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是______。
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好
44.關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)原則和方法描述錯(cuò)誤的是()。
A.選用的結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口
B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)
C.不允許使用GOTO語句
D.語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬
45.下面程序段的運(yùn)行結(jié)果是char*s="abcde";s+=2;printf("%d",s);
A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結(jié)果
46.執(zhí)行下列程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain()
{ihta=9,k=3,m=2;
a/=S(k+m)/S(k+m);
printf("%d",A);
}
A.1B.4C.9D.0
47.若定義了以下函數(shù);voidsub(……){……*t=(int*)malloc(10*sizeof(int));……}其中t是該函數(shù)的形參,要求通過t把動(dòng)態(tài)分配存儲(chǔ)單元的地址傳回主調(diào)函數(shù),則形參t的正確定義應(yīng)該是()
A.int*tB.int**tC.long**tD.long*t
48.下列程序段的輸出結(jié)果是______。voidfun(int*x,int*y){pnntf("%d%d",*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}
A.2143B.1212C.1234D.2112
49.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+");for(i=1;i<6;i++){fprimtf(fp,"%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運(yùn)行后的輸出結(jié)果是()。
A.00B.12345C.14D.12
50.第
13
題
設(shè)有程序段
intk=10;
while(k=0)k=k-1;
則下面描述中正確的是A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次
51.為使*p=20,下面正確的程序是()
A.#include<stdio.h>main(){inta=10,b=20,*p=&b;printf("%d\t%d\n",p,*p);}*p)
B.#include<stdio.h>main(){inta=10,b=20,*p=b;printf("%d\t\%d\n",p,*p)}
C.#include<stdio.h>main(){inta=10,b=20,*p;p=&a;p++;printf("%d\t\%d\n",p,*p);}}
D.#include<stdio.h>main(){inta=10,b=20,*p;*p=20;printf("%d\t\%d\n",p,*p);}
52.下面程序輸出的結(jié)果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);}
A.159B.753C.357D.591
53.如下程序的輸出結(jié)果是#include<stdio.h>main(){chsrch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0'printf("%d\n",s);}
A.69825B.63825C.6385D.693825
54.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指針從文件末尾向前移2*sizeof(int)字節(jié)):#include<stdio.h>main(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen("data.dar","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dar","rb");fseek(fp,-2L*sizeof(int),SEEK_END);fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/fclose(fp);printf("%d\n",b);}執(zhí)行后的輸出結(jié)果()。
A.2B.1C.4D.3
55.有以下程序:#include<string.h>main(){charp[20]={'a','b','c','d'),q[]="abc",r[]="abcde"strcat(p,r);strcpy(p+strlen(q),q);printf("%d\n",sizeof(p));}程序運(yùn)行后的輸出結(jié)果是()。
A.9B.6C.11D.7
56.下面程序的輸出結(jié)果是()main(){intx=2,y=0,z;x+=3+2;printf("%d",x);x*=y(tǒng)=z=4;printf("%d",x);}
A.728B.無法計(jì)算C.7,4D.8,4
57.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是
A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,編譯出錯(cuò)D.程序運(yùn)行時(shí)產(chǎn)生錯(cuò)信息
58.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是()。
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
59.下列程序執(zhí)行后的輸出結(jié)果是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.隨機(jī)數(shù)
60.以下敘述中錯(cuò)誤的是()。
A.改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值
B.函數(shù)可以返回地址值
C.可以給指針變量賦一個(gè)整數(shù)作為地址值
D.當(dāng)在函數(shù)的開頭包括頭文件stdio.h時(shí),可以給指針變量賦NULL
四、選擇題(20題)61.設(shè)A為存放(短)整型的一維數(shù)組,如果A的首地址為P,那么A中第i個(gè)元素的地址為()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i
62.
63.
64.下列哪個(gè)不屬于DOM元素結(jié)點(diǎn)類型?
A.元素結(jié)點(diǎn)B.文本結(jié)點(diǎn)C.屬性結(jié)點(diǎn)D.樣式結(jié)點(diǎn)
65.以三級(jí)模式為框架形成的3種數(shù)據(jù)庫(kù)中,真實(shí)存在于計(jì)算機(jī)外存的數(shù)據(jù)庫(kù)是()。
A.概念數(shù)據(jù)庫(kù)B.用戶數(shù)據(jù)庫(kù)C.物理數(shù)據(jù)庫(kù)D.邏輯數(shù)據(jù)庫(kù)
66.若有下的定義:"intt[3][2];",能正確表示t數(shù)組元素地址的表達(dá)式是()。
A.&t[3][2]
B.t[3]
C.t[l]
D.t[2][2]
67.
68.有以下程序段
structSTU
{charnum[10];floatscore[3];};
main()
{
structSTUs[3]={
{"20021",90,95,85},
{"20022",95,80,75},
{"20023",100,95,90},
},*p=s;
inti;floatsum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序運(yùn)行后的輸出結(jié)果是
A.260.00B.270.00
C.280.00D.285.00
69.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指()。
A.數(shù)據(jù)所占的存儲(chǔ)空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存放形式
C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式
D.存儲(chǔ)在計(jì)算機(jī)外存中的數(shù)據(jù)
70.若有定義inta[9],+P=a;,則P+5表示()。
A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5
71.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.11C.20D.21
72.
73.下面描述中錯(cuò)誤的是()。
A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)
B.軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過程
C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一
D.PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具
74.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[o]的值加上6
75.定義無符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。
A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}
76.在c語言中,變量的隱含存儲(chǔ)類別是()。
A.autoB.staticC.externD.無存儲(chǔ)類別
77.有以下程序:
fun(intx)
{intP;
if(x==0||x==l)return(3);
p=x-fun(x-2);
returnp;
}
main
{printf("%d\n",fun(7));}
程序執(zhí)行后的輸出結(jié)果是()。A.A.7B.3C.2D.0
78.
79.
80.選出下列標(biāo)識(shí)符中不是合法的標(biāo)識(shí)符的是()。
A.hot_doB.cat1C._priD.2ab
五、程序改錯(cuò)題(1題)81.給定程序MODll.C中,函數(shù)fun的功能是:在有n名學(xué)生,2門課成績(jī)的結(jié)構(gòu)體數(shù)組std中,計(jì)算出第l門課程的平均分,作為函數(shù)值返回。例如,主函數(shù)中給出了4名學(xué)生的數(shù)據(jù),則程序運(yùn)行的結(jié)果為:第l門課程的平均分是:76.125000請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.請(qǐng)編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入XX所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過k傳回。例如,輸入20,則應(yīng)輸出4689101214151618。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
參考答案
1.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。
2.B
\n本題中要求輸出右上半角的數(shù),對(duì)角線上的數(shù)的下標(biāo)相同,所以j=i。
\n
3.C
4.B解析:關(guān)系數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實(shí)體集也可以轉(zhuǎn)換成關(guān)系。
5.B解析:選項(xiàng)B中每次執(zhí)行循環(huán)體都要執(zhí)行p=1,無法保存上次的運(yùn)算結(jié)果,執(zhí)行完while循環(huán)后p=5。
6.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號(hào)先算括號(hào)的原則,先計(jì)算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1
7.B本題考核的知識(shí)點(diǎn)是puts()函數(shù)的應(yīng)用。主函數(shù)中定義了一個(gè)字符數(shù)組s并賦初值,一個(gè)字符串指針變量ps并讓它指向s。程序中p+4的地址為數(shù)組第5個(gè)元素的地址,而調(diào)用put(str_adr)函數(shù)時(shí),將從str_adr這一地址開始,依次輸出存儲(chǔ)單元中的字符,遇到第一個(gè)“\\0”時(shí)結(jié)束輸出,并自動(dòng)輸出一個(gè)換行符。所以put(p++4)將輸出n/No,put(s)將從s第一個(gè)元素開始輸出到第3個(gè)元素結(jié)束(因?yàn)閳?zhí)行*(p4)c0語句后s中的第5個(gè)元素的值為0,而s中的第4個(gè)元素為“\\”,puts將遇到“\\0”,結(jié)束輸出),即輸出yes。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。
8.D
9.A用戶標(biāo)識(shí)符不能以數(shù)字開頭,C語言中標(biāo)識(shí)符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識(shí)符。
10.A
11.A
12.D
13.D
14.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。
15.D
16.C
17.C
18.B
19.A[解析]選項(xiàng)B)的正確寫法應(yīng)為p=&n;選項(xiàng)C)的正確寫法應(yīng)為scanf("%d",p);選項(xiàng)D)的正確寫法應(yīng)為printf("%d\\n",*p)。
20.C
21.載體載體
22.2929解析:本題考查while循環(huán)和++運(yùn)算,x=27符合循環(huán)條件,執(zhí)行循環(huán)體中x++后,x=28,if條件也成立,執(zhí)行x++后退出,x的值增1,結(jié)果x=29。
23.21
24.length++i<lengthlength++\r\ni<length解析:第一個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 砌體墻體裂縫處理方案
- 《機(jī)械制造工藝》課件-復(fù)合加工技術(shù)
- 建筑幕墻施工技術(shù)規(guī)范
- 冬季混凝土施工養(yǎng)護(hù)措施
- 項(xiàng)目施工進(jìn)度管理方案
- 市政管道材料選擇標(biāo)準(zhǔn)方案
- 2025輔助肝移植臨床應(yīng)用指南(2024版)解讀課件
- 2025多學(xué)科共識(shí)聲明:成人使用GLP-1RA、GIPGLP-1RA和SGLT2i的擇期圍術(shù)期管理課件
- 拆遷施工安全防護(hù)方案
- 道路平整度控制方案
- 消防維保計(jì)劃實(shí)施方案
- 有子女離婚協(xié)議書
- 北京市2025-2026學(xué)年高二(上)期末物理適應(yīng)卷C(含答案)
- 2026年黑龍江高職單招考試高考語文試卷試題(含答案)
- 完整版老舊小區(qū)改造工程施工組織設(shè)計(jì)方案
- 全球隱球菌病指南(2024版):診斷與管理課件
- 市場(chǎng)營(yíng)銷策劃實(shí)踐實(shí)習(xí)報(bào)告范例
- 山西省2026屆高三第一次八省聯(lián)考地理(T8聯(lián)考)(含答案)
- 2026年中央廣播電視總臺(tái)招聘124人備考筆試題庫(kù)及答案解析
- 四川水利安全b證考試試題及答案
- 2626《藥事管理與法規(guī)》國(guó)家開放大學(xué)期末考試題庫(kù)
評(píng)論
0/150
提交評(píng)論