版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年黑龍江省哈爾濱市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:
程序運行后的輸出結(jié)果是()。
A.4B.34C.31D.32
2.計算機算法必須具備輸入、輸出和()等5個特性。
A.可行性、可移植性和可擴充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性
3.若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4
4.折半查找的時間復(fù)雜性為()
A.O(n2)B.O(n)C.O(nlogn)D.O(logn)
5.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.efg,h,z,q,bcd
B.efg,d,zyz,wbbcd
C.efgabcdsnopqhijkIxyz,h,z,q,bcd
D.efgabcdsnopqhijkIxyz,d,zyz,w,bbcd
6.設(shè)x、y、t均為血型變量,則執(zhí)行語句x=y=3;t=++x||++y;后,y的值為______。
A.不定值B.4C.3D.1
7.算法的效率的分析主要包括兩個方面()。
A.時間復(fù)雜度和空間復(fù)雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
8.下列敘述中正確的是:()A.C語言程序總是從第一個定義的函數(shù)開始執(zhí)行
B.C語言程序中,函數(shù)類型必須進行顯式聲明
C.C語言程序中,return語句必須放在函數(shù)的最后
D.C語言程序中,return語句中表達式的類型應(yīng)該與函數(shù)的類型一致
9.
10.以下敘述正確的是
A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用goto語句
11.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運行后的輸出結(jié)果是
A.8,2,3,4,5,6,7,1,
B.5,6,7,8,1,2,3,4,
C.1,2,3,4,5,6,7,8,
D.8,7,6,5,4,3,2,1
12.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.3D.4
13.表達式9!=10的值為()。
A.非零值B.trueC.0D.1
14.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。
A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對
15.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
16.設(shè)a、b和、c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式為()
A.'a'&&'b'
B.a<=b
C.a‖b+c&&b-c
D.!(a-b)&&(!c‖1)
17.有以下程序:
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s\n",ss,aa);
}
程序運行結(jié)果是A.A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
18.以下選項中合法的C語言常量是()。
A.2.0KbB.”C++’C.”\2.0D.1.01
19.已知廣義表的表頭為A,表尾為(B,C),則此廣義表為________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
20.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序運行后的輸出結(jié)果是()。A.2B.1C.0D.3
二、2.填空題(20題)21.以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)羁铡?/p>
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i{i=x[m];p0=m;}
elseif(x[m]<j{j=x[m];p1:m;}
}
t=x[p0];x[p0]=x
22.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。
23.單元測試又稱模塊測試,一般采用【】測試。
24.下列程序的運行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",-i);
}
25.若intx=1,y=2;則計算表達式y(tǒng)+=y-=x*=y后的y值是()。
26.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
27.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個血型數(shù)據(jù)。
28.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。
29.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。
30.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。
31.下面程序的功能是輸出數(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);}
32.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
33.軟件設(shè)計模塊化的目的是______。
34.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。
35.在運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是【】。
36.以下程序的輸出結(jié)果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
37.以下程序運行后輸出的結(jié)果是【】。
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);
}
38.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
39.以下程序運行后的輸出結(jié)果是()。
#include<stdio.h>
main()
{inta=1,b=7;
do{
b=b/2;a+=b;
}while(b>1);
printf("%d\n",A);
}
40.軟件維護活動包括以下幾類:改正性維護、適應(yīng)性維護、【】維護和預(yù)防性維護。
三、1.選擇題(20題)41.在下列關(guān)于宏定義命令#define的敘述中,正確的一條是()
A.用一個指定的標識符(宏名)來代替一個長整型數(shù)
B.用一個指定的標識符(宏名)來代替一個雙精度數(shù)
C.用一個指定的標識符(宏名)來代替一個字符串
D.用一個指定的標識符(宏名)來代替一個單精度實數(shù)
42.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。
A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1
43.不能把字符串“Hello!”賦給數(shù)組b的語句是________。
A.charb[10]={'H','e','1','l','o','!'};
B.chsrb[10]={'h','e','1','1','o','!'};
C.charb[10];strcpy(b,"Hello!");
D.chgrb[10]="Hello!";
44.下列關(guān)于單目運算符++、--的敘述中正確的是A.它們的運算對象可以是任何變量和常量
B.它們的運算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運算對象可以是char型變量、int型變量和float型變量
45.當變量c的值不為2、4、6時,值也為"真"的表達式是
A.(c==2)||(c==4)||(c==6)
B.(c>=2&&c<=6)||(c!=3)||(c!=5)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)&&(c%2!=1)
46.以下程序中C的二進制值是()。chara=2,b=4,c;c=a^b>>2
A.11B.10100C.111100D.000l1000
47.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
A.log2nB.n2C.O(n1.5)D.n(n-1)/2
48.15.與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個數(shù)無關(guān)的是數(shù)據(jù)的()
A.存儲結(jié)構(gòu)B.存儲實現(xiàn)C.邏輯結(jié)構(gòu)D.運算實現(xiàn)
49.假設(shè)a和b為int型變量,則執(zhí)行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);
A.9B.-2C.-1D.8
50.若有如下程序:sub(inta,intb,int*z){*z=a+b;return;}main(){inta=1,b=2,c=3,d,e;sub(a,b,&D);sub(c,d,&e);printf("%d",e);}則程序運行后的輸出結(jié)果是
A.3B.4C.5D.6
51.若有如下定義:intx=6,y=3,z=2;則表達式“x=y||y<z&&z==z”的值是()。
A.0B.1C.4D.6
52.以下程序的輸出結(jié)果是______。#include<stdio.h>voidprt(int.*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}inta=10,b=40,c=20;main(){prt(&a,&b&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,41
D.11,41,2112,42,22
53.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
54.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
55.若變量已正確定義并賦值,下面符合C語言的表達式是_____。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
56.表達式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8
57.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i
A.45B.50C.60D.55
58.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
59.為了提高軟件模塊的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
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.(7)在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是()
A.數(shù)據(jù)結(jié)構(gòu)設(shè)計
B.給出系統(tǒng)模塊結(jié)構(gòu)
C.定義模塊算法
D.定義需求并建立系統(tǒng)模型
62.有如下程序:
則b的值是()。
A.15B.16C.18D.19
63.下列選項中,能正確定義數(shù)組的語句是()。
64.
65.
66.有以下程序:
程序運行后的輸出結(jié)果是()。
A.4321098765B.5678901234C.0987654321D.0987651234
67.(41)在下列選項中,哪個不是一個算法一般應(yīng)該具有的基本特征()
A.確定性
B.可行性
C.無窮性
D.擁有足夠的情報
68.以下敘述中錯誤的是()。
A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C
B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
C.C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行
D.一個C語言程序只能有一個主函數(shù)
69.有以下程序
#include<stdio.h>
voidfun(char**p)
{p=p+2;
printf("%s\n",*p);
}
main()
{char*a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的運行結(jié)果是
A.rning
B.a(chǎn)fternoon
C.ternoon
D.Evening
70.
71.下列關(guān)于棧的敘述正確的是()。
A.棧按“先進先出”組織數(shù)據(jù),B.棧按“先進后出”組織數(shù)據(jù)C.只能在棧底插入數(shù)據(jù)D.不能刪除數(shù)據(jù)
72.以下選項中,不能作為合法常量的是
A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0
73.
74.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
75.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
76.
77.以下程序運行后的輸出結(jié)果是()。
A.2B.4C.6D.3
78.在“文件包含,預(yù)處理語句的使用形式中,當#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。
A.直接按系統(tǒng)設(shè)定的標準方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標準方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當前目錄
79.
80.有以下程序:
程序運行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
五、程序改錯題(1題)81.下列給定程序中函數(shù)proc的功能是:取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當s中的數(shù)為l23456789時,t中的數(shù)為2468。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}
參考答案
1.C本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4.0,這樣對應(yīng)定義fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對s[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。
2.B
3.C本題考查三目運算符a<b?a:c<d?c:d也可寫成a<b?a:(c<d?c:d),所以根據(jù)優(yōu)先級,先算括號內(nèi)的,c小于d為真取C的值,再看a小于b為假,所以取C的值。
4.D
5.A程序定義一個二維字符數(shù)組v,使用5個字符串對其初始化。對于表達式“*v”等價于“*(v+0)”,輸出的是數(shù)組v的第1個元素efg;“**(v+3)”等價于“*(*(v+3)+0)”,輸出的是數(shù)組v的第4個元素的第1個字符h;“v[4]”表示數(shù)組v的第5個元素,“v[4]+2”表示輸出從下標2開始的所有字符,即z;“v[2]”表示數(shù)組v的第3個元素,“*(v[2]+4)”表示數(shù)組v的第3個元素的下標為4的字符q;“v[1]+1”表示數(shù)組v的第2個元素從下標1開始的子字符串,即bcd。所以程序輸出:efg,h,z,q,bcd。本題答案為A選項。
6.C解析:C語言中在做邏輯或運算時,自左向右判斷各個參加或運算的表達式,一旦運算到某式的值為非零時,表明整個表達式一定為真,余下的語句則不再進行運算。本題中,++x的值為真,則++y并沒有進行運算,所以y值不變。
7.D
8.DC程序程序總是從main函數(shù)開始執(zhí)行。C程序中如果沒有對函數(shù)類型進行說明,則該函數(shù)默認為int類型。return語句可以放在函數(shù)任意位置,但是return之后的語句不會被執(zhí)行。
9.B
10.B
11.D解析:本題考查循環(huán)和指針做函數(shù)參數(shù),程序的功能是將a[0]和a[7]對換,a[1]和a[6]對換,a[2]和a[5]對換,a[3]和a[4]對換,最后輸出。
12.C該程序中int8pl=&a,+p2=&b,4P=&c;指定義三個指針變量,并賦值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;該條語句是給P所指的存儲單元c賦值,就是pl所指的存儲單元的值,即a的值,與p2所指的存儲單元b的值相乘,也就是c=a+b,等價于c=1·3=3;因此C選項正確。‘
13.D
14.C解析:對字符型一維數(shù)組在定義時初始化,既可以使用初始化列表,也可以使用字符串常量。不過由于字符串常量會自動在結(jié)尾添加\'\\0\',字符做結(jié)束標志,所以用字符串常量的初始化列表項個數(shù)是字符串的長度加1。因此題目中的chara[]='xyz';等價于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a數(shù)組長度大于b數(shù)組長度,應(yīng)該選C。
15.D結(jié)構(gòu)化程序設(shè)計的基本要點:①采用自頂向下、逐步求精的程序設(shè)計方法;②任何程序都可由順序、選擇和循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造。
16.D
17.D
18.DC語言中,常量有整型常量、實型常量、字符常量和字符串常量等。整型常量和實型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點。實型常量必須用帶小數(shù)點的數(shù)表示,所以選項A錯誤,選項D正確;字符型常量是用單引號標注的單個字符,字符串常量是用雙引號標注的若干個字符,選項B、C錯誤。故本題答案為D選項。
19.B
20.C在ifelse語句中else,總是與離它最近的配對。本題目中x勸1所以!x為0,所以執(zhí)行else齬句中的內(nèi)容,判斷(x==0)是否成立,因為x為1所以條件不成立,所以else部分的近.else語句不再執(zhí)行,所以y的值還是初始值0。
21.函數(shù)f()通過for循環(huán)逐個比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個元素x[n-1)交換位置,再將最小值x[p1]和第一個元素(x[0])進行交換,所以空白處應(yīng)該填入x[0]。\r\n\r\n
22.類類解析:在面向?qū)ο蟮姆椒ㄖ校丫哂邢嗤瑢傩院头椒ǖ膶ο蠓Q為類,類是對象的抽象,對象是類的實例。
23.白盒法白盒法
24.33解析:分析程序運行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,軸出結(jié)果為3。
25.0
26.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結(jié)果是56。
27.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標識符(葉旨針變量名)()。注:“類型標識符”為函數(shù)返回值的類型。
28.軟件工具軟件工具
29.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函數(shù)的一般格式為:“printf(格式控制,輸出表列)”。
30.相鄰相鄰
31.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標,需先預(yù)設(shè)1個臨時最大元素的下標,并順序逐一考查數(shù)組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預(yù)設(shè)的最大元素下標是數(shù)組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s[k)更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。
32.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。
33.降低復(fù)雜性降低復(fù)雜性
34.概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)
35.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運算統(tǒng)一起來。循環(huán)鏈表具有兩個特點:①在循環(huán)鏈表中增加了一個表頭結(jié)點,其數(shù)據(jù)域為任意或根據(jù)需要來設(shè)置,指針域指向線性表的第一個元素的結(jié)點。循環(huán)鏈表的頭指針指向表頭結(jié)點。②循環(huán)鏈表中最后一個結(jié)點的指針不是空,而是指向表頭結(jié)點。
36.2222解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]...b[9]的值相加,結(jié)果為22。
37.2121解析:外層switch語句后面括號里的x的值為1,所以執(zhí)行從casel:后面的語句開始執(zhí)行,而cascl:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內(nèi)層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行casel:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變?yōu)?。所以最后輸出的a和b的值為21。
38.軟件開發(fā)
39.55解析:該程序考查do-while循環(huán)。循環(huán)共進行兩次。第一次循環(huán)b=3,a=4;第二次循環(huán)b=1,a=5。輸出a的值為5。
40.完善性軟件維護活動包括以下幾類:改正性維護,適應(yīng)性維護、完善性維護和預(yù)防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
41.C
42.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。
43.B解析:在C語言中,大寫字母和小寫字母被認為是兩個不同的字符,因此,“hello!”和“Hello!”是兩個不同的字符串。
44.D本題主要考查自加與自減運算符。在C語言中,自加與自減運算符具有以下性質(zhì):
(1)自加運算符“++”和自減運算符“--”的運算本身是一種賦值運算,其結(jié)果是使運算對象的值增1或減1。
(2)++、--運算符是單目運算符,運算對象可以是整型變量或字符型變量,也可以是實型變量,但不能是常量和表達式。
(3)自加、自減運算符無論是作為前綴還是后綴運算符,對于變量而言,其效果相同,但作為表達式來說,其值不同。
(4)++和--運算符的結(jié)合方向是“自右向左”。
(5)不要在一個表達式中對同一個變量進行多次自增或自減運算??梢灾辣绢}正確的答案是D。
45.B解析:滿足表達式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當變量c的值不為2,4,6時,其值只能為3或5,所以表達式c!=3和c!=5中至少有一個為真,即不論c為何值,選項B中的表達式都為'真'。
46.A
47.D解析:假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。
48.C所謂數(shù)據(jù)的邏輯結(jié)構(gòu),是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。\n所謂數(shù)據(jù)的存儲結(jié)構(gòu),是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式。與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個數(shù)有關(guān)。\n邏輯結(jié)構(gòu)與物理存儲無關(guān)。因此本題的正確答案為C。
49.D解析:本題程序第一輪循環(huán)后b的值為9,在進行循環(huán)條件測試時,先取b的現(xiàn)值9與0比較,然后再將b減1。由于9<0不成立,因此循環(huán)結(jié)束,這時b的值已變成8,本題正確答案為D。
50.D解析:第一次調(diào)用函數(shù)sub返回后,d的值為2+1=3;第二次調(diào)用函數(shù)sub返回后,e的值為3+3=6。
51.B解析:表達式x=y||y<z&&z==z中共有5種運算符,其優(yōu)先級從高到低排列依次是:小于<、等于==、邏輯與&&、邏輯或||、賦值二。所以原式可看做x=(y||(y<z&&z==z)),在子表達式y(tǒng)||(y<z&&z==z)中,因為y=3為真,而真||任何數(shù)都為真,所以表達式等價于x=真=1,故整個表達式的值為1,應(yīng)該選擇B。
52.B解析:由于實參傳送的是變量的地址,所以對形參指針所指向的單元內(nèi)容的改變,即對實參內(nèi)容的改變。
53.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。
54.B解析:函數(shù)fib內(nèi)部有兩個遞歸調(diào)用,當n=3時,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。
55.B解析:選項A和C一望而知其錯;對于表達式a=a+7=c+b(答案D),是先執(zhí)行賦值表達式a+7=c+b,再把這個表達式的值賦給a,顯然,表達式a+7=c+b非法,因為賦值表達式的左側(cè)不能為常量或表達式。
56.D解析:*、/和%的優(yōu)先級要高于+和—,同級別的運算符從左至右運算。所以本題首先計算5/2和5%2,雖然我們都知道5/2的結(jié)果應(yīng)該是2.5,但C語言中規(guī)定了兩個整數(shù)相除的結(jié)果為整數(shù),而且是截尾取整,所以5/2的結(jié)果是2;5%2表示的是5除以2所得的余數(shù),其結(jié)果為1。計算完后,表達式變?yōu)?.6-2+1.2+1,從左至右計算不難得出結(jié)果為3.8,故應(yīng)該選擇D。
57.C解析:本題中fun()函數(shù)通過一個for循環(huán)來累計形參數(shù)組x的前n個元素之和。在主函數(shù)中,第1次調(diào)用fun(a,5)時,返回的值應(yīng)該是數(shù)組a的前5個元素的和,而第2次調(diào)用fun(b,4)時,返回的值除了本次累計的數(shù)組b前4個元素的和外,還要加上上次累計的值。所以,最后輸?shù)膕的值為數(shù)組a所有元素之和的兩倍加上數(shù)組b所有元素之和,結(jié)果是60。故應(yīng)該選擇C。
58.D解析:在C語言的標準中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。
59.D解析:耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,是互相關(guān)聯(lián)的。在程序設(shè)計中,各模塊間的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,有利于提高模塊的獨立性。
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.D數(shù)據(jù)結(jié)構(gòu)設(shè)計、給出系統(tǒng)模塊結(jié)構(gòu)以及定義模塊算法都屬于設(shè)計階段,而定義需求并建立系統(tǒng)模型屬于分析階段。
62.DP=&a[3]將指針指向數(shù)組a的第4個元素,P[5]指向數(shù)組a的第9個元素,而a[8]=19,所以b=19。
63.A數(shù)組定義的長度必須為常量,所以A)選項正確。
64.B
65.B
66.B該程序首先給一維數(shù)組賦值,然后三次調(diào)用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a.O,9);功能是將將一維數(shù)組中第l個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。
67.C
68.C函數(shù)是指預(yù)先定義功能塊,其目的是提高程序的重用性。在C語言中函數(shù)的源程序,后綴名可以為C。C語言所編寫的函數(shù)都可以是一個獨立的源文件。一個C語言程序只能有一個主函數(shù)。C語言中編寫的函數(shù)不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數(shù),如果程序中沒有主函數(shù)則無法進行編譯和執(zhí)行。
69.D本題主要考查指向指針的指針。在程序中,首先定義了一個fun函數(shù),函數(shù)無返回類型,函數(shù)的形參是一個指向指針的指針變量p,在該函數(shù)體中,首先將變量p的值加2,并保存在p中,根據(jù)指針變量的特性,這個加2是使指針變量往后移兩個單位,如果開始指向第一個元素,現(xiàn)在則指向第三個元素(注意:這里并不是指移動兩個字節(jié))。然后輸出*p,由于p是一個指向指針的變量,那么*p輸出的也不是單個數(shù)組,而是一個首地址對應(yīng)的字符串或數(shù)組,在本題中輸出的是字符串。
在主函數(shù)中,定義一個指針數(shù)組a,并賦初值,然后調(diào)用函數(shù)fun,實參為a,輸出的應(yīng)該是指針數(shù)組中第3個指針對應(yīng)的字符串,即Evening。\r\n\r\n\r\n
70.A
71.B棧是按“先進后出”的原則組織數(shù)據(jù)的,數(shù)據(jù)的插入和刪除都在棧頂進行操作。
72.B本題考查實型數(shù)據(jù)的表示形式。
實型數(shù)據(jù)有十進制小數(shù)形式和指數(shù)形式兩種表示方法,指數(shù)形式中e后面的指數(shù)必須為整數(shù)。選項B中e后面的指數(shù)為0.3,不符合實型數(shù)據(jù)的表示方式。
73.C
74.C解析:帶參數(shù)宏的格式為:#define標識符(形參表)形參表達式。其功能是:在預(yù)處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達式。
75.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負責(zé)數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。
76.C
77.C函數(shù)f的功能是利用冒泡排序方法,將二維字符數(shù)組的前n行進行遞增排序。
注意,本題目排序時整個字符串都交換。數(shù)組P排序后的結(jié)果為
78.B#include”文件名”,預(yù)處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標準目錄搜索。
79.C
80.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)。
81.(1)錯誤:voidproc(longs,longt)
正確:voidproc(longS,long*t)
(2)錯誤:while(s<0)
正確:while(s>0)
【解析】從主函數(shù)中實參可知,形參的第二個變量是長整型的指針變量。因此“voidproe(10ngs,longt)”應(yīng)改為“voidproc(10ngs,long*t)”;要從低位開始取出長整型變量s中偶數(shù)位上的數(shù),每次變量s要除以100,然后判斷其是否大于0來決定是否要繼續(xù),因此“while(s<0)”應(yīng)改為“while(s>0)”。
82.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標中有一個為?;騇-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數(shù)組周邊元素和。二維數(shù)組周邊元素的規(guī)律是,其兩個下標中一定有一個是0或M-1或N-1。程序中循環(huán)語句用來控制數(shù)組的行和列,條件語句用來判斷數(shù)組元素是否為周邊元素。</n;j++)</m;i++)</n;j++)</m;i++)2021年黑龍江省哈爾濱市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:
程序運行后的輸出結(jié)果是()。
A.4B.34C.31D.32
2.計算機算法必須具備輸入、輸出和()等5個特性。
A.可行性、可移植性和可擴充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性
3.若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4
4.折半查找的時間復(fù)雜性為()
A.O(n2)B.O(n)C.O(nlogn)D.O(logn)
5.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.efg,h,z,q,bcd
B.efg,d,zyz,wbbcd
C.efgabcdsnopqhijkIxyz,h,z,q,bcd
D.efgabcdsnopqhijkIxyz,d,zyz,w,bbcd
6.設(shè)x、y、t均為血型變量,則執(zhí)行語句x=y=3;t=++x||++y;后,y的值為______。
A.不定值B.4C.3D.1
7.算法的效率的分析主要包括兩個方面()。
A.時間復(fù)雜度和空間復(fù)雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
8.下列敘述中正確的是:()A.C語言程序總是從第一個定義的函數(shù)開始執(zhí)行
B.C語言程序中,函數(shù)類型必須進行顯式聲明
C.C語言程序中,return語句必須放在函數(shù)的最后
D.C語言程序中,return語句中表達式的類型應(yīng)該與函數(shù)的類型一致
9.
10.以下敘述正確的是
A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用goto語句
11.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運行后的輸出結(jié)果是
A.8,2,3,4,5,6,7,1,
B.5,6,7,8,1,2,3,4,
C.1,2,3,4,5,6,7,8,
D.8,7,6,5,4,3,2,1
12.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.3D.4
13.表達式9!=10的值為()。
A.非零值B.trueC.0D.1
14.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。
A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對
15.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
16.設(shè)a、b和、c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式為()
A.'a'&&'b'
B.a<=b
C.a‖b+c&&b-c
D.!(a-b)&&(!c‖1)
17.有以下程序:
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s\n",ss,aa);
}
程序運行結(jié)果是A.A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
18.以下選項中合法的C語言常量是()。
A.2.0KbB.”C++’C.”\2.0D.1.01
19.已知廣義表的表頭為A,表尾為(B,C),則此廣義表為________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
20.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序運行后的輸出結(jié)果是()。A.2B.1C.0D.3
二、2.填空題(20題)21.以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)羁铡?/p>
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i{i=x[m];p0=m;}
elseif(x[m]<j{j=x[m];p1:m;}
}
t=x[p0];x[p0]=x
22.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。
23.單元測試又稱模塊測試,一般采用【】測試。
24.下列程序的運行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",-i);
}
25.若intx=1,y=2;則計算表達式y(tǒng)+=y-=x*=y后的y值是()。
26.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
27.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個血型數(shù)據(jù)。
28.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。
29.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。
30.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。
31.下面程序的功能是輸出數(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);}
32.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
33.軟件設(shè)計模塊化的目的是______。
34.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。
35.在運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是【】。
36.以下程序的輸出結(jié)果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
37.以下程序運行后輸出的結(jié)果是【】。
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);
}
38.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
39.以下程序運行后的輸出結(jié)果是()。
#include<stdio.h>
main()
{inta=1,b=7;
do{
b=b/2;a+=b;
}while(b>1);
printf("%d\n",A);
}
40.軟件維護活動包括以下幾類:改正性維護、適應(yīng)性維護、【】維護和預(yù)防性維護。
三、1.選擇題(20題)41.在下列關(guān)于宏定義命令#define的敘述中,正確的一條是()
A.用一個指定的標識符(宏名)來代替一個長整型數(shù)
B.用一個指定的標識符(宏名)來代替一個雙精度數(shù)
C.用一個指定的標識符(宏名)來代替一個字符串
D.用一個指定的標識符(宏名)來代替一個單精度實數(shù)
42.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。
A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1
43.不能把字符串“Hello!”賦給數(shù)組b的語句是________。
A.charb[10]={'H','e','1','l','o','!'};
B.chsrb[10]={'h','e','1','1','o','!'};
C.charb[10];strcpy(b,"Hello!");
D.chgrb[10]="Hello!";
44.下列關(guān)于單目運算符++、--的敘述中正確的是A.它們的運算對象可以是任何變量和常量
B.它們的運算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運算對象可以是char型變量、int型變量和float型變量
45.當變量c的值不為2、4、6時,值也為"真"的表達式是
A.(c==2)||(c==4)||(c==6)
B.(c>=2&&c<=6)||(c!=3)||(c!=5)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)&&(c%2!=1)
46.以下程序中C的二進制值是()。chara=2,b=4,c;c=a^b>>2
A.11B.10100C.111100D.000l1000
47.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
A.log2nB.n2C.O(n1.5)D.n(n-1)/2
48.15.與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個數(shù)無關(guān)的是數(shù)據(jù)的()
A.存儲結(jié)構(gòu)B.存儲實現(xiàn)C.邏輯結(jié)構(gòu)D.運算實現(xiàn)
49.假設(shè)a和b為int型變量,則執(zhí)行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);
A.9B.-2C.-1D.8
50.若有如下程序:sub(inta,intb,int*z){*z=a+b;return;}main(){inta=1,b=2,c=3,d,e;sub(a,b,&D);sub(c,d,&e);printf("%d",e);}則程序運行后的輸出結(jié)果是
A.3B.4C.5D.6
51.若有如下定義:intx=6,y=3,z=2;則表達式“x=y||y<z&&z==z”的值是()。
A.0B.1C.4D.6
52.以下程序的輸出結(jié)果是______。#include<stdio.h>voidprt(int.*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}inta=10,b=40,c=20;main(){prt(&a,&b&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,41
D.11,41,2112,42,22
53.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
54.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
55.若變量已正確定義并賦值,下面符合C語言的表達式是_____。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
56.表達式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8
57.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i
A.45B.50C.60D.55
58.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
59.為了提高軟件模塊的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
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.(7)在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是()
A.數(shù)據(jù)結(jié)構(gòu)設(shè)計
B.給出系統(tǒng)模塊結(jié)構(gòu)
C.定義模塊算法
D.定義需求并建立系統(tǒng)模型
62.有如下程序:
則b的值是()。
A.15B.16C.18D.19
63.下列選項中,能正確定義數(shù)組的語句是()。
64.
65.
66.有以下程序:
程序運行后的輸出結(jié)果是()。
A.4321098765B.5678901234C.0987654321D.0987651234
67.(41)在下列選項中,哪個不是一個算法一般應(yīng)該具有的基本特征()
A.確定性
B.可行性
C.無窮性
D.擁有足夠的情報
68.以下敘述中錯誤的是()。
A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C
B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
C.C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行
D.一個C語言程序只能有一個主函數(shù)
69.有以下程序
#include<stdio.h>
voidfun(char**p)
{p=p+2;
printf("%s\n",*p);
}
main()
{char*a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的運行結(jié)果是
A.rning
B.a(chǎn)fternoon
C.ternoon
D.Evening
70.
71.下列關(guān)于棧的敘述正確的是()。
A.棧按“先進先出”組織數(shù)據(jù),B.棧按“先進后出”組織數(shù)據(jù)C.只能在棧底插入數(shù)據(jù)D.不能刪除數(shù)據(jù)
72.以下選項中,不能作為合法常量的是
A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0
73.
74.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
75.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
76.
77.以下程序運行后的輸出結(jié)果是()。
A.2B.4C.6D.3
78.在“文件包含,預(yù)處理語句的使用形式中,當#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。
A.直接按系統(tǒng)設(shè)定的標準方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標準方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當前目錄
79.
80.有以下程序:
程序運行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
五、程序改錯題(1題)81.下列給定程序中函數(shù)proc的功能是:取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當s中的數(shù)為l23456789時,t中的數(shù)為2468。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}
參考答案
1.C本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4.0,這樣對應(yīng)定義fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對s[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。
2.B
3.C本題考查三目運算符a<b?a:c<d?c:d也可寫成a<b?a:(c<d?c:d),所以根據(jù)優(yōu)先級,先算括號內(nèi)的,c小于d為真取C的值,再看a小于b為假,所以取C的值。
4.D
5.A程序定義一個二維字符數(shù)組v,使用5個字符串對其初始化。對于表達式“*v”等價于“*(v+0)”,輸出的是數(shù)組v的第1個元素efg;“**(v+3)”等價于“*(*(v+3)+0)”,輸出的是數(shù)組v的第4個元素的第1個字符h;“v[4]”表示數(shù)組v的第5個元素,“v[4]+2”表示輸出從下標2開始的所有字符,即z;“v[2]”表示數(shù)組v的第3個元素,“*(v[2]+4)”表示數(shù)組v的第3個元素的下標為4的字符q;“v[1]+1”表示數(shù)組v的第2個元素從下標1開始的子字符串,即bcd。所以程序輸出:efg,h,z,q,bcd。本題答案為A選項。
6.C解析:C語言中在做邏輯或運算時,自左向右判斷各個參加或運算的表達式,一旦運算到某式的值為非零時,表明整個表達式一定為真,余下的語句則不再進行運算。本題中,++x的值為真,則++y并沒有進行運算,所以y值不變。
7.D
8.DC程序程序總是從main函數(shù)開始執(zhí)行。C程序中如果沒有對函數(shù)類型進行說明,則該函數(shù)默認為int類型。return語句可以放在函數(shù)任意位置,但是return之后的語句不會被執(zhí)行。
9.B
10.B
11.D解析:本題考查循環(huán)和指針做函數(shù)參數(shù),程序的功能是將a[0]和a[7]對換,a[1]和a[6]對換,a[2]和a[5]對換,a[3]和a[4]對換,最后輸出。
12.C該程序中int8pl=&a,+p2=&b,4P=&c;指定義三個指針變量,并賦值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;該條語句是給P所指的存儲單元c賦值,就是pl所指的存儲單元的值,即a的值,與p2所指的存儲單元b的值相乘,也就是c=a+b,等價于c=1·3=3;因此C選項正確。‘
13.D
14.C解析:對字符型一維數(shù)組在定義時初始化,既可以使用初始化列表,也可以使用字符串常量。不過由于字符串常量會自動在結(jié)尾添加\'\\0\',字符做結(jié)束標志,所以用字符串常量的初始化列表項個數(shù)是字符串的長度加1。因此題目中的chara[]='xyz';等價于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a數(shù)組長度大于b數(shù)組長度,應(yīng)該選C。
15.D結(jié)構(gòu)化程序設(shè)計的基本要點:①采用自頂向下、逐步求精的程序設(shè)計方法;②任何程序都可由順序、選擇和循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造。
16.D
17.D
18.DC語言中,常量有整型常量、實型常量、字符常量和字符串常量等。整型常量和實型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點。實型常量必須用帶小數(shù)點的數(shù)表示,所以選項A錯誤,選項D正確;字符型常量是用單引號標注的單個字符,字符串常量是用雙引號標注的若干個字符,選項B、C錯誤。故本題答案為D選項。
19.B
20.C在ifelse語句中else,總是與離它最近的配對。本題目中x勸1所以!x為0,所以執(zhí)行else齬句中的內(nèi)容,判斷(x==0)是否成立,因為x為1所以條件不成立,所以else部分的近.else語句不再執(zhí)行,所以y的值還是初始值0。
21.函數(shù)f()通過for循環(huán)逐個比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個元素x[n-1)交換位置,再將最小值x[p1]和第一個元素(x[0])進行交換,所以空白處應(yīng)該填入x[0]。\r\n\r\n
22.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實例。
23.白盒法白盒法
24.33解析:分析程序運行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,軸出結(jié)果為3。
25.0
26.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結(jié)果是56。
27.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標識符(葉旨針變量名)()。注:“類型標識符”為函數(shù)返回值的類型。
28.軟件工具軟件工具
29.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函數(shù)的一般格式為:“printf(格式控制,輸出表列)”。
30.相鄰相鄰
31.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標,需先預(yù)設(shè)1個臨時最大元素的下標,并順序逐一考查數(shù)組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預(yù)設(shè)的最大元素下標是數(shù)組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s
溫馨提示
- 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ù)測考核試卷
- 陶瓷企業(yè)的品牌故事與價值傳播考核試卷
- 鎳鈷冶煉廠生產(chǎn)設(shè)備維護保養(yǎng)成本效益分析考核試卷
- 陶瓷潔具企業(yè)生產(chǎn)計劃與物料控制考核試卷
- 鐵路客車電氣系統(tǒng)故障檢修考核試卷
- 非融資擔(dān)保業(yè)務(wù)與園林景觀項目合作考核試卷
- 回醫(yī)學(xué)中的神經(jīng)調(diào)理與氣血平衡
- 虛擬現(xiàn)實展覽-第5篇-洞察分析
- 性別決定基因研究-洞察分析
- 新語文教師個人發(fā)展計劃范文
- 房地產(chǎn)估計第八章成本法練習(xí)題參考
- 2023年廣東羅浮山旅游集團有限公司招聘筆試題庫及答案解析
- 《社會主義核心價值觀》優(yōu)秀課件
- DB11-T1835-2021 給水排水管道工程施工技術(shù)規(guī)程高清最新版
- 《妊娠期糖尿病患者個案護理體會(論文)3500字》
- 解剖篇2-1內(nèi)臟系統(tǒng)消化呼吸生理學(xué)
- 《小學(xué)生錯別字原因及對策研究(論文)》
- 便攜式氣體檢測報警儀管理制度
- 酒店安全的管理制度
- (大潔王)化學(xué)品安全技術(shù)說明書
- 2022年科學(xué)道德與學(xué)術(shù)規(guī)范知識競賽決賽題庫(含答案)
評論
0/150
提交評論