版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
2021年黑龍江省鶴崗市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.結(jié)構(gòu)化程序的3種基本控制結(jié)構(gòu)是()。
A.遞歸、堆棧和隊列B.過程、子程序和函數(shù)C.順序、選擇和重復D.調(diào)用、返回和轉(zhuǎn)移
3.交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。
A.&B.^C.‖D.~
4.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。
A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}
B.switcha*b{casel0:x=a+b;default:y=a-b;}
C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}
D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}
5.有以下函數(shù)intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數(shù)的功能是()。A.查找X和y所指字符串中是否有\(zhòng)o
B.統(tǒng)計x和Y所指字符串中最前面連續(xù)相同的字符個數(shù)
C.將Y所指字符串賦給X所指定存儲空間
D.統(tǒng)計X和Y所指字符串中相同的字符個數(shù)
6.若x,i,j和k都是int型變量,則執(zhí)行下面表達式后x的值為()。x=(i=4,j=16,k=32)
A.4B.16C.32D.52
7.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面
B.C程序書寫格式嚴格,要求一行內(nèi)只能寫一個語句
C.C程序書寫格式自由,一個語句可以寫在多行上
D.用C語言編寫的程序只能放在一個程序文件中
8.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()
A.便于用戶,開發(fā)人員進行理解和交流
B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎和依據(jù)
C.作為確認測試和驗收的依據(jù)
D.便于開發(fā)人員進行需求分析
9.下面的哪一個保留字不能作為函數(shù)的返回類型()。
A.voidB.intC.newD.long
10.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
11.已知各變量的類型說明如下則以下不符合C語言語法的表達式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
12.
13.有以下程序:#include<stdio.h>intfun(intX,inty){if(X!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d/n",fun(2*a,fun(b,c)));}程序運行后的輸入結(jié)果是()。A.3B.6C.8D.12
14.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
15.以下選項中,不能作為合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
16.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序運行后的輸出結(jié)果是()。A.5B.6C.8D.9
17.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個區(qū)間,并標識了地理位置信息,區(qū)間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?()
A.17B.18C.19D.20
18.需求分析最終結(jié)果是產(chǎn)生
A.項目開發(fā)計劃B.需求規(guī)格說明書C.設計說明書D.可行性分析報告
19.
20.下列選項中不是字符常量的是()。A.A.'\v'
B.'\x2a'
C.'a'
D."\0"
二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是【】。
#include<stdio,h>
#include<string,h>
main()
{charch[]="abc".,x[3][4]:inti:
for(i=0;i<3:i++)strcpy(x[i],ch):
for(i=0;i<3:i++)printf("%s",&x[i][i]);
printf("\n")
}
22.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
23.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
24.設a、b、c為整數(shù),且a=2、b=3、c=4,則執(zhí)行完以下語句后,a的值是【】。
a*=18+(b++)-(++c);
25.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結(jié)構(gòu)的改變,如存儲設備的更換、物理存儲的更換、存取方式等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應用程序的變化,稱為【】。
26.最簡單的交換排序方法是______。
27.設有如下變量說明,則a+(int)((int)b+c)>>(int)(b-c)的值為【】。
inta=5;floatb=7.2,c=3.6;
28.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
29.下列程序的運行結(jié)果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
30.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______三種。
31.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
white(s[i]){d[j]=【】;j++;}
d[j]=0;
32.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。
33.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:
fp=fopen(【】);。
34.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
35.有以下程序
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
執(zhí)行后輸出結(jié)果是【】。
36.以下說明語句中,【】是結(jié)構(gòu)體類型名。
typedefstruct
{intn;
charch[8];
}PER;
37.二叉樹按某順序線索化后,其結(jié)點均有指向其前趨和后繼的線索,該說法是【】的。
38.下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之間用空格分隔。
wordnum(str)
charstr[];
{inti,num=0,word=0;
for(i=0;str[i]!=【】;i++)
if(【】==)word=0;
elseif(word==0)
{
word=1;
【】;
}
return(num);
}
39.以下程序運行結(jié)果是【】。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)return(2);
p=x*func(x-1);
return(p);}
main()
{printf("%d\n",func(4));}
40.若有定義語句:inta=5;,則表達式:a++的值是【】。
三、1.選擇題(20題)41.以下各選項企圖說明一種新的類型名,其中正確的是______。
A.typedefv1int
B.typedefv2=int;
C.typedefintv3;
D.typedefv4=int
42.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
43.在設計程序時,應采納的原則之一是______。
A.程序結(jié)構(gòu)應有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好
44.設有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()。
A.p=&a;B.p=data.a;C.p=&data.a;D.p=a;
45.下面程序的輸出結(jié)果是()。#include"stdio.h"fun(xintx{inty=0;staticintz=5;z=x++,y++;return(Z);}main(){inta=4,i,j;for(i=0;i<2;i++)j=fun(a++);printf("%d",j);}
A.0B.3C.4D.5
46.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)()。inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))
47.若a,b,c1,c2,x,y均是整型變量,正確的switch語句是______。
A.switch(a+b);{case1:y=a+b;break;case0:y=a-b;break;}
B.switch(a*a+b*b){case3;case1:y=a+b;break;case3:y=b-a;break;}
C.switcha{casec1:y=a-b;break;casec2;x=a*b;break;default:x=a+b;}
D.switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:case11:y=a-b;break;}
48.以下程序的輸出結(jié)果是_______。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不確定的(因變量無定義)B.0C.-1D.1
49.設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;
50.下列敘述中正確的是()。
A.C程序由函數(shù)組成
B.C程序由主函數(shù)構(gòu)成
C.C程序由函數(shù)和過程構(gòu)成
D.在C程序中無論是整數(shù)還是實數(shù),都可以正確無誤的表示出來
51.以下敘述中錯誤的是()。
A.可以通過typedef增加新的類型
B.可以用typedef將已存在的類型用一個新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedef可以為各種類型起別名,但不能為變量起別名
52.表示“在使用x之后,使x的值加1”的正確方式是()
A.++xB.x++C.+xD.+x+
53.以下能正確定義一維數(shù)組的選項是______。
A.inta[5]={0,1,2,3,4,5};
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
54.若有說明語句:double*p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。
A.*p=&a;sCanf("%1f",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%1f",*p);
D.p=&a;scanf("%1f",p);
55.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a│0x8;c=b<<1;printf("%d%d\n",b,C);}程序運行后的輸出結(jié)果是()。
A.-1112B.-19C.1224D.1122
56.線性表常采用的兩種存儲結(jié)構(gòu)是()
A.散列方法和索引方式B.鏈表存儲結(jié)構(gòu)和數(shù)組C.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
57.下列關于單目運算符++、--的敘述中正確的是A.它們的運算對象可以是任何變量和常量
B.它們的運算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運算對象可以是char型變量、int型變量和float型變量
58.若有說明:inta[3][4]={0};則下面正確的敘述是
A.只有元素a[0][0]可得到初值0
B.此說明語句不正確
C.數(shù)組a中各元素都可得到初值,但其值不一定為0
D.數(shù)組a中每個元素均可得到初值0
59.若變量已正確定義,要求通過scanf("%c%d%c%d",&c1,&a,&c2,&B)語句給變量a和b分別賦32和45,給變量c1和c2分別賦字符A和B;下列選項中數(shù)據(jù)從第1列開始輸入,正確的輸入形式是()。
A.A32<CR>B45<CR>B.A45<CR>B32<CR>C.A32B45<CR>D.A32B45<CR>
60.下面判斷正確的是
A.char*a="china";等價于char*a;*a="china";
B.charstr[5]={"china"};等價于charstr[]={"china"};
C.char*s="china";等價于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等價于charc[4]=d[4]="abc";
四、選擇題(20題)61.若有說明:int*P,m=5,n;,以下正確的程序段是()。A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p);
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
62.以下程序的輸出結(jié)果是()。
#definef(x)x*x
main
{inta=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.9B.6C.36D.18
63.結(jié)構(gòu)化程序設計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精
64.
65.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。
A.EOFB.-lC.非零值D.0
66.以下程序中函數(shù)f的功能是:當na9為1時,進行由小到大排序;當na9為0時,進行由大到小排序。
程序運行后的輸出結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
67.以下敘述中錯誤的是()。
A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型
B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針
C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員
D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值
68.現(xiàn)有如下程序段:
則程序的輸出結(jié)果為()。
A.78B.23C.21D.28
69.
70.
71.
以下程序的輸出結(jié)果是()。
intf(intA)
{returna%2;}
main
{ints[8]={1,3,5,2,4,6},i,d=0;
for(i=0;f(s[8]);i++)d+=s[i];
printf("%d\n",d);
}
A.9B.11C.19D.21
72.耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性
C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度
D.內(nèi)聚性是指模塊間互相連接的緊密程度
73.下列合法的聲明語句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
74.假定X和Y為double型,則表達式x=2,y=x+3/2的值是()。
A.3.500000B.3C.2.000000D.3.000000
75.有以下程序:
#include<stdio.h>
voidmain()
{fILE*fp;inti,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);
fclose(fp)
fp=fopen("data.dat","rb");
fseek(fp,-2L*sizeof(int),1,fp);/*文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/
fclose(fp);
printf("%d\n",b);
}
程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是()。
A.使位置指針從文件末尾向前移2*sizeof(int)字節(jié)
B.使位置指針從文件末尾向前移2字節(jié)
C.使位置指針向文件末尾向前移懂2*sizeof(int)字節(jié)
D.使位置指針向文件末尾移動2字節(jié)
76.下列選項中屬于結(jié)構(gòu)化程序設計原則的是()。
A.可封裝
B.多態(tài)性
C.自下而上
D.逐步求精
77.
78.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,intc)
{c=*a+*b;}
main()
{inta[2]={6,9},c=0;
fun(a,a+1,&c);
printf("%d\n",c);
}
程序輸出的結(jié)果是
A.6B.9
C.0D.15
79.程序流程圖中帶有箭頭的線段表示的是()。
A.圖元關系B.數(shù)據(jù)流C.控制流D.調(diào)用關系
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCIl碼升序排序后輸出。
例如,輸入opdye,則應輸出deopy。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include%string.h>
#include%stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
intproc(charstr[])
{
charC;
unsignedi,j;
for(i=0;i<strlen(str)-1;i++)
for(j=i+1;j<strlen(str);j4-+)
if(str[i]>str[j])
{
c=str[j]:
//****found****
str[j]=str[i++];
str[i]=C;
}
}
voidmain
{
charst/[81];
system("CLS");
printf("\nPleaseenteracharacter
string:");
gets(str);
printf("\nknBeforesorting:\n%s",str);
proc(str);
printf("\nAftersortingdecendingly:\n
%S",str);
}
六、程序設計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標,最大值和它所在的下標通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.D
2.C1966年Boehm和Jacopini證明了程序設計語言僅僅使用順序、選擇和重復3種基本控制結(jié)構(gòu)就足以表達出各種其他形式結(jié)構(gòu)的程序設計方法。本題答案為C選項。
3.B按邏輯位運算特點:①用按位與運算將特定位清為0或保留特定位;②用按位或運算將特定的位置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。
4.D選項A,當cl和c2相等時,不成立;選項B,a*b要用括號括起來;選項C,case與后面的數(shù)字用空格隔開。
5.B由題中while(*x==*y*x!=\\n)可知此函數(shù)是統(tǒng)計x和y所指向的字符串中最前面的聯(lián)系相同的字符的個數(shù)。
6.C
7.C
8.D解析:軟件需求規(guī)格說明書SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它有以下幾個方面的作用,①便于用戶、開發(fā)人員進行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎和依據(jù);③作為確認測試和驗收的依據(jù)。
9.C
10.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負責數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。
11.A
12.C
13.B此題考查的是函數(shù)fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。
14.B
15.B解析:C語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面的指數(shù)必須是整數(shù),而選項B)中,e(E)后面的指數(shù)是小數(shù),所以不合法。
16.B由題可知,fun(&a[3])是將&a[3]作為參數(shù),而fun(int*p)后執(zhí)行的語句為p[5],由數(shù)組a可知輸出的為6。
17.D
18.B解析:本題考核軟件工程中的需求分析環(huán)節(jié)。需求分析應交付的主要文檔就是需求規(guī)格說明書。
19.D
20.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應的ASCII碼值。"\0"用雙引號故不正確。
21.abcbccabcbcc解析:for循環(huán)用strcpy函數(shù)將字符數(shù)組ch的值'abc',分別復制給二維數(shù)組x的每一行,然后通過for循環(huán)先后打印出以x[0][0],x[1][1],x[2][2]開頭的字符串'abe','bc','c',所以輸出結(jié)果為:abcbcc。
22.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。
23.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。
24.3232解析:a*=18+(b++)-(++c)即a=a*(18+(b++)-(++c)),++c的值為5,a=2*(18+3-5)=32。b++是先使用b的值在對b加1,++c是先對c加1再使用c的值。
25.物理獨立性物理獨立性解析:數(shù)據(jù)的物理結(jié)構(gòu)改變,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應用程序的變化,這種性質(zhì)叫做物理獨立性。
26.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。
27.11解析:在表達式a+(int)((int)b+c)>>(int)(b-c)中圓括號最優(yōu)先,其次為類型轉(zhuǎn)換(int)、加法+、減法-、右移運算>>。所以先看兩個圓括號((int)b+c)和(b-c),前者b先被轉(zhuǎn)換為int型7,然后與c相加得10.6,后者結(jié)果是3.6,現(xiàn)在表達式為a+(iot)10.6>>(int)3.6。C語言中,float型轉(zhuǎn)換為int型是截尾取整,所以表達式進一步簡化為5+10>>3=>15>>3。由于15的二進制為000011112(下標),所以15>>3的結(jié)栗是000000012(下標),即1。
28.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。
29.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項的和賦值給數(shù)組當前元素,得到a的值應為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個的形式輸出。
30.關系模型關系模型
31.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其有元素。本題應使用i舶自增后置來實現(xiàn)。
32.前后件關系前后件關系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關系,是通過存儲空間的位置來實現(xiàn)的,而對于鏈式存儲來說,數(shù)據(jù)元素之間的前后件關系是通過指針來實現(xiàn)的。
33.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應該填'd1.dat','rb'。
34.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標,需先預設1個臨時最大元素的下標,并順序逐一考查數(shù)組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預設的最大元素下標是數(shù)組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s[k)更大時,應該用p更新k。所以在空框處應填入代碼“k=p;”。
35.-4-4解析:if…else構(gòu)造了一種二路分支選擇,是一種最基本的選擇結(jié)構(gòu),if(條件)S1(if分結(jié)構(gòu))elseS2(else分結(jié)構(gòu)),它的工作過程是:先對條件表達式進行判斷,若為真(成立,值為非零),就執(zhí)行if分結(jié)構(gòu)(S1);否則(不成立,值為0),就執(zhí)行else分結(jié)構(gòu)(S2)。本題中,n=0,可以判斷(!n)為真,執(zhí)行x=x-1=2-1=1;m=1,可以判斷(m)為真,執(zhí)行x=x-2=1-2=-1進而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。
36.PERPER解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結(jié)構(gòu)體類型,此時,也可以用PER來定義變量。
37.錯誤錯誤解析:線索二叉樹是利用二叉鏈表存儲結(jié)構(gòu)中的空鏈域來存放其前趨或后繼。由于二叉樹度為2的非終端結(jié)點無空鏈域,因此它沒有空鏈域用來存放前趨和后繼。
38.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:觀察題目要求,可以知道以下幾點:
①for循環(huán)的結(jié)束條件應當是:str[i]已是字符串的最后一個字符;
②str[i]代表字符串sb中的第i+1個字符:
③整型變量num的值是要記錄的單詞的個數(shù)。
C語言中規(guī)定字符串的最后一個字符是一個隱含的字符串結(jié)束符“\\0”,所以在題中第一個空中應填寫“\\0”;題中第二個空應填寫“str[i]”,以判斷當前位置的字符是否為空格;題中第二個空中應當填寫“num++”,通過變量num的加1累加得到字符串中的單詞個數(shù)。
39.4848解析:本題主要考查的是函數(shù)的遞歸調(diào)用,遞歸的終止條件是x==0或x==1,然后用已知值逐步遞推向上求未知值,直到得到最終的結(jié)果。
func(4)=4*func(3);
func(3)=3*func(2);
func(2)=2*func(1);
func(1)=2;
所以func(2)=2*2=4;
func(3)=3*4=12;
fune(4)=4*12=48。
40.55解析:a++的含義是在使用a值以后,使a值加1,所以a++的值為5。
41.C解析:C語言中可以使用typedef來重新定義已有的數(shù)據(jù)類型,相當于為數(shù)據(jù)類型取個別名。
42.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。
43.A解析:程序設計的風格主要強調(diào)程序的簡單、清晰和可理解性,以便讀者理解。因此選項A是正確答案。程序濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應減少或取消;程序的長短要依照實際需要而定,并不是越短越好。因此選項B、C、D都是錯誤的。
44.C解析:要注意不能將結(jié)構(gòu)體變量作為一個整體進行輸入和輸出,只能對結(jié)構(gòu)體變量中的各個成員進行輸入和輸出。引用結(jié)構(gòu)體變量中成員的方式有以下幾種:結(jié)構(gòu)體變量名.成員名;指針變量名->成員名;(*指針變量名).成員名。
45.D解析:本題在fun()函數(shù)中定義了一個靜態(tài)局部變量z,在第一次調(diào)用此函數(shù)時,z被初始化為5,而以后的調(diào)用2都會保留上次調(diào)用后的值。主函數(shù)通過一個for循環(huán),二次調(diào)用fun()函數(shù),第1次調(diào)用實參表達式a++的值為4,執(zhí)行z=x++,y++;語句,因運算符“=”的優(yōu)先級高于“,”,故z的值為表達式x++的值,x++是先對z賦值再對x加1,則z的值為4。第二次調(diào)用實參表達式a++的值為5,返回結(jié)果也為5,所以最后輸出結(jié)果是5。D為所選。
46.D解析:本題考查數(shù)組指針的應用。選項D)第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
47.D解析:由switch語句的格式排除A、C項,選項B中出現(xiàn)了兩個相同的case標號。
48.B解析:NULL在C編譯器中是—個值為0的常量,它的定義在頭文件“stdio.h”中,本題的程序在一開始就包含了這個頭文件,所以,在打印的時候,將打印出0。
49.D解析:本題考核的知識點是指針變量定義和賦值語句的基本應用。在使用一個指針變量之前,先要用聲明語句對其進行定義,在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配了一個存儲單元,用它來存放地址。在C語言中有兩個有關指針的運算符:&運算符,為取地址運算符,*運算符是指針運算符,*p代表p所指向的變量。本題中首先定義了整型變量n,其初值為0,接著定義一個指針變量p并讓它指向n,然后定義了一個指向指針的指針變量q并讓它指向p,選項A中將常量1賦給指針p不正確;選項B也是將常量2賦給*p,故選項B不正確;選項C中P不是指向指針的指針變量,而將他賦值給一個指向指針的指針變量小顯然不正確,所以,4個選項中選項D符合題意。
50.A解析:本題涉及C語言最基本的兩個知識點:①C程序是由函數(shù)構(gòu)成的,有且僅有一個主函數(shù),也可以有其他的函數(shù);②整數(shù)在允許的范圍內(nèi)可以準確無誤的表示出來,但計算機的存儲能力有限,不能表示無限精度的實數(shù)。
51.A解析:typedef用來聲明新的類型名來代替已有的類型名,typedef只是對已經(jīng)存在的類型增加了一個類型名,原有類型名仍有效。typedef不能用來定義變量。
52.B
53.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應加上“[];選項D)的類型說明符錯誤,應改為char;選項B)中的0,1,2,3,4,5分別表示對應字符的ASCII碼,所以正確。
54.D解析:double*p,a;語句表示定義了一個指向雙精度型的指針變量p和雙精度型變量a,而語句p=&a表示將變量a的地址賦給指針變量p;scanf'('%1f',p)表示用鍵盤輸入的數(shù)賦給指針變量p所指向的地址單元中。scanf()函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f(或%1e)。否則,數(shù)據(jù)不能正確輸入。所以選項D)為正確答案。
55.D解析:將a的值轉(zhuǎn)換為二進制位:00000011,再與0x8的二進制“00001000”位與,得到結(jié)果“00001011”賦值給b,b的值為11,再將b左移一位得到;00010110,賦值給c,c的值為22,所以最后輸出的b,c的值位11,22。所以4個選項中D正確。
56.CC)【解析】線性表的存儲通常要用兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。
57.D本題主要考查自加與自減運算符。在C語言中,自加與自減運算符具有以下性質(zhì):
(1)自加運算符“++”和自減運算符“--”的運算本身是一種賦值運算,其結(jié)果是使運算對象的值增1或減1。
(2)++、--運算符是單目運算符,運算對象可以是整型變量或字符型變量,也可以是實型變量,但不能是常量和表達式。
(3)自加、自減運算符無論是作為前綴還是后綴運算符,對于變量而言,其效果相同,但作為表達式來說,其值不同。
(4)++和--運算符的結(jié)合方向是“自右向左”。
(5)不要在一個表達式中對同一個變量進行多次自增或自減運算。可以知道本題正確的答案是D。
58.D解析:二維數(shù)組初始化時允許只對部分元素賦初值,其余自動為0。
59.D解析:本題考查scanf函數(shù)的基本格式。當需要從鍵盤上輸入數(shù)據(jù)時,輸入的數(shù)值之間需要有間隔符(空格符號、制表符號、回車符號),間隔符號的使用數(shù)量不限。直到按下回車鍵,scanf函數(shù)才會接受從鍵盤輸入的數(shù)據(jù)。
60.C解析:選項A)char*a;*a=“china”應改為a=china;,選項B)應該是charstr[6];D)項表述方法有錯誤。
61.D"&”是求址運算符,”*”是指變量說明符。選項A)、B)改為scanf(”%d”,p);選項c)中指針變量P未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險,建議不使用。
62.C
63.A結(jié)構(gòu)化程序設計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。
64.C
65.D本題考查leon(tp)函數(shù),其功能是:測試所指的文件的位置指針是否已達到文件尾,如果已達到文件尾,則函數(shù)返回非0值;否則返回0,表示文件未結(jié)束。
66.B本題重點考察函數(shù)的參數(shù)傳遞,函數(shù)的參數(shù)傳遞分為傳值和傳地址兩種情況。本題就是結(jié)合數(shù)組考查參數(shù)傳遞的情形。函數(shù)f完成的功能是對數(shù)據(jù)進行排序,語句f(&a[2],5,O)的作用是對從a[2]開始的5個元素進行從大到小排序。注意:這里傳遞的是地址&a[2],所以排序操作可看作是直接對數(shù)組a操作,執(zhí)行后的結(jié)果為5,4,7,6,3,2,1,8,9,10。語句f(a,5,1)對數(shù)組a的前5個元素從小到大排序,排序后數(shù)組為:3,4,5,6,7,2,1,8,9,10。因此B選項正確。
67.A函數(shù)返回值類型可以是簡單類型和結(jié)構(gòu)體類型。
68.C通過地址來引用二維數(shù)組,若有以下定
69.D
70.B
71.A
\n在程序中當i=0時,s[o]=1,f(s[0])為1,執(zhí)行d+=s[0],d的值為1,i++也變?yōu)?。當i=1時,s[1]=3,f(s[1])為1,也為非0,繼續(xù)執(zhí)行后面的表達式,此時d的值為1+3=4,繼續(xù)著i++變?yōu)?,接著執(zhí)行for循環(huán),可知for循環(huán)的目的是把S數(shù)組中的奇數(shù)相加,因此最后d的值為1+3+5為9,故選擇A選項。
\n
72.B模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設計,應盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以C與D錯誤。故答案為B選項。
73.A標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。B選項int不是表達變量類型的標識符,它不能再用做變量名和函數(shù)名。C選項do是C語言的一個關鍵字。D選項標識符只能以字母或下劃線開始。
74.D本題考查C語言中變量類型的轉(zhuǎn)換。
C語言中若參與運算的變量的數(shù)據(jù)類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換數(shù)據(jù)始終往長度增加的方向進行,以確保精確度,如int和long運算,則將int轉(zhuǎn)換為long再運算,所有的浮點運算都是以雙精度(double)進行的。
題目中x、y都為double型數(shù)據(jù),而表達式3/2為兩個整型變量之間的計算,計算結(jié)果只保留整數(shù)部分,小數(shù)部分省略掉。3/2的結(jié)果為1。后面變?yōu)橛嬎銀=x+1,這時都需要變?yōu)閐ouble型數(shù)據(jù),結(jié)果為3.000000。
75.Afseek用于二進制方式打開的文件,移動文件讀寫指針位置.
76.D模塊化、自頂向下、逐步求精和限制使用goto語句是結(jié)構(gòu)化程序設計的原則。因此答案明顯為D.逐步求精。
77.B
78.C函數(shù)的參數(shù)通常分為兩種:數(shù)值變量和指針變量。數(shù)值變量被函數(shù)調(diào)用后,函數(shù)內(nèi)的參數(shù)為該數(shù)值變量的副本。對副本的一切操作都不會影響到調(diào)用函數(shù)外原來的參數(shù)。指針變量在函數(shù)中傳遞的是對其存放地址的一份副本,該副本存放的地址與原來的指針所存的地址一致。在函數(shù)體內(nèi)修改指針存放的地址對應的值與在函數(shù)體外對原參數(shù)的修改同樣有效,因為原參數(shù)也指向該地址。
題目中的程序包括主函數(shù)main和fun函數(shù),其中fun函數(shù)為void型,不需要fun函數(shù)返回值。fun函數(shù)的形參為2個整型指針變量和1個整型變量。在main函數(shù)中調(diào)用fun函數(shù),a為指向數(shù)組第一個數(shù)的地址,a+1指向數(shù)組第二個數(shù)的地址,變量c的初始值為0。雖然在fun函數(shù)中也有整型變量c,但是該變量的使用范圍為fun函數(shù),與main中的變量c沒有關系,有c=*a+*b,即c=15,但是main函數(shù)對fun函數(shù)的參數(shù)傳遞為數(shù)值變量,fun函數(shù)中變量c數(shù)值的改變不會影響main函數(shù)中變量c的數(shù)值改變,即主函數(shù)中變量c的值依然為0。
79.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關系。在模塊之間用帶有箭頭的線段表示調(diào)用關系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;
表示邏輯條件。
80.D
81.(1)錯誤:intproc(charstr[])
\n正確:voidproc(charstr[])
\n(2)錯誤:str[j]=str[i++];
\n正確:str[j]=str[i];
\n【解析】由主函數(shù)中的函數(shù)調(diào)用可知,函數(shù)proc沒有返回值。因此,“intproc(charstr[])”應改為“voidproc(charstr[])”;由函數(shù)proc可知,if語句塊完成將字符串str中的第i個元素與第j個元素相交換。因此,“str[j]=str[i++];”應改為“str[j]=str[i];”。
\n
82.
【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個元素。首先將最大值賦值為數(shù)組中的第一個元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標賦值給變量d。
2021年黑龍江省鶴崗市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.結(jié)構(gòu)化程序的3種基本控制結(jié)構(gòu)是()。
A.遞歸、堆棧和隊列B.過程、子程序和函數(shù)C.順序、選擇和重復D.調(diào)用、返回和轉(zhuǎn)移
3.交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。
A.&B.^C.‖D.~
4.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。
A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}
B.switcha*b{casel0:x=a+b;default:y=a-b;}
C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}
D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}
5.有以下函數(shù)intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數(shù)的功能是()。A.查找X和y所指字符串中是否有\(zhòng)o
B.統(tǒng)計x和Y所指字符串中最前面連續(xù)相同的字符個數(shù)
C.將Y所指字符串賦給X所指定存儲空間
D.統(tǒng)計X和Y所指字符串中相同的字符個數(shù)
6.若x,i,j和k都是int型變量,則執(zhí)行下面表達式后x的值為()。x=(i=4,j=16,k=32)
A.4B.16C.32D.52
7.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面
B.C程序書寫格式嚴格,要求一行內(nèi)只能寫一個語句
C.C程序書寫格式自由,一個語句可以寫在多行上
D.用C語言編寫的程序只能放在一個程序文件中
8.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()
A.便于用戶,開發(fā)人員進行理解和交流
B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎和依據(jù)
C.作為確認測試和驗收的依據(jù)
D.便于開發(fā)人員進行需求分析
9.下面的哪一個保留字不能作為函數(shù)的返回類型()。
A.voidB.intC.newD.long
10.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
11.已知各變量的類型說明如下則以下不符合C語言語法的表達式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
12.
13.有以下程序:#include<stdio.h>intfun(intX,inty){if(X!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d/n",fun(2*a,fun(b,c)));}程序運行后的輸入結(jié)果是()。A.3B.6C.8D.12
14.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
15.以下選項中,不能作為合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
16.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序運行后的輸出結(jié)果是()。A.5B.6C.8D.9
17.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個區(qū)間,并標識了地理位置信息,區(qū)間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?()
A.17B.18C.19D.20
18.需求分析最終結(jié)果是產(chǎn)生
A.項目開發(fā)計劃B.需求規(guī)格說明書C.設計說明書D.可行性分析報告
19.
20.下列選項中不是字符常量的是()。A.A.'\v'
B.'\x2a'
C.'a'
D."\0"
二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是【】。
#include<stdio,h>
#include<string,h>
main()
{charch[]="abc".,x[3][4]:inti:
for(i=0;i<3:i++)strcpy(x[i],ch):
for(i=0;i<3:i++)printf("%s",&x[i][i]);
printf("\n")
}
22.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
23.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
24.設a、b、c為整數(shù),且a=2、b=3、c=4,則執(zhí)行完以下語句后,a的值是【】。
a*=18+(b++)-(++c);
25.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結(jié)構(gòu)的改變,如存儲設備的更換、物理存儲的更換、存取方式等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應用程序的變化,稱為【】。
26.最簡單的交換排序方法是______。
27.設有如下變量說明,則a+(int)((int)b+c)>>(int)(b-c)的值為【】。
inta=5;floatb=7.2,c=3.6;
28.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
29.下列程序的運行結(jié)果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
30.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______三種。
31.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
white(s[i]){d[j]=【】;j++;}
d[j]=0;
32.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。
33.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:
fp=fopen(【】);。
34.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
35.有以下程序
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
執(zhí)行后輸出結(jié)果是【】。
36.以下說明語句中,【】是結(jié)構(gòu)體類型名。
typedefstruct
{intn;
charch[8];
}PER;
37.二叉樹按某順序線索化后,其結(jié)點均有指向其前趨和后繼的線索,該說法是【】的。
38.下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之間用空格分隔。
wordnum(str)
charstr[];
{inti,num=0,word=0;
for(i=0;str[i]!=【】;i++)
if(【】==)word=0;
elseif(word==0)
{
word=1;
【】;
}
return(num);
}
39.以下程序運行結(jié)果是【】。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)return(2);
p=x*func(x-1);
return(p);}
main()
{printf("%d\n",func(4));}
40.若有定義語句:inta=5;,則表達式:a++的值是【】。
三、1.選擇題(20題)41.以下各選項企圖說明一種新的類型名,其中正確的是______。
A.typedefv1int
B.typedefv2=int;
C.typedefintv3;
D.typedefv4=int
42.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
43.在設計程序時,應采納的原則之一是______。
A.程序結(jié)構(gòu)應有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好
44.設有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()。
A.p=&a;B.p=data.a;C.p=&data.a;D.p=a;
45.下面程序的輸出結(jié)果是()。#include"stdio.h"fun(xintx{inty=0;staticintz=5;z=x++,y++;return(Z);}main(){inta=4,i,j;for(i=0;i<2;i++)j=fun(a++);printf("%d",j);}
A.0B.3C.4D.5
46.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)()。inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))
47.若a,b,c1,c2,x,y均是整型變量,正確的switch語句是______。
A.switch(a+b);{case1:y=a+b;break;case0:y=a-b;break;}
B.switch(a*a+b*b){case3;case1:y=a+b;break;case3:y=b-a;break;}
C.switcha{casec1:y=a-b;break;casec2;x=a*b;break;default:x=a+b;}
D.switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:case11:y=a-b;break;}
48.以下程序的輸出結(jié)果是_______。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不確定的(因變量無定義)B.0C.-1D.1
49.設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;
50.下列敘述中正確的是()。
A.C程序由函數(shù)組成
B.C程序由主函數(shù)構(gòu)成
C.C程序由函數(shù)和過程構(gòu)成
D.在C程序中無論是整數(shù)還是實數(shù),都可以正確無誤的表示出來
51.以下敘述中錯誤的是()。
A.可以通過typedef增加新的類型
B.可以用typedef將已存在的類型用一個新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedef可以為各種類型起別名,但不能為變量起別名
52.表示“在使用x之后,使x的值加1”的正確方式是()
A.++xB.x++C.+xD.+x+
53.以下能正確定義一維數(shù)組的選項是______。
A.inta[5]={0,1,2,3,4,5};
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
54.若有說明語句:double*p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。
A.*p=&a;sCanf("%1f",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%1f",*p);
D.p=&a;scanf("%1f",p);
55.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a│0x8;c=b<<1;printf("%d%d\n",b,C);}程序運行后的輸出結(jié)果是()。
A.-1112B.-19C.1224D.1122
56.線性表常采用的兩種存儲結(jié)構(gòu)是()
A.散列方法和索引方式B.鏈表存儲結(jié)構(gòu)和數(shù)組C.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
57.下列關于單目運算符++、--的敘述中正確的是A.它們的運算對象可以是任何變量和常量
B.它們的運算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運算對象可以是char型變量、int型變量和float型變量
58.若有說明:inta[3][4]={0};則下面正確的敘述是
A.只有元素a[0][0]可得到初值0
B.此說明語句不正確
C.數(shù)組a中各元素都可得到初值,但其值不一定為0
D.數(shù)組a中每個元素均可得到初值0
59.若變量已正確定義,要求通過scanf("%c%d%c%d",&c1,&a,&c2,&B)語句給變量a和b分別賦32和45,給變量c1和c2分別賦字符A和B;下列選項中數(shù)據(jù)從第1列開始輸入,正確的輸入形式是()。
A.A32<CR>B45<CR>B.A45<CR>B32<CR>C.A32B45<CR>D.A32B45<CR>
60.下面判斷正確的是
A.char*a="china";等價于char*a;*a="china";
B.charstr[5]={"china"};等價于charstr[]={"china"};
C.char*s="china";等價于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等價于charc[4]=d[4]="abc";
四、選擇題(20題)61.若有說明:int*P,m=5,n;,以下正確的程序段是()。A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p);
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
62.以下程序的輸出結(jié)果是()。
#definef(x)x*x
main
{inta=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.9B.6C.36D.18
63.結(jié)構(gòu)化程序設計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精
64.
65.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。
A.EOFB.-lC.非零值D.0
66.以下程序中函數(shù)f的功能是:當na9為1時,進行由小到大排序;當na9為0時,進行由大到小排序。
程序運行后的輸出結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
67.以下敘述中錯誤的是()。
A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型
B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針
C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員
D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值
68.現(xiàn)有如下程序段:
則程序的輸出結(jié)果為()。
A.78B.23C.21D.28
69.
70.
71.
以下程序的輸出結(jié)果是()。
intf(intA)
{returna%2;}
main
{ints[8]={1,3,5,2,4,6},i,d=0;
for(i=0;f(s[8]);i++)d+=s[i];
printf("%d\n",d);
}
A.9B.11C.19D.21
72.耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性
C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度
D.內(nèi)聚性是指模塊間互相連接的緊密程度
73.下列合法的聲明語句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
74.假定X和Y為double型,則表達式x=2,y=x+3/2的值是()。
A.3.500000B.3C.2.000000D.3.000000
75.有以下程序:
#include<stdio.h>
voidmain()
{fILE*fp;inti,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);
fclose(fp)
fp=fopen("data.dat","rb");
fseek(fp,-2L*sizeof(int),1,fp);/*文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/
fclose(fp);
printf("%d\n",b);
}
程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是()。
A.使位置指針從文件末尾向前移2*sizeof(int)字節(jié)
B.使位置指針從文件末尾向前移2字節(jié)
C.使位置指針向文件末尾向前移懂2*sizeof(int)字節(jié)
D.使位置指針向文件末尾移動2字節(jié)
76.下列選項中屬于結(jié)構(gòu)化程序設計原則的是()。
A.可封裝
B.多態(tài)性
C.自下而上
D.逐步求精
77.
78.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,intc)
{c=*a+*b;}
main()
{inta[2]={6,9},c=0;
fun(a,a+1,&c);
printf("%d\n",c);
}
程序輸出的結(jié)果是
A.6B.9
C.0D.15
79.程序流程圖中帶有箭頭的線段表示的是()。
A.圖元關系B.數(shù)據(jù)流C.控制流D.調(diào)用關系
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCIl碼升序排序后輸出。
例如,輸入opdye,則應輸出deopy。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include%string.h>
#include%stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
intproc(charstr[])
{
charC;
unsignedi,j;
for(i=0;i<strlen(str)-1;i++)
for(j=i+1;j<strlen(str);j4-+)
if(str[i]>str[j])
{
c=str[j]:
//****found****
str[j]=str[i++];
str[i]=C;
}
}
voidmain
{
charst/[81];
system("CLS");
printf("\nPleaseenteracharacter
string:");
gets(str);
printf("\nknBeforesorting:\n%s",
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤堆棚消防知識培訓課件
- 2024版招投標代理合同
- 浙江科技學院《科研思路與方法》2023-2024學年第一學期期末試卷
- 中華女子學院《臨床免疫學檢驗技術(shù)》2023-2024學年第一學期期末試卷
- 2024微股東眾籌入股區(qū)塊鏈技術(shù)應用入股協(xié)議3篇
- 金融領域人才流失分析
- 理財投資行業(yè)前臺接待工作總結(jié)
- 汽車設計師設計汽車外觀優(yōu)化車身結(jié)構(gòu)
- 2025年特色餐廳特色食材采購與加工合作協(xié)議3篇
- 生物學入門講座模板
- 2024體育活動區(qū)鋪沙子(合同)協(xié)議
- 民辦學校招生教師培訓
- 《中華人民共和國機動車駕駛?cè)丝颇恳豢荚囶}庫》
- 2024年VB程序設計:從入門到精通
- 2024年故宮文化展覽計劃:課件創(chuàng)意與呈現(xiàn)
- 煉鐵行業(yè)的安全生產(chǎn)與環(huán)境保護考核試卷
- 公共交通乘客投訴管理制度
- 抗菌藥物的合理應用培訓
- 初三數(shù)學老師家長會發(fā)言稿
- 能源崗位招聘筆試題及解答(某大型央企)
- 不銹鋼伸縮縫安裝施工合同
評論
0/150
提交評論