版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年安徽省蕪湖市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)有下列二叉樹:
對此二叉樹先序遍歷的結(jié)果為
A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA
2.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。
A.IB.n-iC.n-i+1D.不確定
3.下列程序的輸出結(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
4.以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是()。
A.結(jié)構(gòu)化程序使用goto語句會很便捷
B.在c語言中,程序的模塊化是利用函數(shù)實現(xiàn)的
C.一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成
D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
5.軟件生命周期是指()。
A.軟件的定義和開發(fā)階段
B.軟件的需求分析、設(shè)計與實現(xiàn)階段
C.軟件的開發(fā)階段
D.軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程
6.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
7.廣義表((a),a)的表頭是()。
A.aB.(a)C.((a))D.()
8.若用一個大小為6的數(shù)組來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()
A.2和4B.1和5C.4和2D.5和1
9.有以下程序:#include<stdio.h>main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序的運行結(jié)果是()。
A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1
10.某二叉樹結(jié)點的中序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E,該二叉樹對應(yīng)的層次遍歷序列為()
A.E、G、F、A、C、D、B
B.E、A、C、B、D、G、F
C.E、A、G、C、F、B、D
D.E、G、A、C、D、F、B
11.程序中對fun函數(shù)有如下說明
void*fun();
此說明的含義是:A.fun了數(shù)無返回值
B.fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C.fun函數(shù)的返回值是無值型的指針類型
D.指針fun指向一個函數(shù),該函數(shù)無返回值
12.字符串"alibaba"的二進(jìn)制哈夫曼編碼有多少位()
A.11B.12C.13D.14
13.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
14.最壞情況下時間復(fù)雜度不是n(n-1)/2的排序算法是()
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
15.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
16.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是A.A.1267B.1256C.1278D.1245
17.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的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;}
18.
19.若有序表的關(guān)鍵字序列為(b,c,d,e,f,g,q,r,s,t),則在二分查找關(guān)鍵字b的過程中,先后進(jìn)行的關(guān)鍵字依次為()
A.f,c,BB.f,d,BC.g,c,BD.g,d,B
20.下列選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
二、2.填空題(20題)21.有以下程序;
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ints=0;
{inta=5;
s+=f(&A)
}
s+=f(&A)
printf("%d\n",s)
}
執(zhí)行后的輸出結(jié)果是【】。
22.當(dāng)輸入19、2時,下列程序的運行結(jié)果為【】;輸入254、16時,則程序的運行結(jié)果是【】。
main()
{chardata_symbols[17]="0123456789abcdefghijklmnopqrstuvwxyz";
inti=0,t,subscript,data_converted[32];
longnumber;
while(1)
{scanf("%ld,%d",&number,&t);
if(number>=O&&t>=2&&t<=16)break;
}
do
{dataconverted[i++]=number%t;
number=number/t;
}
while(number!=0);
for(--i;i>=0;--i)
{subscript=data_converted[i];
printf("%c",data_symbols[subscript]);
}
printf("\n");
}
23.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta=2,b=-1,C=2;
if(a<B)
if(b<O)c=0;
elsec++;
printf("%d\n",C);
}
24.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
25.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。
26.按照“先進(jìn)先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。
27.棧的基本運算有三種:入棧、退棧和【】。
28.以下程序的輸出結(jié)果是【】。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{
inti=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
29.下面函數(shù)的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值的和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。請?zhí)羁铡?/p>
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
{inti;
*max=a[0];
*d=0;
for(i=0;【】;i++)
if(*max<【】)
{*max=a[i];*d=i;}}
main()
{inti,x[20],max,index,n=10;
randomize();
for(i=0;i<n;i++)
{x[i]=rand()%50;printf("%4d",x[i]);}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);}
30.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
31.漢字系統(tǒng)中,字庫中的漢字是以【】碼存在。
32.設(shè)有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
33.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
34.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。
#defineN4
voidrotate(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=a[0][i];【】=a[N-1][i];}
}
35.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
36.下面程序段的輸出結(jié)果是【】。
intx=5;
do{printf("%d",x-=4);
}while(!(--x));
37.自動批處理文件名必須是【】。
38.與表達(dá)式a+=b等價的另一書寫形式是______。
39.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
40.以下程序運行后的輸出結(jié)果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
三、1.選擇題(20題)41.在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是()。
A.概要設(shè)計B.需求分析C.詳細(xì)設(shè)計D.編程調(diào)試
42.有以下程序
fun(intx)
{intp;
if(x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
執(zhí)行后的輸出結(jié)果是
A.7B.3C.2D.0
43.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達(dá)式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
44.以下數(shù)組定義中錯誤的是______。
A.intx[][3]={0};
B.intx[2][3]={{1,2},{3,4},{5,6)};
C.intx[][3]={{1,2,3},{4,5,6}};
D.mtx[2][3]={1,2,3,4,5,6};
45.以下敘述中正確的是()。
A.局部變量說明為static存儲類,其生存期將得到延長
B.全局變量說明為static存儲類,其作用域?qū)⒈粩U(kuò)大
C.任何存儲類的變量在未賦初值時,其值都是不確定的
D.形參可以使用的存儲類說明符與局部變量完全相同
46.在嵌套使用if語句時,C語言規(guī)定else總是()。
A.和之前與其具有相同縮進(jìn)位置的if配對
B.和之前與其最近的if配對
C.和之前與其最近不帶else的if配對
D.和之前的第一個if配對
47.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是
A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;
48.以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子x/(y*2)的C語言表達(dá)式是______。
A.x/y*2B.x*(1/(y*z))C.x/y*1/zD.x/y/z
49.變量a所占的內(nèi)存字節(jié)數(shù)是______。
A.4
B.5
C.6
D.8unionU{charst[4];inti;longl;};StructA{intc;unionUu;}a;
50.有以下程序voidss(char*s,chart){while(*s){if(*s==t),s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
51.以下程序#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%ss\n",str);}的輸出是______。
A.xyzabcABCB.zabcABCC.yzbcABCD.xyabcABC
52.有以下程序:main(){charstr[][10]={"China","Beijing"),*p=str;printf("%s\n",p+10);}程序運行后的輸出結(jié)果是()。
A.ChinaB.BeijngC.ngD.ing
53.下列對于軟件測試的描述中正確的是()。
A.軟件測試的目的是證明程序是否正確
B.軟件測試的目的是使程序運行結(jié)果正確
C.軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤
D.軟件測試的目的是使程序符合結(jié)構(gòu)化原則
54.設(shè)有下列二叉樹:對此二叉樹前序遍歷的結(jié)果為()
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
55.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intb[6]={2,4,6,8,10,12};int*p=b,**q=&p;printf("%d",*(p++));printf("%d,",**q);}
A.4,4B.2,2C.4,5D.2,4
56.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}執(zhí)行后輸出結(jié)果是()。
A.12B.1230C.123D.00
57.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
58.以下程序段中,能夠通過調(diào)用函數(shù)fun(),使main()函數(shù)中的指針變量p指向一個合法的整型單元的是()。
A.main(){int*p;fun(p);…}intfun(int*p){ints;p=&s;}
B.main{int*pfun(&p);…}ihtfun(int**p){ints;*p=&s;}
C.main(){int*p;fun(&p);}intfun(int**p){*p=(int*)malloc(2);}
D.main(){int*p;fun(p);}intfun(int*p){p=(int*)malloc(sizeo(int));}
59.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sized(a);j=stden(a);printf(“%d,%d\n”,i,j);}程序運行后的輸出結(jié)果是
A.9,9B.8,9C.1,8D.9,8
60.在下列選項中,沒有構(gòu)成死循環(huán)的是()。
A.inti=100;while(1){i=i%100+1;if(i>100)break;}
B.for(;;);
C.intk=10000;do{k++;}while(k>10000);
D.ints=36;while(s)--s;
四、選擇題(20題)61.
62.
63.非空循環(huán)鏈表所表示的數(shù)據(jù)結(jié)構(gòu)()。
A.有根結(jié)點也有葉子結(jié)點B.沒有根結(jié)點但有葉子結(jié)點C.有根結(jié)點但沒有葉子結(jié)點D.沒有根結(jié)點也沒有葉子結(jié)點
64.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.20B.25C.45D.36
65.有以下程序程序運行后的輸出結(jié)果是()。
A.4B.3C.5D.6
66.若有定義intx'y;并已正確給變量賦值。則以下選項中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x_y)等價的是()。
A.(x-y011x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y=o)
67.
68.若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達(dá)式是()。
A.sqrt(fabs(pow(n,x)+exp(x)))
B.sqrt(fabs(pow(n,x)+pow(x,e)))
C.sqrt(abs(n^x+e^x)
D.sqrt(fabs(pow(x,n)+exp(x)))
69.
70.
71.
若有運算符:>、一、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序為()。
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
72.以下選項中,與k=n++完全等價的表達(dá)式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
73.
74.
75.
76.在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。
A.外模式B.內(nèi)模式C.概念模式D.邏輯模式
77.以下程序運行后,輸出結(jié)果是()。
#include<stdio.h>
#definePT5.5
#defineS(x)PT*x*X
main
{inta=1,b=2:
printf("%4.1f\n",s(a+b));
}
A.49.5B.9.5C.22.0D.45.0
78.有以下程序程序的運行結(jié)果是()。
A.852B.963C.741D.875421
79.(8)數(shù)據(jù)庫系統(tǒng)的核心是()
A.數(shù)據(jù)模型
B.數(shù)據(jù)庫管理系統(tǒng)
C.軟件工具
D.數(shù)據(jù)庫
80.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。
A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。
#include“stdio.h”
Main
{inta[]={1,2,3,-4,5};
intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);
printf(“%d%d%d”,*p,m,n);}
六、程序設(shè)計題(1題)82.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。
請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
參考答案
1.C解析:二叉樹的遍歷分為先序,中序、后序三種不同方式.本題要求先序遍歷,其遍歷順序應(yīng)該為:訪問根結(jié)點->,先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF,故答案為C。
2.C
3.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)存空間為最長的成員所占用的空間。
4.B濫用90t0語句將使程序的流程毫無規(guī)律,可讀性差,對于初學(xué)者來說盡量不要使用,所以A錯誤。—個結(jié)構(gòu)化程序可以包含順序、分支、循環(huán)結(jié)構(gòu)中的一種或多種,所以C錯誤。由三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問題,所以D錯誤。
5.D通常把軟件產(chǎn)品從提出、實現(xiàn)、使用、維護(hù)到停止使用、退役的過程稱為軟件生命周期。選項A、B、C選項均為生命周期的一部分。故選D選項。
6.B執(zhí)行調(diào)用語句“n=fun(3);”,3被當(dāng)作實參傳遞進(jìn)去,進(jìn)行了一次調(diào)用。3被當(dāng)作實參傳進(jìn)去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”,函數(shù)被調(diào)用了第2次,參數(shù)是3-1,也就是2。2被當(dāng)作參數(shù)傳進(jìn)去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”函數(shù)被調(diào)用了第3次,參數(shù)是2-1,也就是1。1被當(dāng)作實參傳進(jìn)去后,程序會執(zhí)行“elseif(k==1)return1;”,函數(shù)不再被遞歸調(diào)用。所以最終結(jié)果為3次。故本題答案為B選項。
7.B
8.A
9.D執(zhí)行語句“intm=1,n=2,*p=&m,*q=&n,*r;”,即指針變量p指向m,指針變量q指向n。執(zhí)行語句“r=p;p=q;q=r;”,即通過指針變量r,將指針p和指針q的指向交換。因此最后輸出1,2,2,1。故本題答案為D選項。
10.C
11.D解析:返回指針的函數(shù)定義為:返回值類型,函數(shù)名(\u3000\u3000),而指向函數(shù)的指針定義為:返回值類型(*變量名)(\u3000\u3000)。本題中函數(shù)fun返回一個無類型的指針。
12.C
13.A解析:n--是先使用后自減,--n是先自減后使用。n=4時,執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。
14.D
15.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼
續(xù)進(jìn)行排序,以達(dá)到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整
個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合
成一個新的有序表。
注意:各種排序方法實現(xiàn)過程及實現(xiàn)機(jī)制。
16.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf(“%c%c\\n”,c5,c6)輸出45。
17.D選項A,當(dāng)cl和c2相等時,不成立;選項B,a*b要用括號括起來;選項C,case與后面的數(shù)字用空格隔開。
18.B
19.A
20.D解析:因為x的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1。所以選項D)等于關(guān)系表達(dá)式的結(jié)果為假,即等于0。
21.77解析:如果局部變量與全局變量重名,在局部變量的作用域,全局變量不起作用。所以在main函數(shù)中第一次調(diào)整函數(shù)f時a=5得s=5,第二次調(diào)用函數(shù)f時a=2得s=5+2=7。函數(shù)f在執(zhí)行語句return(*A)++時首先返回*A,然后將*A的值加1。
22.10011fe
23.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達(dá)式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個程序中a、b、c的值沒做任何改變。
24.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫成:
p(double*)malloc(sizeof(double));
25.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。
26.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進(jìn)先出的原則組織數(shù)據(jù)的。
27.讀棧頂元素讀棧頂元素解析:棧的基本運算有三種:入棧、退棧和讀棧頂元素。
入棧運算是指在棧頂位置插入一個新元素。這個運算有兩個基本操作:首先將棧頂指針進(jìn)一(即top加1),然后將新元素插入到棧頂指針指向的位置。
退棧運算是指取出棧頂元素并賦給一個指定的變量。這個運算有兩個基本操作:首先將棧頂元素(棧頂指針指向的元素)賦給一個指定的變量,然后將棧頂指針退一(即top減1)。
讀棧頂元素是指將棧頂元素賦給一個指定的變量。這個運算不刪除棧頂元素,只是將它的值賦給一個變量。
28.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*MCRA(j)+MCRA(i),再用j和i替換MCRA(m)中的參數(shù)m,變成2*2*j+2*i=2*2*3+2*2=16。
29.i<na[i]i<n\r\na[i]解析:該程序直接使用形參max和d,由于它們都是指針變量,所以要引用它所指向的變量時要對它進(jìn)行指針運算,也即*號運算。
30.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。
31.字形字形
32.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標(biāo)識符'\\0'所以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
33.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個表達(dá)式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。
34.b[i][0]b[i][0]解析:因為要將a的最后一行放在b的第0列中,【】應(yīng)填b的第0列的元素。
35.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
36.1-41-4解析:題目中首先讓x=5,然后進(jìn)入do-while循環(huán)體,輸出x-4的值1,此時x為1,表達(dá)式!(--x)的值為!(0)為真(此時x變?yōu)?),所以再次執(zhí)行循環(huán)體,輸出x-4的值-4,此時x為-4,表達(dá)式!(--x)的值為!(—5)為假,退出循環(huán)。故輸出結(jié)果是1-4。
37.AUTOEXEC.BAT
38.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。
39.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。
40.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:
類型說明符*指針變量名;
41.A解析:概要設(shè)計的任務(wù)是劃分出構(gòu)成系統(tǒng)的各物理元素以及設(shè)計出軟件的結(jié)構(gòu)(如確定模塊及模塊間的關(guān)系)。設(shè)計過程通常分為以下幾步:提出可選擇方案;選擇合理方案;推薦最佳方案;功能分解;設(shè)計軟件結(jié)構(gòu);制定測試計劃:最后提交概要設(shè)計文檔。軟件功能分解屬于概要設(shè)計階段。本題的正確答案為選項A。
42.C解析:因為fun(intx)是一個遞歸函數(shù),所以主函數(shù)中fun(7)經(jīng)過三次遞歸調(diào)用,其過程可以描述為'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2',所以最后的輸出結(jié)果為2。
43.D解析:根據(jù)結(jié)構(gòu)變量的存儲特點,p+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的一個元素所占的字節(jié)數(shù),即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結(jié)構(gòu)體變量中成員n的值使之加1。因為p指向數(shù)組a起始地址,p->n的值為5,再掏打自加1運行,結(jié)果為6。
44.B解析:二維數(shù)組賦初值時,第一個維數(shù)即行數(shù)可以省略,但是列數(shù)不能省略。因此選項A、C正確。選項D是按數(shù)據(jù)在二維數(shù)組中的順序初始化。在選項B中,列維數(shù)的初始化格式跟定義的維數(shù)不一致,為錯誤選項。
45.A解析:局部變量在執(zhí)行到它所在的程序塊時產(chǎn)生,執(zhí)行完時被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運行結(jié)束,故選項A正確;全局變量的只有一種靜態(tài)存儲類別,故全局變量說明為static存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運行結(jié)束,故選項B不正確:未賦初值的局部變量的初值是隨機(jī)的,故選項C不正確;形參只能是一般局部變量,不能使用任何存儲類說明符,故選項D不正確。所以,4個選項中選項A符合題意。
46.C
47.C解析:data是一結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達(dá)式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,改選項B不正確:選項D表達(dá)式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確;4個選項中只有C正確。
48.A解析:按照自左向右的運算邏輯,選項A是先做x/y,然后再乘以x,顯然與題意不符。
49.C解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占內(nèi)存長度之和,而共用體變量所占的內(nèi)存長度等于最長的成員的長度。本題結(jié)構(gòu)體變量a中成員c為整型占2個字節(jié),共用體變量u最大長度為4個字節(jié),故選C。
50.B解析:在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存()儲,它的存儲形式與整數(shù)的存儲形式類似。C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以對字符型數(shù)據(jù)進(jìn)行算術(shù)運算,此時相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運算,在本題中,s++相當(dāng)于s=s+1,即讓s指向數(shù)組中的下一個元素。
51.D解析:strcat(p1,p2)將字符串a(chǎn)bcABC放到了*p1所指向的存儲單元中;strcpy在本題將abcABC復(fù)制到str+2所指向的存儲單元中,即覆蓋原str數(shù)組中的字符z及其后的所有字符,故str的值為“xyabcABC”。
52.B解析:本題中首先定義了一個字符串?dāng)?shù)組并初始化,初始化后使得str[0]='China',str[1]='Beijng',然后定義一個指針變量p并讓其指向str,而在該二維數(shù)組中定義每個字符串的長度為10,所以p+10將指向str[1],因此最后輸出*(p+10)的值為Beijng。所以,4個選項中選項B符合題意。
53.C解析:關(guān)于軟件測試的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。整體來說,軟件測試的目的就是盡可能多地發(fā)現(xiàn)程序中的錯誤。本題答案為C。
54.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時,上述規(guī)則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結(jié)果為“ATBZXCYP”。對于本題,若使用后序遍歷和中序遍歷的結(jié)果分別為“ZBTYCPXA”和“TZBACYXP”。
55.D解析:首先定義了一個指向一維數(shù)組b的指針p,一個指向指針p的指針變量q,輸出*(p++)是先輸出*p即b[0]的值,再將指針p指向數(shù)組的下一個元素b[1],輸出**q是輸出指針p所指單元的內(nèi)容,即b[1]的值。
56.B解析:函數(shù)fopen(constchar*filename,constchar*mode)的功能,是以mode指定的模式打開filename指定的磁盤文件;fclose(FILE*fp)的功能是關(guān)閉文件指針fp指向的文件;函數(shù)fscanf(FILE*fp,constchar*format[,address,--])的功能是根據(jù)format中的格式從fP指向的文件中讀取數(shù)據(jù),并存入到相應(yīng)的address指向的變量中。函數(shù)fprintf(FILE*fp,constchar*format[,argument,--])的功能是把a(bǔ)rgument列表中的表達(dá)式值寫到fp所指向的文件中:本題中首先定義了一個文件指針fp,然后通過函數(shù)fopen以“w”的方式打開文件“d1.dat”,直接通過一個for循環(huán),每循環(huán)一次調(diào)用函數(shù)fpfintf將i的值寫進(jìn)fP所指的文件中,該循環(huán)共循環(huán)3次,循環(huán)完后fP所指文件的內(nèi)容為123,然后通過fclose函數(shù)關(guān)閉fp所指文件。接著通過fscanf函數(shù)將fP所指文件的內(nèi)容讀出并賦值給變量k和變量n,由于fp所指文件中只有123沒有分隔符,故只給k賦值為123,變量n的值依然為以前的值,故最后輸出k和n的值為123。
57.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。
58.C解析:在選項A中,main()函數(shù)中定義了一個指針變量p,調(diào)用fun()函數(shù)時把p傳給形參p,在函數(shù)中讓p指向局部變量s,由于函數(shù)調(diào)用返回后,局部變量s將被釋放,因此無法實現(xiàn)讓實參p指向一個整型單元,故選項A錯誤。選項B中實現(xiàn)的也是讓實參p,指向一個在函數(shù)fun()中定義的局部變量s,因此也是錯誤的;選項C在函數(shù)fun()中分配了兩個字節(jié)的內(nèi)存單元并把首地址賦值給形參p指向的變量,即main()函數(shù)的指針變量p中,由于整型變量占兩個字節(jié),因此,選項C是正確的;選項D在主函數(shù)中定義了一個指針地址變量p,并把指針變量的值傳給形參變量p,在fun()函數(shù)中分配了一個整型單元并把首地址賦值給行參指針變量p,由于C語言中變量作為參數(shù)是傳值的,所以并沒有改變對應(yīng)實參指針變量的值,因此選項D也是錯誤的。所以,C選項為所選。
59.D解析:本題中首先定義了字符數(shù)組a,由于它的長度省略,所以其長度由初值個數(shù)確定,為9。接著將sizeof()函數(shù)返回的值賦給i(sizeof()函數(shù)的作用是返回運算對象占用的字符數(shù)),所以i值為9;然后將strlen()函數(shù)的返回值賦給j(strlen()函數(shù)的作用是返回字符串的長度,不包括字符串的結(jié)束標(biāo)記'\\0'),所以j值為8,所以最后輸出的i,j的值為9,8。
60.D解析:選項A)的循環(huán)表達(dá)式條件永久為1,由于小于100的數(shù)與100取余不超過99,所以在循環(huán)體內(nèi)表達(dá)式i%100+1的值永遠(yuǎn)不大于100,break語句永遠(yuǎn)不會被執(zhí)行,所以是死循環(huán);選項B)的括號內(nèi)沒有能使循環(huán)終止的條件,是死循環(huán);選項C)中先執(zhí)行k++,使k=10001,陷入死循環(huán);選項D)中的s從36開始,每循環(huán)一次就減小1,直到s為0,循環(huán)結(jié)束,不會構(gòu)成死循環(huán)。
61.C
62.A
63.A在單鏈表的第一個結(jié)點前增加一個表頭結(jié)點,隊頭指針指向表頭結(jié)點,最后一個結(jié)點的指針域的值由NULL改為指向表頭結(jié)點,這樣的鏈表稱為循環(huán)鏈表。循環(huán)鏈表是線性結(jié)構(gòu),有且只有一個根結(jié)點,每一個結(jié)點最多有一個前件,也最多有一個后件。循環(huán)鏈表表頭結(jié)點為根結(jié)點,鏈表的最后一個結(jié)點為葉子節(jié)點,雖然它含有一個指向表頭結(jié)點的指針,但是表頭結(jié)點并不是它的一個后件。故選擇A選項。
64.B統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此·(t+i)代表數(shù)組的第i+1個元素。程序運行的結(jié)果是l+3+5+7+9=25。
65.A“&”按位與,如果兩個相應(yīng)的二進(jìn)制位都為l,則該位的結(jié)果值為l,否則為0。
“r’按位或,即兩個相應(yīng)的二進(jìn)制位中只要有一個為l,該位的結(jié)果值為l。2的二進(jìn)制為00000010.4的二進(jìn)制為00000100,因此做或運算結(jié)果為00000110,該數(shù)與51/1100000101做與運算,結(jié)果為00000100,即4,選項A)正確。
66.A條件表達(dá)式:X----表達(dá)式l?表達(dá)式2:表達(dá)式3的含義是:先求解表達(dá)式1,若其值為非0(真),則求解表達(dá)式2,將表達(dá)式2的值賦給x,若表達(dá)式1的值為o(假),則求解表達(dá)式3,將表達(dá)式3的值賦給x。在本題中與表達(dá)式(x_y)等價的是(x—y<011x—y>0),A選項正確。
67.B
68.AB選項中函數(shù)pow(x,C)錯誤應(yīng)該直接使用exp(x)函數(shù)。c選項中函數(shù)ah(n^x+e“x)錯誤,應(yīng)該使用fabs()返回浮點數(shù)的絕對值。D選項中pow(x,n)參數(shù)順序錯誤。
69.D
70.D
71.D
\n主要考查運算符的優(yōu)先級。sizeof的優(yōu)先級最高,其次是%<<>.優(yōu)先級最低的是“=”。
\n
72.A解析:在本題中k=n++,為后綴運算。根據(jù)其運算規(guī)則,首先n先加一,但n++表達(dá)式的值依然n原來的值,即k的值沒有改變。選項A中先給k賦值為n,然后n再加1,k值沒有變化,所以這個表達(dá)式和本題中表達(dá)式等價:選項B中先n加1,然后將n加1后的值賦給k,k變化了比原來的值大1,所以這個表達(dá)式和本題中表達(dá)式不等價:選項C中先計算表達(dá)式左邊的表達(dá)式++=N的值,執(zhí)行++n后,左邊的表達(dá)式的值為n的值加1,然后將n+1后的值賦給k,所以這個表達(dá)式和本題中的表達(dá)式不等價;選項D中表達(dá)式展開為k=k+(n+1),k的值發(fā)生了變化,所以這個表達(dá)式和本題中的表達(dá)式不等價。所以4個選項中A正確。
73.B
74.B
75.D
76.B數(shù)據(jù)庫有三層模式結(jié)構(gòu),邏輯模式是數(shù)據(jù)的全局邏輯結(jié)構(gòu)的描述,外模式也稱為子模式,是局部數(shù)據(jù)的邏輯結(jié)構(gòu)描述,而內(nèi)模式也稱為存儲模式,是數(shù)據(jù)庫物理存儲結(jié)構(gòu)和存取方法的描述。
77.B本題考查函數(shù)調(diào)用,由于a+b沒有被括起來,所以s(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5,故選擇B。
78.A第一次執(zhí)行for—循環(huán),y的值為9,y%3的值為0,滿足條件打印一y,即先減1后打印,因此打印8;第二次執(zhí)行fbr循環(huán),y的值為7,y%3的值為l,不執(zhí)行打印語句;第三次執(zhí)行for循環(huán),y的值為6,y%3的值為0,滿足條件打印一Y,即先減l后打印,因此打印5;第四次執(zhí)行for循環(huán),y的值為4,不滿足if條件,不執(zhí)行打印語句;第五次執(zhí)行for循環(huán),y的值為3,滿足if條件,打印輸出2;第六次執(zhí)行for循環(huán),y的值為1.不滿足條件,不執(zhí)行打印語句。故本題答案為A)。
79.B數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,因此數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。
80.A【答案】:A
【知識點】:黑盒測試
【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。
81.82.\r\n\tintn,k,i;
doublesum=0.0;
for(n=3;n<=m;n++)//判斷n是否為素數(shù)
{
k=sqrt(n);//求n平方根
for(i=2;i<=k:i++)
if(n%i==0)break;//如果n不是素數(shù),跳出
if(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
returnsum;
【解析】首先判斷循環(huán)中n是否為素數(shù),如果不是素數(shù),求其平方根的累加和,并返回計算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt函數(shù)。</i<p)為()。2021年安徽省蕪湖市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)有下列二叉樹:
對此二叉樹先序遍歷的結(jié)果為
A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA
2.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。
A.IB.n-iC.n-i+1D.不確定
3.下列程序的輸出結(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
4.以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是()。
A.結(jié)構(gòu)化程序使用goto語句會很便捷
B.在c語言中,程序的模塊化是利用函數(shù)實現(xiàn)的
C.一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成
D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
5.軟件生命周期是指()。
A.軟件的定義和開發(fā)階段
B.軟件的需求分析、設(shè)計與實現(xiàn)階段
C.軟件的開發(fā)階段
D.軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程
6.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
7.廣義表((a),a)的表頭是()。
A.aB.(a)C.((a))D.()
8.若用一個大小為6的數(shù)組來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()
A.2和4B.1和5C.4和2D.5和1
9.有以下程序:#include<stdio.h>main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序的運行結(jié)果是()。
A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1
10.某二叉樹結(jié)點的中序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E,該二叉樹對應(yīng)的層次遍歷序列為()
A.E、G、F、A、C、D、B
B.E、A、C、B、D、G、F
C.E、A、G、C、F、B、D
D.E、G、A、C、D、F、B
11.程序中對fun函數(shù)有如下說明
void*fun();
此說明的含義是:A.fun了數(shù)無返回值
B.fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C.fun函數(shù)的返回值是無值型的指針類型
D.指針fun指向一個函數(shù),該函數(shù)無返回值
12.字符串"alibaba"的二進(jìn)制哈夫曼編碼有多少位()
A.11B.12C.13D.14
13.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
14.最壞情況下時間復(fù)雜度不是n(n-1)/2的排序算法是()
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
15.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
16.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是A.A.1267B.1256C.1278D.1245
17.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的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;}
18.
19.若有序表的關(guān)鍵字序列為(b,c,d,e,f,g,q,r,s,t),則在二分查找關(guān)鍵字b的過程中,先后進(jìn)行的關(guān)鍵字依次為()
A.f,c,BB.f,d,BC.g,c,BD.g,d,B
20.下列選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
二、2.填空題(20題)21.有以下程序;
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ints=0;
{inta=5;
s+=f(&A)
}
s+=f(&A)
printf("%d\n",s)
}
執(zhí)行后的輸出結(jié)果是【】。
22.當(dāng)輸入19、2時,下列程序的運行結(jié)果為【】;輸入254、16時,則程序的運行結(jié)果是【】。
main()
{chardata_symbols[17]="0123456789abcdefghijklmnopqrstuvwxyz";
inti=0,t,subscript,data_converted[32];
longnumber;
while(1)
{scanf("%ld,%d",&number,&t);
if(number>=O&&t>=2&&t<=16)break;
}
do
{dataconverted[i++]=number%t;
number=number/t;
}
while(number!=0);
for(--i;i>=0;--i)
{subscript=data_converted[i];
printf("%c",data_symbols[subscript]);
}
printf("\n");
}
23.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta=2,b=-1,C=2;
if(a<B)
if(b<O)c=0;
elsec++;
printf("%d\n",C);
}
24.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
25.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。
26.按照“先進(jìn)先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。
27.棧的基本運算有三種:入棧、退棧和【】。
28.以下程序的輸出結(jié)果是【】。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{
inti=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
29.下面函數(shù)的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值的和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。請?zhí)羁铡?/p>
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
{inti;
*max=a[0];
*d=0;
for(i=0;【】;i++)
if(*max<【】)
{*max=a[i];*d=i;}}
main()
{inti,x[20],max,index,n=10;
randomize();
for(i=0;i<n;i++)
{x[i]=rand()%50;printf("%4d",x[i]);}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);}
30.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
31.漢字系統(tǒng)中,字庫中的漢字是以【】碼存在。
32.設(shè)有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
33.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
34.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。
#defineN4
voidrotate(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=a[0][i];【】=a[N-1][i];}
}
35.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
36.下面程序段的輸出結(jié)果是【】。
intx=5;
do{printf("%d",x-=4);
}while(!(--x));
37.自動批處理文件名必須是【】。
38.與表達(dá)式a+=b等價的另一書寫形式是______。
39.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
40.以下程序運行后的輸出結(jié)果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
三、1.選擇題(20題)41.在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是()。
A.概要設(shè)計B.需求分析C.詳細(xì)設(shè)計D.編程調(diào)試
42.有以下程序
fun(intx)
{intp;
if(x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
執(zhí)行后的輸出結(jié)果是
A.7B.3C.2D.0
43.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達(dá)式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
44.以下數(shù)組定義中錯誤的是______。
A.intx[][3]={0};
B.intx[2][3]={{1,2},{3,4},{5,6)};
C.intx[][3]={{1,2,3},{4,5,6}};
D.mtx[2][3]={1,2,3,4,5,6};
45.以下敘述中正確的是()。
A.局部變量說明為static存儲類,其生存期將得到延長
B.全局變量說明為static存儲類,其作用域?qū)⒈粩U(kuò)大
C.任何存儲類的變量在未賦初值時,其值都是不確定的
D.形參可以使用的存儲類說明符與局部變量完全相同
46.在嵌套使用if語句時,C語言規(guī)定else總是()。
A.和之前與其具有相同縮進(jìn)位置的if配對
B.和之前與其最近的if配對
C.和之前與其最近不帶else的if配對
D.和之前的第一個if配對
47.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是
A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;
48.以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子x/(y*2)的C語言表達(dá)式是______。
A.x/y*2B.x*(1/(y*z))C.x/y*1/zD.x/y/z
49.變量a所占的內(nèi)存字節(jié)數(shù)是______。
A.4
B.5
C.6
D.8unionU{charst[4];inti;longl;};StructA{intc;unionUu;}a;
50.有以下程序voidss(char*s,chart){while(*s){if(*s==t),s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
51.以下程序#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%ss\n",str);}的輸出是______。
A.xyzabcABCB.zabcABCC.yzbcABCD.xyabcABC
52.有以下程序:main(){charstr[][10]={"China","Beijing"),*p=str;printf("%s\n",p+10);}程序運行后的輸出結(jié)果是()。
A.ChinaB.BeijngC.ngD.ing
53.下列對于軟件測試的描述中正確的是()。
A.軟件測試的目的是證明程序是否正確
B.軟件測試的目的是使程序運行結(jié)果正確
C.軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤
D.軟件測試的目的是使程序符合結(jié)構(gòu)化原則
54.設(shè)有下列二叉樹:對此二叉樹前序遍歷的結(jié)果為()
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
55.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intb[6]={2,4,6,8,10,12};int*p=b,**q=&p;printf("%d",*(p++));printf("%d,",**q);}
A.4,4B.2,2C.4,5D.2,4
56.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}執(zhí)行后輸出結(jié)果是()。
A.12B.1230C.123D.00
57.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
58.以下程序段中,能夠通過調(diào)用函數(shù)fun(),使main()函數(shù)中的指針變量p指向一個合法的整型單元的是()。
A.main(){int*p;fun(p);…}intfun(int*p){ints;p=&s;}
B.main{int*pfun(&p);…}ihtfun(int**p){ints;*p=&s;}
C.main(){int*p;fun(&p);}intfun(int**p){*p=(int*)malloc(2);}
D.main(){int*p;fun(p);}intfun(int*p){p=(int*)malloc(sizeo(int));}
59.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sized(a);j=stden(a);printf(“%d,%d\n”,i,j);}程序運行后的輸出結(jié)果是
A.9,9B.8,9C.1,8D.9,8
60.在下列選項中,沒有構(gòu)成死循環(huán)的是()。
A.inti=100;while(1){i=i%100+1;if(i>100)break;}
B.for(;;);
C.intk=10000;do{k++;}while(k>10000);
D.ints=36;while(s)--s;
四、選擇題(20題)61.
62.
63.非空循環(huán)鏈表所表示的數(shù)據(jù)結(jié)構(gòu)()。
A.有根結(jié)點也有葉子結(jié)點B.沒有根結(jié)點但有葉子結(jié)點C.有根結(jié)點但沒有葉子結(jié)點D.沒有根結(jié)點也沒有葉子結(jié)點
64.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.20B.25C.45D.36
65.有以下程序程序運行后的輸出結(jié)果是()。
A.4B.3C.5D.6
66.若有定義intx'y;并已正確給變量賦值。則以下選項中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x_y)等價的是()。
A.(x-y011x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y=o)
67.
68.若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達(dá)式是()。
A.sqrt(fabs(pow(n,x)+exp(x)))
B.sqrt(fabs(pow(n,x)+pow(x,e)))
C.sqrt(abs(n^x+e^x)
D.sqrt(fabs(pow(x,n)+exp(x)))
69.
70.
71.
若有運算符:>、一、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序為()。
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
72.以下選項中,與k=n++完全等價的表達(dá)式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
73.
74.
75.
76.在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。
A.外模式B.內(nèi)模式C.概念模式D.邏輯模式
77.以下程序運行后,輸出結(jié)果是()。
#include<stdio.h>
#definePT5.5
#defineS(x)PT*x*X
main
{inta=1,b=2:
printf("%4.1f\n",s(a+b));
}
A.49.5B.9.5C.22.0D.45.0
78.有以下程序程序的運行結(jié)果是()。
A.852B.963C.741D.875421
79.(8)數(shù)據(jù)庫系統(tǒng)的核心是()
A.數(shù)據(jù)模型
B.數(shù)據(jù)庫管理系統(tǒng)
C.軟件工具
D.數(shù)據(jù)庫
80.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。
A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。
#include“stdio.h”
Main
{inta[]={1,2,3,-4,5};
intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);
printf(“%d%d%d”,*p,m,n);}
六、程序設(shè)計題(1題)82.請編寫fun函數(shù),其功能是:計算并輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版房地產(chǎn)租賃合同附抵押權(quán)登記示范4篇
- 二零二五年度教育機(jī)構(gòu)教師聘用合同范本
- 二零二五年度2025版融資租賃合同范本4篇
- 2025年度新型保溫材料抹灰分包勞務(wù)合同
- 二零二五年度苗木種植與生態(tài)旅游合作合同范本7篇
- 2025年度個人商品住宅買賣合同標(biāo)準(zhǔn)范本4篇
- 2025年木地板原材采購合同304402025采購版3篇
- 2025年度南京個人住宅房產(chǎn)買賣合同規(guī)范文本
- 2025年雞蛋市場調(diào)研與采購合作合同模板3篇
- 2025年度數(shù)控打磨工勞動合同與職業(yè)技能鑒定考核協(xié)議4篇
- 垃圾車駕駛員聘用合同
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 新聞記者證600道考試題-附標(biāo)準(zhǔn)答案
- 變壓器搬遷施工方案
- 單位轉(zhuǎn)賬個人合同模板
- 八年級語文下冊 成語故事 第十五課 諱疾忌醫(yī) 第六課時 口語交際教案 新教版(漢語)
- 中考語文二輪復(fù)習(xí):記敘文閱讀物象的作用(含練習(xí)題及答案)
- 2024年1月高考適應(yīng)性測試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- EPC項目采購階段質(zhì)量保證措施
- T-NAHIEM 101-2023 急診科建設(shè)與設(shè)備配置標(biāo)準(zhǔn)
評論
0/150
提交評論