版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年安徽省馬鞍山市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.sizeof(float)是()。A.一個雙精度型表達(dá)式B.一個整型表達(dá)式C.一種函數(shù)調(diào)用D.一個不合法的表達(dá)式
2.鏈棧與順序棧相比,比較明顯的優(yōu)點是()。
A.插入操作更加方便B.刪除操作更加方便C.不會出現(xiàn)下溢的情況D.不會出現(xiàn)上溢的情況
3.
4.軟件開發(fā)模型包括Ⅰ.瀑布模型Ⅱ.扇形模型Ⅲ.快速原型法模型Ⅳ.螺旋模型
A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ
5.在長度為n的順序存儲的線性表中,刪除第i個元素(1≤i≤n)時,需要從前向后依次前移____個元素。
A.n-iB.n-i+1C.n-i-1D.i
6.以下正確的字符串常量是()。A.“\\\”B.‘a(chǎn)bc’C.OlympicGamesD.“”
7.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是()
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}
B.switch(int(x)){case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}
D.switch(a+B){case1:printf("*\n");casec:printf("**\n");}
8.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
9.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預(yù)處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預(yù)處理命令
D.宏名必須用大寫字母表示
10.在位運算中,操作數(shù)左移一位,其結(jié)果相當(dāng)于A.A.操作數(shù)乘以2
B.操作數(shù)除以2
C.操作數(shù)除以4
D.操作數(shù)乘以4
11.若有說明:inta[][3]={1,2,3,4,5,6,7};則a數(shù)組第一維的大小是
A.2B.3C.4D.無確定值
12.求2n個數(shù)中的最大值和最小值,最少的比較次數(shù)是()
A.4n/3B.2n-2C.3n-2D.3n/2
13.考慮一個特殊的hash函數(shù)h,能將任一字符串hash成一個整數(shù)k,其概率P(k)=2^(-k),k=1,2,…,∞。對一個未知大小的字符串集合S中的每一個元素取hash值所組成的集合為h(S)。若h(S)中最大的元素Maxh(S)=10,那么S的大小的期望是()
A.1024B.512C.5D.10
14.
15.算法分析的兩個主要方面是()。
A.空間復(fù)雜性和時間復(fù)雜性B.正確性和簡明性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
16.鏈表不具有的特點是A.A.不必事先估計存儲空間
B.可隨機訪問任一元素
C.插入和刪除不需要移動元素
D.所需空間與線性表長度成正比
17.
18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結(jié)果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
19.
20.以下程序是用來計算兩個非負(fù)數(shù)之間的最大公約數(shù):我們假設(shè)x,y中最大的那個數(shù)的長度為n,基本運算時間復(fù)雜度為O(1),那么該程序的時間復(fù)雜度為()A.O(1)B.O(logn)C.O(n)D.O(n^2)
二、2.填空題(20題)21.以下程序的輸出結(jié)果是______。
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf("%3.Of\n",fun((int)fun(a+c,b),a-c));}
22.以下程序的功能是將字符串s中所有小寫字母'a'刪去,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[]="absuWWUDJFKFLaaakdK";
inti,j;
for(i=j=0;s[i]!='\0';i++)
if()
s[j++]=s[i];
s[j]='\0';
printf("%s",s);
}
23.下列程序的運行結(jié)果是______。
main()
{intx=1,y=2,z=3;
printf("%d,",x<y?y:x);
printf("%d,",z<y?x++:y++);
printf("%d,%d",x,y);
}
24.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
25.下列程序的輸出結(jié)果是______。
main()
{inta+,b=2,C=3,t=0;
ifa<B){t=a;a=b;b=t;}
ifa<C){t=a;a=c;c=t;}
printf("%d,%d,%dln",a,b,C);
}
26.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
27.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
28.面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個______。
29.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
30.已知head指向一個帶頭結(jié)點的單向鏈表,鏈表中每個結(jié)點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結(jié)點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。
structlink
{intdata;structlink*next;}
main()
{structlink*head;
......
sum(head);
......
}
sum(【】);
{structlink*p;ints=0;
p=head->next;
while(p){s+=p->data;p=p->next;}
return(s);}
31.若有如下程序:
voidsub()
{staticintx=8;
x/=2;printf("%d",x);
}
main()
{intm;
for(m=0;m<2;m++)sub();}
則程序運行后的輸出結(jié)果是【】.
32.若對長度為90的線性表進(jìn)行分塊查找,其中每塊子表長度為9。如果在索引表查找過程中進(jìn)行順序查找,那么平均查找長度為【】。
33.下列程序用來將從鍵盤上輸入的2個字符串進(jìn)行比較,然后輸出2個字符串中第1個不相同字符的ASCII碼之差。例如,輸入的2個字符串分別為abcdef和abceef,則輸出為-1。
#include
main()
{charstr[100],str2[100],c;
inti,s;
printf("\ninputstring1:\n");gest(str1);
printf("\ninputstring2:\n");gest(str2);
i=0;
while((strl[i]==str2[i]&&(strl[i]!=【】))
i++;
s=【】;
printf(.%d\n",s);
34.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
35.下列程序的運行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
36.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運行后的輸出結(jié)果是【】。
37.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是【】。
structnode
{chardata;
structnode*next;}a,b
38.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
39.由計算機、操作系統(tǒng)、DBMS、數(shù)據(jù)庫、應(yīng)用程序及用戶組成的一個整體叫做【】。
40.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
三、1.選擇題(20題)41.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
42.若函數(shù)中有定義語句:inta;,則()。
A.系統(tǒng)將自動給a賦初值0B.這時a中的值是和隨機數(shù)C.系統(tǒng)將自動給a賦初值-1D.這a中無任何值
43.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
44.軟件調(diào)試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
45.以下程序的輸出結(jié)果是main(){intb[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}
A.3B.4C.1D.9
46.下面程序段的輸出結(jié)果是()。#include<stdio.h>main(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}
A.1.237000B.輸出格式說明與輸出項不匹配,輸出無定值C.1.236000D.1.24
47.設(shè)有以下定義:typedefunion{longi;intk[5];charc,}DATE,structdate{intcat;DATEcow;doubledog;}too;DATEmax;則下列語句的執(zhí)行結(jié)果是()printf("%d",stzeof(structdate)+sizeof(max));
A.25B.30C.18D.8
48.在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。
A.8B.16C.32D.15
49.若有以下的說明,對初值中整數(shù)2的正確引用方式是
staticstruct
{charch;
inti;
doublex;
}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};
A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i
50.有以下程序,其中%u表示按無符號整數(shù)輸出:
main
{
unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/
printf("%u\n",x);
}
程序運行后的輸出結(jié)果是()。
A.-1B.65535C.32767D.0xFFFF
51.請選出正確的程序段______。
A.int*p
B.int*s,k;scanf(""%d"",p);*s=100;………
C.int*s,k;
D.int*s,k;char*p,c;char*p,e;s=&k;p=&c;p=&c;*p='a';s=p;……*s=1;……
52.在關(guān)系數(shù)據(jù)庫模型中,通??梢园?)稱為屬性,其值稱為屬性值。
A.記錄B.基本表C.模式D.字段
53.有以下程序intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運行后的輸出結(jié)果是
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
54.以下程序運行后,輸出結(jié)果是()main(){charch[2][5]={"693","825"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(j=0;j<2;j++)for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}
A.6385B.22C.33D.693825
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.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。
A.XZCYABB.XYZABCC.XYABCZD.XYAZBC
57.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價的是
A.floata[2][]={{0,3,8},{0,9}};
B.floata[][3]={0,3,8,0,9,0};
C.floata[][3]={{0,3},{8,0},{9,0}};
D.floata[2][]={{0,3,8},{0,9,0}};
58.執(zhí)行以下程序后,a,b的值分別是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
59.有以下程序:#include<stdio.h>main(){eharstr[][10]={"China","Beijing"},*p=str[o];printf("%s\n",p+10);}程序運行后的輸出結(jié)果是()。
A.ChinaB.BeijingC.ngD.ing
60.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}
A.66B.98C.bD.B
四、選擇題(20題)61.
62.以下選項中不能作為C語言合法常量的是
A.’Fab’B.0.7e+9C."\b"D.’\01211’
63.
64.
65.下列選項中不合法的十六進(jìn)制數(shù)是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
66.有以下程序:
若運行時輸入:123<回車>,則輸出結(jié)果是()。
A.編譯錯誤2000B.102000C.122030D.10
67.
68.負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
69.有以下程序
70.
71.以下選項中正確的語句組是()。
A.char*s;8={1.BOOK!”}i
B.char*s;8=”BOOK!”;
C.charS[10];S=”BOOK!”;
D.charS[];S=”BOOK!”;
72.設(shè)有定義:“inta;floatb;”,執(zhí)行“scanf("%2d%f",&a,&b);”語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是()。A.A.876和543.000000B.87和6.000000
C.87和6543.000000
D.76和543.000000
73.有如下程序段
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
74.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
75.設(shè)有圖書(圖書編號,書名,第一作者,出版社.、讀者(借書證號,姓名,單位,職稱.和借閱(借書證號,圖書編號,借書日期,還書日期.三張表,則表借閱的關(guān)鍵字(鍵或碼.為()。
A.借書證號,圖書編號
B.圖書編號,借書日期
C.借書日期,還書日期
D.借書證號,借書日期
76.有以下程序:
程序運行后的輸出結(jié)果是()。
A.0B.4C.6D.7
77.設(shè)p1和p2是指向同一個int型一維數(shù)組的指針變量,k為int型變量,則下列不能正確執(zhí)行的語句是_______。
A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);
78.已有定義intx=3,y=4,z=5;則表達(dá)式“!(x+y)+z-1y+z/2”的值是________。
A.6B.0C.2D.1
79.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是
A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性
C.事物管理的集中性D.?dāng)?shù)據(jù)冗余
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)形參m(2≤m≤9)的值,在m行m列的二維數(shù)組中存放如下所示的數(shù)據(jù),由main()函數(shù)輸出。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.B該函數(shù)用于數(shù)據(jù)類型和變量。注意:sizeof操作符不能用于函數(shù)、不完全類型或位字段。不完全類型指具有未知存儲大小的數(shù)據(jù)類型,如未知存儲大小的數(shù)組類型、void類型等。
2.D
3.C
4.C解析:軟件開發(fā)模型包括瀑布模型、快速原型法模型和螺旋模型。
5.A
6.D在C語言中,字符串常量是用雙引號標(biāo)注的字符序列,因此B選項和C選項不正確。字符序列中可包含一些轉(zhuǎn)義字符,轉(zhuǎn)義字符以“\\”開頭。A選項中包含3個前兩個(\\\\)代表一個“\\”字符,后面一個為“””。因為\\”被看作一個“””,所以該字符串缺少一個結(jié)束的“””。因此A選項不正確。D選項的兩個“”之間沒有任何字符,代表的是一個空串,是合法的字符串常量,因此D選項正確。B選項的abc應(yīng)該使用雙引號標(biāo)注。故本題答案為D選項。
7.C
8.D本題考查邏輯運算符的使用。當(dāng)“&&”的兩個運算對象都是邏輯1時,表達(dá)式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。
9.A宏替換是在編譯階段前的預(yù)處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預(yù)處理命令行無須在源文件的開頭,它可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預(yù)處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習(xí)慣,選項D錯誤。本題答案為A選項。
10.A左移運算符“<<”是雙目運算符,其功能是把“<<”左邊的運算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0。例如,a<<4是把a的各二進(jìn)位向左移動4位。如a=00000011(十進(jìn)制3),左移4位后為00110000(十進(jìn)制48)。
11.B解析:本題考查二維數(shù)組的定義方式。第一維的大小由以下方法判斷:①當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大??;2)當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,則第一維的劃、:所得的商數(shù)+1。
12.A
13.A
14.D
15.A
16.B鏈表是一種特殊的線性表,鏈表的存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)不同,它的存儲區(qū)域可以是任意的存儲單元,對存儲系統(tǒng)中零碎的存儲部分具有更好的應(yīng)用,在給其分配存儲單元時,不必事先估計整個存儲單元的空間大??;由于鏈表的元素是通過指針域的指針相連的,用鏈表存儲數(shù)據(jù)時,對其進(jìn)行插入和刪除操作時,不需要移動其他元素,只需改變其直接前驅(qū)指針域,使其指向該結(jié)點,并將該結(jié)點的指針域修改為指向其直接后繼結(jié)點即可。當(dāng)然,不管是鏈表還是順序存儲,所需空間與線性表長度都成正比。在鏈?zhǔn)酱鎯Φ逆湵斫Y(jié)構(gòu)中,由于后一結(jié)點數(shù)據(jù)被存儲在哪里,只有通過前一結(jié)點的指針域才知道,因此,訪問時只能是逐個訪問,而不能實現(xiàn)隨機訪問。
17.B
18.A程序首先以讀二進(jìn)制文件的方式打開文件d.dat;然后使用fwrite函數(shù)將數(shù)組a中6個元素寫入d.dat中。并調(diào)用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;接著使用rewind函數(shù)將文件指針fp移動到文件頭;再使用fseek函數(shù)將fp從當(dāng)前位置向后移動2個整數(shù)位置;最后使用fread函數(shù)從fp指向的位置向后讀取6個整數(shù)。由此可知這6個整數(shù)分別是:3,4,5,6,3,3。故本題答案為A選項。
19.D
20.B
21.本題考查函數(shù)的綜合知識。首先,我們可以利用強制轉(zhuǎn)換類型轉(zhuǎn)換運算符,將一個表達(dá)式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。
本題可按部就班地逐步運算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
22.s[i]!='a's[i]!='a'解析:本題是要將字符串s中所有小寫字母'a'刪去,所以if語句的判斷條件應(yīng)該是字符串s中的字符和字符'a'不相同的時候,就把它仍然存在原來的數(shù)組中,若是和字符'a'相同,就不再保存它。
23.22132,2,1,3解析:本題考查++,--運算符和條件運算符的使用。
“表達(dá)式1?表達(dá)式2:表達(dá)式3”的功能是:表達(dá)式1的值若非0,則計算表達(dá)式2的值,且表達(dá)式2的值為最終結(jié)果;若表達(dá)式1的值為0,則計算表達(dá)式3的值,且為最終結(jié)果。
本題中,x=1,y=2時,x<y成立,輸出y的值2;y=2,z=3時,z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個輸出x的值不變?yōu)?,y的值為增加后的3。
24.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復(fù)合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復(fù)合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。
25.3123,1,2解析:分析程序,第一個if句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。
解析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
27.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。
28.實體實體
29.存儲結(jié)構(gòu)
30.structlink*headstructlink*head解析:考查用指針引用結(jié)構(gòu)體變量成員數(shù)據(jù)的方法。因為本題中是用結(jié)構(gòu)體變量構(gòu)成了鏈表,所以要從鏈表頭節(jié)點,逐個節(jié)點的引用結(jié)構(gòu)體的數(shù)據(jù)域,需要有指向結(jié)構(gòu)體變量的指針,依次指向各個節(jié)點,即p=p->next,而用指針引用結(jié)構(gòu)體成員數(shù)據(jù)的方法為:p->data。
31.4242解析:主函數(shù)中的for循環(huán)循環(huán)兩次,即函數(shù)sub()被調(diào)用兩次。在sub()中x被定義為靜態(tài)整型變量,當(dāng)調(diào)用函數(shù)sub()完畢返回主函數(shù),x中的值仍然保留,下次調(diào)用函數(shù)sub()時,x不再被賦初值。第1次調(diào)用x/=2相當(dāng)于x=x/2=8/2=4,第2次調(diào)用x=x/2=4/2=2,因此輸出42。
32.10.5
33.\0'strl[i]-str2[i]
34.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組st1l和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1.在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填*t++或*(t++)。
35.33解析:分析程序運行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,輸出結(jié)果為3。
36.310
37.a.next=aba.next=ab解析:選項A)中,指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應(yīng)該是p->next=&b;在選項D)中,用*運算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址。
38.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。
39.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)
40.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
41.D解析:時間復(fù)雜度是指一個算法執(zhí)行時間的相對度量;空間復(fù)雜度是指算法在運行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數(shù)據(jù),又不得不犧牲運行時間。時間和空間的效率往往是一對矛盾,很難做到兩全。但是,這不適用于所有的情況,也就是說時間復(fù)雜度和空間復(fù)雜度之間雖然經(jīng)常矛盾,但是二者不存在必然的聯(lián)系。因此,選項A、B、C的說法都是錯誤的。故本題的正確答案是D。
42.B本題考查變量賦值基本概念。在聲明一個變量后,如果未顯式的對其進(jìn)行賦值,則它的值是一個隨機值。
43.D解析:內(nèi)聚性是一個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強排列順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。
44.B解析:在對程序進(jìn)行測試時會發(fā)現(xiàn)錯誤,這就要進(jìn)行程序調(diào)試(排錯)。程序調(diào)試活動由三部分組成:一是錯誤定位,根據(jù)錯誤的外部表現(xiàn)形式,確定程序中出錯的位置,找出錯誤的內(nèi)在原因;二是對程序進(jìn)行修改,排除這個錯誤;三是進(jìn)行回歸測試,防止引進(jìn)新的錯誤。所以程序調(diào)試的目的就是診斷和改正程序中的錯誤。軟件調(diào)試不能改善軟件的性能,也不能挖掘軟件的潛能。
45.B解析:本題中定義了一個二維數(shù)組b并初始化,定義了一個變量t并賦初值1。接著通過一個二重循環(huán)將若干個元素的值加到變量t中。循環(huán)的執(zhí)行步驟是:外層循環(huán)變量i=0時,內(nèi)層循環(huán)變量j=i,執(zhí)行語句“t=t+b[i][b][j][j]]”,相當(dāng)于t=t+b[0][b][0][0]],由于b[0][0]的值為0,得到t的值為1;依次類推,循環(huán)共執(zhí)行了3次,最后輸出t的值為4。所以,4個選項中B為所選。
46.A
47.B
48.B[答案]B
[考點]數(shù)據(jù)結(jié)構(gòu)與算法
[評析]依次從上到下,可得出:
第1層結(jié)點數(shù)為1;
第2層結(jié)點數(shù)為2*1=2;
第3層結(jié)點數(shù)為2*2=4;
第n層結(jié)點數(shù)為2的n-1次冪
49.B解析:考查結(jié)構(gòu)體數(shù)組對結(jié)構(gòu)體成員的引用。結(jié)構(gòu)體數(shù)組中對結(jié)構(gòu)體成員的引用要先引用到數(shù)組元素,然后像對待普通的結(jié)構(gòu)體變量一樣來對待結(jié)構(gòu)體數(shù)組元素。
50.B解析:整型常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制3種表示:十進(jìn)制整數(shù)以正號(+)或負(fù)號(-)開頭,由首位非0的一串十進(jìn)制數(shù)字組成,正負(fù)號也可省略,表示正整數(shù);八進(jìn)制整數(shù)以數(shù)字0開頭,后面接著干個八進(jìn)制數(shù)字(0~7):十六進(jìn)制整數(shù)以數(shù)字。和字母x(大、小寫均可)開頭,后面接若干個十六進(jìn)制數(shù)字(數(shù)字0~9和字母A~F,大、小寫均可)。故本題是以無符號整數(shù)形式輸出一個十六進(jìn)制整數(shù)FFFF,將其轉(zhuǎn)換為十進(jìn)制就是65535,故本題應(yīng)該選擇B。
51.C解析:本題的A和B犯了一個同樣的錯誤,即指針變量p定義后并沒有指向具體的變量,因此不能進(jìn)行賦值操作。另外,在選項D中,s是int指針變量,p是char型指針變量,所指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。
52.D解析:數(shù)據(jù)庫表中字段轉(zhuǎn)化為屬性,把記錄的類型轉(zhuǎn)化為關(guān)系模式。
53.A解析:函數(shù)f1(x,y)的功能返回x,y中較大的一個,而函數(shù)f2(x,y)的功能是返回x,y中較小的一個,所以f1(a,b)=4,f1(c,d)=3,f2(c,d)=2,故e=f2(4,5),f=(3,2)=3,g=4+3+5+2-4-3=7。
54.A
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輸出的是指針?biāo)赶虻臄?shù)組值,此時p所指向的是aa[O][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應(yīng)為3。
56.D解析:對二叉樹的前序遍歷是指先訪問根結(jié)點,然后訪問左于樹,最后訪問右子樹,并且在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左、右于樹。
57.B解析:在選項B)中,因為數(shù)組的第一維的數(shù)目不明確,所以理解會有歧義,可以理解為1行3列,或者2行3列等。所以選項B)錯誤。注意:數(shù)組中元素的引用。
58.C解析:a=p1==&m;等價于a=(P1==&m);將p1是否等于m的地址的邏輯值(0)賦給變量a;在b=(*p1)/(*p2)+7;語句中,(*P1)/(*p2)=0,因此將表達(dá)式的值7賦給變量b。
59.BC語言中二維數(shù)組是按行存放的,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。此題二維數(shù)組str[][10]第1行的前5個元素為'C','h','i','n','a',第6個元素為'\\0',后4個元素為空字符。緊接著內(nèi)存單元存放數(shù)組第2行的元素,即從str[1][0]到str[1][9]分別為'B','e','i','j','i','n','g',第8個元素為'\\0',后兩個元素為空字符。執(zhí)行*p=str[0]后,指針p就指向了二維數(shù)組str的首地址,p+10指向從首地址依次向后的第11個存儲單元即字符,B,的地址,所以輸出Beijing,故答案為B。
60.C解析:位運算符“|”的作用是按位或,即兩個二進(jìn)制數(shù)的相應(yīng)位中只要一個為1,該位的結(jié)果值為1。最后以字符型輸出,98對應(yīng)的字符“b”。
61.B
62.A本題考查C語言中常量的定義。常量是指程序在運行過程中,其值不能被改變的量。C語言中常見的常量主要有整型常量、實型常量、字符型常量。整型常量包括十進(jìn)制整數(shù),如456;八進(jìn)制整數(shù),以0開頭,如0456;十六進(jìn)制整數(shù),以0x開頭,如0x456。實型變量包括十進(jìn)制小數(shù)形式,如.456;指數(shù)形式,如456e0,字母e前面必須有數(shù)字,e后面的數(shù)字必須為整數(shù),如456e-4。字符型常量是用單撇號括起來的一個字符。如,’a’,’A’等。’a’不等于’A’。字符型常量還包括一種轉(zhuǎn)義字符,以’\\’開頭,表示將’\\’后面的字符轉(zhuǎn)換成另外的意義。字符串也可以作為常量,用雙撇號括起來,如'abc'。本題A選項中單撇號括起來的不是一個字符,而是三個字符,故不是合法常量。B選項是實型變量的指數(shù)表示形式。C選項是字符串常量,用雙撇號引起來。D選項是字符’\\0’,因為在碰到’\\0’后,字符串結(jié)束,因此只讀取到’\\0’,所以D選項是合法常量。
63.C
64.C
65.C十六進(jìn)制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。
66.B首先二維數(shù)組a中的元素都初始化為0,其次定義了指向數(shù)組的指針ptr,并且依次將ptr指向二維數(shù)組
67.A
68.C數(shù)據(jù)定義語言:負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言:負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增加、刪除、修改等操作;數(shù)據(jù)控制語言:負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。因此本題答案為C)。
69.Afopeni函數(shù)第二個參數(shù)是w則表示寫的形式,會覆蓋原來數(shù)據(jù),所以選擇A)。
70.A
71.BA選項去掉大括號就正確了;c選項和D選項應(yīng)在定義時賦初值。因此B選項正確。
72.B本題考查scanf函數(shù),輸入格式符%2d%f表示只接收了字符,其中a輸入的值為2位的十進(jìn)制整數(shù),即87,然后將緊接著的6賦給b,因為b的值為單精度數(shù)在,即6.000000,故選擇B選項。
73.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
74.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
75.A\n在二維表中凡能唯一標(biāo)識元組的最小屬性集稱為關(guān)鍵字,關(guān)鍵字具有標(biāo)識元組、建立元組間聯(lián)系等重要作用。此題中,(借書證號,圖書編號)是表借閱的主鍵,借書證號、圖書編號分別是外鍵,借書證號是讀者表的主關(guān)鍵字,圖書編號是圖書表的主關(guān)鍵字。
\n
76.D本題考查的是switch語句。在switch語句中,表達(dá)式的值與某一個(!ase后面的常量表達(dá)式的值相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式
的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語句,各個case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。所以在本題中,當(dāng)k=5和k=4的時候,case都沒有與其匹配的值,所以執(zhí)行了default語句;當(dāng)k=3時,執(zhí)行”case3:n+=k;”得n=3,然后執(zhí)行default;當(dāng)k=2時,執(zhí)行”case2:case3:n+=k;”得n=5,然后執(zhí)行default;當(dāng)k=1時,執(zhí)行”casel:n+=k;case2:case3:n+=k;”使得n加兩次k,得到n=7。
77.B解析:指針變量中只存放地址(指針),不要將—個整型量(或任何其他非地址類型的數(shù)據(jù))賦給—個指針變量,所以B是不正確的。
78.D
79.C分布式數(shù)據(jù)庫是一種將數(shù)據(jù)分布存儲,但數(shù)據(jù)在邏輯上保持整體性的一種數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)具有以下幾個特點:
(1)數(shù)據(jù)的物理分布性。分布式數(shù)據(jù)庫的數(shù)據(jù)不是存儲在一個場地上,不是集中存儲,而是存儲在計算機網(wǎng)絡(luò)上多個場的設(shè)備上。
(2)數(shù)據(jù)的邏輯整體性。雖然數(shù)據(jù)分布在各個場地,但邏輯上是一個整體,它們被所有的用戶共享,并由一個DDBMS統(tǒng)一管理。
(3)位置透明性和復(fù)制透明性。位置透明性是指用戶不必關(guān)心數(shù)據(jù)的邏輯分區(qū),不必關(guān)心數(shù)據(jù)物理位置分布的細(xì)節(jié);而復(fù)制透明性是指用戶不用關(guān)心數(shù)據(jù)庫在網(wǎng)絡(luò)中各個結(jié)點的復(fù)制情況,被復(fù)制的數(shù)據(jù)的更新都由系統(tǒng)自動完成。
(4)場地自治性。各場地的數(shù)據(jù)由本地DBMS管理,具有自治處理能力,能執(zhí)行局部的應(yīng)用請求。
(5)數(shù)據(jù)冗余及冗余透明性。與集中式數(shù)據(jù)庫系統(tǒng)追求低冗余度不同,DDBS通過數(shù)據(jù)的適當(dāng)冗余來提高系統(tǒng)的可靠性、可用性和改善系統(tǒng)性能。但這種冗余對用戶是透明的,即用戶不必知道冗余的存在,冗余副本之間的數(shù)據(jù)一致性問題由系統(tǒng)負(fù)責(zé)。
(6)事務(wù)管理的分布性。數(shù)據(jù)的分布性必然造成事務(wù)執(zhí)行和管理的分布性,即一個全局事務(wù)的執(zhí)行可分解為在若干場地上子事務(wù)(局部事務(wù))的執(zhí)行。事務(wù)的原子性、一致性、隔離性、持久性以及事務(wù)的恢復(fù)也都具有分布性特點。
80.C81.(1)錯誤:proc(int**a,intm)
正確:voidproc(int(*a)[N],intm)
(2)錯誤:aEj][k]=k*J;
正確:a[j][k]=(k+1)*(j+1);
【解析】從主函數(shù)的調(diào)用可知,函數(shù)proc()沒有返回值,因此應(yīng)該定義為void類型。形參a應(yīng)該是一個整型的指針數(shù)組。因此,“proe(int**a,intm)”應(yīng)改為“voidproc(int(*a)[N],intm)”。數(shù)組下標(biāo)從0開始,由事例數(shù)組可知,其元素從l開始遞增,因此“a[j][k]=k*J;”應(yīng)改為“a[j][k]=(k+1)*(j+1);”。
82.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過指針返回元素個數(shù)*/8}本題可以用兩個循環(huán)來處理。由于是按行的順序取出,因此第1個for循環(huán)用于控制行下標(biāo),第2個循環(huán)用于控制列下標(biāo)。若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標(biāo),不能用s[i][j]。若按行取出則列下標(biāo)變化較快,若按列取出則行下標(biāo)變化較快,即循環(huán)嵌套時,越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)</y&&!z||1>2021-2022年安徽省馬鞍山市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.sizeof(float)是()。A.一個雙精度型表達(dá)式B.一個整型表達(dá)式C.一種函數(shù)調(diào)用D.一個不合法的表達(dá)式
2.鏈棧與順序棧相比,比較明顯的優(yōu)點是()。
A.插入操作更加方便B.刪除操作更加方便C.不會出現(xiàn)下溢的情況D.不會出現(xiàn)上溢的情況
3.
4.軟件開發(fā)模型包括Ⅰ.瀑布模型Ⅱ.扇形模型Ⅲ.快速原型法模型Ⅳ.螺旋模型
A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ
5.在長度為n的順序存儲的線性表中,刪除第i個元素(1≤i≤n)時,需要從前向后依次前移____個元素。
A.n-iB.n-i+1C.n-i-1D.i
6.以下正確的字符串常量是()。A.“\\\”B.‘a(chǎn)bc’C.OlympicGamesD.“”
7.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是()
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}
B.switch(int(x)){case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}
D.switch(a+B){case1:printf("*\n");casec:printf("**\n");}
8.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
9.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預(yù)處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預(yù)處理命令
D.宏名必須用大寫字母表示
10.在位運算中,操作數(shù)左移一位,其結(jié)果相當(dāng)于A.A.操作數(shù)乘以2
B.操作數(shù)除以2
C.操作數(shù)除以4
D.操作數(shù)乘以4
11.若有說明:inta[][3]={1,2,3,4,5,6,7};則a數(shù)組第一維的大小是
A.2B.3C.4D.無確定值
12.求2n個數(shù)中的最大值和最小值,最少的比較次數(shù)是()
A.4n/3B.2n-2C.3n-2D.3n/2
13.考慮一個特殊的hash函數(shù)h,能將任一字符串hash成一個整數(shù)k,其概率P(k)=2^(-k),k=1,2,…,∞。對一個未知大小的字符串集合S中的每一個元素取hash值所組成的集合為h(S)。若h(S)中最大的元素Maxh(S)=10,那么S的大小的期望是()
A.1024B.512C.5D.10
14.
15.算法分析的兩個主要方面是()。
A.空間復(fù)雜性和時間復(fù)雜性B.正確性和簡明性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
16.鏈表不具有的特點是A.A.不必事先估計存儲空間
B.可隨機訪問任一元素
C.插入和刪除不需要移動元素
D.所需空間與線性表長度成正比
17.
18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結(jié)果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
19.
20.以下程序是用來計算兩個非負(fù)數(shù)之間的最大公約數(shù):我們假設(shè)x,y中最大的那個數(shù)的長度為n,基本運算時間復(fù)雜度為O(1),那么該程序的時間復(fù)雜度為()A.O(1)B.O(logn)C.O(n)D.O(n^2)
二、2.填空題(20題)21.以下程序的輸出結(jié)果是______。
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf("%3.Of\n",fun((int)fun(a+c,b),a-c));}
22.以下程序的功能是將字符串s中所有小寫字母'a'刪去,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[]="absuWWUDJFKFLaaakdK";
inti,j;
for(i=j=0;s[i]!='\0';i++)
if()
s[j++]=s[i];
s[j]='\0';
printf("%s",s);
}
23.下列程序的運行結(jié)果是______。
main()
{intx=1,y=2,z=3;
printf("%d,",x<y?y:x);
printf("%d,",z<y?x++:y++);
printf("%d,%d",x,y);
}
24.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
25.下列程序的輸出結(jié)果是______。
main()
{inta+,b=2,C=3,t=0;
ifa<B){t=a;a=b;b=t;}
ifa<C){t=a;a=c;c=t;}
printf("%d,%d,%dln",a,b,C);
}
26.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
27.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
28.面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個______。
29.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
30.已知head指向一個帶頭結(jié)點的單向鏈表,鏈表中每個結(jié)點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結(jié)點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。
structlink
{intdata;structlink*next;}
main()
{structlink*head;
......
sum(head);
......
}
sum(【】);
{structlink*p;ints=0;
p=head->next;
while(p){s+=p->data;p=p->next;}
return(s);}
31.若有如下程序:
voidsub()
{staticintx=8;
x/=2;printf("%d",x);
}
main()
{intm;
for(m=0;m<2;m++)sub();}
則程序運行后的輸出結(jié)果是【】.
32.若對長度為90的線性表進(jìn)行分塊查找,其中每塊子表長度為9。如果在索引表查找過程中進(jìn)行順序查找,那么平均查找長度為【】。
33.下列程序用來將從鍵盤上輸入的2個字符串進(jìn)行比較,然后輸出2個字符串中第1個不相同字符的ASCII碼之差。例如,輸入的2個字符串分別為abcdef和abceef,則輸出為-1。
#include
main()
{charstr[100],str2[100],c;
inti,s;
printf("\ninputstring1:\n");gest(str1);
printf("\ninputstring2:\n");gest(str2);
i=0;
while((strl[i]==str2[i]&&(strl[i]!=【】))
i++;
s=【】;
printf(.%d\n",s);
34.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
35.下列程序的運行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
36.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運行后的輸出結(jié)果是【】。
37.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是【】。
structnode
{chardata;
structnode*next;}a,b
38.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
39.由計算機、操作系統(tǒng)、DBMS、數(shù)據(jù)庫、應(yīng)用程序及用戶組成的一個整體叫做【】。
40.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
三、1.選擇題(20題)41.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
42.若函數(shù)中有定義語句:inta;,則()。
A.系統(tǒng)將自動給a賦初值0B.這時a中的值是和隨機數(shù)C.系統(tǒng)將自動給a賦初值-1D.這a中無任何值
43.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
44.軟件調(diào)試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
45.以下程序的輸出結(jié)果是main(){intb[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}
A.3B.4C.1D.9
46.下面程序段的輸出結(jié)果是()。#include<stdio.h>main(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}
A.1.237000B.輸出格式說明與輸出項不匹配,輸出無定值C.1.236000D.1.24
47.設(shè)有以下定義:typedefunion{longi;intk[5];charc,}DATE,structdate{intcat;DATEcow;doubledog;}too;DATEmax;則下列語句的執(zhí)行結(jié)果是()printf("%d",stzeof(structdate)+sizeof(max));
A.25B.30C.18D.8
48.在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。
A.8B.16C.32D.15
49.若有以下的說明,對初值中整數(shù)2的正確引用方式是
staticstruct
{charch;
inti;
doublex;
}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};
A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i
50.有以下程序,其中%u表示按無符號整數(shù)輸出:
main
{
unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/
printf("%u\n",x);
}
程序運行后的輸出結(jié)果是()。
A.-1B.65535C.32767D.0xFFFF
51.請選出正確的程序段______。
A.int*p
B.int*s,k;scanf(""%d"",p);*s=100;………
C.int*s,k;
D.int*s,k;char*p,c;char*p,e;s=&k;p=&c;p=&c;*p='a';s=p;……*s=1;……
52.在關(guān)系數(shù)據(jù)庫模型中,通??梢园?)稱為屬性,其值稱為屬性值。
A.記錄B.基本表C.模式D.字段
53.有以下程序intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運行后的輸出結(jié)果是
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
54.以下程序運行后,輸出結(jié)果是()main(){charch[2][5]={"693","825"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(j=0;j<2;j++)for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}
A.6385B.22C.33D.693825
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.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。
A.XZCYABB.XYZABCC.XYABCZD.XYAZBC
57.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價的是
A.floata[2][]={{0,3,8},{0,9}};
B.floata[][3]={0,3,8,0,9,0};
C.floata[][3]={{0,3},{8,0},{9,0}};
D.floata[2][]={{0,3,8},{0,9,0}};
58.執(zhí)行以下程序后,a,b的值分別是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
59.有以下程序:#include<stdio.h>main(){eharstr[][10]={"China","Beijing"},*p=str[o];printf("%s\n",p+10);}程序運行后的輸出結(jié)果是()。
A.ChinaB.BeijingC.ngD.ing
60.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}
A.66B.98C.bD.B
四、選擇題(20題)61.
62.以下選項中不能作為C語言合法常量的是
A.’Fab’B.0.7e+9C."\b"D.’\01211’
63.
64.
65.下列選項中不合法的十六進(jìn)制數(shù)是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
66.有以下程序:
若運行時輸入:123<回車>,則輸出結(jié)果是()。
A.編譯錯誤2000B.102000C.122030D.10
67.
68.負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
69.有以下程序
70.
71.以下選項中正確的語句組是()。
A.char*s;8={1.BOOK!”}i
B.char*s;8=”BOOK!”;
C.charS[10];S=”BOOK!”;
D.charS[];S=”BOOK!”;
72.設(shè)有定義:“inta;floatb;”,執(zhí)行“scanf("%2d%f",&a,&b);”語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是()。A.A.876和543.000000B.87和6.000000
C.87和6543.000000
D.76和543.000000
73.有如下程序段
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
74.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
75.設(shè)有圖書(圖書編號,書名,第一作者,出版社.、讀者(借書證號,姓名,單位,職稱.和借閱(借書證號,圖書編號,借書日期,還書日期.三張表,則表借閱的關(guān)鍵字(鍵或碼.為()。
A.借書證號,圖書編號
B.圖書編號,借書日期
C.借書日期,還書日期
D.借書證號,借書日期
76.有以下程序:
程序運行后的輸出結(jié)果是()。
A.0B.4C.6D.7
77.設(shè)p1和p2是指向同一個int型一維數(shù)組的指針變量,k為int型變量,則下列不能正確執(zhí)行的語句是_______。
A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);
78.已有定義intx=3,y=4,z=5;則表達(dá)式“!(x+y)+z-1y+z/2”的值是________。
A.6B.0C.2D.1
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度紅薯種植基地土地流轉(zhuǎn)合同
- 2025年度簡易解聘合同書-交通企業(yè)員工離職管理協(xié)議
- 2025年度教育培訓(xùn)機構(gòu)合作解除合同通知書模板
- 2025年度綠色出行項目臨時用工聘用標(biāo)準(zhǔn)合同4篇
- 2025年度廠房裝修項目節(jié)能改造與升級合同4篇
- 2025年度水果電商大數(shù)據(jù)分析與運營支持合同模板
- 二零二五年度淋浴房智能控制系統(tǒng)集成合同4篇
- 2025年度競業(yè)協(xié)議合規(guī)性審查及整改建議合同
- 二零二五年度商鋪租賃合同解除及商鋪租賃關(guān)系終止后資產(chǎn)處置合同
- 2025版臨時會議場地租賃合同范本4篇
- 河南省鄭州外國語高中-【高二】【上期中】【把握現(xiàn)在 蓄力高三】家長會【課件】
- 天津市武清區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含解析)
- 2025年中煤電力有限公司招聘筆試參考題庫含答案解析
- 企業(yè)內(nèi)部控制與財務(wù)風(fēng)險防范
- 高端民用航空復(fù)材智能制造交付中心項目環(huán)評資料環(huán)境影響
- 建設(shè)項目施工現(xiàn)場春節(jié)放假期間的安全管理方案
- 胃潴留護(hù)理查房
- 污水處理廠運營方案計劃
- 眼科慢病管理新思路
- 三菱張力控制器LE-40MTA-E說明書
- 生活垃圾填埋場污染控制標(biāo)準(zhǔn)
評論
0/150
提交評論