版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年遼寧省錦州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.有以下程序:
程序運行后的輸出結(jié)果是()。
A.0B.一1C.1D.7
3.若有運算符:>、*=、<<、%、sizeof,則它們按優(yōu)先級(由低至高)的正確排列次序為()。
A.*=<<>%sizeof
B.<<*=>%sizeof
C.%=><<sizeof%
D.*=><<%sizeof
4.對于只在表的首、尾兩端進行插入操作的線性表,宜采用的存儲結(jié)構(gòu)為()。
A.順序表B.用頭指針表示的循環(huán)單鏈表C.用尾指針表示的循環(huán)單鏈表D.單鏈表
5.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b==2)r=2;elseif(c!=3)r=3;elseif(d==4)r=4;printf(“%d\n”,r);}程序運行后的輸出結(jié)果是()。
A.0B.4C.1D.2
6.若有定義語句:“charsE10]="1234567\0\0";”,則strlen(s)的值是()。
A.7B.8C.9D.10
7.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。
A.3B.5C.7D.9
8.以下合法的字符型常量是A.B.C.D.
9.設(shè)有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。
A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次
10.若i和k都是int類型變量,有以下for語句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是()。
A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)
11.若變量已正確定義,下列正確的程序段是()。
A.while(ch=getchar()=='\N')putchar(ch);
B.while((ch=getchar())=='\n')putchar(ch);
C.while((ch=getchar())!='\N')putchar(ch);
D.while((ch=getchar())!='\n')putchar(ch);
12.若有定義“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。
A.1B.1.9C.2D.2.4
13.以下選項中與“if(a==l)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
14.以下敘述中正確的是
A.語句inta[4][3]={{1,2},{4,5}};是錯誤的初始化形式
B.語句inta[4][3]={1,2,4,5};是錯誤的初始化形式
C.語句inta[][3]={1,2,4,5};是錯誤的初始化形式
D.在邏輯上,可以把二維數(shù)組看成是一個具有行和列的表格或矩陣
15.在長度為n的順序存儲的線性表中,刪除第i個元素(1≤i≤n)時,需要從前向后依次前移____個元素。
A.n-iB.n-i+1C.n-i-1D.i
16.棧通常采用的兩種存儲結(jié)構(gòu)是A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)
B.散列方式和索引方式
C.鏈表存儲結(jié)構(gòu)和數(shù)組
D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
17.設(shè)有定義“intk=0;”,以下選項的4個表達式中與其他3個表達式的值不相同的是()。
A.++kB.k+=1C.k++D.k+1
18.若有定義語句:inta[3][6];,按在內(nèi)存中的存放順序,a數(shù)組的第10個元素是A.a[0][4]B.a[1][3]C.a[0][3]D.a[1][4]
19.下列程序的輸出結(jié)果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++b);}
A.1,2B.1,3C.0,2D.0,3
20.設(shè)有以下函數(shù):voidfun(intn,char*s){…}則下面對函數(shù)指針的定義和賦值均正確的是()。
A.void(*pf)();pf=fun;
B.void*pf();pf=fun
C.void*pf();*pf=fun;
D.void(*pf)(int,char);pf=&fun;
二、2.填空題(20題)21.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
22.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當(dāng)字符串是回文時,函數(shù)數(shù)返回字符串:yes!否則函數(shù)返回這符串:no!并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
pl=str;p2=______;
for(i=0;i<=strlen(str)/2;i+*)
if(*p1++!=*p2--){t=1;break;}
if(______)return("yes!");
elsereturn(*no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",______);
}
23.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)—管理與控制。
24.以下程序的輸出結(jié)果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
25.若有如下程序:
#include"stdio.h"
main()
{chars[30];
strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");
printf("%s\n",s);}
則程序運行后的輸出結(jié)果是【】。
26.函數(shù)de1ete(s,i,n)的作用是從字符串s中刪除從笫i個字符開始的n個字符,請?zhí)羁铡?/p>
voidde1ete(chars[],inti,intn)
{intj,k,length=O;
whi1e(s[length])
【】
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
whi1e(k<length)
s[j++]=s[k++];
s[j]='\0;}
27.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次。
28.設(shè)有以下結(jié)構(gòu)體類型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且結(jié)構(gòu)體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補充完整:
fwrite(student,【】,1,fp);
29.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。
30.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。
#defineN4
voidrotate(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=a[0][i];【】=a[N-1][i];}
}
31.下面程序的功能是用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>
#include"stdio.h"
main()
{longcount=OL;
FILE*fp=【】("text.dat","r");
if(fp==0)
{printf("Openerror\n");
exit(0);
}
while(【】)
{
fgetc(fp);
count++;
}
fclise(fp);
printf("%1d\n",count);
}
32.有以下程序;
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ints=0;
{inta=5;
s+=f(&A)
}
s+=f(&A)
printf("%d\n",s)
}
執(zhí)行后的輸出結(jié)果是【】。
33.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。
34.以下程序運行后的輸出結(jié)果是()。main(){inta=3,b=4,c=5,t=79;if(b<a&&a<C)t=a;a=c;c=t;if(a<c&&b<C)t=b;b=a;a=t;printf("%d%d%d\n",a,b,C);}
35.在面向?qū)ο蠓椒▽W(xué)中,直接反映了用戶對目標系統(tǒng)的要求的模型是【】。
36.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),帶鏈的棧屬于【】。
37.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
unsignedfun6(unslgnednum)
{unsignedk=1;
do{k*=mum%10;num/=10;}
while(num);
returnk;
}
main()
{unsignedn=26;
printf("%d\n",fan6(n));
}
38.若有如下程序:
main()
{ints=8,a=3,b=5,c=6;
if(a>b)s=a;a=b;b=s;
if(a>c){s=a;a=c;b=s);
if(b>c)s=b;b=c;c=s;
printf("%d,%d,%d\n",a,b,c);
}
則程序運行后的輸出結(jié)果是【】。
39.若輸入tc,則程序的運行結(jié)果為【】。
#include<stdio.h>
main()
{charstr[40];
fscanf(stdin,"%s",str);
fprintf(stdout,"%s\n",str);
}
40.下列程序段的運行結(jié)果是______。
intx=0,y=0;
while(x<15)y++,x+=++y;
printf("%d,%d",y,x);
三、1.選擇題(20題)41.若有定義和語句: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
42.數(shù)據(jù)庫的物理設(shè)計是為一個給定的邏輯結(jié)構(gòu)選取一個適合應(yīng)用環(huán)境的______的過程,包括確定數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法。
A.邏輯結(jié)構(gòu)B.物理結(jié)構(gòu)C.概念結(jié)構(gòu)D.層次結(jié)構(gòu)
43.當(dāng)執(zhí)行下面的語句定義一維數(shù)組a后,此數(shù)組的所有元素為()inta[10];
A.a[1],a[2],a[3],a[4],a[5],a[6],a[8],a[9],a[10],a[10]
B.a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]
C.a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]
D.a[1],a[2],a[3],a[4],a[5],a[9],a[7],a[8],a[9],a[10],a[11]
44.有以下程序
main()
{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}
程序執(zhí)行后的輸出結(jié)果是
A.45B.20C.25D.36
45.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。
A.a\bhow\'are\'y\\bou
B.a\bhow\'are\'y\bou
C.how'are'you
D.ahow'are'y\bou
46.以下程序的輸出結(jié)是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}
A.200100B.100100C.100200D.200200
47.以下敘述中正確的是()。
A.構(gòu)成C程序的基本單位是函數(shù)
B.可以在一個函數(shù)中定義另一個函數(shù)
C.main函數(shù)必須放在其他函數(shù)之前
D.C函數(shù)定義的格式是K&R格式
48.有以下程序:#include<stdio.h>main(){intaa[5][5]={{1,2,3,4},{5,6,1,8},{5,9,10,2},{1,2,5,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][2];printf("%d",s);}程序運行后的輸出結(jié)果是()。
A.26B.19C.10D.20
49.下列程序的輸出結(jié)果是______。main(){intx,y;for(x=1,y=1;x<=10;x++){if(y>=5)break;if(y%3==1)}y+=3;continue;}y-=5;}printf("%d\n",x);}
A.2B.3C.4D.5
50.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a<b)if(b<O)c=0;elsec++;printf("%d\n",c);}
A.0B.2C.1D.3
51.有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為()。
A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE
52.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}
A.-8B.14C.0D.-24
53.在結(jié)構(gòu)化程序設(shè)計方法中,下面哪種內(nèi)聚性最弱?
A.邏輯內(nèi)聚B.時間內(nèi)聚C.偶然內(nèi)聚D.過程內(nèi)聚
54.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
55.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是______。
A.23B.26C.33D.36
56.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。
A.inti=100;for(;;){i=i%10+1;if(i>10)break;}
B.while(1);
C.intk=0;do{++k;}while(k<=10);
D.ints=12;while(s);--s;
57.在函數(shù)scanf的格式控制中,格式說明的類型與輸入項的類型應(yīng)該對應(yīng)匹配。如果類型不匹配,系統(tǒng)將()。
A.不予接收B.并不給出出錯信息,但不能得到正確的數(shù)據(jù)C.能接收到正確輸入D.給出出錯信息,不予接收輸入
58.下列選項中不屬于軟件生命周期開發(fā)階段任務(wù)的是()。
A.軟件測試B.概要設(shè)計C.軟件維護D.詳細設(shè)計
59.在16位IBM-PC機上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是()。
A.1B.2C.7D.11
60.執(zhí)行以下程序后i的值為()。main(){intx,i;for(i=l,x=1;i<=36;i++){if(x>=20)break;if(x%5==1){x+=5;continue;}x-=5;)printf("%d",i);}
A.3B.4C.5D.6
四、選擇題(20題)61.下面程序的輸出結(jié)果為()。
structst
{intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],
70,&dt[2],80&dt[3]};
main()
{p=aa;
printf("%d\n",++p->x);
printf("%d\n",(++p)->x);
printf("%d\n",++(*p->y));
}
A.10B.50C.51D.60
20606070
20212131
62.
63.有以下程序程序執(zhí)行后的輸出結(jié)果是()。
A.y=一1B.y=oC.y=1D.while構(gòu)成無限循環(huán)
64.有以下程序:
程序運行后的輸出結(jié)果是()。
A.1*1=11*2=21*3=32*1=22*2=43*1=3
B.1*1=11*2=21*3=32*2=42*3=63*3=9
C.1*1=11*2=22*2=41*3=32*3=63*3=9
D.1*1=12*l=22*2=43*1=33*2=63*3=9
65.下面程序的輸出結(jié)果是()。
#inclde<stdio.h>
#defineSUB(X,Y)(X)*Y
main()
{inta=3,b=4;
printf("%d\n",SUB(a++,b++));
}
A.12B.15C.16D.20
66.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
67.為了使模塊盡可能獨立,要求()。
A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強
B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強
68.下列C語言用戶標識符中,不屬于合法標識符的是
A._1B.d3_7C._a7D.m—n
69.以理對枚舉類型名的定義中正確的是______。
A.enuma={one,two,three);
B.enuma{one=9,two=1three};
C.enuma={"one","two","three"};
D.enuma{"one","two"."three"};
70.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是
A.插入排序B.冒泡排序C.直接插入排序D.堆排序
71.
72.
下述程序的輸出結(jié)果是()。
#include<stdio.h>
main
{inti;
for(i=l;i<=10;i++)
{if(i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i);
}
A.49B.36C.25D.64
73.有以下程序程序運行后的輸出結(jié)果是()。
A.1,2B.2,4C.1,4D.2,3
74.
75.
76.有以下程序:
程序運行后的輸出結(jié)果是()。
A.12B.14C.1234D.123456
77.
78.下列敘述中正確的是()。A.線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)在存儲空間的需求上沒有可比性
79.非空循環(huán)鏈表所表示的數(shù)據(jù)結(jié)構(gòu)()。
A.有根結(jié)點也有葉子結(jié)點B.沒有根結(jié)點但有葉子結(jié)點C.有根結(jié)點但沒有葉子結(jié)點D.沒有根結(jié)點也沒有葉子結(jié)點
80.有以下程序:
若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序運行后的輸出結(jié)果是:l2,a,34,b。則正確的輸入格式是(以下-代表空格,<;CR>;代表回車)()。
A.12-a34-b<CR>
B.12-a-34-b<CR>
C.12,a,34,b<CR>
D.12a34b<CR>
五、程序改錯題(1題)81.下列給定程序中函數(shù)proc()的功能是:將長整型數(shù)中為偶數(shù)的數(shù)依次逆向取出,構(gòu)成一個新數(shù)放在t中。高位在低位,低位在高位。例如,當(dāng)s中的數(shù)為12345678時,則t中的數(shù)為8642。
請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.函數(shù)fun的功能是:將s所指字符串中下標為偶數(shù)同時ASCIl值為奇數(shù)的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符C的ASCIl碼值為奇數(shù),在數(shù)組中的下標為偶數(shù),因此必須刪除;而字符l的ASCIl碼值為奇數(shù),在數(shù)組中的下標為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDFl2345”。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.A
2.Ba一一的含義是先用后減l,所以當(dāng)a的值為0時,跳出循環(huán),但是仍要執(zhí)行a一一,g的值變?yōu)橐?。
3.D解析:本題主要考查算術(shù)運算的優(yōu)先級。順序如下:
[*]
注:*=、>、<<、%、sizeof的優(yōu)先級依次遞增。
4.C
5.D第1個if語句是單獨的一條語句,所以執(zhí)行完第1個if語句后,r的值仍為初值0。第2個if語句與后續(xù)的兩個elseif都是嵌套的,所以只會執(zhí)行其中的一個語句,即“if(b==2)r=2;”這條語句。故本題答案為D選項。
6.A"\0"表示空字符,strlen函數(shù)求得的是不包括字符串結(jié)束符\0的長度。故選A。
7.BB.【解析】快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。
8.A解析:C語言的字符常量是用單引號(即撇號)括起來的一個字符。除此之外,在C語言中還允許用以一個“\\”開頭的字符序列來表示字符常量。其中,形式“\\ddd”表示1到3位8進制數(shù)所代表的字符;形式“\\xhh”表示1到2位16進制數(shù)所代表的字符。在本題中‘\\x13’表示回車符,是一個字符常量;‘\\081’用\u30008進制數(shù)所代表的字符,但形式不正確,因為8進制數(shù)所表示的字符中不會出現(xiàn)數(shù)字“8”;‘65’不是一個字符,而是一個+進制數(shù)字;“\\n”是用雙引號括起來的一個字符,表示一個字符串,而不是字符常量。
9.C本題考查while,while循環(huán)表達式k-1是個賦值表達式而不是邏輯表達式,k的初值為l2不符合循環(huán)條件,所以循環(huán)體語句一次也不執(zhí)行。
10.D此題考查的是基本的循環(huán),答案為D。
11.D解析:本題考查兩個知識點:①C語言用'\\n'這個字符常量表示換行;②函數(shù)getchar()的作用是從終端輸入一個字符,當(dāng)遇到換行時結(jié)束輸入。
12.A在表達式“z=0.9+x/y”中,先計算“3.6-2”,結(jié)果為1;再計算“0.9+1”,結(jié)果為1.9。因為變量z為整型,所以z的值為1。故本題答案為A選項。
13.B題中當(dāng)a的值為l時,關(guān)系表達式a==l的值為真,即1,因此程序?qū)⑻D(zhuǎn)到easel執(zhí)行a++操作,與題干程序剛好相反。
14.D二維數(shù)組在初始化時,可以省第1維,但是不可以省第2維。可以為部分數(shù)組元素初始化。A選項、B選項和C選項內(nèi)的初始化都沒有錯誤。因此D選項正確。
15.A
16.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設(shè)指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現(xiàn)。注意:這3種運算方法在各種存儲結(jié)構(gòu)中的應(yīng)用。
17.C表達式“++k”是先使得k的值自增1后再使用。表達式“k++”是先取得k的值再將k的值自增1。所以C選項中表達式的值為0,而其他3個選項中表達式的值均為1。故本題答案為C選項。
18.B解析:二維數(shù)組的元素在內(nèi)存中是按行列順序連續(xù)存放的。以本題的二維數(shù)組a[3][6]為例,它的元素在內(nèi)存中的存放順序是:a[0][0]、a[0][1]、a[0][2]…a[0][5]、a[1][0]、\u3000a[1][1]…a[1][5]、a[2][0]…a[2][5]。由此可見,第10個元素就是第2行第4個元素,即a[1][3]。故應(yīng)該選擇B。
19.D解析:本題主要考查自加(++)、自減(--)運算符的使用。“++i,--i”在使用i之前,先使i的值加1或者減1,然后再使用i此時的值參與運算;“i++,i--”是在使用i參與表達式運算之后,再使i的值加1或者減1。本題中--a和++b是先執(zhí)行a減1和b加1操作,再輸出表達式的值。
20.A函數(shù)指針的定義格式為函數(shù)類型(*指針變量名)(形參列表);函數(shù)名和數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時,直接將函數(shù)指針指向函數(shù)名就行了。所以選項A正確。
21.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。
22.str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:判斷回文教一般使用兩個指針或下標變量分別從檢查串的第1個字符和最后一個字符開始相向移動,并比較兩者內(nèi)容是否相同,直到中間相遇一直相同則是回文數(shù),否則不是。函數(shù)huiwen中開始定義了兩個字符指針p1和p2,并讓p1指向str的開始位置,所以p2應(yīng)該指向str的尾部,即&str[strlen(sir)-1]或?qū)懗蓅tr+strlen(str)-1或者其他等價形式。然后使用一個循環(huán),循環(huán)str的長度的一半次數(shù),比較p1和p2的內(nèi)容,并分別遞增和遞減這兩個指針。若有不同,則讓標志t為1,并跳出循環(huán)。所以最后一個if語句應(yīng)該為判斷標志t是否為1,即應(yīng)該填t==0或者其他等價形式。在主函數(shù)中,應(yīng)該輸出huiwen()函數(shù)的返回結(jié)果,印最后一空應(yīng)該填huiwen(str)。
23.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)—管理與控制。
24.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空.輸出語句不在for循環(huán)體內(nèi),所以在循環(huán)執(zhí)行完畢后才輸出s的值.s、i的初值分別為0和1,判斷循環(huán)條件,表達式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達式“2<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為3,再次判斷循環(huán)條件,表達式“3<3”不成立,循環(huán)結(jié)束。
25.adf
26.length++i<lengthlength++\r\ni<length解析:第—個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到第i+n或最后—個間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進行了-i運算,故實際應(yīng)填入i<length。
27.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本題考查軟件工程的測試。測試一般有兩種方法:黑盒測試和白盒測試。黑盒測試不考慮程序的內(nèi)部邏輯結(jié)構(gòu)和處理過程,只著眼于程序的外部特性。用黑盒測試來發(fā)現(xiàn)程序中的錯誤,必須用所有可能的輸入數(shù)據(jù)來檢查程序能否都能產(chǎn)生正確的輸出。白盒測試是在了解程序內(nèi)部結(jié)構(gòu)和處理過程的基礎(chǔ)上,對程序的所有路徑進行測試,檢查路徑是否都能按預(yù)定要求正確工作。因此,劃線處應(yīng)填入“白盒(箱)”或“WhiteBox”。
28.sizeof(structst)*50sizeof(structst)*50解析:fwrite函數(shù)的一般調(diào)用形式為:fwrite(buffer,size,count,fp);其中:buffer是一個指針變量,是要輸出數(shù)據(jù)的起始地址;size是要寫的字節(jié)數(shù);count是要寫多少個size字節(jié)的數(shù)據(jù)項;fp是文件指針。
29.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。
30.b[i][0]b[i][0]解析:因為要將a的最后一行放在b的第0列中,【】應(yīng)填b的第0列的元素。
31.fopen!feof(fp)fopen\r\n!feof(fp)解析:第一空從右邊的括號中可以看出,這里應(yīng)該填入一個fopen,整條語句用來打開一個名為text.dat的文件。第二空是一個while循環(huán)的循環(huán)條件表達式,循環(huán)體每次讀取一個字符,并讓count增1,所以循環(huán)條件應(yīng)該是“如果文件還沒結(jié)束”,故應(yīng)該填!feof(fp)。
32.77解析:如果局部變量與全局變量重名,在局部變量的作用域,全局變量不起作用。所以在main函數(shù)中第一次調(diào)整函數(shù)f時a=5得s=5,第二次調(diào)用函數(shù)f時a=2得s=5+2=7。函數(shù)f在執(zhí)行語句return(*A)++時首先返回*A,然后將*A的值加1。
33.存儲或物理或存儲結(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)。
34.45794579解析:本題考查的是條件判斷語句。本題特別需要注意的是“;”的問題,不能把“t=a;a=c;c=t;”誤認為是第一個if的語句,實際上,只有“t=a;”才是第一個if的語句。所以判斷第一個if語句的表達式不成立后,執(zhí)行的是“a=c;c=t;”,此時a=5,c=79。然后判斷第二個if語句的條件表達式,表達式成立,執(zhí)行后面的3條語句,讓a、b、c分別為4、5和79。
35.功能模型功能模型
36.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:帶鏈的棧屬于棧的鏈式存儲結(jié)構(gòu)。
37.1212解析:循環(huán)語句中,表達式num%10是取num的個位。循環(huán)直至num為0結(jié)束,這是逐一求出num+進制表示的各位數(shù)字,并累乘于變量k中。函數(shù)最后返回k,所以程序輸出12。
38.5685,6,8解析:首先要清楚當(dāng)滿足第1個if的判斷條件時只執(zhí)行一條語句“s=a;”,當(dāng)滿足第2個if的判斷條件時執(zhí)行一條復(fù)合語句“{s=a;a=c;b=s};”,當(dāng)滿足第3個if的判斷條件時只執(zhí)行一條語句“s=b;”。執(zhí)行程序:判斷a>b,由于a=3,b=5則3>5為假,不執(zhí)行“s=a;”,執(zhí)行“a=b;”和“b=s;”,則a=5,b=8。判斷a>c,由于a=5,c=6則5>6為假,不執(zhí)行“{s=a;a=c;b=s};”。判斷b>c,由于b=5,c=6則5>6為假,不執(zhí)行“s=b;”,執(zhí)行“b=c;”和“c=s;”,則b=6,c=8。最后輸出5,6,8。
39.tc
40.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。
41.D解析:本題考查指針變量的賦值。
**pp是定義了一個指向指針的指針變量,語句pp=&p的意思是將pp指向指針p,*p和**pp都是指針p所指的內(nèi)存空間的內(nèi)容,即b的值。
42.B解析:根據(jù)數(shù)據(jù)庫物理設(shè)計的概念可知:為一個給定的邏輯數(shù)據(jù)模型選取一個最合適應(yīng)用要求的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計。數(shù)據(jù)庫的物理結(jié)構(gòu)就是指數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法。
43.B
44.C解析:統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。程序運行的結(jié)果是1+2+3+4+5+6+7+8+9=25。
45.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號字符;“\\\\”格式符表示輸出反斜線字符。
46.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。
47.A解析:本題考查C語言的綜合基礎(chǔ)知識。構(gòu)成C程序的基本單位是函數(shù),一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨立的,在定義函數(shù)時,一個函數(shù)內(nèi)不能定義另一個函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。
48.B解析:本題考查二維數(shù)組元素的引用。二維數(shù)組可以看成是一個矩陣,aa[i][2]其實就是第i行的第3個元素,for循環(huán)內(nèi)的s+=aa[i][2]其實就是將矩陣第3列的數(shù)相加,即s=3+1+10+5=19。
49.B解析:本題考查循環(huán)輔助控制語句break和continue,前者退出整個for循環(huán),后者跳過本次循環(huán)沒有執(zhí)行完的若干條語句,開始下一次循環(huán)操作,建議讀者采用本書推薦的列表法分析。
50.C解析:本題考查if語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b不成立,不再執(zhí)行下列的語句,直接執(zhí)行最后的printf輸出語句,然后結(jié)束程序,整個過程c的值沒有發(fā)生變化。
51.B解析:對二又樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。在遍歷左,右子樹時,注意依舊按照“左子樹—根結(jié)點—右于樹”的順序。
52.D解析:表達式a+=a-=a*a看起來復(fù)雜,其實將它分成兩個表達式來計算就簡單了:①第一個表達式(a-=a*a)=(a=a-a*a=-12);②第二個表達式(a+=a-=a*a)=(a=a+a=-24)。
53.C解析:內(nèi)聚有很多種類,其中內(nèi)聚性由弱到強的順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚。
54.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正確。
55.A解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針所指向的數(shù)組值,此時p所指向的是aa[O][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應(yīng)為3。
56.C
57.B解析:在scanf函數(shù)的格式控制中,格式說明的類型與輸入項的類型必須一一對應(yīng)匹配,如不匹配將導(dǎo)致數(shù)據(jù)輸入出現(xiàn)錯誤,但是系統(tǒng)并不報錯。
58.C解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個時期組成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務(wù)是確定軟件系統(tǒng)的工程需求。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)時期是具體設(shè)計和實現(xiàn)在前一時期定義的軟件,它通常由下面五個階段組成:概要設(shè)計、詳細設(shè)計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務(wù)是使軟件持久地滿足用戶的需要。即當(dāng)軟件在使用過程中發(fā)現(xiàn)錯誤時應(yīng)加以改正;當(dāng)環(huán)境改變時應(yīng)該修改軟件,以適應(yīng)新的環(huán)境;當(dāng)用戶有新要求時應(yīng)該及時改進軟件,以滿足用戶的新要求。根據(jù)上述對軟件生命周期的介紹,可知選項C中的軟件維護不是軟件生命周期開發(fā)階段的任務(wù)。因此,本題的正確答案是C。
59.D解析:結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。
60.C解析:第1次循環(huán)執(zhí)行情況如下:
i=1,x=1,判斷i<=36為真執(zhí)行循環(huán)體。
x=1,判斷x>=20為假。
判斷x%5==1為真,執(zhí)行x+=5;x值為6,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5:。
執(zhí)行i++,i=2。
第2次循環(huán)執(zhí)行情況如下:
i=2,判斷i<=36為真執(zhí)行循環(huán)體。
x=6,判斷x>=20為假。
判斷x%5==1為真,執(zhí)行x+=5:x值為11,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5;。
執(zhí)行i++,i=3。
第3次循環(huán)執(zhí)行情況如下:
i=3,判斷i<=36為真執(zhí)行循環(huán)體。
x=11,判斷x>=20為假。
判斷x%5==1為真,執(zhí)行x+=5;x值為16,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5:。
執(zhí)行i++,i=4。
第4次循環(huán)執(zhí)行情況如下:
i=4,判斷i<=36為真執(zhí)行循環(huán)體。
x=16,判斷x>=20為假。
判斷x%5==l為真,執(zhí)行x+=5;x值為21,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5;。
執(zhí)行i++,i=5。
第5次循環(huán)執(zhí)行情況如下:
i=5,判斷i<=36為真執(zhí)行循環(huán)體。
x=21,判斷x>=20為真。
執(zhí)行break;,跳出循環(huán)體,即結(jié)束循環(huán)。最后i=5,選項C正確。
61.Cp指向aa的首地址,++p->x首先取x的值,再增1,即50+1;(++p)->x使p指向下一元素,然后取其值,即60,++(*p->y)取y指向的值,即20,然后增1,即20+1
62.B
63.A當(dāng)y為。時,y--表達式為0,條件為假,循環(huán)結(jié)束,執(zhí)行判斷條件后v為一l,所以選擇A)。
64.B本題考查的是循環(huán)嵌套。在一個循環(huán)體內(nèi)又完整地包含了另一個循環(huán),稱為循環(huán)嵌套。外循環(huán)i的值分別為1、2、3,當(dāng)i=1,內(nèi)循環(huán)J=1時,輸出1*1=1;當(dāng)內(nèi)循環(huán)j=2時,輸出l*2=2;當(dāng)內(nèi)循環(huán)j=3時,輸出l*3=3,此時跳出內(nèi)層for循環(huán)打印換行符”\n”;當(dāng)i=2
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑農(nóng)民工合同范例
- 廠房承建施工合同范例
- 三方框架合作協(xié)議合同范例
- 員工關(guān)系管理培訓(xùn)合同范例
- 成品衣柜正規(guī)合同范例
- 房產(chǎn)土地評估合同范例
- 書訂單合同范例
- 住宅售房合同范例
- 合作采購設(shè)備合同范例
- 個人合同范例范例
- 支撐梁拆除安全協(xié)議書
- 2024-2030年中國充血性心力衰竭(CHF)治療設(shè)備行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 五年級道德與法治上冊說課稿《古代科技 耀我中華(第一課時) 》部編版
- 小學(xué)語文大單元設(shè)計論文
- Unit 6 教學(xué)教學(xué)設(shè)計 2024-2025學(xué)年人教版七年級英語上冊
- Visio商業(yè)圖表制作分析智慧樹知到期末考試答案章節(jié)答案2024年上海商學(xué)院
- 競爭性談判工作人員簽到表及競爭性談判方案
- 山東省淄博市張店區(qū)2023-2024學(xué)年九年級上學(xué)期1月期末化學(xué)試題(含解析)
- 廈門旅游課件
- 人工智能導(dǎo)論智慧樹知到期末考試答案章節(jié)答案2024年哈爾濱工程大學(xué)
- 單位食堂供餐方案(2篇)
評論
0/150
提交評論