![2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計_第1頁](http://file4.renrendoc.com/view/eac28c17462a49300b0d8bbe530703d8/eac28c17462a49300b0d8bbe530703d81.gif)
![2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計_第2頁](http://file4.renrendoc.com/view/eac28c17462a49300b0d8bbe530703d8/eac28c17462a49300b0d8bbe530703d82.gif)
![2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計_第3頁](http://file4.renrendoc.com/view/eac28c17462a49300b0d8bbe530703d8/eac28c17462a49300b0d8bbe530703d83.gif)
![2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計_第4頁](http://file4.renrendoc.com/view/eac28c17462a49300b0d8bbe530703d8/eac28c17462a49300b0d8bbe530703d84.gif)
![2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計_第5頁](http://file4.renrendoc.com/view/eac28c17462a49300b0d8bbe530703d8/eac28c17462a49300b0d8bbe530703d85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
2.用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
3.設(shè)一個鏈表最常用的操作是在末尾插入結(jié)點和刪除尾結(jié)點,則選用()最節(jié)省時間。
A.單鏈表B.單循環(huán)鏈表C.帶尾指針的單循環(huán)鏈表D.帶頭結(jié)點的雙循環(huán)鏈表
4.
5.有以下程序
main()
{
intn[3],i,j;
for(i=0;i<3;i++)
n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
程序運行后的輸出結(jié)果是A.A.2
B.1
C.0
D.3
6.
7.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序運行后的輸出結(jié)果是()。
A.IB.JC.KD.H
8.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.0,-1,-1,-1
B.0,-1,-1,0
C.0,-1,-1,0,-1,0
D.0,-1,-1,-1,-1,-1
9.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性
10.以下能正確定義一維數(shù)組的選項是
A.inta[5]={0,1,2,3,4,5}
B.chara[]={'0','1','2','3','4','5','\0'};
C.chara={'A','B','C'};
D.inta[5]="0123";
11.設(shè)inta=12,則執(zhí)行完語句a+=a-=a*a后,a的值是()。
A.552B.264C.144D.-264
12.有以下程序:
#include<stdio.h>,
main()
{intS;
scanf("%d",&s);
while(s>O)
{switch(s)
{casel:printf("%d",s+5);
case2:printf("%d",s+4);break;
case3:printf("%d",s+3);
default:("%d",s+1);break;
}
scanf("%d",&s);
}
}
運行時,若輸入123450<回車>,由輸出結(jié)果是()。
A.6566456B.66656C.66666D.6666656
13.C語言可執(zhí)行程序的開始執(zhí)行點是()。
A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句
14.在有序雙向鏈表中定位刪除一個元素的平均時間復(fù)雜度為()
A.O(1)B.O(N)C.O(logN)D.O(N*logN)
15.下述哪一條是順序存儲結(jié)構(gòu)的優(yōu)點()。
A.插入運算方便B.可方便地用于各種邏輯結(jié)構(gòu)的存儲表示C.存儲密度大D.刪除運算方便
16.用單鏈表表示的鏈式隊列,隊頭在鏈表的()位置。
A.鏈頭B.鏈尾C.鏈中D.可以由自己確定
17.下列程序的輸出結(jié)果是
#include"stdio.h"
#defineN3
#defineM3
voidfun(inta[M][N])
{printf("%d\n",*(a[1]+2));}
main()
{inta[M][N];
inti,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);}
A.3B.4C.5D.6
18.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱為______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
19.下列關(guān)于c語言用戶標識符的敘述中正確的是()。
A.用戶標識符中可以出現(xiàn)下劃線和中劃線(減號)
B.用戶標識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線
C.用戶標識符中可以出現(xiàn)下劃線,但不可以放在用戶標識符的開頭
D.用戶標識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在用戶標識符的開頭
20.數(shù)組A中,每個元素的長度為3個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放的存儲器內(nèi),該數(shù)組按行存放,元素A[5][8]的起始地址為()。
A.SA+141B.SA+180C.SA+222D.SA+225
二、2.填空題(20題)21.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。
22.若有以下程序:
intf(intx,inty)
{
return(y-x)*x;
}
main()
{
inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出的結(jié)果是【】。
23.面向?qū)ο蟮哪P椭校罨镜母拍钍菍ο蠛蚠_____。
24.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
25.下列語句能循環(huán)______次。
ints=12;
while(s);
--s;
26.有下面的程序:
#include<stdio,h>
main()
{enumteam{my,your=4,his,her=his+10};
prinff("%d%d%d%d\n",my,your,his,her);
此程序的輸出結(jié)果是【】。
A)0123B)04010C)04515D)14515
27.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
28.下列程序的運行結(jié)果為【】。
main()
{inti,j,row=0,colum=0,max,
a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<a[i][j])
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);
}
29.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。
30.設(shè)有說明;
structDATE{intyear;intmonth;intday;};
請寫出一條定義語句,該語句定義d為上述結(jié)構(gòu)體類型變量,并同時為其成員year、month、day依次賦初值2006、10、1:【】。
31.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。
32.有以下程序:
#include<stclio.h>
main()
{charc;
while((c=getchar())!='?')putchar(--c);
}
程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結(jié)果為【】。
33.若運行時給變量x輸入12,則以下程序的運行結(jié)果是【】;
main(){
intx,y;
scanf(""%d"",&x);
y=x>12?x+10:x-12;
printf(""%d\n"",y);
}
34.以下程序的輸出結(jié)果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%c",*p[i]);
printf("\n");
}
35.以下程序的運行結(jié)果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
36.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于[]。
37.用復(fù)合的賦值運算符將變量x中的值增大2的賦值表達式是【】。
38.若fp已下確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁眨员銥椤白x”而打開此文件:fp=fopen(【】);。
39.下面程序的運行結(jié)果是【】。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
40.下列程序的輸出結(jié)果是______。
#include<stdio.h>
sb(ints[].intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8);
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf(:%d",x);
}
printf("\n");
}
三、1.選擇題(20題)41.關(guān)于結(jié)構(gòu)化程序設(shè)計原則和方法描述錯誤的是()。
A.選用的結(jié)構(gòu)只準許有一個入口和一個出口
B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)
C.不允許使用GOTO語句
D.語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬
42.在軟件開發(fā)中,下面的任務(wù)不屬于設(shè)計階段的是()。
A.數(shù)據(jù)結(jié)構(gòu)設(shè)計B.給出系統(tǒng)模塊結(jié)構(gòu)C.定義模塊算法D.定義需求并建立系統(tǒng)模塊
43.以下選項中合法的用戶標識符是A.longB._2TestC.3DmaxD.A.dat
44.設(shè)有如下枚舉類型定義:enumpro_lan{Basic=3,C,Delphi=10,Pascal,Fortran};枚舉量Fortran的值為______。
A.4B.7C.12D.13
45.以下對C語言函數(shù)的有關(guān)描述中,正確的是
A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C.函數(shù)必須有返回值,否則不能使用函數(shù)
D.函數(shù)必須有返回值,返回值類型不定
46.表達式~0x11的值是()。
A.OxFFEEB.0x71C.0x0071D.0xFFE1
47.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。
A.5B.24C.32D.40
48.下面程序的運行結(jié)果是#include<stdio.h>voiddelch(char*s){inti,j;char*a;a=S;for(i=0,j=0;a[i]!='\0';i++)if(a[i]>='0'&aa[i]<='9'){s[j]=a[i];j++;}s[j]='\0';}main(){char*item="a34bC";delch(item);printf("\
A.abcB.34C.a34D.a34bc
49.以下合法的賦值語句是()
A.x=y=100B.d--;C.x+y;D.c=int(a+b);
50.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}
A.99B.520C.1320D.2020
51.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}
A.-8B.14C.0D.-24
52.下列程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){inta;if(x==0||x=1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}
A.2B.8C.9D.5
53.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。
A.XZCYABB.XYZABCC.XYABCZD.XYAZBC
54.已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}
A.表達式非法,輸出零或不確定值
B.因輸出項過多,無輸出或輸出不確定值
C.輸出結(jié)果為20,141
D.輸出結(jié)果為20,141,20
55.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。
A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)
56.閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}
A.nicetomeetyouyouB.nicetoC.meetyouyouD.nicetoyou
57.有下列二叉樹,
對此二叉樹前序遍歷的結(jié)果為()。
A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI
58.下面程序輸出的結(jié)果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);}
A.159B.753C.357D.591
59.下面程序輸出的結(jié)果是()。main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=-i;elseif(ok2)x=10;x=1;printf("%d\n",x);}
A.-1B.0C.1D.不確定的值
60.下面程序的輸出結(jié)果是______。#include<stdio.h>main(){char*p[]="BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}
A.SOB.SPC.SPOPKD.SHOB
四、選擇題(20題)61.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對
62.下列選項中不會引起二義性的宏定義是()。
A.#defineS(x)x*x
B.#defineS(x)(x)*(x)
C.#defineS(x)(x*x)
D.#defineS(x)((x)*(x))
63.
64.
65.
66.若變量a、b、x、i都已正確定義并賦值,則以下符合C語言語法的表達式是()。
A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)
67.
68.
有以下程序
#include<stdio.h>
voidfun(char**p)
{++p;printf("%s",*p);}
main
{char*a[]={"Morning","Afternoon","Evening","Night");
fun(a);
}
程序的運行結(jié)果是()。
A.AfternoonB.fternoonC.MorningD.orning
69.若有定義語句:doublea,*P=&a;以下敘述中錯誤的是()。
A.定義語句中的*號是-個間址運算符
B.定義語句中的木號是-個說明符
C.定義語句中的P只能存放double類型變量的地址
D.定義語句中,P=&a把變量a的地址作為初值賦給指針變量P
70.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是
A.一對一B.一對多C.多對一D.多對多
71.有以下程序:
#include<<stdio.h>
structstu
{intnum;
charname[10]:
intage;}
voidfun(structstu*p)
{printf("%s\n",(*p).name);}
themain
{
structstustudents[3]={{9801,"Zhang".20},
{9802,"Wang",19},{9803,"Zhao",18}}
fun(students+2);
}
輸出的結(jié)果是()。
A.ZhangB.ZhaoC.WangD.18
72.軟件需求規(guī)格說明書的作用不包括()。
A.軟件設(shè)計的依據(jù)B.軟件可行性研究的依據(jù)C.軟件驗收的依據(jù)D.用戶與開發(fā)人員對軟件要做什么的共同理解
73.
74.
75.以下敘述中錯誤的是(
)。A.函數(shù)形參的值也可以傳回給對應(yīng)的實參
B.函數(shù)調(diào)用可以作為一個獨立的語句存在
C.若函數(shù)有返回值,必須通過r;mm語句返回
D.C程序必須由一個或一個以上的函數(shù)組成
76.
下面程序的運行結(jié)果是()。
#inelude<stdio.h>
voiddel(char*s)
{inti,j;
char*a;
a=s:
for(i=0,j=0;a[i]!=\0;i++)
{if(a[i]>=0&&a[i]<=9)
{s[j]=a[i];
j++;
}
s[j]=\0;
}
}
main
{char*s="aa89gggh";
del(s):
printf("\n%s",s);
}
A.1B.2C.3D.4
77.設(shè)有定義:intk=0;以下選項的四個表達式中與其他三個表達式的值不相同的是()。
A.++kB.k+=1C.k++D.k+1
78.
79.數(shù)據(jù)庫管理系統(tǒng)是()。
A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)
80.
以下程序的輸出結(jié)果是()。
main
{inti;
for(i=0;i<3;i++)
switch(i){case0:printf("%d",i);
case2:printf("%d",i);
default:printf("%d",i);
}
}
A.000102B.000020C.000122D.000111
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:將str所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)化為A,z轉(zhuǎn)化為a),其他字符不變。
請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)
參考答案
1.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。
2.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。所以,本題的正確答案是B。
3.C
4.A
5.D初始時定義一個大小為3個一維整型數(shù)組,第一個for語句是對數(shù)組賦初值,每個值都為0。后面是一個for語句的嵌套調(diào)用,外層的循環(huán)變量i的取值為[0,2],內(nèi)層循環(huán)變量的取值范圍為[0,2]。最初外層的循環(huán)變量i=0,內(nèi)層的循環(huán)變量j取值從0到2,計算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外層for語句的循環(huán)變量為1時,內(nèi)層的循環(huán)變量j取值從0到2,計算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外層for語句的循環(huán)變量為2時,內(nèi)層的循環(huán)變量j取值從0到2,計算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的輸出結(jié)果為3。
6.D
7.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六進制數(shù),轉(zhuǎn)為十進制數(shù)x=9?!皃rintf(“%C\\n”,‘A’+9);”,輸出格式要求是“%c”,因此將字符‘A’按字母順序向后偏移9個位置,可得結(jié)果為“J”。故本題答案為B選項。
8.A程序定義整型變量a和b,初值分別是1,-2。for語句中循環(huán)條件式為“a--&&b++”,因為--和++的優(yōu)先級高于邏輯與運算符&&,所以循環(huán)條件式等價于“(a--)&&(b++)”,自左向右運算。第1輪循環(huán),a、b的值為1,-2,首先執(zhí)行a--,a--的值為1,執(zhí)行完后a的值為0;繼續(xù)執(zhí)行b++,b++的值為-2,執(zhí)行完后b的值為-1。整個表達式“a--&&b++”的值為真,程序輸出0,-1。第2輪循環(huán),a、b的值分別為0,-1,首先執(zhí)行a--,a--的值為0,執(zhí)行完后a的值為-1,由于a--的值為0,根據(jù)邏輯與運算的短路原則,表達式“a--&&b++”的值一定為假,表達式b++不再執(zhí)行,循環(huán)結(jié)束,執(zhí)行循環(huán)體外的printf語句,輸出a、b的值分別為:-1,-1。所以本題輸出結(jié)果為:0,-1,-1,-1。本題答案為A選項。
9.B本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機的、不可重復(fù)的過程,它用于隔離和確認問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復(fù)的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。
10.B解析:選項A)中,定義的初值個數(shù)大于數(shù)組的長度;選項C)中,數(shù)組名后少了中括號;選項D)中,整型數(shù)組不能賦予字符串。
11.D
12.A\n根據(jù)題意,當s=1時,輸出65;當s=2時,輸出6;當S=3時,則輸出64;當S=4時,輸出5;當s=5時,輸出6;當s=0時,程序直接退出。所以最后答案為6566456,A選項正確。
\n
13.C解析:每個C程序有且只有一個主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。
14.B
15.C
16.A
17.B解析:若有以下定義:inta[3][4],i,j;且當0<=i<3,0<=j<4,則可以有以下幾種方式來引用數(shù)組中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。
18.A解析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進行插入排序。
19.B解析:在C語言中,合法的標識符由字母,數(shù)字和下劃線組成(故選項A不正確),并且第一個字符必須為字母或者下劃線(故選項B和選項D不正確).所以,B選項為所選.
20.C
21.空間空間解析:程序在計算機上運行時所耗費的時間由程序運行時所需輸入的數(shù)據(jù)總量、對源程序進行編譯所需時間、計算機執(zhí)行每條指令所需時間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運行時間的相對量度,稱作算法的時間復(fù)雜度。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復(fù)雜度。
22.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給do函數(shù)的第一個參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。
23.類類
24.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
25.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。
26.CC解析:枚舉的語法規(guī)定,當枚舉元素沒有賦值時,如果前面沒有其他枚舉元素,其值為0;如果前面有其他枚舉元素,其值為前一個元素的值加1,所以his的值為5,her的值為15。
27.1030010300解析:本題的scanf()函數(shù)要求用戶輸入三個十進制整數(shù),但只接受第一和第三個到函數(shù)的第二和第三個參數(shù)所指的內(nèi)存地址中。所以本題的輸出為:10300。
28.max=10row=2colum=1
29.軟件工具軟件工具解析:軟件開發(fā)環(huán)境是各類軟件開發(fā)工具的集合體。
30.structDATEd={2006101};structDATEd={2006,10,1};解析:在C語言中,結(jié)構(gòu)體變量定義語句的一般形式如下:
struct<結(jié)構(gòu)體名><結(jié)構(gòu)體對象名>[=<初始化列表>];
在本題中,<結(jié)構(gòu)體名>是DATE,<結(jié)構(gòu)體對象名>題目要求為d,而可有可無的<初始化列表>本題要求為{2006,10,1}。故應(yīng)該填structDATEd={2006,10,1};。
31.00解析:根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)運算,而任何表達式與“0”進行“與”運算,結(jié)果都為0。
32.XX解析:主函數(shù)中首先定義了一個字符型變量c,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個字符Y并給賦給字符變量c,賦值表達式的值不為'?',執(zhí)行輸出語句,輸出字符X。接著判斷while中的循環(huán)條件,讀入一個字符'?'并賦值給c,賦值表達式的值為'?'循環(huán)條件不再滿足,退出循環(huán)。
33.00解析:三目運算符的形式為(表達式1)?(表達式2):(表達式3)。當(表達式1)值為真時,返回(表達式2)的值;為假時,返回(表達式3)的值。題中因為x>12為假,所以結(jié)果為x-12,即為0。
34.SO
35.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函數(shù)main()中定義了一個變量i,并賦初值4,調(diào)用fun()函數(shù)將i的初值傳遞給形參m,進行fun()函數(shù)后的運算,輸出結(jié)果為m=4,k=4。將k值輸出后自行增加1,k=5,此時全局變量k的值變?yōu)?。主函數(shù)中調(diào)用fun()函數(shù)后,i再自行增加1,i=5,所以主函數(shù)輸出的結(jié)果為“i=5k=5”。
36.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊列也是線性表,也町以采用鏈式存儲結(jié)構(gòu)。
37.x+=2
38.“d1.dat”“rb”或“d1.dat”“r+b”或“d1.dat”“rb+”“d1.dat”,“rb”,或“d1.dat”,“r+b”,或“d1.dat”,“rb+”,解析:打開文件的函數(shù)為fopen(”文件名”,“mode”),其中“mode”表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:“rb”、“wb”、“ab”、“rb+”、“wb+”、“ab+”?!皉”表示以只讀方式打開?!皐”表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件?!癮”為追加方式打開。若文件存在時;將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創(chuàng)建新文件?!皉+”打開一個已存在文件用于更新(可讀可寫)。“w+”創(chuàng)建個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)?!癮+”打開用于追加,當文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應(yīng)該填“d1.dst”,“rb”或其他等價的表達法。
39.1-21,-2解析:考查嵌套的循環(huán)結(jié)構(gòu)。題中外層while循環(huán)的循環(huán)條件是\ue008y--!=-1\ue009,即y>=0;內(nèi)層do厀hile循環(huán)的循環(huán)條件是y--,即y-->0,y>=1。
40.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。
41.C解析:限制使用GOTO語句是結(jié)構(gòu)化程序設(shè)計的原則和方法之一,但不是絕對不允許使用GOTO語句。其他3項為結(jié)構(gòu)化程序設(shè)計的原則。
42.D解析:軟件設(shè)計一般分為總體設(shè)計和詳細設(shè)計兩個階段。總體設(shè)計的任務(wù)是確定軟件的總體結(jié)構(gòu)、子系統(tǒng)和模塊的劃分,確定模塊間的接口和評價模塊劃分質(zhì)量,并進行數(shù)據(jù)分析;詳細設(shè)計的任務(wù)是確定每一模塊實現(xiàn)的定義,包括數(shù)據(jù)結(jié)構(gòu)、算法和接口。
43.B解析:本題考查C語言標識符的命名.在C語言中,合法的標識符由字母,數(shù)字和下劃線組成,并且第一個字符必須為字母或者下劃線,long為C語言的保留字,不能作為用戶標識符,故選頃A錯誤.3Draax開頭的第一個為數(shù)字,而C語言規(guī)定,第一個字符必須為字母或者下劃線,故選項C錯誤;A.dat中的字符“.”不符合C語言中用戶標識符只能由字母、數(shù)字和下劃線組成的規(guī)定,故選項D錯誤.只有迭項B正確。
44.C解析:定義枚舉類型時,若不給枚舉元素指定初值,系統(tǒng)將從0開始依次給每個枚舉元素賦值,若只給某個(或部分)元素指定初值,其后元素的值將依次加1。
45.A解析:C語言中的函數(shù)可以進行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能嵌套定義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。
46.A解析:本題主要考查按位求反運算和整型常量的表示:①十六進制整型常量的形式是以數(shù)字0x或OX開頭的十六進制字符串;②按位求反運算的規(guī)則是:將二進制表示的運算對象按位取反,即將1變0,將0變I?!癘xll”即0000000000010001,進行按位求反運算“~Ox11”后為1111111111101110,即0xFFEE。
47.C解析:在for循環(huán)體中,首先判斷自變量i能否被5整除,然后再自加兩次,最后判斷i能否被8整除。當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故執(zhí)行“printf('%d',i);”語句,即輸出32。本題的答案為選項C)。
48.B
49.B解析:選項A的結(jié)尾沒用‘;’,所以不是一條語句:選項C中的表達式不會改變?nèi)魏巫兞康膬?nèi)容,也不是合法的賦值語句;選項D有語法錯誤,int應(yīng)該加上括號。所以,4個選項中只有選項B符合題意,運行后d的內(nèi)容被減一。
50.B解析:C語言中字符串是以'0'字符結(jié)束的,且strlen()函數(shù)計算的是'0'字符前的所有字符的個數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有投有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。
51.D解析:表達式a+=a-=a*a看起來復(fù)雜,其實將它分成兩個表達式來計算就簡單了:①第一個表達式(a-=a*a)=(a=a-a*a=-12);②第二個表達式(a+=a-=a*a)=(a=a+a=-24)。
52.A解析:本題考查函數(shù)的遞歸調(diào)用。在函數(shù)遞歸調(diào)用時,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3→0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的計算結(jié)果為2.
53.D解析:對二叉樹的前序遍歷是指先訪問根結(jié)點,然后訪問左于樹,最后訪問右子樹,并且在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左、右于樹。
54.C解析:本題中首先輸出逗號表達式“a=a+a,a+b,b”的值,即20。然后以八進制的形式輸出a+'a'-'A'的值為97對應(yīng)的八進制數(shù)141,由于最后一個表達式b沒有對應(yīng)輸出格式的輸出項表列就不會輸出。
55.D解析:數(shù)據(jù)流圖有4種成分:源點或終點、處理、數(shù)據(jù)存儲和哦數(shù)據(jù)流。數(shù)據(jù)存儲是處于靜止狀態(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運動中的數(shù)據(jù)。
56.D解析:考查通過賦值的方式給一維數(shù)組賦初值。字符串復(fù)制函數(shù)strcpy調(diào)用形式為:strcpy(s1,s2),此函數(shù)用來把s2所指字符串的內(nèi)容復(fù)制到s1所指存儲空間中,函數(shù)返回s1的值,即目的串的首地址;求字符串長度函數(shù)strlen的調(diào)用形式如下:strlen(s),此函數(shù)計算出以s為起始地址的字符串長度,并作為函數(shù)值返回。注意這一長度不包括串的結(jié)束標志。用于字符串處理的函數(shù)。
57.C解析:對二叉樹的前序遍歷是指先訪問根結(jié)點,然后訪問左子樹,最后訪問右子樹,并且,在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左、右子樹。
58.B解析:本題用循環(huán)的方法考查對數(shù)組概念的掌握。首先,當i=0時,數(shù)組中的位置是a[2][0]=7,當然,如果用排除法,就不用考慮后面的循環(huán),因為在4個選項中,第1個數(shù)為7的選項只有B)。本題執(zhí)行第2次循環(huán)時,i的值為1,則pfintf函數(shù)中的數(shù)組指向為a[1][1]=5,依次循環(huán),可求出答案。
59.C解析:如果沒有大括號,else總是與它上面的最近的if配對。所以本題中的elseif(ok2)是與if(!ok1)配對的,首先因為a<b成立所以進一步判斷b!=15也成立,再進一步判斷!ok1,為假,不執(zhí)行子句X=-1;繼續(xù)判斷ok2是否為真,ok2亦為假,故子句x=10;也不執(zhí)行,最后讓x=1;輸出x,所以結(jié)果應(yīng)該選擇C。
60.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第—個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i-,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。
61.A\n解釋程序是將源程序(如BASIC)作為輸入,解釋一句后就提交計算機執(zhí)行一句,并不形成目標程序。編譯程序是把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進行翻譯轉(zhuǎn)換,產(chǎn)生出機器語言的目標程序,然后再讓計算機執(zhí)行這個目標程序,得到計算結(jié)果。
\n
62.D本題考查參數(shù)的宏替換。為避免二義性有些參數(shù)表達式必須加括號,否則在實參表達式替換時,會出現(xiàn)錯誤。例如x為(m+n)時替換A:m+n*m+n,所以選項D最符合條件。
63.A
64.D
65.D
66.A取余運算符%兩邊都應(yīng)是正數(shù),賦值語句左邊必須是變量,不能是表達式,強制轉(zhuǎn)換語句強制類型應(yīng)加括號,而非加在變量上。
67.D
68.A
\n執(zhí)行fun(a)語句時,P指向的是字符串數(shù)組a的第一個字符串“Morning”,p自加1之后,p指向字符串數(shù)組a的第2個字符串“Afternoon”。
\n
69.A在變量定義doublea,*P:&a;中,}號是一個指針運算符,而非間址運算符,所以A錯誤。
70.D解析:兩個實體間的聯(lián)系可以歸納為3種類型:一對一聯(lián)系:一對一的聯(lián)系表現(xiàn)為主表中的每一條記錄只與相關(guān)表中的一條記錄相關(guān)聯(lián)。一對多聯(lián)系,一對多的聯(lián)系表現(xiàn)為主表中的每一條記錄與相關(guān)表中的多條記錄相關(guān)聯(lián)。多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為二個表中的多個記錄在相關(guān)表中同樣有多個記錄其匹配。本題中一個顧客可以購買多種商品,同一種商品可以有多個顧客購買,所以商品和顧客之間是多對多的聯(lián)系。
71.B
\n從實參傳遞過去的是結(jié)構(gòu)體系數(shù)組的第3個元素,所以輸出的name為Zhao。
72.B《軟件可行性分析報告》是軟件可行性研究的依據(jù)。
73.D
74.C
75.A函數(shù)參數(shù)傳遞是個不可逆的過程,形參不會把值傳回實參,所以A)選項(24)[答案]A)[解析]c的值為a乘以b的值,為3。所以答案選擇A)。
76.D
\n本題中del(char*s)函數(shù)實現(xiàn)的功能是:逐個讀入S數(shù)組中的字符,如果遇到數(shù)字,則將數(shù)字存在s中,遇到非數(shù)字字符則跳過。所以最后輸出的應(yīng)該是字符串S中所有的數(shù)字的個數(shù)。
\n
77.A解析:因為“intk=0;”,所以B)、C)、D)三個選項的表達式的值都等于1,而A)選項的表達式的值等于0。這是因為“k++”這個表達式先進行取k值的運算,然后是k值自加1。故本題答案為A)。
78.A
79.B數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機構(gòu),它是一種系統(tǒng)軟件,負責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等,是一種在操作系統(tǒng)支持下的系統(tǒng)軟件,因此本題答案為B)。
80.C
\n當i=0時,執(zhí)行switch語句,對應(yīng)的執(zhí)行case0,輸出0,因為沒有break,接著執(zhí)行case2的語句,又輸出一個0,接著執(zhí)行default語句,再輸出一個0,返回i++;i=1時,沒有case語句,執(zhí)行default語句,輸出一個1,接著又返回i++;當i=2時執(zhí)行case2和default語句分別輸出一個2,此時又返回i++,i變?yōu)?,for循環(huán)不成立,終止,最后輸出000122。
\n
81.(1)錯誤:while(*str!="@")
正確:while(*str)
(2)錯誤:(*str)++;
正確:str++;
82.\n#include”stdio.h”
\nmain
\n{intI,n;
\nfor(n=0,I=1900;I<=2000;I++)
\n{if(I%4==0I0!=0||I@0==0)
\n{printf(“%d”,I);n++;}
\nif(n%3==0)
\nprintf(“\\n”);}}}
\n2021-2022年福建省南平市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
2.用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
3.設(shè)一個鏈表最常用的操作是在末尾插入結(jié)點和刪除尾結(jié)點,則選用()最節(jié)省時間。
A.單鏈表B.單循環(huán)鏈表C.帶尾指針的單循環(huán)鏈表D.帶頭結(jié)點的雙循環(huán)鏈表
4.
5.有以下程序
main()
{
intn[3],i,j;
for(i=0;i<3;i++)
n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
程序運行后的輸出結(jié)果是A.A.2
B.1
C.0
D.3
6.
7.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序運行后的輸出結(jié)果是()。
A.IB.JC.KD.H
8.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.0,-1,-1,-1
B.0,-1,-1,0
C.0,-1,-1,0,-1,0
D.0,-1,-1,-1,-1,-1
9.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性
10.以下能正確定義一維數(shù)組的選項是
A.inta[5]={0,1,2,3,4,5}
B.chara[]={'0','1','2','3','4','5','\0'};
C.chara={'A','B','C'};
D.inta[5]="0123";
11.設(shè)inta=12,則執(zhí)行完語句a+=a-=a*a后,a的值是()。
A.552B.264C.144D.-264
12.有以下程序:
#include<stdio.h>,
main()
{intS;
scanf("%d",&s);
while(s>O)
{switch(s)
{casel:printf("%d",s+5);
case2:printf("%d",s+4);break;
case3:printf("%d",s+3);
default:("%d",s+1);break;
}
scanf("%d",&s);
}
}
運行時,若輸入123450<回車>,由輸出結(jié)果是()。
A.6566456B.66656C.66666D.6666656
13.C語言可執(zhí)行程序的開始執(zhí)行點是()。
A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句
14.在有序雙向鏈表中定位刪除一個元素的平均時間復(fù)雜度為()
A.O(1)B.O(N)C.O(logN)D.O(N*logN)
15.下述哪一條是順序存儲結(jié)構(gòu)的優(yōu)點()。
A.插入運算方便B.可方便地用于各種邏輯結(jié)構(gòu)的存儲表示C.存儲密度大D.刪除運算方便
16.用單鏈表表示的鏈式隊列,隊頭在鏈表的()位置。
A.鏈頭B.鏈尾C.鏈中D.可以由自己確定
17.下列程序的輸出結(jié)果是
#include"stdio.h"
#defineN3
#defineM3
voidfun(inta[M][N])
{printf("%d\n",*(a[1]+2));}
main()
{inta[M][N];
inti,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);}
A.3B.4C.5D.6
18.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱為______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
19.下列關(guān)于c語言用戶標識符的敘述中正確的是()。
A.用戶標識符中可以出現(xiàn)下劃線和中劃線(減號)
B.用戶標識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線
C.用戶標識符中可以出現(xiàn)下劃線,但不可以放在用戶標識符的開頭
D.用戶標識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在用戶標識符的開頭
20.數(shù)組A中,每個元素的長度為3個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放的存儲器內(nèi),該數(shù)組按行存放,元素A[5][8]的起始地址為()。
A.SA+141B.SA+180C.SA+222D.SA+225
二、2.填空題(20題)21.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。
22.若有以下程序:
intf(intx,inty)
{
return(y-x)*x;
}
main()
{
inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出的結(jié)果是【】。
23.面向?qū)ο蟮哪P椭?,最基本的概念是對象和______。
24.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
25.下列語句能循環(huán)______次。
ints=12;
while(s);
--s;
26.有下面的程序:
#include<stdio,h>
main()
{enumteam{my,your=4,his,her=his+10};
prinff("%d%d%d%d\n",my,your,his,her);
此程序的輸出結(jié)果是【】。
A)0123B)04010C)04515D)14515
27.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
28.下列程序的運行結(jié)果為【】。
main()
{inti,j,row=0,colum=0,max,
a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<a[i][j])
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);
}
29.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。
30.設(shè)有說明;
structDATE{intyear;intmonth;intday;};
請寫出一條定義語句,該語句定義d為上述結(jié)構(gòu)體類型變量,并同時為其成員year、month、day依次賦初值2006、10、1:【】。
31.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。
32.有以下程序:
#include<stclio.h>
main()
{charc;
while((c=getchar())!='?')putchar(--c);
}
程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結(jié)果為【】。
33.若運行時給變量x輸入12,則以下程序的運行結(jié)果是【】;
main(){
intx,y;
scanf(""%d"",&x);
y=x>12?x+10:x-12;
printf(""%d\n"",y);
}
34.以下程序的輸出結(jié)果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%c",*p[i]);
printf("\n");
}
35.以下程序的運行結(jié)果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
36.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于[]。
37.用復(fù)合的賦值運算符將變量x中的值增大2的賦值表達式是【】。
38.若fp已下確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:fp=fopen(【】);。
39.下面程序的運行結(jié)果是【】。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
40.下列程序的輸出結(jié)果是______。
#include<stdio.h>
sb(ints[].intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8);
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf(:%d",x);
}
printf("\n");
}
三、1.選擇題(20題)41.關(guān)于結(jié)構(gòu)化程序設(shè)計原則和方法描述錯誤的是()。
A.選用的結(jié)構(gòu)只準許有一個入口和一個出口
B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)
C.不允許使用GOTO語句
D.語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬
42.在軟件開發(fā)中,下面的任務(wù)不屬于設(shè)計階段的是()。
A.數(shù)據(jù)結(jié)構(gòu)設(shè)計B.給出系統(tǒng)模塊結(jié)構(gòu)C.定義模塊算法D.定義需求并建立系統(tǒng)模塊
43.以下選項中合法的用戶標識符是A.longB._2TestC.3DmaxD.A.dat
44.設(shè)有如下枚舉類型定義:enumpro_lan{Basic=3,C,Delphi=10,Pascal,Fortran};枚舉量Fortran的值為______。
A.4B.7C.12D.13
45.以下對C語言函數(shù)的有關(guān)描述中,正確的是
A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C.函數(shù)必須有返回值,否則不能使用函數(shù)
D.函數(shù)必須有返回值,返回值類型不定
46.表達式~0x11的值是()。
A.OxFFEEB.0x71C.0x0071D.0xFFE1
47.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。
A.5B.24C.32D.40
48.下面程序的運行結(jié)果是#include<stdio.h>voiddelch(char*s){inti,j;char*a;a=S;for(i=0,j=0;a[i]!='\0';i++)if(a[i]>='0'&aa[i]<='9'){s[j]=a[i];j++;}s[j]='\0';}main(){char*item="a34bC";delch(item);printf("\
A.abcB.34C.a34D.a34bc
49.以下合法的賦值語句是()
A.x=y=100B.d--;C.x+y;D.c=int(a+b);
50.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}
A.99B.520C.1320D.2020
51.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}
A.-8B.14C.0D.-24
52.下列程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){inta;if(x==0||x=1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}
A.2B.8C.9D.5
53.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。
A.XZCYABB.XYZABCC.XYABCZD.XYAZBC
54.已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}
A.表達式非法,輸出零或不確定值
B.因輸出項過多,無輸出或輸出不確定值
C.輸出結(jié)果為20,141
D.輸出結(jié)果為20,141,20
55.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。
A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)
56.閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}
A.nicetomeetyouyouB.nicetoC.meetyouyouD.nicetoyou
57.有下列二叉樹,
對此二叉樹前序遍歷的結(jié)果為()。
A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI
58.下面程序輸出的結(jié)果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);}
A.159B.753C.357D.591
59.下面程序輸出的結(jié)果是()。main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=-i;elseif(ok2)x=10;x=1;printf("%d\n",x);}
A.-1B.0C.1D.不確定的值
60.下面程序的輸出結(jié)果是______。#include<stdio.h>main(){char*p[]="BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}
A.SOB.SPC.SPOPKD.SHOB
四、選擇題(20題)61.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對
62.下列選項中不會引起二義性的宏定義是()。
A.#defineS(x)x*x
B.#defineS(x)(x)*(x)
C.#defineS(x)(x*x)
D.#defineS(x)((x)*(x))
63.
64.
65.
66.若變量a、b、x、i都已正確定義并賦值,則以下符合C語言語法的表達式是()。
A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)
67.
68.
有以下程序
#include<stdio.h>
voidfun(char**p)
{++p;printf("%s",*p);}
main
{char*a[]={"Morning","Afternoon","Evening","Night");
fun(a);
}
程序的運行結(jié)果是()。
A.AfternoonB.fternoonC.MorningD.orning
69.若有定義語句:doublea,*P=&a;以下敘述中錯誤的是()。
A.定義語句中的*號是-個間址運算符
B.定義語句中的木號是-個說明符
C.定義語句中的P只能存放double類型變量的地址
D.定義語句中,P=&a把變量a的地址作為初值賦給指針變量P
70.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是
A.一對一B.一對多C.多對一D.多對多
71.有以下程序:
#include<<stdio.h>
structstu
{intnum;
charname[10]:
intage;}
voidfun(structstu*p)
{printf("%s\n",(*p).name);}
themain
{
structstustudents[3]={{9801,"Zhang".20},
{9802,"Wang",19},{9803,"Zhao",18}}
fun(students+2);
}
輸出的結(jié)果是()。
A.ZhangB.ZhaoC.WangD.18
72.軟件需求規(guī)格說明書的作用不包括()。
A.軟件設(shè)計的依據(jù)B.軟件可行性研究的依據(jù)C.軟件驗收的依據(jù)D.用戶與開發(fā)人員對軟件要做什么的共同理解
73.
74.
75.以下敘述中錯誤的是(
)。A.函數(shù)形參的值也可以傳回給對應(yīng)的實參
B.函數(shù)調(diào)用可以作為一個獨立的語句存在
C.若函數(shù)有返回值,必須通過r;mm語句返回
D.C程序必須由一個或一個以上的函數(shù)組成
76.
下面程序的運行結(jié)果是()。
#inelude<stdio.h>
voiddel(char*s)
{inti,j;
char*a;
a=s:
for(i=0,j=0;a[i]!=\0;i++)
{if(a[i]>=0&&a[i]<=9)
{s[j]=a[i];
j++;
}
s[j]=\0;
}
}
main
{char*s="aa89gggh";
del(s):
printf("\n%s",s);
}
A.1B.2C.3D.4
77.設(shè)有定義:intk=0;以下選項的四個表達式中與其他三個表達式的值不相同的是()。
A.++kB.k+=1C.k++D.k+1
78.
79.數(shù)據(jù)庫管理系統(tǒng)是()。
A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)
80.
以下程序的輸出結(jié)果是()。
main
{inti;
for(i=0;i<3;i++)
switch(i){case0:printf("%d",i);
case2:printf("%d",i);
default:printf("%d",i);
}
}
A.000102B.000020C.000122D.000111
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:將str所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)化為A,z轉(zhuǎn)化為a),其他字符不變。
請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)
參考答案
1.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。
2.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。所以,本題的正確答案是B。
3.C
4.A
5.D初始時定義一個大小為3個一維整型數(shù)組,第一個for語句是對數(shù)組賦初值,每個值都為0。后面是一個for語句的嵌套調(diào)用,外層的循環(huán)變量i的取值為[0,2],內(nèi)層循環(huán)變量的取值范圍為[0,2]。最初外層的循環(huán)變量i=0,內(nèi)層的循環(huán)變量j取值從0到2,計算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外層for語句的循環(huán)變量為1時,內(nèi)層的循環(huán)變量j取值從0到2,計算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外層for語句的循環(huán)變量為2時,內(nèi)層的循環(huán)變量j取值從0到2,計算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的輸出結(jié)果為3。
6.D
7.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六進制數(shù),轉(zhuǎn)為十進制數(shù)x=9。“printf(“%C\\n”,‘A’+9);”,輸出格式要求是“%c”,因此將字符‘A’按字母順序向后偏移9個位置,可得結(jié)果為“J”。故本題答案為B選項。
8.A程序定義整型變量a和b,初值分別是1,-2。for語句中循環(huán)條件式為“a--&&b++”,因為--和++的優(yōu)先級高于邏輯與運算符&&,所以循環(huán)條件式等價于“(a--)&&(b++)”,自左向右運算。第1輪循環(huán),a、b的值為1,-2,首先執(zhí)行a--,a--的值為1,執(zhí)行完后a的值為0;繼續(xù)執(zhí)行b++,b++的值為-2,執(zhí)行完后b的值為-1。整個表達式“a--&&b++”的值為真,程序輸出0,-1。第2輪循環(huán),a、b的值分別為0,-1,首先執(zhí)行a--,a--的值為0,執(zhí)行完后a的值為-1,由于a--的值為0,根據(jù)邏輯與運算的短路原則,表達式“a--&&b++”的值一定為假,表達式b++不再執(zhí)行,循環(huán)結(jié)束,執(zhí)行循環(huán)體外的printf語句,輸出a、b的值分別為:-1,-1。所以本題輸出結(jié)果為:0,-1,-1,-1。本題答案為A選項。
9.B本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機的、不可重復(fù)的過程,它用于隔離和確認問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復(fù)的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。
10.B解析:選項A)中,定義的初值個數(shù)大于數(shù)組的長度;選項C)中,數(shù)組名后少了中括號;選項D
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏測量合同范例
- 業(yè)務(wù)銷售代表合同范本
- 二零二五年度保健品冷鏈運輸與追溯體系合同樣本
- 2021-2026年中國旋轉(zhuǎn)樓梯市場發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報告
- 瓶項目可行性研究報告評審方案設(shè)計2025年立項詳細標準+甲級
- “十三五”重點項目-浸漬瀝青項目節(jié)能評估報告(節(jié)能專)
- 2025年自動液項目可行性研究報告
- otc藥品合同范本
- 制冰公司購銷合同范本
- 業(yè)主聘用物業(yè)合同范本
- Unit 1 Nice boys and girls【知識精研】-一年級英語下學(xué)期(人教PEP版一起)
- 《口腔科學(xué)緒論》課件
- 《消防檢查指導(dǎo)手冊》(2024版)
- 粵教粵科版三年級下冊科學(xué)全冊課時練(同步練習(xí))
- 小學(xué)開學(xué)第一課禁毒安全
- 《婚戀觀教育》課件
- 10以內(nèi)除法口算練習(xí)題100套(十)
- 中醫(yī)小兒常見皮膚病
- 《醫(yī)療機構(gòu)環(huán)境表面清潔與消毒管理規(guī)范》-華西醫(yī)院案例
- 第45屆世界技能大賽餐廳服務(wù)項目全國選拔賽技術(shù)工作文件
- 個人保證無糾紛承諾保證書
評論
0/150
提交評論