




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022-2023年安徽省宣城市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中正確的是()。
A.為了建立一個關系,首先要構造數據的邏輯關系
B.表示關系的二維表中各元組的每一個分量還可以分成若干數據項
C.一個關系的屬性名表稱為關系模式
D.一個關系可以包括多個二維表
2.合法的常量是()。A.‘program’B.–e8C.03xD.0xfl
3.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運行結果是()。
A.3B.4C.1D.9
4.
5.有以下程序函數fun只對下標為偶數的元素進行操作.:
程序運行后的輸出結果是()。A.A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
6.設有以下函數:
voidfun(intn,char*$s){……}
則下面對函數指針的定義和賦值均正確的是A.void(*pf)();pf=fun;
B.void*Pf();pf=fun;
C.void*pf();*pf=fun;
D.void(*pf)(int,char);nf=&fun;
7.某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是A.10B.8C.6D.4
8.
9.
10.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
11.設無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點a出發進行深度優先遍歷可以得到的一種頂點序列為()。
A.aedfcbB.acfebdC.aebcfdD.aedfbc
12.有以下程序:
程序運行后的輸出結果是()。A.34B.55C.10D.18
13.以下程序的輸出結果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
14.設主串T='aabaababaabaa',子串P:'abab',則簡單模式匹配算法中直至匹配成功,單個字符比較的次數為()。
A.12B.13C.14D.15
15.
16.若有定義:typedefint*(*T[10])[10];Tb;則以下選項中所定義的a與上述定義中的b,其類型完全相同的是()。
A.int*(*a[10][10]);
B.int**a[10][10];
C.int*(a[10])[10];
D.int*(*a[10])[10];
17.以下關于結構化程序設計的敘述中正確的是()。
A.一個結構化程序必須同時由順序、分支、循環三種結構組成
B.結構化程序使用goto語句會很便捷
C.在C語言中,程序的模塊化是利用函數實現的
D.由三種基本結構構成的程序只能解決小規模的問題
18.
19.下列有關格式輸入函數scanf的敘述中正確的是()
A.輸入項可以是C語言中規定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數據時,必須規定精度。如:scanf("%4.2f",&d);
D.當輸入數據時,必須指明變量地址
20.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);為使此程序段不陷入循環,從鍵盤輸入的數據應該是()。A.任意正奇數B.任意負偶數C.任意正偶數D.任意負奇數
二、2.填空題(20題)21.源程序文檔化要求程序應加注釋。注釋一般分為序言性注釋和【】。
22.下列語句能循環______次。
ints=12;
while(s);
--s;
23.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數為【】。
24.軟件工程研究的內容主要包括:【】技術和軟件工程管理。
25.下列程序的輸出結果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
26.下列程序輸出的結果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
27.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體集“項目主管”與實體集“項目”的聯系屬于【】的聯系。
28.以下程序運行后的輸出結果是______。
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:a++;break;
case1:b++;break;
case2:a++;b++;break;
}
printf("%d%d\n",a,B);
}
29.下面程序執行后輸出的結果是【】。
intm=13;
intfun(intx,inty)
{intm+3;
return(x*y-m);
}
main()
{inta=7,b,5;
prntf("%d\n",fun(a,B)/m);
}
30.在面向對象方法中,對象之間進行通信的構造稱為()。
31.以下程序用來輸出結構體變量ex所占存儲單元的字節數,請填空。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));}
32.以下sstrcpy()函數實現字符串復制,即將t所指字符串復制到s所指內存空間中,形成一個新字符串s。
請填空。
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
33.軟件生命周期包括8個階段。為使各時期的任務更明確,又可以分為以下3個時期:軟件定義期、軟件開發期、軟件維護期。編碼和測試屬于【】期。
34.以下程序的輸出結果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
35.關系表達式x<y<z,用C語言的表達式為【】。
36.實體之間的聯系可以歸結為一對一的聯系,一對多的聯系與多對多的聯系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯系屬于【】的聯系。
37.以下程序運行后的輸出結果是______。
main()
{inta=1,b=2,c=3;
if(c=A)printf("%d\n",C);
elseprintf("%d\n",B);
}
38.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
39.在面向對象的程序設計中,類描述的是具有相似性質的一組【】。
40.設有定義:
struct{inta;floatb;charc;}abc;*p_abc=&abc;
則對結構體成員a的引用方法可以是abc.a和p_abc【】a。
三、1.選擇題(20題)41.下列敘述中正確的是()。A.實體集之間一對一的聯系實際上就是一一對應的關系
B.關系模型只能處理實體集之間一對一的聯系
C.關系模型屬于格式化模型
D.以上三種說法都不對
42.在面向對象方法中,()描述的是具有相似屬性與操作的一組對象。
A.屬性B.事件C.方法D.類
43.若已定義x為int型變量,說明指針變量p的正確語句是()
A.intp=&x;B.int*p=x;C.int*p=&x;D.*p=*x;
44.數據庫管理系統提供給用戶的接口是()
A.過程化語言B.數據庫語言C.宿主語言D.面向對象語言
45.下列屬于C語言語句的是______。
A.pnntf("%d\n,a)
B.#include<stdio.h>
C.a=b;b=c;c=a;
D./*thisisaprogram*/
46.設a、b、C、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m==a>b)&&(n=c>d)運算后,n的值為______。
A.0B.1C.2D.3
47.下列不屬于軟件工程的3個要素的是______。
A.工具B.過程C.方法D.環境
48.設有定義:floata=2,b=4,h=3;,以下C語言表達式中與代數式計算結果不相符的是
A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)
49.在C語言中,下列關于文件操作的敘述正確的是()。
A.對文件操作必須先關閉文件B.對文件操作必須先打開文件C.對文件操作順序沒有統一規定D.以上全錯
50.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的運行結果是
A.0B.1C.2D.3
51.數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是()
A.控制流B.加工C.數據存儲D.源和潭
52.以下程序段的輸出結果是()。inta=1234;printf("%2d\n",a);
A.12B.34C.1234D.提示出錯,無結果
53.設a=3、b=4、c=5,則表達式!(a+b)+c-1&&b+c/2的值為______。
A.6.5B.6C.0D.1
54.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是
A.data的每個成員起始地址都相同
B.變量data所占內存字節數與成員c所占字節數相等
C.程序段:data.a=5;printf("%f\n",data.c);輸出結果為5.000000
D.data可以作為函數的實參
55.下列描述中正確的是()。
A.程序就是軟件
B.軟件開發不受計算機系統的限制
C.軟件既是邏輯實體,又是物理實體
D.軟件是程序、數據與相關文檔的集合
56.設有定義intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
57.在軟件開發中,下面的任務不屬于設計階段的是()。
A.數據結構設計B.給出系統模塊結構C.定義模塊算法D.定義需求并建立系統模塊
58.下列程序輸出的結果是()。main(){inta;a=-4+4*5-6;printf(“%d”,a);a=4+4%5-6;printf(“%d”,a);a=-3+4%6/5;printf(“%d”,a);a=(7+6)%5/2;printf(“%d”,a);}
A.102-31B.10-221C.11-221D.10221
59.以下程序的輸出結果是chsrcchar(charch){if(ch>='A'&&ch<='Z')ch=ch-'A'+'a';returnch;}main(){chars[]=“ABC+abc=defDEF”,*p=s;while(*p){*p=cchar(*p);p++;}printf(“%s\n”,s);}
A.abd+ABC=DEFdef
B.abc+abc=defdef
C.abcABCDEFdef
D.abcabcdefdef
60.下列程序的運行結果為()。
#include<stdio.h>
voidabc(char*str)
{inta,b,i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!='a')
str[j++]=str[j];
str[j]='\0';
}
voidmain()
{charStr[]="abcdef';
abc(str);
printf("str[]=%s",str);
}
A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab
四、選擇題(20題)61.設有數組定義:chararray[]="Chinese";則數組array所占的空間為
A.6個字節B.7個字節C.8個字節D.9個字節
62.下列敘述中正確的是()。
A.數據的邏輯結構與存儲結構是一一對應的
B.算法的時間復雜度與空間復雜度一定相關
C.算法的效率只與問題的規模有關,而與數據的存儲結構無關
D.算法的時間復雜度是指執行算法所需要的計算工作量
63.C源程序中不能表示的數制是
A.十進制B.八進制
C.二進制D.十六進制
64.(21)算法的空間復雜度是指______。
A.算法程序的長度
B.算法程序中的指令條數
C.算法程序所占的存儲空間
D.算法執行過程中所需要的存儲空間
65.有以下程序:
程序運行后的輸出結果是()o
A.24B.720C.120D.6
66.
67.
68.
69.
70.
71.結構化程序設計主要強調的是
A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序易讀性
72.
73.有以下程序
#include<stdio.h>
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i<N;i++)
b[i]=a[i][i];
}
main()
{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序的運行結果是
A.l,2,3,4,
B.1,0,7,0,
C.1,4,5,9,
D.3,4,8,10,
74.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內存字節數相同
B.變量demo中各成員的地址相同
C.變量demo和各成員的地址相同
D.若給demo.d1賦99后,demo.d2中的值是99.0
75.
76.
77.假定已建立以下鏈表結構,且指針p和q已指向如下圖所示的結點:
則以下選項中,可將q所指結點從鏈表中刪除并釋放該結點的語句組是
A.(*p).next=(*q).next;free(p);B.p=q->next;free(q);
C.p=q;free(q);D.p->next=q->next;free(q);
78.
79.棧和隊列的共同特點是()。
A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同點
80.以下程序運行后的輸出結果是()。
A.2011B.99C.209D.1111
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:計算并輸出下列級數的前N項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值為57,則函數值為59.593612。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.請編寫一個函數voidproc(intm,intk,intxx[]),該函數的功能是將大于整數m且緊靠m的k個非素數存人所指的數組中。例如,若輸入:105(即M=10,k=5),則應輸出:l214151618。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C解析:在格式化模型中,要事先根據應用的需要,確定數據之間的邏輯關系,即先對數據進行結構化。在關系模型中,不需要事先構造數據的邏輯關系,只要將數據按照一定的關系存入計算機,也就是建立關系。所以選項A錯誤。對于一個表示關系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數據項,即不允許表中再有表。所以,選項B、D說法是錯誤的。一個關系的屬性名表稱為關系模式,也就是二維表的表框架,相當于記錄型。因此,選項C說法正確。
2.D
3.B內循環只循環一次就結束,第1次外循環時,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環時,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環時,1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本題答案為B選項。
4.A
5.A由函數fun(int*a,intn)中語句if(a[j]>a[k])k=j;可知當前k是記錄數組中較大數據值所在位置的下標變量,所以該函數的作用是對數組a中的下標為偶數位置的數據進行從大到小的排序,即對a[0],a[2],a[4],a[6]中的數據1,3,5,7進行從大到小的排序,其他位置的數據不變,所以答案為A)。
6.A解析:函數指針的定義形式是:數據類型標識符(*指針變量名)()。void(*pf)()定義了一個沒有返回值的函數指針pf,在給函數指針變量賦值時,只需給出函數名而不必給出參數。所以給pf賦值時,只把函數名fun賦給pf即可。所以正確答案為選項A)。
7.C根據二叉樹的性質,在任意二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。
8.D
9.C
10.D解析:因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。
11.B
12.D題干中,函數fun的功能是通過遞歸,將數組a中下標為0~n-1位置的元素累加,作為函數返回值返回。main函數調用fun時,傳入的a+2作為數組參數,傳入n的值是4,所以函數返回值是元素a[2]、a[3]、a[4]、a[5]的和,程序輸出18。本題答案為D選項。
13.B函數調用時,prt函數的作用是為使m數組中的數自增1,因此數組下標從0開始,每個元素都自加1。
14.A
15.C
16.D“typedefint*(*T[10])[10];”使用typedef定義一種新類型名T,T的類型是二維數組指針,指向10個元素的數組。其中數組元素類型為int*[10],即數組的每個元素又是包含10個元素的數組,數組的元素是整型指針類型。故本題答案為D選項。
17.C解析:結構化程序設計是指將待開發的軟件系統劃分為若干個相互獨立的模塊,與具體的語句結構無關。Goto語句的濫用會導致程序的可讀性降低。三種基本結構構成的程序依然可以解決大規模的問題,只是不利于復用。
18.B
19.D解析:如果是指針型變量或數組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現正確輸入,所以選項B的說法有誤。在輸入數據時,不可以指定實型數據的精度,所以選項C的說法有誤。只有選項D的說法正確。
20.D本題主要考查do—while循環,因為變量t的初始值等于1,經過第一次do-while循環后,執行t=t-1這條語句一次,所以變量t的值為-1,判斷關系表達式t!=n是否成立,如果關系表達式成立,則執行第二次循環,如果關系表達式不成立,退出循環。由此可見,只要輸入變量n的值為負奇數,則一定會使t==n成立,故退出do-while循環。
21.功能性注釋功能性注釋解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,它給出程序的整體說明;功能性注釋的位置一般嵌在源程序體之中戶主要描述其后的語句或程序做什么。
22.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執行后面的語句,只是執行空語句,所以s=12保持不變,因此,沒有條件限制的能循環無限次(即死循環)。
23.nn解析:在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數為n。
24.軟件開發
25.11解析:ifelse語句的功能是:若表達式的值為真,執行語句1,并跳過其他語句,執行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執行printf語句,在整個過程中變量z的值都沒發生變化。
26.11解析:本題考查局部變量和全局變量的區別:局部變量是指作用域在函數級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內。在fun函數內部定義了一個局部變量m=3,m=3的作用域僅在fun函數內部,通過fun函數返回兩個形參的積再減m。在主函數中,輸出fun(a,b)/m=(5*7-3)/17=1。
27.一對多一對多解析:實體集“項目主管”與實體集“項目”的聯系屬于一對多的聯系。
28.2121解析:本題考核的知識點是switch語句的嵌套應用。外層switch語句后面括號里的x的值為1,所以執行從case1:后面的語句開始執行,而case1:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case():開始執行即執行a++,這時a的值變為1,執行完畢,遇到break語句,退出內層switch語句,又回到外層switch語句,繼續執行case1:下面的語句即case2:執行完畢后,a自加1變為2,b自加1變1。所以最后輸出的a和b的值為21。
29.22解析:本題變量m既是外部變量(值是13),又是fun函數的局部變量(值為3)。函數fun(x*y-m)的值為7*5-3=32,在main函數中,fun(a,b)/m中的m應取外部變量的值13,因此輸出2。
30.消息消息解析:對象之間進行通信的構造叫做消息,它請求對象執行某一處理或回答某一要求的信息,它統一了數據流和控制流。
31.structst或exstructst或ex解析:結構體類型數據,其數據成員各自占據不同的存儲空間,整個結構體變量所占存儲單元的字節數為每一個數據成員所占的存儲空間的和。注意:共用體變量所占存儲單元字節數的計算。
32.*t++或*(t++)*t++或*(t++)解析:主函數中定義了兩個字符型數組strl和str2,并且給str2賦初值“abc&fgh”,接著調用函數sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數sstrcpy(*s,*t)中,用了一個while循環,每循環一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應該填*t++或*(t++)。
33.軟件開發。軟件開發。解析:通常,軟件生命周期包括8個階段:問題定義、可行性研究、需求分析、系統設計、詳細設計、編碼、測試、運行維護。還分為3個時期,軟件定義期:包括問題定義、可行性研究和需求分析3個階段;軟件開發期:包括系統設計、詳細設計、編碼和測試4個階段;軟件維護期:即運行維護階段。
34.1010解析:整型指針最初被賦的值是數組arr的頭指針,即指向數組的第一個元素30,p++后,指針指向數組的下一個元素,即*p=arr[1]=25,在執行*(p+3)時,則相當于a[1+3],即10。因此,輸出應為100。
35.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達“并且”用邏輯與運算符“&&”。
36.一對多一對多解析:實體之間的聯系可以歸結為一對一、一對多與多對多。如果一個學校有許多學生,而一個教師只歸屬于一個學生,則實體集學校與實體集學生之間的聯系屬于一對多的聯系。
37.11解析:本題是一個陷阱題。在if語句的判斷表達式中,使用的不是邏輯運算符==而是賦值運算符=,使該表達式返回的結果正好相反。如果是c==a,則結果為假。但是c=a則是將a賦給c,且表達式的結果是賦值之后的c的值,因此結果為1是真.故最后輸出c的值1。
38.可重用性繼承的優點:相似的對象可以共享程序代碼和數據結構,從而大大減少了程序中的冗余,提高軟件的可重用性。
39.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。
40.->->解析:結構變量abc有成員a,并有指針pabc指向結構變量abc,則引用變量abc成員a的形式有abc.a和p_abc->a。
41.D解析:實體集之間一對一的聯系不一定是一一對應的關系。例如,在一個教室中,實體集“學生”與實體集“座位”之間是一對一的聯系。因為實體集“學生”中的每一個學生最多與實體集“座位”中的一個座位有聯系(學生坐在該座位上);并且,實體集“座位”中中的每一個座位也最多與實體集“學生”中的一個學生有聯系(座位上坐著該學生)。但該教室中的學生與座位之間不一定是一一對應的關系,因為有可能某些座位是空的,沒有學生去坐。因此,選項A)中的說法是錯誤的。在關系模型中,由于使用表格數據來表示實體之間的聯系,因此,可以直接描述多對多的實體聯系。因此,選項B)中的說法也是錯誤的。關系模型是與格式化模型完全不同的數據模型,它與層次模型、網狀模型相比有著本質的區別。關系模型是用表格數據來表示實體本身及其相互之間的聯系,它是建立在數學理論基礎上的。因此,選項C)中的說法也是錯誤的。
42.D解析:類(calss)描述的是具有相似屬性與操作的一組對象,而一個具體對象則是其對應類的一個實例。
43.C
44.C
45.C解析:在C語言中,一個完整的C語句必須在語句末尾出現分號,分號是C語句的必要組成部分。本題答案為C。
46.A解析:C語言中比較表達式的運算結果為0或1。0代表不成立,1表示成立。
47.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發、管理和文檔生成;過程支持軟件開發的各個環節的控制和管理。
48.B解析:選項B中由于1和2都是整型,其1/2的運算結果為0,故整個表達式的值為0,所以它的結果和題目中要求的代數式的計算結果不相符,所以,4個選項中選項B符合題意。
49.B解析:本題考查對文件的操作。文件打開后才可以對文件進行操作,使用結束后要關閉文件。對文件的操作都是順序讀寫,即從文件的第一個數據開始,依次進行讀寫。
50.B解析:本題考查循環語句的嵌套以及條件的判斷問題。在程序中,內層循環判斷條件為“j<=i”,而j的初值為3,故當i的值為1和2時,內層循環體都不會被執行。只有當i和j都等于3時才會執行一次。m的值為55對3取模,計算結果為1。
51.A解析:數據流圖包括4個方面,即加工(轉換)(輸入數據經加工變換產生輸出)、數據流(沿箭頭方向傳送數據的通道,一般在旁邊標注數據流名)、存儲文件(數據源)(表示處理過程中存放各種數據的文件)、源和潭(表示系統和環境的接口,屬系統之外的實體)。不包括選項中的控制流。
52.C解析:在C語言中,對于不同類型的數據用不同的格式字符,其中,“%d”是按整型數據的實際長度輸出,“%md”中,m為指定的輸出字段的寬度,如果數據的位數小于m,則左端補以空格,若大于m,則按實際位數輸出。注意:格式輸入函數scanf的使用。
53.D
54.D解析:選項A),共用體的每個成員的起始地址都相同;選項B),共用體變量所占的內存長度等于最長的成員的長度;選項C)因為每個成員的起始地址相同,所以整型數5以浮點型輸出時為5.000000;選項D)C語言規定,不能把共用體變量作為函數的參數。
55.D\r\n軟件是與計算機操作相關的計算機程序、規程、規則,以及可能有的文件、文檔及數據;軟件開發要受到計算機系統的限制;軟件是一個邏輯實體,不是物理實體,軟件具有抽象性。因此選項D正確。
56.A解析:題面中各變量定義后,指針變量p指向了變量n2所在的存儲單元,指針變量q指向了變量n1所在的存儲單元,要使得n1的值賦n2,可用指針變量q所指向的存儲單元的值賦給指針變量p所指向的存儲單元,即*p=*q。
57.D解析:軟件設計一般分為總體設計和詳細設計兩個階段。總體設計的任務是確定軟件的總體結構、子系統和模塊的劃分,確定模塊間的接口和評價模塊劃分質量,并進行數據分析;詳細設計的任務是確定每一模塊實現的定義,包括數據結構、算法和接口。
58.A解析:本題考查%和/運算符的使用。如果兩個數不能整除,只取結果的整數部分,小數部分全部舍去。運算符“%”要求兩個運算對象都為整型,其結果是整數除法的余數。表達式:a=-4+4*5-6=4+20-6=10:表達式:a=4+4%5-6=4+4-6=2;表達式:a=-3+4%6/5=-3+0=-3:表達式:a=(7+6)%5/2=13%5/2=1。
59.B解析:本題首先定義了一個函數cchar(),有一個字符型參數ch。在函數中首先判斷該字符是否為大寫字母,如果是則把它轉換成小寫字符再賦值給ch,把ch作為函數值返回。在主函數中定義了一個字符數組s并初始化,然后定義了一個指針變量并使它指向數組s。接著通過一個while循環利用指針變量p,依次取出字符數組的字符(直到遇到字符串結束標志'\\0'),并調用cchar()函數,把大寫字母轉換成小寫字母,其他字符不變。最后輸出字符數組為,中的內容,結果為“abc+abc=defdef”。
60.A解析:本題考查函數調用時的參數傳遞。通過函數abc的執行,將字符串中的字母a去掉,保留剩下的。由于是通過指針調用,所以改變字符串的結果。
61.C本題主要考查字符數組的初始化操作。字符數組的初始化可以逐個元素賦值,也可以作為字符串賦值。
逐個元素賦值初始化形式:
char數組名[n]={字符1,字符2,……,字符n};
char數組名[]={字符1,字符2,……,字符n};
作為字符串賦值形式:
char數組名[n]='字符串';
char數組名[]='字符串';
在C語言中,為了方便確定字符串的長度,編譯系統在字符串后增加了一個結束標識’\\0’,即ASCII碼的0。因此,當采用字符串初始化字符數組時,必須為其保留一個存放結束標識符的位置。
在本題中,用一個字符串作為數組的初值,這種方法直觀、方便,而且符合人們的習慣。數組array的長度是7,但所占的空間是8,這點必須要注意。因為字符串常量的最后由系統加上一個’\0’,因此,上面的初始化是chararray[]={′C′,′h′,′i′,′n′,′e′,′s′,′e′,′\0′}。
62.D根據時間復雜度和空間復雜度的定義可知,算法的時間復雜度與空間復雜度并不相關。數據的邏輯結構就是數據元素之間的邏輯關系,它是從邏輯上描述數據元素之間關系的,是獨立于計算機的;數據的存儲結構是研究數據元素和數據元素之間的關系如何在計算機中表示的,它們并非一一對應。算法的執行效率不僅與問題的規模有關,還與數據的存儲結構有關。
63.C本題考查C語言基礎知識,C語言中只能夠表示十進制整數、八進制整數和十六進制整數。
64.D
65.C函數hm()求數組指定返回的元素的積。函數fun(a,3)求的是數組a[0]~a[3]的積。因此結果為2t3女4十5=120,故答案為C選項。
66.C
67.D
68.D
69.C
70.C
71.D結構化程序設計由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設計為中心,將待開發的軟件系統劃分為若干個相互獨立的模塊,這樣使完成每一個模塊的工作變得單純而明確,為設計一些較大的軟件打下了良好的基礎。
由于模塊相互獨立,因此,在設計其中一個模塊時,不會受到其他模塊的牽連,因而可將原來較為復雜的問題化簡為一系列簡單模塊的設計。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為可以充分利用現有的模塊作為積木式的擴展。
結構化程序設計的基本思想是采用“自頂向下,逐步求精”的程序設計方法和“單入口單出口”的控制結構。自頂向下、逐步求精的程序設計方法從問題本身開始,經過逐步細化,將解決問題的步驟分解為由基本程序結構模塊組成的結構化程序框圖;“單入口單出口”的思想認為一個復雜的程序,如果它僅是由順序、選擇和循環三種基本程序結構通過組合、嵌套構成,那么這個新構造的程序一定是一個單入口單出口的程序。據此就很容易編寫出結構良好、易于調試的程序。
72.C
73.B本題考查二維數組的相關操作。程序主要包括兩個部分:主函數部分和fun函數。主函數初始給出了一個4×4的二維矩陣,并對每一行賦初值,可以看出每一行都要有4個元素,而對于給出的初值個數不滿足4個的,要先從第一列開始將各個值賦給各列,不足的部分用0補齊。函數fun的作用是將二維矩陣a中行號與列號相同的數據賦值給一維矩陣y,y的下標與該數據在a中的行號相同。題目所要求解的即通過printf函數將矩陣y中的元素按照順序輸出。本題中二維矩陣a初始化后為{{1,2,3,0},{4,0,0,0},{5,6,7,8},{9,10,0,0}}。將行號與列號相同的元素賦給y,則y矩陣的數據為{1,0,7,0},輸出即可得到結果。
74.D共用體變量中的所有成員共享一段公共存儲區,所有成員的首地址相同。在每一個時刻所有的成員中只有一個有效,即只有最后一個被賦值的成員有效,其余的成員無效。
75.B
76.B
77.D題目中有兩個分別指向結點的指針p和q,其中p->next=q,q->next->data=C。要將q結點從鏈表中刪除,只要將指針p所指結點的next域指向q指針所指結點的下一個結點,即令p->next=q->next,也可以表示為(*p).next=(*q).next。操作完成后,便將q指針所指結點從鏈表中刪除,隨后將該結點釋放即可。
78.A
79.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區別是:棧只允許在表的一端進行插入或刪除操作,是一種'后進先出'的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種'先進先出'的線性表。模塊之間的耦合程度反映了模塊的獨立性,也反映了系統分解后的復雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數據耦合、同構耦合、控制耦合、公用耦合和內容耦合。選項C),沒有這種耦合方式。
80.Astden返回的是不包括\\0在內的數組
81.(1)錯誤:doubleproc(doubleq)
正確:doubleproc(intq)
(2)錯誤:sum=sum+(n+1)/n;
正確:sum=sum+(double)(n+1)/n;
(3)錯誤:returnsum;
正確:returnt;
【解析】由主函數中函數調用的實參可知,函數proc()的形參為int型,因此,“doubleproc(doubleq)”應改為“doubleproc(intq)”;變量sum為double型變量,因此表達式(n+1)/n要進行強制類型轉換,因此,“sum=sum+(n+1)/n;”應改為“sum=sum+(double)(n+1)/n;”,由函數proc()可知,變量sum中存放的是SN+1項,而變量t表示SN項,因此,“returnsum;”應改為“returnt;”。
82.
【解析】通過要求把非素數的數放到xx數組中,檢查大于整數m的整數,將不是素數的整數放在數組xx中,直到個數大于k個結束。
2022-2023年安徽省宣城市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中正確的是()。
A.為了建立一個關系,首先要構造數據的邏輯關系
B.表示關系的二維表中各元組的每一個分量還可以分成若干數據項
C.一個關系的屬性名表稱為關系模式
D.一個關系可以包括多個二維表
2.合法的常量是()。A.‘program’B.–e8C.03xD.0xfl
3.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運行結果是()。
A.3B.4C.1D.9
4.
5.有以下程序函數fun只對下標為偶數的元素進行操作.:
程序運行后的輸出結果是()。A.A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
6.設有以下函數:
voidfun(intn,char*$s){……}
則下面對函數指針的定義和賦值均正確的是A.void(*pf)();pf=fun;
B.void*Pf();pf=fun;
C.void*pf();*pf=fun;
D.void(*pf)(int,char);nf=&fun;
7.某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是A.10B.8C.6D.4
8.
9.
10.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
11.設無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點a出發進行深度優先遍歷可以得到的一種頂點序列為()。
A.aedfcbB.acfebdC.aebcfdD.aedfbc
12.有以下程序:
程序運行后的輸出結果是()。A.34B.55C.10D.18
13.以下程序的輸出結果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
14.設主串T='aabaababaabaa',子串P:'abab',則簡單模式匹配算法中直至匹配成功,單個字符比較的次數為()。
A.12B.13C.14D.15
15.
16.若有定義:typedefint*(*T[10])[10];Tb;則以下選項中所定義的a與上述定義中的b,其類型完全相同的是()。
A.int*(*a[10][10]);
B.int**a[10][10];
C.int*(a[10])[10];
D.int*(*a[10])[10];
17.以下關于結構化程序設計的敘述中正確的是()。
A.一個結構化程序必須同時由順序、分支、循環三種結構組成
B.結構化程序使用goto語句會很便捷
C.在C語言中,程序的模塊化是利用函數實現的
D.由三種基本結構構成的程序只能解決小規模的問題
18.
19.下列有關格式輸入函數scanf的敘述中正確的是()
A.輸入項可以是C語言中規定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數據時,必須規定精度。如:scanf("%4.2f",&d);
D.當輸入數據時,必須指明變量地址
20.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);為使此程序段不陷入循環,從鍵盤輸入的數據應該是()。A.任意正奇數B.任意負偶數C.任意正偶數D.任意負奇數
二、2.填空題(20題)21.源程序文檔化要求程序應加注釋。注釋一般分為序言性注釋和【】。
22.下列語句能循環______次。
ints=12;
while(s);
--s;
23.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數為【】。
24.軟件工程研究的內容主要包括:【】技術和軟件工程管理。
25.下列程序的輸出結果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
26.下列程序輸出的結果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
27.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體集“項目主管”與實體集“項目”的聯系屬于【】的聯系。
28.以下程序運行后的輸出結果是______。
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:a++;break;
case1:b++;break;
case2:a++;b++;break;
}
printf("%d%d\n",a,B);
}
29.下面程序執行后輸出的結果是【】。
intm=13;
intfun(intx,inty)
{intm+3;
return(x*y-m);
}
main()
{inta=7,b,5;
prntf("%d\n",fun(a,B)/m);
}
30.在面向對象方法中,對象之間進行通信的構造稱為()。
31.以下程序用來輸出結構體變量ex所占存儲單元的字節數,請填空。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));}
32.以下sstrcpy()函數實現字符串復制,即將t所指字符串復制到s所指內存空間中,形成一個新字符串s。
請填空。
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
33.軟件生命周期包括8個階段。為使各時期的任務更明確,又可以分為以下3個時期:軟件定義期、軟件開發期、軟件維護期。編碼和測試屬于【】期。
34.以下程序的輸出結果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
35.關系表達式x<y<z,用C語言的表達式為【】。
36.實體之間的聯系可以歸結為一對一的聯系,一對多的聯系與多對多的聯系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯系屬于【】的聯系。
37.以下程序運行后的輸出結果是______。
main()
{inta=1,b=2,c=3;
if(c=A)printf("%d\n",C);
elseprintf("%d\n",B);
}
38.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
39.在面向對象的程序設計中,類描述的是具有相似性質的一組【】。
40.設有定義:
struct{inta;floatb;charc;}abc;*p_abc=&abc;
則對結構體成員a的引用方法可以是abc.a和p_abc【】a。
三、1.選擇題(20題)41.下列敘述中正確的是()。A.實體集之間一對一的聯系實際上就是一一對應的關系
B.關系模型只能處理實體集之間一對一的聯系
C.關系模型屬于格式化模型
D.以上三種說法都不對
42.在面向對象方法中,()描述的是具有相似屬性與操作的一組對象。
A.屬性B.事件C.方法D.類
43.若已定義x為int型變量,說明指針變量p的正確語句是()
A.intp=&x;B.int*p=x;C.int*p=&x;D.*p=*x;
44.數據庫管理系統提供給用戶的接口是()
A.過程化語言B.數據庫語言C.宿主語言D.面向對象語言
45.下列屬于C語言語句的是______。
A.pnntf("%d\n,a)
B.#include<stdio.h>
C.a=b;b=c;c=a;
D./*thisisaprogram*/
46.設a、b、C、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m==a>b)&&(n=c>d)運算后,n的值為______。
A.0B.1C.2D.3
47.下列不屬于軟件工程的3個要素的是______。
A.工具B.過程C.方法D.環境
48.設有定義:floata=2,b=4,h=3;,以下C語言表達式中與代數式計算結果不相符的是
A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)
49.在C語言中,下列關于文件操作的敘述正確的是()。
A.對文件操作必須先關閉文件B.對文件操作必須先打開文件C.對文件操作順序沒有統一規定D.以上全錯
50.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的運行結果是
A.0B.1C.2D.3
51.數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是()
A.控制流B.加工C.數據存儲D.源和潭
52.以下程序段的輸出結果是()。inta=1234;printf("%2d\n",a);
A.12B.34C.1234D.提示出錯,無結果
53.設a=3、b=4、c=5,則表達式!(a+b)+c-1&&b+c/2的值為______。
A.6.5B.6C.0D.1
54.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是
A.data的每個成員起始地址都相同
B.變量data所占內存字節數與成員c所占字節數相等
C.程序段:data.a=5;printf("%f\n",data.c);輸出結果為5.000000
D.data可以作為函數的實參
55.下列描述中正確的是()。
A.程序就是軟件
B.軟件開發不受計算機系統的限制
C.軟件既是邏輯實體,又是物理實體
D.軟件是程序、數據與相關文檔的集合
56.設有定義intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
57.在軟件開發中,下面的任務不屬于設計階段的是()。
A.數據結構設計B.給出系統模塊結構C.定義模塊算法D.定義需求并建立系統模塊
58.下列程序輸出的結果是()。main(){inta;a=-4+4*5-6;printf(“%d”,a);a=4+4%5-6;printf(“%d”,a);a=-3+4%6/5;printf(“%d”,a);a=(7+6)%5/2;printf(“%d”,a);}
A.102-31B.10-221C.11-221D.10221
59.以下程序的輸出結果是chsrcchar(charch){if(ch>='A'&&ch<='Z')ch=ch-'A'+'a';returnch;}main(){chars[]=“ABC+abc=defDEF”,*p=s;while(*p){*p=cchar(*p);p++;}printf(“%s\n”,s);}
A.abd+ABC=DEFdef
B.abc+abc=defdef
C.abcABCDEFdef
D.abcabcdefdef
60.下列程序的運行結果為()。
#include<stdio.h>
voidabc(char*str)
{inta,b,i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!='a')
str[j++]=str[j];
str[j]='\0';
}
voidmain()
{charStr[]="abcdef';
abc(str);
printf("str[]=%s",str);
}
A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab
四、選擇題(20題)61.設有數組定義:chararray[]="Chinese";則數組array所占的空間為
A.6個字節B.7個字節C.8個字節D.9個字節
62.下列敘述中正確的是()。
A.數據的邏輯結構與存儲結構是一一對應的
B.算法的時間復雜度與空間復雜度一定相關
C.算法的效率只與問題的規模有關,而與數據的存儲結構無關
D.算法的時間復雜度是指執行算法所需要的計算工作量
63.C源程序中不能表示的數制是
A.十進制B.八進制
C.二進制D.十六進制
64.(21)算法的空間復雜度是指______。
A.算法程序的長度
B.算法程序中的指令條數
C.算法程序所占的存儲空間
D.算法執行過程中所需要的存儲空間
65.有以下程序:
程序運行后的輸出結果是()o
A.24B.720C.120D.6
66.
67.
68.
69.
70.
71.結構化程序設計主要強調的是
A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序易讀性
72.
73.有以下程序
#include<stdio.h>
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i<N;i++)
b[i]=a[i][i];
}
main()
{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序的運行結果是
A.l,2,3,4,
B.1,0,7,0,
C.1,4,5,9,
D.3,4,8,10,
74.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內存字節數相同
B.變量demo中各成員的地址相同
C.變量demo和各成員的地址相同
D.若給demo.d1賦99后,demo.d2中的值是99.0
75.
76.
77.假定已建立以下鏈表結構,且指針p和q已指向如下圖所示的結點:
則以下選項中,可將q所指結點從鏈表中刪除并釋放該結點的語句組是
A.(*p).next=(*q).next;free(p);B.p=q->next;free(q);
C.p=q;free(q);D.p->next=q->next;free(q);
78.
79.棧和隊列的共同特點是()。
A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同點
80.以下程序運行后的輸出結果是()。
A.2011B.99C.209D.1111
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:計算并輸出下列級數的前N項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值為57,則函數值為59.593612。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.請編寫一個函數voidproc(intm,intk,intxx[]),該函數的功能是將大于整數m且緊靠m的k個非素數存人所指的數組中。例如,若輸入:105(即M=10,k=5),則應輸出:l214151618。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C解析:在格式化模型中,要事先根據應用的需要,確定數據之間的邏輯關系,即先對數據進行結構化。在關系模型中,不需要事先構造數據的邏輯關系,只要將數據按照一定的關系存入計算機,也就是建立關系。所以選項A錯誤。對于一個表示關系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數據項,即不允許表中再有表。所以,選項B、D說法是錯誤的。一個關系的屬性名表稱為關系模式,也就是二維表的表框架,相當于記錄型。因此,選項C說法正確。
2.D
3.B內循環只循環一次就結束,第1次外循環時,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環時,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環時,1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本題答案為B選項。
4.A
5.A由函數fun(int*a,intn)中語句if(a[j]>a[k])k=j;可知當前k是記錄數組中較大數據值所在位置的下標變量,所以該函數的作用是對數組a中的下標為偶數位置的數據進行從大到小的排序,即對a[0],a[2],a[4],a[6]中的數據1,3,5,7進行從大到小的排序,其他位置的數據不變,所以答案為A)。
6.A解析:函數指針的定義形式是:數據類型標識符(*指針變量名)()。void(*pf)()定義了一個沒有返回值的函數指針pf,在給函數指針變量賦值時,只需給出函數名而不必給出參數。所以給pf賦值時,只把函數名fun賦給pf即可。所以正確答案為選項A)。
7.C根據二叉樹的性質,在任意二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。
8.D
9.C
10.D解析:因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。
11.B
12.D題干中,函數fun的功能是通過遞歸,將數組a中下標為0~n-1位置的元素累加,作為函數返回值返回。main函數調用fun時,傳入的a+2作為數組參數,傳入n的值是4,所以函數返回值是元素a[2]、a[3]、a[4]、a[5]的和,程序輸出18。本題答案為D選項。
13.B函數調用時,prt函數的作用是為使m數組中的數自增1,因此數組下標從0開始,每個元素都自加1。
14.A
15.C
16.D“typedefint*(*T[10])[10];”使用typedef定義一種新類型名T,T的類型是二維數組指針,指向10個元素的數組。其中數組元素類型為int*[10],即數組的每個元素又是包含10個元素的數組,數組的元素是整型指針類型。故本題答案為D選項。
17.C解析:結構化程序設計是指將待開發的軟件系統劃分為若干個相互獨立的模塊,與具體的語句結構無關。Goto語句的濫用會導致程序的可讀性降低。三種基本結構構成的程序依然可以解決大規模的問題,只是不利于復用。
18.B
19.D解析:如果是指針型變量或數組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現正確輸入,所以選項B的說法有誤。在輸入數據時,不可以指定實型數據的精度,所以選項C的說法有誤。只有選項D的說法正確。
20.D本題主要考查do—while循環,因為變量t的初始值等于1,經過第一次do-while循環后,執行t=t-1這條語句一次,所以變量t的值為-1,判斷關系表達式t!=n是否成立,如果關系表達式成立,則執行第二次循環,如果關系表達式不成立,退出循環。由此可見,只要輸入變量n的值為負奇數,則一定會使t==n成立,故退出do-while循環。
21.功能性注釋功能性注釋解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,它給出程序的整體說明;功能性注釋的位置一般嵌在源程序體之中戶主要描述其后的語句或程序做什么。
22.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執行后面的語句,只是執行空語句,所以s=12保持不變,因此,沒有條件限制的能循環無限次(即死循環)。
23.nn解析:在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數為n。
24.軟件開發
25.11解析:ifelse語句的功能是:若表達式的值為真,執行語句1,并跳過其他語句,執行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執行printf語句,在整個過程中變量z的值都沒發生變化。
26.11解析:本題考查局部變量和全局變量的區別:局部變量是指作用域在函數級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內。在fun函數內部定義了一個局部變量m=3,m=3的作用域僅在fun函數內部,通過fun函數返回兩個形參的積再減m。在主函數中,輸出fun(a,b)/m=(5*7-3)/17=1。
27.一對多一對多解析:實體集“項目主管”與實體集“項目”的聯系屬于一對多的聯系。
28.2121解析:本題考核的知識點是switch語句的嵌套應用。外層switch語句后面括號里的x的值為1,所以執行從case1:后面的語句開始執行,而case1:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case():開始執行即執行a++,這時a的值變為1,執行完畢,遇到break語句,退出內層switch語句,又回到外層switch語句,繼續執行case1:下面的語句即case2:執行完畢后,a自加1變為2,b自加1變1。所以最后輸出的a和b的值為21。
29.22解析:本題變量m既是外部變量(值是13),又是fun函數的局部變量(值為3)。函數fun(x*y-m)的值為7*5-3=32,在main函數中,fun(a,b)/m中的m應取外部變量的值13,因此輸出2。
30.消息消息解析:對象之間進行通信的構造叫做消息,它請求對象執行某一處理或回答某一要求的信息,它統一了數據流和控制流。
31.structst或exstructst或ex解析:結構體類型數據,其數據成員各自占據不同的存儲空間,整個結構體變量所占存儲單元的字節數為每一個數據成員所占的存儲空間的和。注意:共用體變量所占存儲單元字節數的計算。
32.*t++或*(t++)*t++或*(t++)解析:主函數中定義了兩個字符型數組strl和str2,并且給str2賦初值“abc&fgh”,接著調用函數sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數sstrcpy(*s,*t)中,用了一個while循環,每循環一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應該填*t++或*(t++)。
33.軟件開發。軟件開發。解析:通常,軟件生命周期包括8個階段:問題定義、可行性研究、需求分析、系統設計、詳細設計、編碼、測試、運行維護。還分為3個時期,軟件定義期:包括問題定義、可行性研究和需求分析3個階段;軟件開發期:包括系統設計、詳細設計、編碼和測試4個階段;軟件維護期:即運行維護階段。
34.1010解析:整型指針最初被賦的值是數組arr的頭指針,即指向數組的第一個元素30,p++后,指針指向數組的下一個元素,即*p=arr[1]=25,在執行*(p+3)時,則相當于a[1+3],即10。因此,輸出應為100。
35.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達“并且”用邏輯與運算符“&&”。
36.一對多一對多解析:實體之間的聯系可以歸結為一對一、一對多與多對多。如果一個學校有許多學生,而一個教師只歸屬于一個學生,則實體集學校與實體集學生之間的聯系屬于一對多的聯系。
37.11解析:本題是一個陷阱題。在if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機應用技術5.3.無人機編隊飛行案例展示(棚拍)
- 無人機應用技術3.7.PPK定位
- 政治變態題目及答案高中
- 2025年中國雞骨行業投資前景及策略咨詢研究報告
- 2025年中國音樂陀螺電筒行業投資前景及策略咨詢研究報告
- 2025年中國攝影背包行業投資前景及策略咨詢研究報告
- 2025年中國開式滑車行業投資前景及策略咨詢研究報告
- 2025年中國嫩滑凈白面膜行業投資前景及策略咨詢研究報告
- 2025年中國四坑圓柄電錘鉆行業投資前景及策略咨詢研究報告
- 2025屆青島第二十六中學高一下化學期末質量跟蹤監視試題含解析
- 甘肅機電職業技術學院招聘事業編制工作人員筆試真題2024
- 乙肝肝硬化教學查房課件
- 弘揚家風文化班會課件
- 吐魯番采油廠玉果油田滾動建產工程環境影響報告書
- 2025年6月英語四級真題及參考答案
- 浙江省2024-2025學年高二下學期數學學考模擬考(三)(含答案)
- 電大:理論聯系實際談一談如何維護政治安全?參考答案
- 2025年下半年佛山市圖書館招考工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 醫藥代表關鍵客戶管理策略
- 2025年人教版小學小升初科學模擬試卷(含答案解析)
- 小學少先隊輔導員培訓
評論
0/150
提交評論