




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2022年山東省德州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.算法的時間復(fù)雜度取決于()
A.問題的規(guī)模B.待處理數(shù)據(jù)的初態(tài)C.A和B
2.
3.在一個有頭結(jié)點的鏈隊列中,假設(shè)f和r分別為隊首和隊尾指針,則插入s所指的結(jié)點的運算是()。
A.f->next=s;f=s;
B.r->next=s;r=s;
C.s->next=r;r=s;
D.s->next=f;f=s;
4.
5.有以下程序:#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
6.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
7.以下選項中敘述錯誤的是()。
A.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值
B.在同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)
C.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值
D.C程序函數(shù)的性能不可以說明為static型變量
8.下列程序的輸出結(jié)果是()
main()
{inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
9.下列關(guān)于效率的說法不正確的是()
A.效率是一個性能要求,其目標(biāo)應(yīng)該在需求分析時給出
B.提高程序效率的根本途徑在于選擇良好的設(shè)計方法,數(shù)據(jù)結(jié)構(gòu)與算法
C.效率主要指處理機時間和存儲器容量兩個方面
D.程序的效率與程序的簡單性無關(guān)
10.以下()不是隊列的基本運算
A.從隊尾插入一個新元素B.從隊列中刪除第i個元素C.判斷一個隊列是否為空D.讀取隊頭元素的值
11.下面程序的時間復(fù)雜為()A.O(n)B.O(n^2)C.O(n^3)D.O(n^4)
12.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
13.設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
14.假定a為一個整型數(shù)組名,則元素a[4]的字節(jié)地址為()。
A.a+4B.a+8C.a+16D.a+32
15.下列關(guān)于AOE網(wǎng)的敘述中,不正確的是()。
A.關(guān)鍵活動不按期完成就會影響整個工程的完成時間
B.任何一個關(guān)鍵活動提前完成,那么整個工程將會提前完成
C.所有的關(guān)鍵活動提前完成,那么整個工程將會提前完成
D.某些關(guān)鍵活動提前完成,那么整個工程將會提前完成
16.設(shè)有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54
17.下列二維數(shù)組的說明中,不正確的是()。
A.floata[][4]={0,1,8,5,9};
B.inta[3][4]
C.#defineN5floata[N][3]
D.inta[2][9.5];
18.設(shè)有如下類型說明語句:typedefstruct{intnum;struct{inty,m,d;}date;}PER;則以下定義結(jié)構(gòu)體數(shù)組并賦初值的語句中錯誤的是()。
A.PERst[2]={{1001},2008,8,1,{1002},2006,5,20};
B.PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};
C.PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};
D.PERst[2]={1001,2008,8,1,1002,2006,5,20};
19.若執(zhí)行下面的程序時,從鍵盤上輸入5和2,則輸出結(jié)果是______。main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}
A.5B.3C.2D.0
20.在ASC算法team日常開發(fā)中,常常面臨一些數(shù)據(jù)結(jié)構(gòu)的抉擇,令人糾結(jié)。目前大家在策劃一個FBI項目(FastBinaryIndexing),其中用到的詞匯有6200條,詞匯長度在10-15之間,詞匯字符是英文字母,區(qū)分大小寫。請在下面幾個數(shù)據(jù)結(jié)構(gòu)中選擇一個使檢索速度最快的()
A.二叉搜索樹,比較函數(shù)開銷:1次運算/每字符
B.哈希表,hash算法開銷:10次運算/每字符
C.鏈表,比較函數(shù)開銷:1次運算/每字符
D.TRIE樹,尋找子節(jié)點開銷:1次運算/每字符
二、2.填空題(20題)21.棧和隊列通常采用的存儲結(jié)構(gòu)是【】。
22.用以下程序把從鍵盤輸入的字符存放到一個文件中,用字符#作為結(jié)束符,請按題意要求填空完善程序。
#include<stdio.h>
main()
{FILE*fp;
charch,fname[10];
printf("Inputthenameoffile\n");
gets(fname);
if(fp=fopen(【】))==NULL)
{printf("can'topen\n");
【】;
}
while((ch=getchar())!='#')
fputc(【】);
fclose(fp);
}
23.以下程序通過函數(shù)SunFun求。這里f(x)=x2+1,由F函數(shù)實現(xiàn)。請?zhí)羁铡?/p>
main()
{printf("Thesum=%d\n",SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F(【】);
returns;
}
F(intx)
{returnx*x+1;}
24.性表的多種存儲結(jié)構(gòu)中,最簡單的方法是【】。
25.軟件是程序、數(shù)據(jù)和【】的集合。
26.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達式是【】。
27.在一個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。
28.用樹型結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。
29.以下程序的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}
30.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。
31.若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
32.棧的3種基本運算是:入棧、退棧和______。
33.若有語句:
inti=-19,j=i%4;
printf("%d\n",j);
則輸出結(jié)果是【】。
34.寫出下列程序的執(zhí)行結(jié)果。swap(p1,p2)int*p1,*p2;{intp;p=*p1;*p1=*p2;*p2=p;}main(){inta,b,*p1,*p2;scanf("%d%d",&a,&B);p1=&a;p2=&b;if(a<B)swap(p1,p2);printf("\na=%d,b=%d\n",a,B);}若a=7,b=8,則程序的運行結(jié)果為()。
35.以下程序的輸出結(jié)果是()。
#inciude<stdio.h>
main()
{chars[]="ABCabc";
s[5]='\0';
printf("%s\n",s);
}
36.執(zhí)行以下程序時,若輸入end<回車>,則輸出結(jié)果是【】。
main()
{charch[10]="Begin";
gets(&ch[1]);puts(ch);
}
37.以下程序運行后的輸出結(jié)果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
38.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4=0)printf("\n");
printf("%3d",b[i]);
}
}
39.有以下定義和語句,則sizeof(a.share)的值是()。
structdate
{unsignedintday;
unsignedintmouth;
unsignedintyear;
union{intshare1;
floatshare2;
}share;
}a;
40.若a=10,b=20,則表達式!(a<b)的值是【】。
三、1.選擇題(20題)41.以下程序段的輸出結(jié)果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}輸入數(shù)據(jù)如下:(此處<CR>代表回車符)aaa<CR>bbb<CR>
A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb
42.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
43.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
44.有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d3.dat","w+b");fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int),3,SEEK_SET);/*該語句使讀文件的位置指針從文件頭向后移動3個int型數(shù)據(jù)*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0
A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.6,5,4,3,2,1,
45.下列二維數(shù)組的說明中,不正確的是()。
A.floata[][4]={0,1,8,5,9};
B.inta[3][4];
C.#defineN5
D.inta[2][9.5];floata[N][3];
46.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。
A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項
47.下列程序的輸出結(jié)果是()main(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%d\n",n);}
A.4B.2C.1D.0
48.若變量已正確定義,有以下程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!=a)c=b;
printf("%d,%d,%d\n",a,b,c);
其輸出結(jié)果是
A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7
49.有下列程序main(){doubled;floatf;longl;inti;i=f=1=d=20/3;printf("%d%1d%f%f\n",i,1,f,D);}程序運行后的輸出結(jié)果是(小數(shù)點后只寫1位)()
A.666.06.0B.666.76.7C.666.06.7D.666.76.0
50.當(dāng)執(zhí)行以下程序段時,______。x=-1;do{x=x*x;}while(!x);
A.循環(huán)體將執(zhí)行1次B.循環(huán)體將執(zhí)行2次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
51.有以下程序structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));}程序運行后的輸出結(jié)果是
A.10B.11C.20D.21
52.下面程序的輸出結(jié)果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,streat(p1,p2));printf("%s\n",str);}
A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC
53.下列術(shù)語中,與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)的是______。
A.隊列B.棧C.二叉樹D.堆
54.已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結(jié)果是
A.A,BB.A,68C.65,66D.65,68
55.設(shè)有如下程序:#include'string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name1<回車>name2<回車>,則程序運行后的輸出結(jié)果是()。
A.$9B.@11C.$10D.@10
56.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);}
程序運行后的輸出結(jié)果是
A.2030B.2050C.3050D.3020
57.下列選項中不符合良好程序設(shè)計風(fēng)格的是A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計要保證高耦合、高內(nèi)聚
58.有以下程序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
59.公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員,從職員到部門的聯(lián)系類型是()
A.多對多B.一對一C.多對一D.一對多
60.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j*2)continue;x++;}x++;}printf("x=%d\n”,x);}程序執(zhí)行后的輸出結(jié)果是()。
A.x=4B.x=8C.x=6D.x=12
四、選擇題(20題)61.
62.C語言可執(zhí)行程序的開始執(zhí)行點是()。
A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句
63.
64.
65.
66.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫的劃分原則是()
A.數(shù)據(jù)之間的聯(lián)系方式B.記錄長度C.聯(lián)系的復(fù)雜程度D.文件的大小
67.
68.有以下程序段
main()
{inta=5,*b,**c;
c=&b;b=&a;
……
}
程序在執(zhí)行了c=&b;b=&a;語句后,表達式:**c的值是()
A.變量a的地址
B.變量b中的值
C.變量a中的值
D.變量b的地址
69.有以下程序:
程序運行后的輸出結(jié)果是()。
A.7,4B.4,10C.8,8D.10,10
70.
71.按照c語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是()。A.連接符B.大寫字母C.數(shù)字字符D.下劃線
72.下列程序的輸出結(jié)果是()。#includeintfun(inta){intb=0;staticintc=4;a=c++;b++;return(a);}main{inta=2,i,c;for(i=0:i<2;i++)c=f(a+1);printf("%d\n",c);}A.4B.7C.6D.5
73.
A.包含l個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定
74.下列敘述中正確的是()。
A.棧是一種先進先出的線性表B.隊列是一種后進先出的線性表C.棧與隊列都是非線性結(jié)構(gòu)D.以上三種說法都不對
75.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。
A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
76.有以下程序:
程序運行后的輸出結(jié)果是()。
A.Beijing!
B.toBeijing]
C.WelcomeyoutoBeijingI
D.youtoBeijingI
77.下列敘述中錯誤的是()。
A.一個C語言程序只能實現(xiàn)一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數(shù)組成
D.一個C函數(shù)可以單獨作為一個C稃序文件存存
78.
79.有以下程序:
程序運行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學(xué)生的成績:6070809065758595則低于平均分的學(xué)生人數(shù)為4(平均分為77.5)。實際輸入時學(xué)生數(shù)以“Enter”鍵作為結(jié)束,成績與成績之間也與Enter鍵作為分隔。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.C
3.B
4.A
5.C本題考查了兩層for循環(huán)。外層循環(huán)增量i的值作為內(nèi)層循環(huán)執(zhí)行次數(shù)的值使用。
6.C解析:解答本題,首先要明白在對指針進行加、減運算的時候,數(shù)字“1”不是十進制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。
7.A靜態(tài)變量不是每調(diào)用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。
8.B解析:算術(shù)運行符“/”、“%”的優(yōu)先級處于同一級,并且兩者的結(jié)合性都是從左到右。所以算術(shù)表達式運算過程為:a=25/10%9=2%9=2:當(dāng)邏輯運算符“&&”兩邊的值都是非零時,邏輯表達式的值才為真(即為1)。所以b=2&&(-1)=1。
9.D
10.B
11.B
12.C
13.B解析:條件表達式的形式為:“表達式1?表達式2:表達式3”。其含義為:當(dāng)“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當(dāng)“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當(dāng)表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++:i++;”。
14.C
15.B
16.D
17.D解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式:二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達式][常量表達式]。
18.A結(jié)構(gòu)體PER類型定義了兩個成員:num為整型,date為嵌套的結(jié)構(gòu)體類型。初始化時,成員值的順序必須與成員定義的順序相同,num必須是整數(shù),date必須是用花括號標(biāo)注的嵌套的3個整數(shù)。選項A中,{1001}和{1002}都不是整數(shù),所以選項A錯誤。故本題答案為A選項。
19.C解析:本題考查簡單的if...else語句。先執(zhí)行條件if(a<b),顯然不成立,則執(zhí)行else語句。
20.D
21.鏈?zhǔn)酱鎯晚樞虼鎯︽準(zhǔn)酱鎯晚樞虼鎯?/p>
22.fname"#"exit(0)chfp
23.xx解析:考查函數(shù)的調(diào)用。函數(shù)調(diào)用時,實參與形參一致,函數(shù)F只有一個形參,故函數(shù)的調(diào)用為F(x)。
24.順序存儲順序存儲
25.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
26.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。
27.3131解析:設(shè)隊列容量為m,如果:rear>front,則隊列中元素個數(shù)為rear-front;如果rear<front,則隊列中元素個數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。
28.層次模型用樹型結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為層次模型,用有向圖結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型,用二維表格結(jié)構(gòu)表示實體及其聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。
29.s%10*s1+t
30.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結(jié)點。第6層的結(jié)點數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點最多數(shù)”和“某一層的結(jié)點最多數(shù)”。前者的計算是深度為m的二叉樹最多有2m-1個結(jié)點。
31.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲單元時,要在前面用強制類型轉(zhuǎn)換符說明該存儲單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點型數(shù)據(jù)的指針變量p分配存儲單元,因此用(double*)說明。
32.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。
33.-3-3解析:%運算符是求兩個數(shù)相除的余數(shù),其結(jié)果與被除數(shù)的符號一致,本題中“-19%4”的值為“-3”。
34.a=8b=7
35.ABCabABCab解析:本題中字符數(shù)組的初值是“ABCabc”,s[5]='c',然后通過s[5]='\\0'重新給s[5]賦值,在C語言中'\\0'是字符串結(jié)束標(biāo)志,執(zhí)行s[5]='\\0',其實是將s[5]的值去掉只保留前面的字符。
36.Bend
37.136136解析:本題考核的知識點是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。
38.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。
39.4
40.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。
41.B解析:scanf是標(biāo)準(zhǔn)輸入函數(shù),在輸入字符串a(chǎn)aa時,實際的內(nèi)容為“aaa\\0”,“\\0”是由系統(tǒng)自動加入的:gets的功能是從終端讀入一行字符,即一直讀到換行符為止,并由系統(tǒng)自動以“/0”代替換行符。
42.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。
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.A解析:首先利用fwrite函數(shù)將數(shù)組a中的數(shù)據(jù)寫到文件中,接著fseek函數(shù)的功能是讀文件的位置,指針從文件頭向后移動3個int型數(shù)據(jù),這時文件位置指針指向的是文件中的第4個int數(shù)據(jù)“4”,然后fread函數(shù)將文件fp中的后3個數(shù)據(jù)4,5,6讀到數(shù)組a中,這樣就覆蓋了數(shù)組中原來的前3項數(shù)據(jù)。最后數(shù)組中的數(shù)據(jù)就成了{4,5,6,4,5,6}。
45.D解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式;二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達式][常量表達式]。
46.C解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個指引,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。
47.C
48.B解析:兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒能變化,程序輸出的結(jié)果為3,5,3。所以正確答案為B)。
49.A
50.A
51.B解析:本題中定義了一個結(jié)構(gòu)體數(shù)組data[2]并初始化,主函數(shù)中定義了一個結(jié)構(gòu)體類型指針變量并讓它指向data的首地址,由于p指向第一個元素的地址,所以p->x相當(dāng)于data[0].x即為10,所以++(p->x)后的值為11。
52.C解析:本題考查的重點是拷貝字符串——使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組,字符串),其中“字符串”可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將“字符串”完整地復(fù)制到“字符數(shù)組”中,字符數(shù)組中原有的內(nèi)容被覆蓋。使用該函數(shù)時注意:①字符數(shù)組必須定義得足夠大,以便容納復(fù)制過來的字符串。復(fù)制時,連同結(jié)束標(biāo)志“\\0”一起復(fù)制;②不能用賦值運算符“=”將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)處理。另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組,字符串)。功能是把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中?!白址麛?shù)組”中原來的結(jié)束標(biāo)志,被“字符串”的第一個字符覆蓋,而“字符串”在操作中未被修改。使用該函數(shù)時注意:①由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以便容納連接后的目標(biāo)字符串;否則,會因長度不夠而產(chǎn)生問題;②連接前兩個字符串都有結(jié)束標(biāo)志“\\0”,連接后“字符數(shù)組”中存儲的字符串的結(jié)束標(biāo)志“\\0”被舍棄,只在目標(biāo)串的最后保留一個“\\0”。
53.C
54.C解析:在C語言中,字符型數(shù)據(jù)在內(nèi)存中的存儲形式是ASCII碼值。當(dāng)需要以整型格式輸出字符時,輸出的也是ASCII碼值。字符'A'和'D'的ASCII碼值分別為65和68。
55.D解析:本題首先定義了兩個字符數(shù)組,然后從鍵盤讀入兩個字符串'name1'和'name2'分別賦給它們,接下來使用strcmp()函數(shù)比較兩個字符串是否相等,若不相等就輸出一個‘@’字符,否則輸出一個‘$’字符,所以本題先輸出一個‘@’字符。最后使用strcat()函數(shù)將兩個字符串連成一個,然后使用strlen()函數(shù)求連接后的字符串長度,所以接下來又輸出一個10。故本題的正確答案為D。
56.A解析:本題中,最主要的是掌握幾個有關(guān)文件函數(shù)的應(yīng)用。
函數(shù)名:fopen
功能:打開一個文件
調(diào)用方式FILE*fp;
fp=fopen(文件名,使用文件方式);
函數(shù)名:fprintf
功能:傳送格式化輸出到一個文件中
調(diào)用方式:fprintf(文件指針,格式字符串,輸出表列);
函數(shù)名:fclose
功能:關(guān)閉一個文件
調(diào)用方式:fclose(文件指針);
函數(shù)名:fscanf
功能:從磁盤文件執(zhí)行格式化輸入
調(diào)用方式:fscanf(文件指針,格式字符串,輸入列表)。
57.D解析:編程風(fēng)格是在不影響性能的前提下,有效地編排和組織程序,以提高可讀性和可維護性。更直接地說,風(fēng)格就是意味著要按照規(guī)則進行編程。這些規(guī)則包括:(1)程序文檔化。就是程序文檔包含恰當(dāng)?shù)臉?biāo)識符、適當(dāng)?shù)淖⒔夂统绦虻囊曈X組織等。(2)數(shù)據(jù)說明。出于閱讀理解和維護的需要,最好使模塊前的說明語句次序規(guī)范化。此外,為方便查找,在每個說明語句的說明符后,數(shù)據(jù)名應(yīng)按照字典順序排列。(3)功能模塊化。即把源程序代碼按照功能劃分為低耦合、高內(nèi)聚的模塊。(4)注意goto語句的使用。合理使用goto語句可以提高代碼的運行效率,但goto語句的使用會破壞程序的結(jié)構(gòu)特性。因此,除非確實需要,否則最好不使用goto語句。因此,本題的正確答案是D。
58.D解析:C語言規(guī)定,在函數(shù)調(diào)用時變量作為參數(shù)傳遞是傳值的,在函數(shù)體中對形參變量的修改不能影響到對應(yīng)的實參變量。本題定義了一個函數(shù)f(),用變量作為形參,在main()函數(shù)中調(diào)用了3次f()函數(shù),由于變量作為參數(shù)進行傳遞,所以對應(yīng)的實參的值并沒有被交換。所以輸出的a、b、c依舊是原來的值4、3、5。
59.C解析:該題考查的是實體間的聯(lián)系。多對多聯(lián)系(m:n):如果對于實體集A中的每個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每個實體,實體集A中有m個實體(m≥0)與之聯(lián)系,則稱實體集A與實體集B之間是多對多聯(lián)系,記作m:n。一對一聯(lián)系(1:1):如果對于實體集A中的每一個實體,實體集B中至多有一個實體與之有聯(lián)系,反之亦然,則稱實體集A與實體集B之間是一對一聯(lián)系,記作1:1。一對多聯(lián)系(1:n):如果對于實體集A中每一個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體集B之間是一對多聯(lián)系,記作1:n。那么根據(jù)題意可知是多對一聯(lián)系。所以選項C是正確的。
60.B解析:內(nèi)層for循環(huán)語句實現(xiàn)x=x+2,故外層for循環(huán)語句單次循環(huán)實現(xiàn)x=x+4,所以程序執(zhí)行后的輸出結(jié)果為x=8。
61.D
62.C解析:每個C程序有且只有一個主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。
63.B
64.B
65.D
66.A\n數(shù)據(jù)庫按數(shù)據(jù)模型分為層次型數(shù)據(jù)庫、網(wǎng)狀型數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)模型即數(shù)據(jù)之間的聯(lián)系方式,因此正確選項為A)。
\n
67.B
68.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。
69.Bslrlen用來返回字符串的長度,而sizeof返回的是一個對象或者類型所占的內(nèi)存字節(jié)數(shù),即數(shù)組所占的內(nèi)存。
70.C
71.AC語言中標(biāo)識符由字母、下劃線或數(shù)字組成,且開頭必須是字母或下劃線。因此A選項中的連接符不合法。
72.Dstatic變量是局部度量,函數(shù)無法修改,所以當(dāng)i=1時,第2次進入f函數(shù)時c=5,所以最終main函數(shù)中C的值為5。
73.AC語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個”\”開頭的字符。其中,”\
74.D【答案】:D
【知識點】:棧和隊列
【解析】:棧和隊列都是線性結(jié)構(gòu),所以選項C錯誤;棧是一種先進后出的線性表,故選項A錯誤;隊列是一種先進先出的線性表,故選項B錯誤,所以選D。
75.C解析:在關(guān)系模型數(shù)據(jù)庫中,基本結(jié)構(gòu)是二維表,這種二維表稱為關(guān)系。關(guān)系的列稱為屬性,一個具有N個屬性的關(guān)系稱為N元關(guān)系。注意:各種關(guān)系查詢語言與過程性語言和非過程性語言的關(guān)系,過程性語言的特點。
76.Afor循環(huán)的作用是每次遇到空格,將空格后面的移動到數(shù)組的最前面。因此數(shù)組最后的狀態(tài)是“Bei-jing!、Og!\0ng!、neijing!、O”,但是pfinff(“%s”)打印遇到、0自動結(jié)束。因此,打印Beijing!。故答案為A選項。
77.A一個C語言程序能實現(xiàn)多種算法,所以A)錯誤。
78.B
79.C第一次外循環(huán)i的值為l,第一次內(nèi)循環(huán)j的值為3,不滿足條件執(zhí)行in}=i}j即m的值為3;第二次j的值為2,不滿足條件執(zhí)行m·=i*j,即m的值為6;第三次j的值為1,不滿足條件執(zhí)行nl*=i*j,即m的值仍為6。第二次外循環(huán)i的值為2,j的值為3,滿足條件,執(zhí)行break語句,跳出循環(huán)。
80.A
81.(1)錯誤:intave,t=0;
正確:floatave,t=0.0;
(2)錯誤:if(s[i]>ave)
正確:if(s[i]<ave)
(3)錯誤:aver=ave;
正確:*aver=ave;
【解析】由程序可知變量ave和t中分別存放的是學(xué)生的平均分?jǐn)?shù)和分?jǐn)?shù)的總和,都是float型數(shù)據(jù),因此“intave,t=0;”應(yīng)改為“floatave,t=0.0;”。題目要求統(tǒng)計出低于平均分?jǐn)?shù)的學(xué)生人數(shù),因此“if(s[i]>ave)”應(yīng)改為“if(s[i]<ave)”。平均分?jǐn)?shù)是通過指針變量傳遞給主函數(shù)的,因此“aver=ave;”改為“*aver=ave;”。
82.
【解析】要求出二維數(shù)組中最大元素的值,需要比較二維數(shù)組中每一個元素的值。首先,定義變量max用來存放最大元素的值,將其初始化為二維數(shù)組中第一個元素的值。然后將其與后面的每一個元素進行比較,將二維數(shù)組中最大元素的值放到變量max當(dāng)中,并將其返回給主函數(shù)。
2022年山東省德州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.算法的時間復(fù)雜度取決于()
A.問題的規(guī)模B.待處理數(shù)據(jù)的初態(tài)C.A和B
2.
3.在一個有頭結(jié)點的鏈隊列中,假設(shè)f和r分別為隊首和隊尾指針,則插入s所指的結(jié)點的運算是()。
A.f->next=s;f=s;
B.r->next=s;r=s;
C.s->next=r;r=s;
D.s->next=f;f=s;
4.
5.有以下程序:#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
6.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
7.以下選項中敘述錯誤的是()。
A.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值
B.在同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)
C.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值
D.C程序函數(shù)的性能不可以說明為static型變量
8.下列程序的輸出結(jié)果是()
main()
{inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
9.下列關(guān)于效率的說法不正確的是()
A.效率是一個性能要求,其目標(biāo)應(yīng)該在需求分析時給出
B.提高程序效率的根本途徑在于選擇良好的設(shè)計方法,數(shù)據(jù)結(jié)構(gòu)與算法
C.效率主要指處理機時間和存儲器容量兩個方面
D.程序的效率與程序的簡單性無關(guān)
10.以下()不是隊列的基本運算
A.從隊尾插入一個新元素B.從隊列中刪除第i個元素C.判斷一個隊列是否為空D.讀取隊頭元素的值
11.下面程序的時間復(fù)雜為()A.O(n)B.O(n^2)C.O(n^3)D.O(n^4)
12.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
13.設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
14.假定a為一個整型數(shù)組名,則元素a[4]的字節(jié)地址為()。
A.a+4B.a+8C.a+16D.a+32
15.下列關(guān)于AOE網(wǎng)的敘述中,不正確的是()。
A.關(guān)鍵活動不按期完成就會影響整個工程的完成時間
B.任何一個關(guān)鍵活動提前完成,那么整個工程將會提前完成
C.所有的關(guān)鍵活動提前完成,那么整個工程將會提前完成
D.某些關(guān)鍵活動提前完成,那么整個工程將會提前完成
16.設(shè)有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54
17.下列二維數(shù)組的說明中,不正確的是()。
A.floata[][4]={0,1,8,5,9};
B.inta[3][4]
C.#defineN5floata[N][3]
D.inta[2][9.5];
18.設(shè)有如下類型說明語句:typedefstruct{intnum;struct{inty,m,d;}date;}PER;則以下定義結(jié)構(gòu)體數(shù)組并賦初值的語句中錯誤的是()。
A.PERst[2]={{1001},2008,8,1,{1002},2006,5,20};
B.PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};
C.PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};
D.PERst[2]={1001,2008,8,1,1002,2006,5,20};
19.若執(zhí)行下面的程序時,從鍵盤上輸入5和2,則輸出結(jié)果是______。main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}
A.5B.3C.2D.0
20.在ASC算法team日常開發(fā)中,常常面臨一些數(shù)據(jù)結(jié)構(gòu)的抉擇,令人糾結(jié)。目前大家在策劃一個FBI項目(FastBinaryIndexing),其中用到的詞匯有6200條,詞匯長度在10-15之間,詞匯字符是英文字母,區(qū)分大小寫。請在下面幾個數(shù)據(jù)結(jié)構(gòu)中選擇一個使檢索速度最快的()
A.二叉搜索樹,比較函數(shù)開銷:1次運算/每字符
B.哈希表,hash算法開銷:10次運算/每字符
C.鏈表,比較函數(shù)開銷:1次運算/每字符
D.TRIE樹,尋找子節(jié)點開銷:1次運算/每字符
二、2.填空題(20題)21.棧和隊列通常采用的存儲結(jié)構(gòu)是【】。
22.用以下程序把從鍵盤輸入的字符存放到一個文件中,用字符#作為結(jié)束符,請按題意要求填空完善程序。
#include<stdio.h>
main()
{FILE*fp;
charch,fname[10];
printf("Inputthenameoffile\n");
gets(fname);
if(fp=fopen(【】))==NULL)
{printf("can'topen\n");
【】;
}
while((ch=getchar())!='#')
fputc(【】);
fclose(fp);
}
23.以下程序通過函數(shù)SunFun求。這里f(x)=x2+1,由F函數(shù)實現(xiàn)。請?zhí)羁铡?/p>
main()
{printf("Thesum=%d\n",SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F(【】);
returns;
}
F(intx)
{returnx*x+1;}
24.性表的多種存儲結(jié)構(gòu)中,最簡單的方法是【】。
25.軟件是程序、數(shù)據(jù)和【】的集合。
26.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達式是【】。
27.在一個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。
28.用樹型結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。
29.以下程序的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}
30.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。
31.若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
32.棧的3種基本運算是:入棧、退棧和______。
33.若有語句:
inti=-19,j=i%4;
printf("%d\n",j);
則輸出結(jié)果是【】。
34.寫出下列程序的執(zhí)行結(jié)果。swap(p1,p2)int*p1,*p2;{intp;p=*p1;*p1=*p2;*p2=p;}main(){inta,b,*p1,*p2;scanf("%d%d",&a,&B);p1=&a;p2=&b;if(a<B)swap(p1,p2);printf("\na=%d,b=%d\n",a,B);}若a=7,b=8,則程序的運行結(jié)果為()。
35.以下程序的輸出結(jié)果是()。
#inciude<stdio.h>
main()
{chars[]="ABCabc";
s[5]='\0';
printf("%s\n",s);
}
36.執(zhí)行以下程序時,若輸入end<回車>,則輸出結(jié)果是【】。
main()
{charch[10]="Begin";
gets(&ch[1]);puts(ch);
}
37.以下程序運行后的輸出結(jié)果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
38.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4=0)printf("\n");
printf("%3d",b[i]);
}
}
39.有以下定義和語句,則sizeof(a.share)的值是()。
structdate
{unsignedintday;
unsignedintmouth;
unsignedintyear;
union{intshare1;
floatshare2;
}share;
}a;
40.若a=10,b=20,則表達式!(a<b)的值是【】。
三、1.選擇題(20題)41.以下程序段的輸出結(jié)果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}輸入數(shù)據(jù)如下:(此處<CR>代表回車符)aaa<CR>bbb<CR>
A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb
42.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
43.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
44.有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d3.dat","w+b");fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int),3,SEEK_SET);/*該語句使讀文件的位置指針從文件頭向后移動3個int型數(shù)據(jù)*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0
A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.6,5,4,3,2,1,
45.下列二維數(shù)組的說明中,不正確的是()。
A.floata[][4]={0,1,8,5,9};
B.inta[3][4];
C.#defineN5
D.inta[2][9.5];floata[N][3];
46.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。
A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項
47.下列程序的輸出結(jié)果是()main(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%d\n",n);}
A.4B.2C.1D.0
48.若變量已正確定義,有以下程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!=a)c=b;
printf("%d,%d,%d\n",a,b,c);
其輸出結(jié)果是
A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7
49.有下列程序main(){doubled;floatf;longl;inti;i=f=1=d=20/3;printf("%d%1d%f%f\n",i,1,f,D);}程序運行后的輸出結(jié)果是(小數(shù)點后只寫1位)()
A.666.06.0B.666.76.7C.666.06.7D.666.76.0
50.當(dāng)執(zhí)行以下程序段時,______。x=-1;do{x=x*x;}while(!x);
A.循環(huán)體將執(zhí)行1次B.循環(huán)體將執(zhí)行2次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
51.有以下程序structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));}程序運行后的輸出結(jié)果是
A.10B.11C.20D.21
52.下面程序的輸出結(jié)果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,streat(p1,p2));printf("%s\n",str);}
A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC
53.下列術(shù)語中,與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)的是______。
A.隊列B.棧C.二叉樹D.堆
54.已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結(jié)果是
A.A,BB.A,68C.65,66D.65,68
55.設(shè)有如下程序:#include'string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name1<回車>name2<回車>,則程序運行后的輸出結(jié)果是()。
A.$9B.@11C.$10D.@10
56.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);}
程序運行后的輸出結(jié)果是
A.2030B.2050C.3050D.3020
57.下列選項中不符合良好程序設(shè)計風(fēng)格的是A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計要保證高耦合、高內(nèi)聚
58.有以下程序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
59.公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員,從職員到部門的聯(lián)系類型是()
A.多對多B.一對一C.多對一D.一對多
60.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j*2)continue;x++;}x++;}printf("x=%d\n”,x);}程序執(zhí)行后的輸出結(jié)果是()。
A.x=4B.x=8C.x=6D.x=12
四、選擇題(20題)61.
62.C語言可執(zhí)行程序的開始執(zhí)行點是()。
A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句
63.
64.
65.
66.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫的劃分原則是()
A.數(shù)據(jù)之間的聯(lián)系方式B.記錄長度C.聯(lián)系的復(fù)雜程度D.文件的大小
67.
68.有以下程序段
main()
{inta=5,*b,**c;
c=&b;b=&a;
……
}
程序在執(zhí)行了c=&b;b=&a;語句后,表達式:**c的值是()
A.變量a的地址
B.變量b中的值
C.變量a中的值
D.變量b的地址
69.有以下程序:
程序運行后的輸出結(jié)果是()。
A.7,4B.4,10C.8,8D.10,10
70.
71.按照c語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是()。A.連接符B.大寫字母C.數(shù)字字符D.下劃線
72.下列程序的輸出結(jié)果是()。#includeintfun(inta){intb=0;staticintc=4;a=c++;b++;return(a);}main{inta=2,i,c;for(i=0:i<2;i++)c=f(a+1);printf("%d\n",c);}A.4B.7C.6D.5
73.
A.包含l個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定
74.下列敘述中正確的是()。
A.棧是一種先進先出的線性表B.隊列是一種后進先出的線性表C.棧與隊列都是非線性結(jié)構(gòu)D.以上三種說法都不對
75.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。
A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
76.有以下程序:
程序運行后的輸出結(jié)果是()。
A.Beijing!
B.toBeijing]
C.WelcomeyoutoBeijingI
D.youtoBeijingI
77.下列敘述中錯誤的是()。
A.一個C語言程序只能實現(xiàn)一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數(shù)組成
D.一個C函數(shù)可以單獨作為一個C稃序文件存存
78.
79.有以下程序:
程序運行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學(xué)生的成績:6070809065758595則低于平均分的學(xué)生人數(shù)為4(平均分為77.5)。實際輸入時學(xué)生數(shù)以“Enter”鍵作為結(jié)束,成績與成績之間也與Enter鍵作為分隔。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.C
3.B
4.A
5.C本題考查了兩層for循環(huán)。外層循環(huán)增量i的值作為內(nèi)層循環(huán)執(zhí)行次數(shù)的值使用。
6.C解析:解答本題,首先要明白在對指針進行加、減運算的時候,數(shù)字“1”不是十進制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。
7.A靜態(tài)變量不是每調(diào)用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。
8.B解析:算術(shù)運行符“/”、“%”的優(yōu)先級處于同一級,并且兩者的結(jié)合性都是從左到右。所以算術(shù)表達式運算過程為:a=25/10%9=2%9=2:當(dāng)邏輯運算符“&&”兩邊的值都是非零時,邏輯表達式的值才為真(即為1)。所以b=2&&(-1)=1。
9.D
10.B
11.B
12.C
13.B解析:條件表達式的形式為:“表達式1?表達式2:表達式3”。其含義為:當(dāng)“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當(dāng)“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當(dāng)表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++:i++;”。
14.C
15.B
16.D
17.D解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式:二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達式][常量表達式]。
18.A結(jié)構(gòu)體PER類型定義了兩個成員:num為整型,date為嵌套的結(jié)構(gòu)體類型。初始化時,成員值的順序必須與成員定義的順序相同,num必須是整數(shù),date必須是用花括號標(biāo)注的嵌套的3個整數(shù)。選項A中,{1001}和{1002}都不是整數(shù),所以選項A錯誤。故本題答案為A選項。
19.C解析:本題考查簡單的if...else語句。先執(zhí)行條件if(a<b),顯然不成立,則執(zhí)行else語句。
20.D
21.鏈?zhǔn)酱鎯晚樞虼鎯︽準(zhǔn)酱鎯晚樞虼鎯?/p>
22.fname"#"exit(0)chfp
23.xx解析:考查函數(shù)的調(diào)用。函數(shù)調(diào)用時,實參與形參一致,函數(shù)F只有一個形參,故函數(shù)的調(diào)用為F(x)。
24.順序存儲順序存儲
25.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
26.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。
27.3131解析:設(shè)隊列容量為m,如果:rear>front,則隊列中元素個數(shù)為rear-front;如果rear<front,則隊列中元素個數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。
28.層次模型用樹型結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為層次模型,用有向圖結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型,用二維表格結(jié)構(gòu)表示實體及其聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。
29.s%10*s1+t
30.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結(jié)點。第6層的結(jié)點數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點最多數(shù)”和“某一層的結(jié)點最多數(shù)”。前者的計算是深度為m的二叉樹最多有2m-1個結(jié)點。
31.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲單元時,要在前面用強制類型轉(zhuǎn)換符說明該存儲單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點型數(shù)據(jù)的指針變量p分配存儲單元,因此用(double*)說明。
32.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。
33.-3-3解析:%運算符是求兩個數(shù)相除的余數(shù),其結(jié)果與被除數(shù)的符號一致,本題中“-19%4”的值為“-3”。
34.a=8b=7
35.ABCabABCab解析:本題中字符數(shù)組的初值是“ABCabc”,s[5]='c',然后通過s[5]='\\0'重新給s[5]賦值,在C語言中'\\0'是字符串結(jié)束標(biāo)志,執(zhí)行s[5]='\\0',其實是將s[5]的值去掉只保留前面的字符。
36.Bend
37.136136解析:本題考核的知識點是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。
38.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。
39.4
40.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。
41.B解析:scanf是標(biāo)準(zhǔn)輸入函數(shù)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 便利店投資合同范例
- 兼職運營合同范例
- 分公司股合同范例
- 不給勞動合同范例
- 個人二手車合同范例
- 分期購車購車合同范例
- 裝飾公司季度工作總結(jié)
- 丁腈手套合同范例
- 公司代付合同范例
- 代理范例范例合同范例
- 合成樹脂瓦工程檢驗批質(zhì)量驗收記錄表格
- 保溫?zé)o機復(fù)合板施工方案
- 卡通家庭急救常識知識講座PPT模板
- 初一語文詞性練習(xí)(連答案)(最新整理)
- 小學(xué)五年級語文上冊有趣的漢字課件
- 消防(控制室)值班記錄
- 房屋租賃(出租)家私清單
- 計算機技術(shù)碩士專業(yè)學(xué)位授權(quán)點申報研究演示課件(PPT 39頁)
- 建筑裝飾材料與構(gòu)造-ppt課件
- 水泥廠熟料庫屋面鋼網(wǎng)架施工方案(46頁)
- AWS D1.8 D1.8M-2021 結(jié)構(gòu)焊接規(guī)范
評論
0/150
提交評論