版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年山西省陽泉市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.對(duì)包含N個(gè)元素散列表進(jìn)行查找,平均查找長度()。
A.為OB.為O(N)C.不直接依賴ND.上述三者都不是
2.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
3.
4.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14
5.以下定義語句中正確的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
6.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))
B.每個(gè)函數(shù)都可以被單獨(dú)編譯
C.每個(gè)函數(shù)都可以單獨(dú)運(yùn)行
D.在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)
7.能在O(1)時(shí)間內(nèi)訪問線性表的第i個(gè)元素的結(jié)構(gòu)是()
A.順序表B.單鏈表C.單向循環(huán)鏈表D.雙向鏈表
8.以下說法錯(cuò)誤的是()。
A.C語言標(biāo)識(shí)符中可以有多個(gè)字母、數(shù)字和下劃線字符
B.C語言標(biāo)識(shí)符中下劃線字符可以出現(xiàn)在任意位置
C.C語言標(biāo)識(shí)符不能全部由數(shù)字組成
D.C語言標(biāo)識(shí)符必須以字母開頭
9.有以下定義和語句
StructWorkers
{intnum;charname[20];charc;
struct
{intday;intmonth;intyear;}s;
};
StructWorkersW,*pe;
PW=&W;
能給W中yeaR成員賦1980的語句是A.*pW.yeaR=1980;
B.W.yeaR=1980;
C.pW->yeaR=1980;
D.W.s.yeaR=1980;
10.下列敘述中正確的是()。
A.順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)一定是連續(xù)的,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間不一定是連續(xù)的
B.順序存儲(chǔ)結(jié)構(gòu)只針對(duì)線性結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)只針對(duì)非線性結(jié)構(gòu)
C.順序存儲(chǔ)結(jié)構(gòu)能存儲(chǔ)有序表,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)不能存儲(chǔ)有序表
D.鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)比順序存儲(chǔ)結(jié)構(gòu)節(jié)省存儲(chǔ)空間
11.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯(cuò)誤的是()。
A.t1=t2;
B.t2.num1=t1.num1;
C.t2.mark=t1.mark;
D.t2.num2=t1.num2;
12.
13.
14.下列不屬于過程設(shè)計(jì)工具中圖形工具的是()。
A.N—SB.PADC.程序流程圖D.PDL
15.以下敘述中正確的是()。
A.無論指針變量P具有何種基類型,表達(dá)式“p=p+1”都代表指針P移動(dòng)1個(gè)字節(jié)
B.指針變量具有基類型,基類型不同的指針變量不能直接相互賦值
C.指針變量的賦值操作“p=0;”是非法的
D.通過指針變量存取某個(gè)變量值的方式稱為“直接存取”方式
16.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是
A.0X0B.0x0C.0D.0XABC
17.以下敘述中錯(cuò)誤的是()
A.在C程序中,APH和aph是兩個(gè)不同的變量
B.C程序中的變量,代表內(nèi)存中的一個(gè)存儲(chǔ)單元,它的值可以根據(jù)需要隨時(shí)修改
C.在C程序中,無論是整數(shù)還是實(shí)數(shù),都能準(zhǔn)確無誤地表示
D.在C程序中,一個(gè)正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來表示
18.以下說法正確的是()。
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)
19.一個(gè)順序棧一旦聲明,其占用空間的大小()。
A.已固定B.可以變動(dòng)C.不能固定D.動(dòng)態(tài)變化
20.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序運(yùn)行后的輸出結(jié)果是()。
A.efgabcdhijklmnopq
B.abcdefghijklmnopq
C.mnopqhijklefgabcd
D.efgabcdmnopqhijkl
二、2.填空題(20題)21.若線性表的長度經(jīng)常發(fā)生變化,那么該線性表應(yīng)采用的存儲(chǔ)結(jié)構(gòu)是【】。
22.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。
23.以下程序的運(yùn)行結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
24.注釋說明了程序的功能,它分為【】注釋和功能性注釋。
25.以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請(qǐng)?zhí)羁铡?/p>
#defineN3
#defineM3
select(inta[N][M],int*n)
{inti,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=【】;
return(【】);
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf(“max=%d,line=%d\n”,max,n);
}
26.以下程序運(yùn)行結(jié)果是【】。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)return(2);
p=x*func(x-1);
return(p);}
main()
{printf("%d\n",func(4));}
27.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【】。
28.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda,請(qǐng)?zhí)羁铡?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=();
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if(t==0)return("yes!");
elsereturn("no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",huiwen(str));
}
29.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是【】。
structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
30.設(shè)有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
31.算法復(fù)雜度主要包括時(shí)間復(fù)雜度和【】復(fù)雜度。
32.實(shí)體之間的聯(lián)系可以歸結(jié)為一對(duì)一聯(lián)系、一對(duì)多(或多對(duì)多)的聯(lián)系與多對(duì)多聯(lián)系。如果一個(gè)學(xué)校有許多教師,而一個(gè)教師只歸屬于一個(gè)學(xué)校,則實(shí)體集學(xué)校與實(shí)體集教師之間的聯(lián)系屬于______的聯(lián)系。
33.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{intn,s;
printf("Enteranumber:");scanf("%d",&n);
printf("Output:");
do
{s=n%10;printf("%d",s);【】;
}while(n!=0);
printf("\n");
}
34.下面程序的運(yùn)行結(jié)果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
35.若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
36.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。
37.下面程序的輸出結(jié)果是【】。
#defineMAX3
inta[MAX];
main()
{fun1();fun2(a);printf("\n");}
fun1()
{intk,t=0;
for(k=0;k<MAX;k++,t++)a[k]=t+t;
}
fun2(intb[])
{intk;
for(k=0;k<MAX;k++)printf("%d",*(b+k));
}
38.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。
39.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
則程序運(yùn)行后的輸出結(jié)果是【】。
40.若有如下結(jié)構(gòu)體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請(qǐng)?zhí)羁?,以完成?duì)t數(shù)組的定義,t數(shù)組的每個(gè)元素為該結(jié)構(gòu)體類型。
【】t[20]
三、1.選擇題(20題)41.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
42.有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串從小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序運(yùn)行后的輸出結(jié)果是()。
A.2B.4C.6D.3
43.以下敘述中不正確的是
A.C語言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)
B.C語言中對(duì)二進(jìn)制文件的訪問速度比文本文件快
C.C語言中,隨機(jī)讀寫方式不適用于文本文件
D.C語言中,順序讀寫方式不適用于二進(jìn)制文件
44.表達(dá)式'8'-'2'的值是()。
A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8
45.若程序執(zhí)行時(shí)的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=,'\n'){switch(cs='2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}
A.668977B.668966C.6677877D.6688766
46.以下程序的輸出結(jié)果是()。{intx;int*y;}*p;intdt[4]={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],};{p=aa;pfintf("%d\n",++(p->x));}
A.1B.2C.3D.4
47.對(duì)存儲(chǔ)器按字節(jié)進(jìn)行編址,若某存儲(chǔ)器芯片共有10根地址線的引腳,則該存儲(chǔ)器芯片的存儲(chǔ)容量為()
A.512BB.1KBC.2KBD.4KB
48.程序中若有如下說明和定義語句:charfun(chat*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;}以下選項(xiàng)中對(duì)函數(shù)fun的正確調(diào)用語句是()。
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
49.以下對(duì)C語言函數(shù)的有關(guān)描述中,正確的是
A.在C語言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳給形參,形參的值不能傳送給實(shí)參
B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C.函數(shù)必須有返回值,否則不能使用函數(shù)
D.函數(shù)必須有返回值,返回值類型不定
50.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.10C.6D.死循環(huán),不能確定次數(shù)
51.下列敘述中正確的是()。
A.C語言編譯時(shí)不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用
52.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。
A.地址傳遞B.單向值傳遞C.由實(shí)參傳遞給形參,再由形參傳遞給實(shí)參D.傳遞方式由用戶指定
53.以下對(duì)結(jié)構(gòu)體類型變量的定義中,不正確的是()
A.typedefstructaa{intn;floatm;}AA;AAtdl;
B.#defineAAstructaaAA{intn;floatm;}tdl;
C.struct{intn;floatm;}aa;structaatdl;
D.struct{intn;floatm,}tdl;
54.以下選項(xiàng)中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
55.下列不合法的用戶標(biāo)識(shí)符是()。
A.j2_KEYB.DoubleC.4dD._8_
56.下列程序的輸出結(jié)果是______。main(){inti;for(i=l;i<6;i++){if(i%2){printf("#");continue;}printf("*");}printf("\n");}
A.#*#*#B.#####C.****D.*#*#*
57.有以下程序main(){char*p[10]={"abc",aabdfg","dedbe","abbd","cd"};printf("%d\n",stxlen(p[4]));}執(zhí)行后輸出結(jié)果是
A.2B.3C.4D.5
58.下面程序段的運(yùn)行結(jié)果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
59.有以下程序:mare(){inti,s=0,t[]={1,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
60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}
A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1
四、選擇題(20題)61.下列敘述中錯(cuò)誤的是()。
A.列表框和組合框都有List屬性
B.列表框有Selected屬性,而組合框沒有
C.列表框和組合框都有Style屬性
D.組合框有Text屬性,而列表框沒有
62.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter
B.Create
C.Update
D.Insert
63.
有以下程序:
intfun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main
{printf("%d\n",fun(7));}
執(zhí)行后的結(jié)果是()。
A.7B.3C.2D.0
64.有以下程序(注:字符a的ASCIl碼值為97)
#include<stdio.h>
main()
{char*s={"abc")
do
{printf("%d",*S%10");++S;}
while(*s);
}
隉序運(yùn)行后的輸出結(jié)果是()。
A.abcB.789C.7890D.979899
65.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.X…Y5;B.X=n%2.5;C.X+n=i;D.x=5=4+1:
66.下列敘述中正確的是()。A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動(dòng)態(tài)變化
B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動(dòng)態(tài)變化
C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動(dòng)態(tài)變化
D.在棧中,棧中元素不會(huì)隨棧底指針與棧頂指針的變化而動(dòng)態(tài)變化
67.
68.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.1,3B.2,3C.1,4D.1.2
69.
70.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}
A.5B.6C.7D.8
71.
72.
73.若執(zhí)行以下程序時(shí)從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8
74.面向?qū)ο蠓椒ㄖ?,繼承是指()。
A.一組對(duì)象所具有的相似性質(zhì)B.一個(gè)對(duì)象具有另一個(gè)對(duì)象的性質(zhì)C.各對(duì)象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
75.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.852B.963C.741D.875421
76.下列關(guān)于棧的敘述中,正確的是()。
A.棧底元素一定是最后入棧的元素B.棧操作遵循先進(jìn)后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對(duì)
77.在C語言中,運(yùn)算對(duì)象必須是整型數(shù)的運(yùn)算符是()。
A.%B.\C.%和\D.**
78.
79.
有以下程序:
voidf(intx,inty)
{intt;
if(x<y){t=x;x=Y;y=t;)
}
main
{inta=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
執(zhí)行后輸出結(jié)果是()。
A.3,4,5B.5,3,4C.5,4,3D.4,3,5
80.以下語句中存在語法錯(cuò)誤的是()。
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。
例如,若n=12,則應(yīng)輸出0.618026。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計(jì)題(1題)82.請(qǐng)編寫—個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:
參考答案
1.C
2.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
3.A
4.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時(shí)不滿足a<8,跳出循環(huán)。
5.BA選項(xiàng)中的變量b沒有定義,不能直接給變量a賦值。C選項(xiàng)中,*b、*c表示的是一個(gè)實(shí)型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項(xiàng)中,“a=0.0”后面應(yīng)該為逗號(hào),不能是分號(hào)。故本題答案為B選項(xiàng)。
6.B在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯(cuò)誤;C程序從main函數(shù)開始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時(shí),整個(gè)程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開始,選項(xiàng)C)選項(xiàng)錯(cuò)誤;函數(shù)不能嵌套定義,選項(xiàng)D)錯(cuò)誤。
7.A
8.DC語言的合法的標(biāo)識(shí)符的命名規(guī)則是:標(biāo)識(shí)符可以由字母、數(shù)字和下劃線組成,并且第1個(gè)字符必須是字母或下劃線。選項(xiàng)D錯(cuò)誤。本題答案為D選項(xiàng)。
9.D解析:結(jié)構(gòu)體structureworkers中的成員s是結(jié)構(gòu)體類型,給w中成員year賦值的語句是w.s.year=1980,故選D。
10.A解析:順序存儲(chǔ)結(jié)構(gòu)就是用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)該線性表中的各個(gè)元素,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中各數(shù)據(jù)結(jié)點(diǎn)的存儲(chǔ)序號(hào)是不連續(xù)的,并且各結(jié)點(diǎn)在存儲(chǔ)空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以選項(xiàng)A是正確的。兩者都可以存儲(chǔ)線性的、有序的邏輯結(jié)構(gòu),所以選項(xiàng)B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈?zhǔn)浇Y(jié)構(gòu)可以使用零散的物理空間存儲(chǔ),鏈?zhǔn)浇Y(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說法,所以選項(xiàng)D不正確。
11.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項(xiàng)錯(cuò)誤。故本題答案為C選項(xiàng)。
12.B
13.D
14.D\n常用的過程設(shè)計(jì)工具有圖形工具(程序流程圖、N-S圖、PAD圖、HIPO)、表格工具(判定表)、語言工具(PDL)。
\n
15.B指針自增或自減1,移動(dòng)的字節(jié)數(shù)與指針變量的基類型有關(guān),假設(shè)指針變量p基類型為int類型,那么“p=p+1”表示指針P移動(dòng)4個(gè)字節(jié)(通常int類型占4個(gè)字節(jié)),選項(xiàng)A錯(cuò)誤;指針變量具有基類型,基類型不同的指針變量不能直接相互賦值,選項(xiàng)B正確;將0賦給指針變量,表示指針變量的值為空,這是合法的,選項(xiàng)C錯(cuò)誤;通過指針變量存儲(chǔ)指向變量的地址并通過指針存取變量的值,稱為“間接存取”方式,選項(xiàng)D錯(cuò)誤。故本題答案為B選項(xiàng)。
16.C解析:C語言中的自反賦值運(yùn)算符?!癿-=n”相當(dāng)于“m=m-n”,兩個(gè)相等的數(shù)相減,其值為0。
17.C
18.D
19.A
20.Bmain函數(shù)中定義一個(gè)二維數(shù)組v,另外還定義一個(gè)指針數(shù)組p。通過for循環(huán),將v的各個(gè)行(字符串的首地址)賦給P的對(duì)應(yīng)下標(biāo)的元素。然后通過嵌套的for循環(huán),為該二維數(shù)組中存放的各個(gè)字符串進(jìn)行排序。strcmp函數(shù)返回值大于0時(shí)(p[i]>p[j])交換兩個(gè)字符串,所以每一輪內(nèi)嵌的for循環(huán),都將下標(biāo)為i的字符串放在最終的排序位置上,即排序規(guī)則是按字符串升序排列。字符串排序時(shí),是將兩個(gè)字符串自左向右逐個(gè)字符比較(按字符的ASCII值大?。钡匠霈F(xiàn)不同的字符或遇到‘\\0’為止。排序后,再將v中各個(gè)排序后的字符串輸出。所以程序輸出結(jié)果為:abcdefghijklmnopq。故本題答案為B選項(xiàng)。
21.鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
22.->->解析:若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的標(biāo)記形式有abc.a和p_abc->a。
23.efghefgh解析:函數(shù)ss返回形參s所指向的符號(hào)串的后半部分,故p='efgh'。
24.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。
25.rowa[row][colum]row\r\na[row][colum]解析:指針變量作為函數(shù)參數(shù)及二維數(shù)組的一個(gè)典型算法——求最大值及其下標(biāo)。通過對(duì)題意的分析,在select()函數(shù)中,變量row的作用是用來記錄最大元素的行下標(biāo),colum的作用是用來記錄最大元素的列下標(biāo)。程序中通過一個(gè)循環(huán)求得數(shù)組元素中最大值的行列下標(biāo),分別存放在變量row和colum中,根據(jù)題意,應(yīng)該把行下標(biāo)賦值給形參指針變量n指向的變量,把最大值a[row][colum]作為函數(shù)值返回。
26.4848解析:本題主要考查的是函數(shù)的遞歸調(diào)用,遞歸的終止條件是x==0或x==1,然后用已知值逐步遞推向上求未知值,直到得到最終的結(jié)果。
func(4)=4*func(3);
func(3)=3*func(2);
func(2)=2*func(1);
func(1)=2;
所以func(2)=2*2=4;
func(3)=3*4=12;
fune(4)=4*12=48。
27.存儲(chǔ)結(jié)構(gòu)
28.str+strlen(str)-1str+strlen(str)-1解析:檢查一個(gè)字符串是否是回文,函數(shù)huiwen中定義了兩個(gè)字符指針,pl=str指向字符串頭,p2應(yīng)該指向字符串尾,因此該處應(yīng)該填入:str+strlen(str)-1或&str[strlen(str)-1]。
29.22
30.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個(gè)知識(shí)點(diǎn):①在c語言中,字符型數(shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上字符串結(jié)束標(biāo)識(shí)符'\\0',所以題中數(shù)組str有6個(gè)元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
31.空間空間解析:程序在計(jì)算機(jī)上運(yùn)行時(shí)所耗費(fèi)的時(shí)間由程序運(yùn)行時(shí)所需輸入的數(shù)據(jù)總量、對(duì)源程序進(jìn)行編譯所需時(shí)間、計(jì)算機(jī)執(zhí)行每條指令所需時(shí)間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時(shí)間的相對(duì)量度,稱作算法的時(shí)間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。
32.一對(duì)多或1:N。一對(duì)多或1:N。
33.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。
34.x=11x=11解析:在對(duì)無符號(hào)數(shù)的右移是高位補(bǔ)0。
35.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲(chǔ)單元時(shí),要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲(chǔ)單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲(chǔ)單元,因此用(double*)說明。
36.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。
37.024
38.物理獨(dú)立性物理獨(dú)立性
39.00解析:while循環(huán)的條件為即當(dāng)*y非零時(shí)執(zhí)行循環(huán),-(*y)先對(duì)*y的值減1,再使用*y的值,不再執(zhí)行while循環(huán)時(shí)最后*y的值為0,輸出函數(shù)中的(*y)--,是先使用*y的值再對(duì)*y減1,就是先輸出0。
40.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。
結(jié)構(gòu)體類型的定義:
struct結(jié)構(gòu)體類型名
{
成員項(xiàng)表;
};
定義結(jié)構(gòu)體變量的的形式為:
struct結(jié)構(gòu)體類型名變量1,變量2,...?
其中變量包括;一般變量、指針變量、數(shù)組變量等。
41.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲(chǔ)單元中。注意:通過指針引用一個(gè)存儲(chǔ)單。
42.C解析:題目中已告知函數(shù)f()的作用是將字符串從小到大排序,因此主函數(shù)中調(diào)用完f(p,5);后,二維數(shù)組p中的內(nèi)容為('aabdfg','abbd','abc','cd','dcdbc'}。輸出的結(jié)果是strlen(p[0]),即p中第1個(gè)字符串的長度,所以結(jié)果是6。故本題應(yīng)該選擇C。
43.D解析:在C語言中文本文件是以ASCII碼形式存放的,每個(gè)字符占一個(gè)字節(jié)。由于數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式存放的,因此二進(jìn)制文件中的數(shù)據(jù)可以直接讀出,而不需要像文本文件那樣把ASCII碼轉(zhuǎn)換成二進(jìn)制,因此速度較快。在文本文件葉,,數(shù)據(jù)以ASCII碼形式存放,用戶很難判定一個(gè)數(shù)據(jù)到底占幾個(gè)字節(jié),所以不適合使用隨機(jī)讀寫方式。數(shù)據(jù)以二進(jìn)制形式存放,占有的字節(jié)數(shù)是固定的,所以可以進(jìn)行隨機(jī)讀寫,當(dāng)然也可以順序讀寫。故D選項(xiàng)為所選。
44.A解析:在C語言中,雖然字符都是變?yōu)槠鋵?duì)應(yīng)的ASCII碼值來參與算術(shù)運(yùn)算的,但字符間的相對(duì)位置關(guān)系還是不變的,字符8和字符2的ASCII碼值相差仍是6。
45.A解析:本題主要考查switch語句的使用方法。switch語句的執(zhí)行過程為:進(jìn)入switch結(jié)構(gòu)后,對(duì)條件表達(dá)式進(jìn)行運(yùn)算,然后從上至下去找與條件表達(dá)式值相匹配的case,以此作為入口,執(zhí)行switch結(jié)構(gòu)中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時(shí),則執(zhí)行default后面的語句。
46.C解析:程序首先將指針p指向結(jié)構(gòu)體數(shù)組aa的首地址,通過p->x引用了結(jié)構(gòu)體數(shù)組aa[0]的第一個(gè)成員2;++(p->x)是將p->x的值加1,所以輸出結(jié)果為3。
47.B
48.A
49.A解析:C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能嵌套定義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。
50.D解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當(dāng)break出現(xiàn)在switch語句體內(nèi)時(shí),其作用只是跳出該switch語句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時(shí),則在執(zhí)行break后,跳出本層循環(huán)體.而continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號(hào)內(nèi)表達(dá)式的值為真,執(zhí)行循環(huán)體內(nèi)的if語句,判斷if后面括號(hào)內(nèi)表達(dá)式的值為真,執(zhí)行“continue;”語句.因continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語句也仍然成立,因此循環(huán)將無止境地進(jìn)行下去。所以,4個(gè)選項(xiàng)中D為所選。
51.D解析:C語言相對(duì)其他高級(jí)語言來說,放寬了語法檢查,因此程序設(shè)計(jì)自由度大,但并不是不檢查語法,C語言的程序是由函數(shù)構(gòu)成的。函數(shù)不能嵌套定義,但是可以嵌套調(diào)用。
52.B解析:C語言以定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“單向值傳遞”,只由實(shí)參傳紿形參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。調(diào)用結(jié)束后,實(shí)參單元仍保留并維持原值。
53.C解析:定義結(jié)構(gòu)體類型的變量有幾種的方法如下:
①定義結(jié)構(gòu)體類型的同時(shí),定義結(jié)構(gòu)體類型的變量,如下面的定義中在定義結(jié)構(gòu)體類型aa的同時(shí)定義了該類型的變量tdl。上述B)項(xiàng)中將宏名AA用宏體structaa替換進(jìn)去后,與該定義形式一樣,因此是正確的。這一定義形式中,結(jié)構(gòu)體類型名明是可以省略的,因此,D)項(xiàng)也是正確的。
structaa
{...
}tdl;
②先定義結(jié)構(gòu)體類型,然后再定義結(jié)構(gòu)體類型的變量,形式如下:
structaa
{
…
};
structaatdl;
這種定義形式也可演變?yōu)椋扔妙愋投x語句typedef將該結(jié)構(gòu)體類型定義成一個(gè)類型名AA,然后直接用該類型名AA去定義一個(gè)變量(這時(shí)不再需要使用關(guān)鍵字struct了)。這就是A)項(xiàng)的形式。
54.D解析:選項(xiàng)A)在C語言中是一個(gè)合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計(jì)算0<=x<100時(shí),從左到右結(jié)合,先計(jì)算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運(yùn)算符的優(yōu)先級(jí),選項(xiàng)B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項(xiàng)C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項(xiàng)D)是將一個(gè)數(shù)據(jù)賦給一個(gè)表達(dá)式,等號(hào)左邊不合要求,所以錯(cuò)誤。
55.C解析:在C語言程序中,合法標(biāo)識(shí)符的命名規(guī)則是:標(biāo)識(shí)符可以由字母、數(shù)字和下劃線組成,并且第一個(gè)字符必須是字母或下劃線。
56.A
57.A解析:本題中首先定義了一個(gè)長度為10的指針數(shù)組,并賦初值,因此執(zhí)行strlen(p[4])后的返回值為字符串“cd”的長度為2。
58.C解析:本段程序的作用是輸出字符串“l(fā)anuage”中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。注意:如果一個(gè)字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時(shí),數(shù)組的大小就應(yīng)該比它將要實(shí)際存放的最長字符多一個(gè)元素,以存放‘\\0’。
59.C解析:要獲得數(shù)組t的第i個(gè)元素的內(nèi)容,既可以使用常規(guī)的t[i]表達(dá)式,也可以將數(shù)組名t看作一個(gè)指針常量,使用表達(dá)式*(t+i)來獲取數(shù)組t的第i個(gè)元素的內(nèi)容。在本題中,for循環(huán)會(huì)循環(huán)5次,循環(huán)變量i從。開始,每次加2。所以,循環(huán)結(jié)束后,s中的值為t[0]+t[2]+t[4]+t[6]+t[6]+t[8]=1+3+5+7+9=25。故應(yīng)該選擇C。
60.C解析:“||”是或運(yùn)算,它有個(gè)“短路”的特點(diǎn)需特別注意,當(dāng)“||”運(yùn)算符左邊的表達(dá)式的值為真時(shí),則程序就不再對(duì)“||”右邊的表達(dá)式的值進(jìn)行運(yùn)算,而是使得整個(gè)表達(dá)式的值直接為真。
61.BB?!窘馕觥拷M合框和列表框都沒有selected屬性。
62.A本題主要考查SQL中一些基本的命令。SQL常用的語句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。
在SQL語言中使用率最高的是Select,這個(gè)命令的作用是從表中查找出滿足條件的記錄。
Insert命令的作用是對(duì)數(shù)據(jù)表進(jìn)行插入操作。
Update命令的作用是對(duì)數(shù)據(jù)表進(jìn)行更新操作。
Delete命令的作用是對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行刪除操作。
Create命令的作用是創(chuàng)建數(shù)據(jù)表。
Alter命令的作用是修改表的結(jié)構(gòu)。
Drop命令的作用是用來刪除表,它與Delete的區(qū)別是進(jìn)行Drop操作后,數(shù)據(jù)表不存在了,而進(jìn)行Delete操作后,數(shù)據(jù)表還在,只是數(shù)據(jù)被刪除了。
63.C
\n調(diào)用函數(shù)fun(7)時(shí),由于x的值為7,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);
\n調(diào)用函數(shù)fun(5)時(shí),由于x的值為5,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);
\n調(diào)用函數(shù)fun(3)時(shí),由于x的值為3,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);
\n調(diào)用函數(shù)fun(1)時(shí),由于X的值為1,執(zhí)行語句“return(3);”,函數(shù)的返回值為3。
\n因此函數(shù)調(diào)用fun(7)等價(jià)于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。
\n
64.B\n程序中的*s%10是求余運(yùn)算,分別是a、b、C的ASCIl碼值對(duì)10進(jìn)行求余運(yùn)算然后輸出,所以輸出的答案為789。r
\n
65.AB選項(xiàng)中運(yùn)算符“%”的前后必須為整數(shù),C選項(xiàng)中不能將變量賦給表達(dá)式x+n,D選項(xiàng)中不能將表達(dá)式4+1賦給常量5。
66.C棧是先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),在對(duì)棧操作的整個(gè)過程中,棧底指針不變,入棧與出棧操作均由棧頂指針的變化來完成,因此本題答案為c)。
67.B
68.Af函數(shù)功能使第二個(gè)指針指向的元素增1,第一個(gè)指針指向的元素不變,所以答案選擇A)。
69.A
70.D解析:本題中的宏調(diào)用MA(1+a+b)展開后的結(jié)果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結(jié)果是8,選項(xiàng)D正確。
71.B
72.D
73.B當(dāng)n為9時(shí),此時(shí)if語句成立,執(zhí)行n++后,n為10,因此輸出n的值為10,故選擇B選項(xiàng)。
74.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€(gè)主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。
75.A第一次for循環(huán),y的值為9,y%3的值為3,滿足條件打印一一Y,即先減一后打印,所以打印8;第二次for循環(huán),Y的值為7,y%3的值為1,不執(zhí)行打印語句;第三次for循環(huán),y的值為6,y%3的值為0,滿足條件打印一一Y,即先減一后打印,所以打印5;第四次for循環(huán),Y的值為4,不滿足if條件,不執(zhí)行打印語句;第五次for循環(huán),Y的值為3,滿足if條件,打印輸出2;第六次for循環(huán),Y的值為1,不滿足條件,不執(zhí)行打印語句。
76.B棧是先進(jìn)后出,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。
77.A解析:在C語言中,“%”運(yùn)算符兩側(cè)的運(yùn)算數(shù)必須是整型。
78.C
79.D
\na、b、C都是按值傳遞給函數(shù)f,函數(shù)f不能改變它們的值。所以,a、b、t的值仍然是4、3、5。
\n
80.A數(shù)組定義后,不可以對(duì)數(shù)組整體賦值,s是二維數(shù)組,因SS[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用strcpy(SS[1],”right”);這樣的形式,而選項(xiàng)A中對(duì)二維數(shù)組中的第…l維(相當(dāng)于一個(gè)一維數(shù)組)賦值,是不可以的。選項(xiàng)8和D是定義時(shí)對(duì)數(shù)組初始化,這是可以的。選項(xiàng)c中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個(gè)元素,這是可以的。
81.(1)錯(cuò)誤:intproc(intn)
正確:floatproc(intn)
(2)錯(cuò)誤:for(i=2;i<n;i++)
正確:for(i=2;i<=n;i++)
【解析】由主函數(shù)中的調(diào)用以及函數(shù)proc()的返回值可知,函數(shù)proc()的返回值類型應(yīng)為float型數(shù)據(jù)。因此,“intproc(intn)”應(yīng)改為“floatproc(intn)”;由題目中所給公式可知,循環(huán)中應(yīng)該包含n的值,因此,“for(i=2;i<n;i++)”應(yīng)改為“for(i=2;i<=n;i++)”。
82.[答案][解析]題目要求刪除空格,也就是重新保存空格以外的其他字符。通過循環(huán)刪除字符串中的每一個(gè)空格,將非空格字符進(jìn)行重新保存。2021年山西省陽泉市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.對(duì)包含N個(gè)元素散列表進(jìn)行查找,平均查找長度()。
A.為OB.為O(N)C.不直接依賴ND.上述三者都不是
2.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
3.
4.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14
5.以下定義語句中正確的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
6.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))
B.每個(gè)函數(shù)都可以被單獨(dú)編譯
C.每個(gè)函數(shù)都可以單獨(dú)運(yùn)行
D.在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)
7.能在O(1)時(shí)間內(nèi)訪問線性表的第i個(gè)元素的結(jié)構(gòu)是()
A.順序表B.單鏈表C.單向循環(huán)鏈表D.雙向鏈表
8.以下說法錯(cuò)誤的是()。
A.C語言標(biāo)識(shí)符中可以有多個(gè)字母、數(shù)字和下劃線字符
B.C語言標(biāo)識(shí)符中下劃線字符可以出現(xiàn)在任意位置
C.C語言標(biāo)識(shí)符不能全部由數(shù)字組成
D.C語言標(biāo)識(shí)符必須以字母開頭
9.有以下定義和語句
StructWorkers
{intnum;charname[20];charc;
struct
{intday;intmonth;intyear;}s;
};
StructWorkersW,*pe;
PW=&W;
能給W中yeaR成員賦1980的語句是A.*pW.yeaR=1980;
B.W.yeaR=1980;
C.pW->yeaR=1980;
D.W.s.yeaR=1980;
10.下列敘述中正確的是()。
A.順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)一定是連續(xù)的,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間不一定是連續(xù)的
B.順序存儲(chǔ)結(jié)構(gòu)只針對(duì)線性結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)只針對(duì)非線性結(jié)構(gòu)
C.順序存儲(chǔ)結(jié)構(gòu)能存儲(chǔ)有序表,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)不能存儲(chǔ)有序表
D.鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)比順序存儲(chǔ)結(jié)構(gòu)節(jié)省存儲(chǔ)空間
11.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯(cuò)誤的是()。
A.t1=t2;
B.t2.num1=t1.num1;
C.t2.mark=t1.mark;
D.t2.num2=t1.num2;
12.
13.
14.下列不屬于過程設(shè)計(jì)工具中圖形工具的是()。
A.N—SB.PADC.程序流程圖D.PDL
15.以下敘述中正確的是()。
A.無論指針變量P具有何種基類型,表達(dá)式“p=p+1”都代表指針P移動(dòng)1個(gè)字節(jié)
B.指針變量具有基類型,基類型不同的指針變量不能直接相互賦值
C.指針變量的賦值操作“p=0;”是非法的
D.通過指針變量存取某個(gè)變量值的方式稱為“直接存取”方式
16.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是
A.0X0B.0x0C.0D.0XABC
17.以下敘述中錯(cuò)誤的是()
A.在C程序中,APH和aph是兩個(gè)不同的變量
B.C程序中的變量,代表內(nèi)存中的一個(gè)存儲(chǔ)單元,它的值可以根據(jù)需要隨時(shí)修改
C.在C程序中,無論是整數(shù)還是實(shí)數(shù),都能準(zhǔn)確無誤地表示
D.在C程序中,一個(gè)正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來表示
18.以下說法正確的是()。
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)
19.一個(gè)順序棧一旦聲明,其占用空間的大小()。
A.已固定B.可以變動(dòng)C.不能固定D.動(dòng)態(tài)變化
20.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序運(yùn)行后的輸出結(jié)果是()。
A.efgabcdhijklmnopq
B.abcdefghijklmnopq
C.mnopqhijklefgabcd
D.efgabcdmnopqhijkl
二、2.填空題(20題)21.若線性表的長度經(jīng)常發(fā)生變化,那么該線性表應(yīng)采用的存儲(chǔ)結(jié)構(gòu)是【】。
22.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。
23.以下程序的運(yùn)行結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
24.注釋說明了程序的功能,它分為【】注釋和功能性注釋。
25.以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請(qǐng)?zhí)羁铡?/p>
#defineN3
#defineM3
select(inta[N][M],int*n)
{inti,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=【】;
return(【】);
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf(“max=%d,line=%d\n”,max,n);
}
26.以下程序運(yùn)行結(jié)果是【】。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)return(2);
p=x*func(x-1);
return(p);}
main()
{printf("%d\n",func(4));}
27.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【】。
28.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda,請(qǐng)?zhí)羁铡?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=();
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if(t==0)return("yes!");
elsereturn("no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",huiwen(str));
}
29.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是【】。
structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
30.設(shè)有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
31.算法復(fù)雜度主要包括時(shí)間復(fù)雜度和【】復(fù)雜度。
32.實(shí)體之間的聯(lián)系可以歸結(jié)為一對(duì)一聯(lián)系、一對(duì)多(或多對(duì)多)的聯(lián)系與多對(duì)多聯(lián)系。如果一個(gè)學(xué)校有許多教師,而一個(gè)教師只歸屬于一個(gè)學(xué)校,則實(shí)體集學(xué)校與實(shí)體集教師之間的聯(lián)系屬于______的聯(lián)系。
33.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{intn,s;
printf("Enteranumber:");scanf("%d",&n);
printf("Output:");
do
{s=n%10;printf("%d",s);【】;
}while(n!=0);
printf("\n");
}
34.下面程序的運(yùn)行結(jié)果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
35.若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
36.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。
37.下面程序的輸出結(jié)果是【】。
#defineMAX3
inta[MAX];
main()
{fun1();fun2(a);printf("\n");}
fun1()
{intk,t=0;
for(k=0;k<MAX;k++,t++)a[k]=t+t;
}
fun2(intb[])
{intk;
for(k=0;k<MAX;k++)printf("%d",*(b+k));
}
38.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。
39.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
則程序運(yùn)行后的輸出結(jié)果是【】。
40.若有如下結(jié)構(gòu)體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請(qǐng)?zhí)羁眨酝瓿蓪?duì)t數(shù)組的定義,t數(shù)組的每個(gè)元素為該結(jié)構(gòu)體類型。
【】t[20]
三、1.選擇題(20題)41.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
42.有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串從小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序運(yùn)行后的輸出結(jié)果是()。
A.2B.4C.6D.3
43.以下敘述中不正確的是
A.C語言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)
B.C語言中對(duì)二進(jìn)制文件的訪問速度比文本文件快
C.C語言中,隨機(jī)讀寫方式不適用于文本文件
D.C語言中,順序讀寫方式不適用于二進(jìn)制文件
44.表達(dá)式'8'-'2'的值是()。
A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8
45.若程序執(zhí)行時(shí)的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=,'\n'){switch(cs='2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}
A.668977B.668966C.6677877D.6688766
46.以下程序的輸出結(jié)果是()。{intx;int*y;}*p;intdt[4]={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],};{p=aa;pfintf("%d\n",++(p->x));}
A.1B.2C.3D.4
47.對(duì)存儲(chǔ)器按字節(jié)進(jìn)行編址,若某存儲(chǔ)器芯片共有10根地址線的引腳,則該存儲(chǔ)器芯片的存儲(chǔ)容量為()
A.512BB.1KBC.2KBD.4KB
48.程序中若有如下說明和定義語句:charfun(chat*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;}以下選項(xiàng)中對(duì)函數(shù)fun的正確調(diào)用語句是()。
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
49.以下對(duì)C語言函數(shù)的有關(guān)描述中,正確的是
A.在C語言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳給形參,形參的值不能傳送給實(shí)參
B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C.函數(shù)必須有返回值,否則不能使用函數(shù)
D.函數(shù)必須有返回值,返回值類型不定
50.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.10C.6D.死循環(huán),不能確定次數(shù)
51.下列敘述中正確的是()。
A.C語言編譯時(shí)不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用
52.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。
A.地址傳遞B.單向值傳遞C.由實(shí)參傳遞給形參,再由形參傳遞給實(shí)參D.傳遞方式由用戶指定
53.以下對(duì)結(jié)構(gòu)體類型變量的定義中,不正確的是()
A.typedefstructaa{intn;floatm;}AA;AAtdl;
B.#defineAAstructaaAA{intn;floatm;}tdl;
C.struct{intn;floatm;}aa;structaatdl;
D.struct{intn;floatm,}tdl;
54.以下選項(xiàng)中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
55.下列不合法的用戶標(biāo)識(shí)符是()。
A.j2_KEYB.DoubleC.4dD._8_
56.下列程序的輸出結(jié)果是______。main(){inti;for(i=l;i<6;i++){if(i%2){printf("#");continue;}printf("*");}printf("\n");}
A.#*#*#B.#####C.****D.*#*#*
57.有以下程序main(){char*p[10]={"abc",aabdfg","dedbe","abbd","cd"};printf("%d\n",stxlen(p[4]));}執(zhí)行后輸出結(jié)果是
A.2B.3C.4D.5
58.下面程序段的運(yùn)行結(jié)果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
59.有以下程序:mare(){inti,s=0,t[]={1,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
60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}
A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1
四、選擇題(20題)61.下列敘述中錯(cuò)誤的是()。
A.列表框和組合框都有List屬性
B.列表框有Selected屬性,而組合框沒有
C.列表框和組合框都有Style屬性
D.組合框有Text屬性,而列表框沒有
62.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter
B.Create
C.Update
D.Insert
63.
有以下程序:
intfun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main
{printf("%d\n",fun(7));}
執(zhí)行后的結(jié)果是()。
A.7B.3C.2D.0
64.有以下程序(注:字符a的ASCIl碼值為97)
#include<stdio.h>
main()
{char*s={"abc")
do
{printf("%d",*S%10");++S;}
while(*s);
}
隉序運(yùn)行后的輸出結(jié)果是()。
A.abcB.789C.7890D.979899
65.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.X…Y5;B.X=n%2.5;C.X+n=i;D.x=5=4+1:
66.下列敘述中正確的是()。A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動(dòng)態(tài)變化
B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動(dòng)態(tài)變化
C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動(dòng)態(tài)變化
D.在棧中,棧中元素不會(huì)隨棧底指針與棧頂指針的變化而動(dòng)態(tài)變化
67.
68.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.1,3B.2,3C.1,4D.1.2
69.
70.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}
A.5B.6C.7D.8
71.
72.
73.若執(zhí)行以下程序時(shí)從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8
74.面向?qū)ο蠓椒ㄖ?,繼承是指()。
A.一組對(duì)象所具有的相似性質(zhì)B.一個(gè)對(duì)象具有另一個(gè)對(duì)象的性質(zhì)C.各對(duì)象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
75.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.852B.963C.741D.875421
76.下列關(guān)于棧的敘述中,正確的是()。
A.棧底元素一定是最后入棧的元素B.棧操作遵循先進(jìn)后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對(duì)
77.在C語言中,運(yùn)算對(duì)象必須是整型數(shù)的運(yùn)算符是()。
A.%B.\C.%和\D.**
78.
79.
有以下程序:
voidf(intx,inty)
{intt;
if(x<y){t=x;x=Y;y=t;)
}
main
{inta=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
執(zhí)行后輸出結(jié)果是()。
A.3,4,5B.5,3,4C.5,4,3D.4,3,5
80.以下語句中存在語法錯(cuò)誤的是()。
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。
例如,若n=12,則應(yīng)輸出0.618026。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計(jì)題(1題)82.請(qǐng)編寫—個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:
參考答案
1.C
2.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
3.A
4.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時(shí)不滿足a<8,跳出循環(huán)。
5.BA選項(xiàng)中的變量b沒有定義,不能直接給變量a賦值。C選項(xiàng)中,*b、*c表示的是一個(gè)實(shí)型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項(xiàng)中,“a=0.0”后面應(yīng)該為逗號(hào),不能是分號(hào)。故本題答案為B選項(xiàng)。
6.B在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯(cuò)誤;C程序從main函數(shù)開始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時(shí),整個(gè)程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度零星土建工程合同糾紛調(diào)解合同4篇
- 二零二五版貴金屬保管與寄售服務(wù)合同2篇
- 2024中考語文復(fù)習(xí)方案原創(chuàng)閱讀議論文閱讀
- 2024這份簽訂勞動(dòng)合同指南請(qǐng)查收
- 二零二五年度農(nóng)業(yè)科技合作合同會(huì)簽書3篇
- 二零二五年騰訊新聞客戶端品牌宣傳與推廣合同3篇
- 2025年度臨時(shí)倉儲(chǔ)空間共享租賃及增值服務(wù)合同4篇
- 2024預(yù)售新房買賣合同
- 2025年木材行業(yè)環(huán)保責(zé)任追究合同范本3篇
- 2025年物流服務(wù)合同匯編大全:物流行業(yè)合同糾紛處理與預(yù)防2篇
- 常見老年慢性病防治與護(hù)理課件整理
- 履約情況證明(共6篇)
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 設(shè)備機(jī)房出入登記表
- 六年級(jí)語文-文言文閱讀訓(xùn)練題50篇-含答案
- 醫(yī)用冰箱溫度登記表
- 零售學(xué)(第二版)第01章零售導(dǎo)論
- 大學(xué)植物生理學(xué)經(jīng)典05植物光合作用
- 口袋妖怪白金光圖文攻略2周目
- 光伏發(fā)電站集中監(jiān)控系統(tǒng)通信及數(shù)據(jù)標(biāo)準(zhǔn)
- 三年級(jí)下冊(cè)生字組詞(帶拼音)
評(píng)論
0/150
提交評(píng)論