




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年內(nèi)蒙古自治區(qū)赤峰市全國計算機等級考試C語言程序設(shè)計預測試題(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。
A.x&&y
B.x<=y
C.x||y+z&&y-z
D.!((x<y)&&!z||1)
2.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
3.
4.
5.CPU能夠直接訪問的存儲器是
A.軟盤B.硬盤C.RAMD.CD-ROM
6.一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[2][1]的值為()。
A.0B.4C.8D.6
7.
8.有以下程序:#include<stdio.h>main(){intb[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l;for(i=0;i<3;i++)for(j=1;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序運行后的輸出結(jié)果是()。A.1B.3C.4D.0
9.下列選項中與“if(a==1)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a==1){ case0:a=b;break; case1:a++;}
B.switch(a){ case1:a=b;break; default:a++;}
C.switch(a){ default:a++;break; case1:a=b;}
D.switch(a==1){ case1:a=b;break; case0:a++;}
10.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");
B.for(w=k;w;--w)printf("*");
C.w=k;while(w--!=0)printf("*");
D.w=k:w++;do{w--;printf("*");}while(w!=0);
11.下列選項中不是字符常量的是()。A.A.'\v'
B.'\x2a'
C.'a'
D."\0"
12.在下列幾種排序方法中,空間復雜度最高的是()
A.歸并排序B.快速排序C.插入排序D.選擇排序
13.
14.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運行后的輸出結(jié)果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1
15.數(shù)據(jù)流圖用于抽象地描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
16.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。
A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C.k=(a<b)?a:b;k=(b<c)?b:c;
D.k=(a<b)?a:b;k=(a<c)?a:c;
17.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是
A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,
18.下面程序的運行結(jié)果是
#include<stdio.h>
main()
{inta=28,b;
chars[10],*p;
p=s;
do{b=a%16;
if(b<10)*p=b+48;
else*p=b+55;
p++;a=a/5;}while(a>0);
*p=′\0′;puts(s);}
A.10B.C2C.C51D.\0
19.
20.以下說法正確的是()。
A.C語言只接受十進制的數(shù)
B.C語言只接受二進制、八進制、十六進制的數(shù)
C.C語言只接受二進制、十進制、十六進制的數(shù)
D.C語言只接受八進制、十進制、十六進制的數(shù)
二、2.填空題(20題)21.以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)羁铡?/p>
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i{i=x[m];p0=m;}
elseif(x[m]<j{j=x[m];p1:m;}
}
t=x[p0];x[p0]=x
22.有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個數(shù)之后,然后將比這個數(shù)大的數(shù)順序后移一個位置,在空出的位置上將該數(shù)插入。請在程序中的空白處填上一條語句或一個表達式。
#defineN100
main()
{floata[N+1],x;
inti,p;
for(i=0;i<N;i++)
scanf("%f"&a[i]);
scanf("%f",&x);
for(i=0,p=N;i<N;i++)
if(x<a[i])
{【】;
break;}
for(i=N-1;【】;i-)
a[i+1]=a[i];
a[p]=x;
for(i=0;【】;i++)
{printf("%8.2f",a[i]);
if(i%5=0)
printf("\n");
}
}
23.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*prt=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y<x)?*(ptr+y):x;
printf("%d\n",z);
}
24.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
25.以下程序的輸出結(jié)果是【】。
#defineMCNA(m)2*m
#defineMCNB(n,m)2*MCRA(n)+m
#definef(x)(x*x)
main()
{inti=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
26.以下程序中,fun()函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁铡?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=x;
}
}
27.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),帶鏈的棧屬于【】。
28.在關(guān)系模型中,二維表的行稱為______。
29.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
inta=5;
fun(intb)
{staticinta=10;
a+=b++;
printf("%d",a);
}
main()
{intc=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
30.下列程序執(zhí)行后輸出的結(jié)果是【】。
structs
{intx,y;}data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
31.請選出以下程序的輸出結(jié)果#include<stdio.h>main(){inta[]={1,2,3,4},i;intx=0;for(i=0;i<4;i++){sub(a,x);Printf("%d",x);}printf("\n");}sub(S,y)int*s,y;{staticintt=3;y=s[t];t--;}
32.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"
33.設(shè)C語言中,一個int型數(shù)據(jù)在內(nèi)存中占兩個字節(jié),則int型數(shù)據(jù)的取值范圍為【】。
34.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、______和自定義完整性。
35.下列程序的輸出結(jié)果是【】。
voidfun(int*n)
{while((*n))
printf("%d",(*n)--);
}
main()
{inta=10;
fun(&a);
}
36.有以下程序
main()
{intx=1,y=1,z=1;
y=y+z;x=x+y;
printf("%d",x<y?y:x);
printf("%d",x<y?x++:y++);
printf("%d",x);
printf("%d",y);
}
運行結(jié)果是【】
37.棧和隊列通常采用的存儲結(jié)構(gòu)是【】。
38.下面程序的運行結(jié)果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}
39.以下程序的輸出結(jié)果是【】。
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
40.以下程序輸出的結(jié)果是【】。
#include<stdio.h>
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
三、1.選擇題(20題)41.下列選項中非法的表達式是________。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
42.鏈表不具有的特點是()
A.不必事先估計存儲空間B.可隨機訪問任一元素C.插入刪除不需要移動元素D.所需空間與線性表長度成正比
43.設(shè)有定義:longx=-123456L;,則以下能夠正確輸出變量x值的語句是A.printf("x=%d\n",x);
B.printf("x=%1d\n",x);
C.printf("x=%8dL\n",x);
D.printf("x=%LD\n",x);
44.以下選項中錯誤的是()
A.char*sp;gets(sp);
B.charsp[5]gets(sp);
C.char*sp="12345";gets(sp);
D.charsp[5]="\0"gets(sp)
45.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標值
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]);________;
return(p);}
在橫線處應(yīng)填入的是
A.i=pB.a[p]=a[i]C.p=jD.p=i
46.能將高級語言程序轉(zhuǎn)換成目標語言程序的是______。
A.調(diào)試程序B.解釋程序C.編譯程序D.編輯程序
47.下面程序的輸出結(jié)果是()。func(intX){staticinta=2;return(a+=X);}main(){intb=2,c=4,d;d=func(b);d=func(c);printf("%d\n",d);}
A.4B.6C.8D.12
48.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是______。
A.max(intx,inty,int*z){*z=x>y?x:y;}z=x>y?x:y;
B.intmax(intx,y){intz;returnz;}
C.max(intx,inty){intz;z=x>y?x:y;return(z);}
D.intmax(intx,inty){returnx>y?x:y;}
49.若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*pp=______malloc(sizeof(int));則應(yīng)填入______。
A.intB.int*C.(*int)D.(int*)
50.有以下程序
#include<stdio.h>
#include<string.h>
voidfun(char*s[],intn)
{char*t;inti,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}
}
main()
{char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};
fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);
}
程序的運行結(jié)果是
A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc
51.有以下函數(shù)fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}該函數(shù)的功能是______。
A.計算a和b所指字符串的長度之差
B.將b所指字符串連接到a所指字符串中
C.將b所指字符串連接到a所指字符串后面
D.比較a和b所指字符串的大小
52.下列程序的輸出結(jié)果是()。
#include<stdio.h>
#defineF(x)2.84+x
#definew(y)printf("%d",(int(y))
#defineP(y)w(y)pmchar('\n'》
main()
{intx=2;
P(F(5)*x);
}
A.12B.13C.14D.16
53.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
54.軟件需求分析階段的工作,可以分為4個方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及()。
A.階段性報告B.需求評審C.總結(jié)D.以上都不正確
55.下列選項中均屬于C語言合法的標識符的是()
A.Int#subbreak
B._3abFORLong
C.3aprintfa_b
D.WORDautoinclude
56.若變量已正確定義,要求程序段完成求51的計算,不能完成此操作的程序段是
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)
57.已知二叉樹BT的后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______.
A.cedbaB.acbedC.decabD.deabc
58.執(zhí)行下列語句后的輸出結(jié)果為______。enum{x1=3,b=4,C,d,e}data;printf("%d",data=d);
A.6B.7C.8D.9
59.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
60.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。
A.不確定的值B.一個整數(shù)C.形參p中存放的值D.形參p的地址值
四、選擇題(20題)61.有以下程序程序運行后的輸出結(jié)果是()。
A.123456B.14C.1234D.12
62.有兩個關(guān)系R,S如下:
由關(guān)系R通過運算得到關(guān)系s,則所使用的運算為()。
A.選擇B.插入C.投影D.連接
63.有以下程序段
main()
{inta=5,*b,**c;
c=&b;b=&a;
……
}
程序在執(zhí)行了c=&b;b=&a;語句后,表達式:**c的值是()
A.變量a的地址
B.變量b中的值
C.變量a中的值
D.變量b的地址
64.有以下程序:
程序運行后的輸出結(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,
65.
66.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的
67.
68.
69.在E—R圖中,用來表示實體聯(lián)系的圖形是()。
A.橢圓形B.矩形C.菱形D.三角形
70.下列敘述中正確的是()。
A.數(shù)據(jù)庫不需要操作系統(tǒng)的支持
B.數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫是存儲在計算機存儲設(shè)備中的、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合
D.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致
71.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。A.741B.963C.852D.875421
72.
73.負責數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
74.針對簡單程序設(shè)計,以下敘述的實施步驟順序正確的是()。
A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔
B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔
C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試
D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔
75.以下不合法的字符常量是
A.’x\018’B.’\"’C.’\\’D.’\xcc’
76.有以下程序
77.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
78.數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.加工B.控制流C.數(shù)據(jù)存儲D.數(shù)據(jù)流
79.有以下程序
#include<stdio.h>
voidprt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*z++);}
main()
{inta=10,b=40,c=20;
prt(&a,&b,&c);
prt(&a,&b,&c);
}
程序的輸出結(jié)果是
80.
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。
請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:132333431424344415253545則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.D解析:本題考查邏輯運算符的使用。當“&&”的兩個運算對象都足邏輯1時,表達式才返回值是1;當“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值是1。選項A)中,x和y都是邏輯1,所以返回值是1;選項B)中,x=4<=y(tǒng)=6為邏輯1,所以返回值是1;選項C)中,y+z的值等于14,非0,y-z的值為-2,非0,所以邏輯表達式4||14&&-2的值不為0;選項D)中,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。
2.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價的。這是一種運算符之間的等價轉(zhuǎn)換,就好像a-(b-C)等價于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之擴展到二維數(shù)組甚至任意維數(shù)組上來。因為[]運算符的結(jié)合性是從左至右的,所以w[i][j]等價于(w[i][j],此時可以先將任意一個[]運算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價于w[i][j]。選項A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項B小,因為[]運算符的優(yōu)先級高于*運算符,所以*(w+1)[4]等價于*((w+1)[4]等價于*(*((w+1)+4)),即*(*(w+5)+0),它等價于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項C等價于w[1][0],是下確的。選項D中,&w[0][0]是數(shù)組w第1個元素的地址,它等價于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個數(shù),然后再除以這個數(shù)一樣。所以,&w[0][0]等價于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價于w[0][1],這個也是合法的。綜上所述,本題應(yīng)該選擇B。
3.D
4.D
5.C解析:CPU讀取和寫人數(shù)據(jù)都是通過內(nèi)存來完成的。
6.A
7.B
8.C本題考查了兩層for循環(huán)。外層循環(huán)增量i的值作為內(nèi)層循環(huán)執(zhí)行次數(shù)的值使用。
9.A題干中,if語句的含義是:如果a的值為1,將b的值賦給a,否則將a的值自增1。選項A中,“switch(a==1)”中表達式“a==1”的結(jié)果如果為真,即1,則從case1開始執(zhí)行“a++”;如果“a==1”的結(jié)果為假,即為0,則從case0開始執(zhí)行“a=b”,所以與題干含義執(zhí)行操作相反的是選項A中的語句。故本題答案為A選項。
10.C當循環(huán)結(jié)束時,w的值應(yīng)為-1,而其他選項中w的值為0,故選擇c選項。
11.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應(yīng)的ASCII碼值。"\0"用雙引號故不正確。
12.A
13.D
14.C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使\u3000y的值加1。此題中執(zhí)行z=x++,是將x的值先賦給z,所以z=1,接下來x自行加1,其結(jié)果為2:執(zhí)行y++后,y=2,執(zhí)行++后,y=3;故答案選C。
15.A解析:數(shù)據(jù)流圖包括四個方面,即加工(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體),不包括選項中的控制流。
16.B題目中嵌套語句的含義是當“a<b”且“a<c”成立時,將a的值賦給k。如果“a<b”成立而“a<c”不成立,則將c的值賦給k。如果“a<b”不成立而“b<c”成立,則將b的值賦給k。如果“a<b”不成立且“b<c”也不成立,則將c的值賦給k。判斷條件表達式,只有B選項可以表示這個含義。故本題答案為B選項。
17.A解析:在C語言中所謂函數(shù)的遞歸是在指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用.由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是i
18.C解析:考查用字符指針處理字符串的方法。語句'p=s;'是使指針p指向字符數(shù)組s。*p則引用了p所指位置的數(shù)組元素。通過指針來引用一維數(shù)組元素。
19.C
20.DC語言中,整型常量可以用十進制、八進制和十六進制表示。故本題答案為D選項。
21.函數(shù)f()通過for循環(huán)逐個比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個元素x[n-1)交換位置,再將最小值x[p1]和第一個元素(x[0])進行交換,所以空白處應(yīng)該填入x[0]。\r\n\r\n
22.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本題主要考查了插入排序。由于程序中的數(shù)組在開始己經(jīng)按從小到大順序排序排好。在插入時,首先要查到第一個大于恃插入數(shù)的數(shù)組下標,即當待插入元素小于數(shù)組中當前元素時,記下數(shù)組的當前下標p,并結(jié)束循環(huán),故第一空目的是為了記下數(shù)組下標,應(yīng)填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動—位,故在循環(huán)時,要從最后一個元素到第p個元素都要后移一位,因此第二空應(yīng)填>i=p。最后一個循環(huán)是將N+1個元素都輸出,故最后一空應(yīng)為i<=N。(注:本題有多種答案,以上僅提供一種)
23.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系個表達式(*ptr+y)<x)?(ptr+y):x的值,再賦紿變量z,當y=O時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(pry)=2,所以z=2;當y=1時*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,*((ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
24.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。
25.1616解析:本題定義了兩個宏MCRA(m)和MCRB(n,m),展開宏MCRB(n,m),得到:MCRB(j,MCRA(i)=2*MCRA(j)+MCRA(i)=2×2×j+2×i=4×3+2×2=12+4=16,因此printf函數(shù)的輸出結(jié)果為16。
26.br[i]
27.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:帶鏈的棧屬于棧的鏈式存儲結(jié)構(gòu)。
28.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。
29.30253025解析:本題定義了一個fun函數(shù),其中有語句a+=b++,b先使用,后自增,所以a=a+b。主函數(shù)中的c=20帶入到fun函數(shù)中,a的值變?yōu)?0,執(zhí)行fun函數(shù)中的printf,輸出30(注意輸出函數(shù)中%d后有空格),函數(shù)調(diào)用結(jié)束,且返回main函數(shù),此時a=5,c=20,執(zhí)行a+=c++,即a=a+c,此時a值為25。
30.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。
31.C
32.SET單價=單價*1.05SET單價=單價*1.05解析:更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個或多個屬性值。UPDATE短語之后指定更新數(shù)據(jù)所屬的表,將新的屬性值或表達式賦值給對應(yīng)的屬性名(SET單價=單價*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進行限制,即對符合條件的元組進行更新。
33.-32768~32767
34.參照完整性參照完整性
35.1.09877e+010
36.3233
37.鏈式存儲和順序存儲鏈式存儲和順序存儲
38.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1的12個字母,函數(shù)sub(shar*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調(diào)用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。
39.77解析:在C語言中,宏定義是直接替換的,所以在劉表達式MAX(a+b,c+d)*10進行替換后,表達式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值作為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。
40.00解析:在本題中,d=(a>b>c);相當于d=(5>4>3);其計算過程為:先算5>4,結(jié)果為真,得1,即d=(1>3);然后計算1>3,結(jié)果為假,得0。
41.D解析:賦值表達式的左側(cè)不能為常量或表達式,所以D是非法的表達式。
42.B解析:鏈表采用的是鏈式存儲結(jié)構(gòu),它克服了順序存儲結(jié)構(gòu)的缺點:它的結(jié)點空間可以動態(tài)申請和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點的指針來指示,不需要移動數(shù)據(jù)元素。但是鏈式存儲結(jié)構(gòu)也有不足之處:①每個結(jié)點中的指針域需額外占用存儲空間;②鏈式存儲結(jié)構(gòu)是一種非隨機存儲結(jié)構(gòu)。
43.B解析:本題考查的知識點是輸出語句printf()的基本用法。x為一個長整型的變量,而且是一個十進制的數(shù),它的輸出控制符是“%1d”,所以排除選項A和選項C;由于C語言中是區(qū)分大小寫的,“1d”中的“d”不能為大寫,故排除選項D。4個選項中B正確。
44.A
45.D解析:該程序先判斷a[i]<a[p],如果條件為真,則a[i]比當前設(shè)定的最小值小(p保留的當前最小元素的下標),那么將i賦給p,即將比較過的最小元素下標保留在p中,作為下面判斷的標準。
46.C解析:用高級語言編寫的程序稱為“源程序”,而計算機只能識別和執(zhí)行由O和1組成的二進指令,所以高級語言必須先用—種稱為“編譯程序”的軟件,把源程序翻譯成二進制形式的“目標程序”。
47.C解析:func(b)調(diào)用函數(shù)func并將實參傳遞給形參x,x的值為2。a+=x=2+2=4,返回值為4。func(c)調(diào)用函數(shù)func并將實參傳遞給形參x,x的值為4。因為a被定義為靜態(tài)的整型變量,當?shù)谝淮握{(diào)用函數(shù)func返回后a存儲單元中的數(shù)據(jù)仍然保留值為4,所以a+=x=4+4=8。
48.B解析:在C語言中,不可以在函數(shù)的參數(shù)聲明列表中用一個類型名指定多個參數(shù)。故選項B是錯誤的。其正確的表示方式應(yīng)為:
intmax(intx,inty){…}
或
intmax(:1
intx,y;
{…)
49.D解析:不論p是指向什么類型的指針變量,都可以通過強制類型轉(zhuǎn)換的方法使之類型一致,強制類型轉(zhuǎn)換的格式為(數(shù)據(jù)類型*)。
50.A解析:函數(shù)fun(char*s[],intn)的功能是對字符串數(shù)組的元素按照字符串的長度從小到大排序。在主函數(shù)中執(zhí)行fun(ss,5)語句后,*ss[]={'xy','bcc','bbcc','aabcc','aaaacc'},ss[0],ss[4]的輸出結(jié)果為xy,aaaacc。
51.D解析:本題的函數(shù)fun的最后一個語句是“return(*a-*b);”,也就是返回指針a所指單元的值與指針b所指單元的值的差。顯然這不可能是計算a和b所指字符串的長度之差,因此選項A的說法是錯誤的。由于函數(shù)中并沒有出現(xiàn)。a=*b的賦值操作,所以選項B的連接字符串的說法也是錯誤的。同理,由于沒有*a現(xiàn)*a=*b的賦值操作,所以選項C的復制字符串的說法也是錯誤的。排除了三個選項后,就可以斷定正確選項是D。
52.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算。P(F(5)*x)=P(2.84+5*2)=P(12.84),調(diào)用w(12.84),輸出(int)(12.84)=12。
53.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
54.B解析:需求分析階段有4方面的工作:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。
55.B
56.B解析:本題考核的知識點是C語言在生活中的簡單應(yīng)用。選項B中for循環(huán)了5次,而每次循環(huán)的時候,都將p的值重新賦值為1后,再乘以當前數(shù)字i,最后的結(jié)果為5,顯然不是51的值,同樣的分析可知選項A、選項C和選項D計算的都是5!。所以,4個選項中選項B符合題意。
57.A解析:由二叉樹后序遍歷序列和中序遍歷序列可以唯一確定一棵二叉樹。二叉樹BT的后序遍歷序列為dabec,故BT的根結(jié)點為c(后序遍歷序列的最后一個結(jié)點為樹的根結(jié)點):而BT的中序遍歷序列是debac,即遍歷序列中最后一個結(jié)點為根結(jié)點,說明BT的右子樹為空。由BT的后序遍歷序列和中序遍歷序列可知BT左子樹的后序遍歷序列和中序遍歷序列分別為dabe和deba,因此BT左子樹的根結(jié)點是e。再由中序遍歷序列可知其左子樹為d,右子樹為ba。因此BT的前序遍歷序列為cedba。
58.A
59.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。
60.B解析:由函數(shù)intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。
61.A將有6個元素的整型數(shù)組分兩行輸出到一個文件中,因為輸出的都是數(shù)字并且每行都沒有分隔符,所以當再對其進行讀取操作時,每一行都會被認為是一個完整的數(shù),而換行符則作為它們的分隔符。
62.CC專門的關(guān)系運算有3種:投影、選擇和連接。選擇運算是從關(guān)系中找出滿足給定條件的那些元組,其中的條件是以邏輯表達式給出的,值為真的元組將被選取,這種運算是從水平方向抽取元組。投影運算是從關(guān)系模式中挑選若干屬性組成新的關(guān)系,這是從列的角度進行的運算,相當于
\n對關(guān)系進行垂直分解。連接運算是二目運算,需要兩個關(guān)系作為操作對象。
63.C*c表示c間接指向的對象的地址,而**c是c間接指向的對象的值。在c=&b中,已經(jīng)把b的地址存放在c里了,*c就指向了b的地址,b里存放的就是a的地址,那么**c應(yīng)該是變量a的值,而且也可以用排除法排除選項A、B,由b=&a可知,這兩個選項是同一個意思,變量b中的值就是變量a的地址,所以可以排除。故本題答案為C。
64.B本題考查的是指針作為函數(shù)的參數(shù)和函數(shù)的調(diào)用。題目中定義了一個指針變量作為函數(shù)f的形參。主函數(shù)main中調(diào)用f函數(shù),當i=0時,執(zhí)行語句(*q)++,此處*q代表的就是數(shù)組元素a[O]的值,即將1進行加1操作;當i=1時,q仍指向數(shù)組元素a[0]的地址,因為在函數(shù)f中并未對指針變量q作任何變動,也即*q仍代表了數(shù)組元素a[0]的值,所以此次(*q)++即2+1,所以a[O]的值變?yōu)?;……直到i=4時,執(zhí)行(*q)++(即5+1)后a[0]的值變?yōu)?。所以最后的輸出結(jié)果為:6,2,3,4…5
65.C
66.BB?!窘馕觥繑?shù)據(jù)的存儲結(jié)構(gòu)分為順序結(jié)構(gòu)和鏈式結(jié)構(gòu),一個數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)。順序結(jié)構(gòu)中數(shù)據(jù)元素所占的存儲空間是連續(xù)的,而鏈式存儲結(jié)構(gòu)中,數(shù)據(jù)元素所占的存儲空間不一定是連續(xù)的。數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)。
67.B
68.A
69.CC?!窘馕觥縀—R圖也即實體~聯(lián)系圖(EntityRelationshipDiagram),提供了表示實體型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型,構(gòu)成E—
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋰電池生產(chǎn)技術(shù)改造項目可行性研究報告
- 高精度海洋流速計行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 高精度地圖更新服務(wù)行業(yè)跨境出海項目商業(yè)計劃書
- 神經(jīng)保護食品補充劑行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 書法藝術(shù)工作坊企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 鄉(xiāng)村寵物寄養(yǎng)服務(wù)企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 親子旅游線上推廣行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 環(huán)保塑料餐具設(shè)計行業(yè)跨境出海項目商業(yè)計劃書
- 高端西裝面料企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 建筑工程物資采購控制措施
- 《擬行路難》(其四) 統(tǒng)編版高中語文選擇性必修下冊
- 員工警告通知書(六篇)
- 絕緣用具領(lǐng)用登記記錄
- 常用尿動力學檢查及結(jié)果判讀詳解演示文稿
- 公安機關(guān)業(yè)務(wù)技術(shù)用房建設(shè)標準正文
- GB/T 29076-2021航天產(chǎn)品質(zhì)量問題歸零實施要求
- GB/T 18656-2002工業(yè)系統(tǒng)、裝置與設(shè)備以及工業(yè)產(chǎn)品系統(tǒng)內(nèi)端子的標識
- GB 29449-2012輪胎單位產(chǎn)品能源消耗限額
- 人教版地理七年級下冊《巴西》課件
- 醫(yī)院住院病人健康教育表
- 實習證明模板下載版新版
評論
0/150
提交評論