版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2021年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下能夠正確描述“k是大于0的偶數(shù)”的表達(dá)式是()。
A.(k>0)&&(k%2!=1)
B.(k>0)&&(k%2=0)
C.(k>0)||!(k%2)
D.(k>0)||(k%2==0)
2.靜態(tài)鏈表中指針表示的是()。
A.內(nèi)存地址B.數(shù)組下標(biāo)C.下一元素地址D.左、右孩子地址
3.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。
A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績
4.允許對隊列進行的操作有()。
A.對隊列中的元素排序B.取出最近進隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素
5.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)
B.ptr是指向int型數(shù)據(jù)的指針變量
C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)
D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針
6.以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序錯誤
7.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審
8.對線性表進行二分法檢索,其前提條件是()。
A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序
B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序
C.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼值排好序
D.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼的檢索頻率排好序
9.在“文件包含,預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。
A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當(dāng)前目錄
10.若用一個大小為6的數(shù)值來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。
A.1和5B.2和4C.4和2D.5和1
11.有以下程序:#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.acc,bbxxyy
B.accbbxxyy,bbxxyy
C.accxxyy,bbxxyy
D.accxyy,bbxxyy
12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認(rèn)為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;
13.表達(dá)式a*(-b+c)的逆波蘭式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
14.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序執(zhí)行后輸出結(jié)果是()。A.n=5B.n=2C.n=3D.n=4
15.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是
A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是
16.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。
A.先序遍歷B.中序遍歷C.后序遍歷D.按層遍歷
17.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成
B.一個C語言程序只能實現(xiàn)一種算法.
C.程序可以由一個或多個函數(shù)組成
D.一個C函數(shù)可以單獨作為一個C程序文件存在
18.
19.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}執(zhí)行時輸入6并按<Enter>鍵,則輸出結(jié)果是()。A.6B.8C.7D.5
20.針對簡單程序設(shè)計,以下敘述的實施步驟順序正確的是()。
A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔
B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔
C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試
D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔
二、2.填空題(20題)21.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。
st=(char*)【】;
22.執(zhí)行以下程序后sum的值是【】。
main()
{
inti,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
23.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
24.需求分析的最終結(jié)果是產(chǎn)生【】。
25.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。
26.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
27.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。
28.目前實際存在和使用的廣域網(wǎng)基本上都是采用______拓?fù)浣Y(jié)構(gòu)類型。
有以下程序:
#include<string.h>
structSTU
{intnum;
floatTotalScore;};
voidf(structSTUp)
{structSTUs[2]={{20041,703},{20045,537}};
p.num=s[1].num;p.TotalScore=s[1].TotalScore;
}
main()
{structSTUs[2]={{20041,703},{20042,580}};
f(s[0]);
printf("%d%3.0f\n",s[0].num,s[0],TotalScore);
}
程序運行后的輸出結(jié)果是【】。
29.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有______。
30.下面程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{char*p={"BOOL""OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%",*p[i]);
printf("\n");
}
31.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
32.下列程序段的輸出結(jié)果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
33.以下程序運行后的輸出結(jié)果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
34.下列程序執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
35.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。
36.當(dāng)輸入的數(shù)據(jù)為2、5時,則下列程序的運行結(jié)果為【】。
#include<stdio.h>
#definemax100
main()
{
intf[max],i,j,k,m;
scanf("%d%d",&k,&m);
for(i=0;i<=m;i++)f[i]=0;
f[k-1]=1;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++)f[i]+=f[i];
printf("%d%10d%10d\n",k,m,f[m]);
getch();
}
37.已知字符'A'的ASCII碼為65,以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
38.下列程序的運行結(jié)果為【】。
main()
{inta=5,b=5,y,z;
y=b-->++a?++b:a;
z=++a>b?a:y;
printf("%d,%d,%d,%d",a,b,y,z);
}
39.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
40.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
三、1.選擇題(20題)41.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。
A.INPUTX,Y,Z;
B.scanf("%d%d%d",&X,&Y,&Z);
C.scanf("%d%d%d",X,Y,Z);
D.read("%d%d%d",&X,&Y,&Z);
42.已有定義int(*q)(),指針q可以()。
A.指向函數(shù)的入口地址B.代表函數(shù)的返回值C.表示函數(shù)的類型D.表示函數(shù)返回值的類型
43.下列程序的運行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}
A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值
44.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其輸出結(jié)果是()。
A.0,0B.0,1C.1,1D.程序進入無限循環(huán)
45.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
46.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
47.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序運行后的輸出結(jié)果是()。
A.6,1B.2,1C.6,0D.2,0
48.以下有關(guān)宏替換的敘述不正確的是()。
A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示
49.若下列各選項中所有變量已正確定義,函數(shù)fun通過return語句返回一個函數(shù)值,以下選項中錯誤的程序是()。
A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}
B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}
C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}
D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}
50.不是面向?qū)ο蟪绦蛟O(shè)計的可維護性的優(yōu)點的是()
A.用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件穩(wěn)定性比較好B.易于移植C.易于和調(diào)試D.用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件比較容易理解
51.下列程序的運行結(jié)果為
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
52.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦于19.0,b賦予22.0,c賦予33.0,不正確的輸入形式是______。
A.10<回車>22<回車>33<回車>
B.19.0,22.0,33.0<回車>
C.19.0<回車>22.033.0<同車>
D.1022<回車>33<回車>
53.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結(jié)果是()。
A.7B.6C.8D.無確定值
54.若有下列定義,則對a數(shù)組元素地址的正確引用是()。
inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
55.有如下程序: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
56.不能把字符串"Hello!"賦給數(shù)組b的語句是______。
A.charb[10]={'H','e','l','l','o','!'};
B.charb[10]={'h','e','l','l','o','!'};
C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
57.以下各選項均為說明一種新的類型名,其中正確的是()。
A.typedefv1int;
B.typedefv1=int;
C.typedefintv1;
D.typedefv1=int;
58.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結(jié)果是______。
A.64,28B.4,4C.4,3D.64,64
59.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
60.在下列關(guān)于二叉樹的敘述中,正確的一項是
A.在二叉樹中,任何一個結(jié)點的度都是2
B.二叉樹的度為2
C.在二叉樹中至少有一個結(jié)點的度是2
D.一棵二叉樹的度可以小于2
四、選擇題(20題)61.
62.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
該程序的輸出結(jié)果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
63.
64.(46)面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是()
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領(lǐng)域的概念去思考
65.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
66.下列程序的輸出結(jié)果是
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
A.2
B.4C.6
D.8
67.在單鏈表中,增加頭結(jié)點的目的是()。
A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標(biāo)識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性的鏈?zhǔn)酱鎯崿F(xiàn)
68.
69.下列關(guān)于指針變量賦空值的說法錯誤的是
A.當(dāng)賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達(dá)為變量名=’\0’;
C.賦值語句可以表達(dá)為變量名=0;D.一個指針變量可以被賦空值
70.以下選項中,能用作數(shù)據(jù)常量的是______。A.o115B.0118C.1.5e1.5D.115L
71.有以下程序
.程序運行后的輸出結(jié)果是()。
A.6B.9C.11D.7
72.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.20B.25C.45D.36
73.(2)以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是()
A.隊列
B.線性表
C.二叉樹
D.棧
74.(15)在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()
A.概要設(shè)計
B.詳細(xì)設(shè)計
C.可行性分析
D.需求分析
75.
76.有以下程序
#include<stdio.h>
main()
{
intnum=0;
while(num<=2)
{
num++;
printf("%d\n",num);
}
}
上面程序的輸出結(jié)果是
77.有以下程序:
若運行時輸入:246<;回車>;,則輸出結(jié)果為()。
A.204B.200C.240D.246
78.有以下程序:
voidmain()
{
inty=10;
while(y>>1){printf("y=%d\n",y);}
}
程序執(zhí)行后的輸出結(jié)果是()。
A.y=0
B.y=-1
C.y=1
D.while構(gòu)成無限循環(huán)
79.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點,指針變量s總是作為指針指向鏈表的第一個結(jié)點。
若有以下程序段:
該程序段實現(xiàn)的功能是()。
A.刪除尾結(jié)點B.尾結(jié)點成為首結(jié)點C.刪除首結(jié)點D.首結(jié)點成為尾結(jié)點
80.
五、程序改錯題(1題)81.已知一個數(shù)列從0項開始的前3項為0,0,1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc的功能是:計算并輸出該數(shù)列前n項的和sum。n的值通過形參傳人。例如,當(dāng)n=20時,程序的輸出結(jié)果應(yīng)為42762.000000。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動maiil函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doubleproc(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;//****found****for(k=4;k<n;k++)}{s=s0+s1+s2;sum+=S:s0=s1;s1=s2;//****found****s2=s;returnsum;}voidmain{intn;system("CLS");printf("InputN=");scanf("%d",&nJ;printf("%f\n",proc(n));}
六、程序設(shè)計題(1題)82.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.A判斷k大于0的表達(dá)式為“k>0”,判斷k是偶數(shù)的表達(dá)式為“k%2==0”或“k%2!=1”。兩個表達(dá)式必須都成立才能確定k是大于0的偶數(shù),則對應(yīng)的表達(dá)式為“(k>0)&&(k%2==0)”或“(k>0)&&(k%2!=1)”。故本題答案為A選項。
2.C
3.C學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C項。
4.D
5.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標(biāo)識符(*指針變量名)()?!邦愋蜆?biāo)識符”為函數(shù)返回值的類型。
6.A解析:本題main函數(shù)中定義了指針p和二維數(shù)組a,通過函數(shù)amovep將數(shù)組的值存入指針p所指向的存儲單元中,a的各元素分別為:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通過mailoc()函數(shù)給指針分配內(nèi)存空間,free()函數(shù)用于釋放指針變量所用內(nèi)存空間。在主函數(shù)中通過amovep(p,a,3)調(diào)用函數(shù)amovep,使得實參p與形參p,實參數(shù)組a與形參中指向數(shù)組的指針變量共用同一存儲空間。最后輸出p[2],p[5]為56。
7.C【答案】:C
【知識點】:需求分析階段的任務(wù)
【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定軟件設(shè)計的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題??煞譃樾枨筇岢?、需求描述及需求評審三個階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測試計劃,故選C。
8.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關(guān)鍵碼值的大小排好序,而不是按關(guān)鍵碼的檢索頻率排序。
9.B#include”文件名”,預(yù)處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標(biāo)準(zhǔn)目錄搜索。
10.B
11.B在函數(shù)fun中,前一個while循環(huán)的作用是,如果形參指針t所指內(nèi)容不為0,則讓t增1,直到它指向0;后一個while循環(huán)的作用是,將s所指內(nèi)容賦給t所指地址,然后兩者同時增1,直到賦給t的內(nèi)容為0。由此可見,函數(shù)fun的作用就是將形參s所指字符串連接到形參t所指字符串末尾,相當(dāng)于庫函數(shù)strcat。主函數(shù)中使用fun將數(shù)組aa中的字符串連接到數(shù)組ss中原有字符串之后,所以執(zhí)行完后,ss中的字符串為“accbbxxyy”。程序最后輸出的結(jié)果是accbbxxyy,bbxxyy。故本題答案為B選項。
12.A本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進行賦值時沒有錯誤。a=/*p+m賦值,在c語言中"/*"表示的注釋,所以答案選擇A。
13.D
14.Dcontinue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。
15.C解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。
16.A
17.B在一個C語言程序中可以進行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。
18.C
19.C后綴自增運算“t++”表示先運算,再自加。語句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值為6,則“t++<6”,條件為假,t自增至7,執(zhí)行“printf(“%d\\n”,t--);”,此時t=7,輸出t值為7,之后進行自減操作t=6。因此輸出的結(jié)果為7。故本題答案為C選項。
20.A\nC語言中程序中的步驟實現(xiàn)為:先確定程序中的算法和數(shù)據(jù)結(jié)構(gòu),然后進行程序的編碼,再進行對程序的調(diào)試,最后進行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。
\n
21.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:該題主要考查malloc函數(shù)的使用。一個字符在內(nèi)存中占一個字節(jié),因此malloc的參數(shù)為11。也可按指向字符指針的大小來分配。
22.1515解析:程序的功能是求1、2、3、4、5的和即15。
23.*(p+5)或p[5]*(p+5)或p[5]
24.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。
25.模塊獨立原理模塊獨立原理
26.43214321解析:靜態(tài)存儲類的局部變量其生存期為整個程序的運行期間,作用域卻只是定義它的函數(shù)或局部范圍。注意:局部變量和全局變量的作用域。
27.數(shù)據(jù)存儲數(shù)據(jù)存儲
28.2004170320041703解析:由于參數(shù)傳遞只是將實參的值復(fù)制到形參中,形參與實參擁有各自的存儲空間,因此形參的改變并不影響實參,所以并不改變s的情況。
29.前件前件
30.SO
31.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
32.HelloHello解析:字符串中,數(shù)值0或符號'/0'表示字符串的結(jié)束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結(jié)束標(biāo)志。因此,只輸出前五個字符,即Hello。
33.132132解析:本題考核的知識點是for循環(huán)與switch語句的綜合運用。主函數(shù)中用了一個for循環(huán),for循環(huán)里嵌套了一個switch語句,for循環(huán)了三次,當(dāng)i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當(dāng)i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當(dāng)i=11時,i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結(jié)束。故該空格處應(yīng)該填132。
34.1212解析:本題的第—個for循環(huán)用于紿數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
35.模塊化模塊化
36.255
37.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式輸出\'C\'的ASCII碼為67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式輸出為\'G\'。
38.7467
39.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。
40.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
41.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項A不是C語言中的輸入語句,故選項A不正確;選項C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項C不正確;選項D不是C語言中的輸入語句,故選項D不正確:所以,4個選項中選項B符合題意。
42.A解析:本題考查的是指向函數(shù)的指針。函數(shù)指針的定義方式是:類型標(biāo)識符(*指針變量名)()。其中,“類型標(biāo)識符”為函數(shù)返回值的類型;“指針”指向函數(shù)的入口地址。
43.A解析:本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點:①原則是依次比較兩個字符串同—位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同.則ASCII碼值較大的字符所在的串符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值<0;當(dāng)str1=str2時,返回值為0;當(dāng)str1>str2,返回值>0。
44.B解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達(dá)式的值。當(dāng)值為非0時,轉(zhuǎn)去執(zhí)行步驟①;當(dāng)值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達(dá)式i++的值,其值為0,所以循環(huán)結(jié)束。此時變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i的值“1”。
45.B
46.B解析:所謂中序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。
47.B解析:本題的考點是關(guān)于C語言的整數(shù)運算和邏輯運算。由于d初值為25,“a=d/10%9中d/10”整除結(jié)果是2,再用9求余結(jié)果仍是2,因此a的值為2。而對于“b=a&&(-1)”,由于a值為2不為0,-1也不為0,因此“a&&(-1)”結(jié)果為真,b值是1。輸出結(jié)果應(yīng)該是2、1。正確選項是B。
48.D解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應(yīng)注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標(biāo)識符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。
49.A解析:C語言程序從main函數(shù)開始執(zhí)行,當(dāng)程序中定義了多個函數(shù)時,通常情況下是先定義后調(diào)用。若被調(diào)用函數(shù)定義在主調(diào)函數(shù)之后,則必須先聲明后調(diào)用。在選項A)中,先執(zhí)行main函數(shù),并調(diào)用了fun函數(shù),而fun函數(shù)在此調(diào)用之前無定義也無聲明,故無法正常識別調(diào)用,所以錯誤。
50.B
51.A解析:本題考查了用字符指針引用字符數(shù)組中的字符及對字符的操作。函數(shù)abc()的for語句執(zhí)行過程是:從字符指針str所指向的字符數(shù)組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數(shù)組元素的賦值過程,若字符為'c'就不執(zhí)行。
52.B解析:用scanf函數(shù)輸入多個數(shù)據(jù)時,數(shù)據(jù)間的分隔符可以是空格、回車符或制表符,本題中選項A、C和D的輸入方法都是正確的。因scanf函數(shù)中的控制字符中沒有非格式字符“,”,因此選項B中以“,”作為分隔符是錯誤的。
53.A解析:本題定義了一個指向由3個元素組成的一維數(shù)組的指針變量pa,通過賦值讓它指向具有2行3列的數(shù)組a,此時用指針變量pa,表示數(shù)組元素a[i][j]的形式是pa[im][j])。for循環(huán)執(zhí)行了3次;第一次i值為0,執(zhí)行pa[1][0]=pa[1][0]-1,執(zhí)行后a[1][0]的值變?yōu)?;第二次i值為1,執(zhí)行pa=[1][1]=pa[1][1]-1,執(zhí)行后a[1][1]的值為4;第三次i值為2,執(zhí)行pa[1][2]=1,執(zhí)行后a[1][2]的值變?yōu)?。故prinff語句輸入的值為2+4+1=7。所以,A選項為所選。
54.D解析:本題考查如何引用數(shù)組元素的地址。
選項A)中,p+5引用的是a[5]的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用錯誤;選項B)中,*a+1指的是將數(shù)組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數(shù)組的首地址。
55.B解析:函數(shù)fib內(nèi)部有兩個遞歸調(diào)用,當(dāng)n=3時,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。
56.B解析:在C語言中,大寫字母和小寫字母被認(rèn)為是兩個不同的字符,因此,“hello!”和“Hello!”是兩個不同的字符串。
57.C解析:使用typedef定義新類型名的一般格式是:typedef<舊類型名><新類型名>。選項A,int是C語言中已經(jīng)有的類型名,不能再被定義成其他類型名,故不正確:選項B的格式不正確;選項C是將v1定義成int型,正確;選項D格式不正確。所以,應(yīng)該選擇C。
58.C解析:根據(jù)題意,il=f(8)/f(4)進行宏替換后.i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以輸出結(jié)果為4、3。
59.A解析:“%”是求余運算符或模運算符,“%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項A)中的x是double型數(shù)據(jù)。
60.D解析:本題考查了二叉樹的基本概念。在二叉樹中,葉子節(jié)點的度是1;當(dāng)該二叉樹為空樹時,根節(jié)點的度為零;為非空樹時,根節(jié)點的度為2。
61.D\r\n
62.C題目中給出的程序分為兩個部分:主函數(shù)main和函數(shù)f。在主函數(shù)中初始化定義了一個整型數(shù)組a,大小為6,并定義了兩個數(shù)組指針p,q。指針p指向數(shù)組第一個元素的地址,指針q指向數(shù)組最后一個元素的地址。主函數(shù)包含一個while語句,循環(huán)條件為p<q,while語句內(nèi)部先調(diào)用了f函數(shù),p、q指針為該函數(shù)的實參,隨后進行了p++操作和q--,即使p指針指向下一個元素的地址,q指針指向前一個元素的地址。由于是數(shù)組存儲,必然存在初始時,有p<q,當(dāng)p>=q時,while語句結(jié)束。while語句后面是for語句,該語句的作用是輸出數(shù)組a[]中所有的數(shù)據(jù)。
f函數(shù)的形參為整型指針,函數(shù)的功能是使得輸入的指針變量所指向的數(shù)據(jù)進行交換,由于使用的是指針變量,故在f函數(shù)中對指針的操作結(jié)果會影響調(diào)用函數(shù)中(main)實參所指數(shù)據(jù)的改變,題目中f函數(shù)的調(diào)用實質(zhì)是將main函數(shù)中的p、q指針?biāo)傅臄?shù)據(jù)進行交換,也將導(dǎo)致數(shù)組a中相應(yīng)的數(shù)據(jù)進行交換。結(jié)合while語句,也就是將數(shù)組a中的第1個數(shù)據(jù)與第6個數(shù)據(jù)進行交換,第2個數(shù)據(jù)與第5個數(shù)據(jù)進行交換,以此類推,得到結(jié)果10,8,6,4,2,1。
63.D
64.C
65.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達(dá)式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達(dá)式,(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。
66.C在本題程序中,首先定義了一個全局整型變量b,并給其賦初值為2,然后定義一個函數(shù)func,該函數(shù)帶有一個指針類型的形參,在函數(shù)體中,通過形參的值來改變?nèi)肿兞縝的值,b+=*a等價于b=b+(*a),然后通過return語句返回計算后的變量b的結(jié)果。
在主函數(shù)中,定義兩個整型變量a和res,并都賦初值為2,然后調(diào)用func函數(shù),傳遞的形參是變量a的地址,即使形參指針變量a指向?qū)崊⒆兞縜的值,通過b+=*a計算,可以得到b=2+2=4。由于變量b是一個全局變量,作用域是整個程序,而非函數(shù)func,因此,在主函數(shù)中變量res的最后結(jié)果為2+4=6,程序最后的輸出結(jié)果為6。
67.A根據(jù)單位鏈表(包含頭結(jié)點)的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結(jié)點的目的是為了便于運算的實現(xiàn)。
68.A
69.A本題考查的是對指針變量賦空值。在C語言中用NULL給指針賦空值,如p=NULL。當(dāng)指針值為NULL時,指針不指向任何有效數(shù)據(jù)。由于NULL與整數(shù)0相對應(yīng),所以有下面三條語句等價:
p=NULL;p=0;p=’\\0’。
70.D在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。整型常量和實型常量又稱數(shù)值型常量。基本整型常量只能用數(shù)字表示,不帶小數(shù)點,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—個字母l(L的小寫)或L;實型常量必須用帶小數(shù)點的數(shù)表示,例如3.14159、-2.71828、0.0等;選項A中字母o不符合要求,選頂B中超出八進制的范圍,選項C中e后面的不為整數(shù),因此選頂D是正確的。
71.A本題首先定義了3個字符數(shù)flip、q、r,并分別被初始化。數(shù)組p;}i旨定的大小為20,初始化列表為la,b,c,d},即只指定了前4個元素的內(nèi)容,根據(jù)c語言的規(guī)定,初始化列表不足時,其余元素均自動初始化為0。然后通過streat()函數(shù),將字符串r連接到字符串p之后,即執(zhí)行后p中的內(nèi)容為“123d123de”。因為“strlen(q)”表示求字符串q的長度,很明顯為3,所以語句“strcpy(p+strlen(q),q);”的作用就是:將字符串q復(fù)制到數(shù)9lp的第4個元素位置處。
72.B統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此·(t+i)代表數(shù)組的第i+1個元素。程序運行的結(jié)果是l+3+5+7+9=25。
73.C所謂的線性結(jié)構(gòu)是指:如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件,即1)有且只有一個根結(jié)點;2)每一個結(jié)點最多有一個前驅(qū),也最多有一個后繼。同時滿足兩個條件的有隊列、線性表和棧,而二叉樹的結(jié)點可能存在兩個后繼,所以不是線性結(jié)構(gòu)。
74.D注:即第一個階段
75.B
76.C本題考查while()語句。程序中使用的是while循環(huán),為“當(dāng)型”循環(huán)結(jié)構(gòu),即當(dāng)條件為真時循環(huán),將值代入循環(huán),當(dāng)num為3時,循環(huán)的條件已經(jīng)為假,將不再循環(huán)。故本題答案為C。
77.A本題中輸入的3個數(shù)據(jù)2,4,6分別賦值給了x[0[0],x[1][0],x[2][0]。x[o][1]仍為初始時的0,所以打印輸出時的結(jié)果為A選項。
78.D位運算;條件判斷y>>1對循環(huán)沒有任何影響,始終為真,所以循環(huán)是一個無限循環(huán)。
79.D本題考查鏈表的操作,本題中首先是s指向了它的下個結(jié)點,題目中說明了s總是指向鏈表的第一個結(jié)點,然后while循環(huán)找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結(jié)點,之前頭結(jié)點指向了空結(jié)點,所以本題實現(xiàn)的功能是使首結(jié)點成為尾結(jié)點。選項D正確。
80.B
81.(1)錯誤:for(k=4;k<n;k++)正確:for(k=4;k<=11;k++)(2)錯誤:s2=S;正確:s2=s;)【解析】題目中要求計算數(shù)列前n項的和,包括第n項,因此“for(k=4;k<n;k++)”中的“k<n”應(yīng)改為“k<=n”;根據(jù)C語言的語法規(guī)則,for循環(huán)體中的多條語句必須在大括號“{”和“}”之間,因此,要在語句s2=s;后加上)。
82.
【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特點為,其列下標(biāo)小于其行下標(biāo)。根據(jù)這個特點,將二維數(shù)組的下半三角元素都賦值為0。
2021年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下能夠正確描述“k是大于0的偶數(shù)”的表達(dá)式是()。
A.(k>0)&&(k%2!=1)
B.(k>0)&&(k%2=0)
C.(k>0)||!(k%2)
D.(k>0)||(k%2==0)
2.靜態(tài)鏈表中指針表示的是()。
A.內(nèi)存地址B.數(shù)組下標(biāo)C.下一元素地址D.左、右孩子地址
3.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。
A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績
4.允許對隊列進行的操作有()。
A.對隊列中的元素排序B.取出最近進隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素
5.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)
B.ptr是指向int型數(shù)據(jù)的指針變量
C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)
D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針
6.以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序錯誤
7.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審
8.對線性表進行二分法檢索,其前提條件是()。
A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序
B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序
C.線性表以鏈?zhǔn)椒绞酱鎯Γ搓P(guān)鍵碼值排好序
D.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼的檢索頻率排好序
9.在“文件包含,預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。
A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當(dāng)前目錄
10.若用一個大小為6的數(shù)值來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。
A.1和5B.2和4C.4和2D.5和1
11.有以下程序:#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.acc,bbxxyy
B.accbbxxyy,bbxxyy
C.accxxyy,bbxxyy
D.accxyy,bbxxyy
12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認(rèn)為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;
13.表達(dá)式a*(-b+c)的逆波蘭式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
14.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序執(zhí)行后輸出結(jié)果是()。A.n=5B.n=2C.n=3D.n=4
15.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是
A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是
16.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。
A.先序遍歷B.中序遍歷C.后序遍歷D.按層遍歷
17.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成
B.一個C語言程序只能實現(xiàn)一種算法.
C.程序可以由一個或多個函數(shù)組成
D.一個C函數(shù)可以單獨作為一個C程序文件存在
18.
19.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}執(zhí)行時輸入6并按<Enter>鍵,則輸出結(jié)果是()。A.6B.8C.7D.5
20.針對簡單程序設(shè)計,以下敘述的實施步驟順序正確的是()。
A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔
B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔
C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試
D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔
二、2.填空題(20題)21.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。
st=(char*)【】;
22.執(zhí)行以下程序后sum的值是【】。
main()
{
inti,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
23.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
24.需求分析的最終結(jié)果是產(chǎn)生【】。
25.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。
26.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
27.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。
28.目前實際存在和使用的廣域網(wǎng)基本上都是采用______拓?fù)浣Y(jié)構(gòu)類型。
有以下程序:
#include<string.h>
structSTU
{intnum;
floatTotalScore;};
voidf(structSTUp)
{structSTUs[2]={{20041,703},{20045,537}};
p.num=s[1].num;p.TotalScore=s[1].TotalScore;
}
main()
{structSTUs[2]={{20041,703},{20042,580}};
f(s[0]);
printf("%d%3.0f\n",s[0].num,s[0],TotalScore);
}
程序運行后的輸出結(jié)果是【】。
29.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有______。
30.下面程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{char*p={"BOOL""OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%",*p[i]);
printf("\n");
}
31.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
32.下列程序段的輸出結(jié)果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
33.以下程序運行后的輸出結(jié)果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
34.下列程序執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
35.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。
36.當(dāng)輸入的數(shù)據(jù)為2、5時,則下列程序的運行結(jié)果為【】。
#include<stdio.h>
#definemax100
main()
{
intf[max],i,j,k,m;
scanf("%d%d",&k,&m);
for(i=0;i<=m;i++)f[i]=0;
f[k-1]=1;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++)f[i]+=f[i];
printf("%d%10d%10d\n",k,m,f[m]);
getch();
}
37.已知字符'A'的ASCII碼為65,以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
38.下列程序的運行結(jié)果為【】。
main()
{inta=5,b=5,y,z;
y=b-->++a?++b:a;
z=++a>b?a:y;
printf("%d,%d,%d,%d",a,b,y,z);
}
39.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
40.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
三、1.選擇題(20題)41.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。
A.INPUTX,Y,Z;
B.scanf("%d%d%d",&X,&Y,&Z);
C.scanf("%d%d%d",X,Y,Z);
D.read("%d%d%d",&X,&Y,&Z);
42.已有定義int(*q)(),指針q可以()。
A.指向函數(shù)的入口地址B.代表函數(shù)的返回值C.表示函數(shù)的類型D.表示函數(shù)返回值的類型
43.下列程序的運行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}
A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值
44.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其輸出結(jié)果是()。
A.0,0B.0,1C.1,1D.程序進入無限循環(huán)
45.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
46.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
47.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序運行后的輸出結(jié)果是()。
A.6,1B.2,1C.6,0D.2,0
48.以下有關(guān)宏替換的敘述不正確的是()。
A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示
49.若下列各選項中所有變量已正確定義,函數(shù)fun通過return語句返回一個函數(shù)值,以下選項中錯誤的程序是()。
A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}
B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}
C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}
D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}
50.不是面向?qū)ο蟪绦蛟O(shè)計的可維護性的優(yōu)點的是()
A.用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件穩(wěn)定性比較好B.易于移植C.易于和調(diào)試D.用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件比較容易理解
51.下列程序的運行結(jié)果為
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
52.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦于19.0,b賦予22.0,c賦予33.0,不正確的輸入形式是______。
A.10<回車>22<回車>33<回車>
B.19.0,22.0,33.0<回車>
C.19.0<回車>22.033.0<同車>
D.1022<回車>33<回車>
53.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結(jié)果是()。
A.7B.6C.8D.無確定值
54.若有下列定義,則對a數(shù)組元素地址的正確引用是()。
inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
55.有如下程序: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
56.不能把字符串"Hello!"賦給數(shù)組b的語句是______。
A.charb[10]={'H','e','l','l','o','!'};
B.charb[10]={'h','e','l','l','o','!'};
C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
57.以下各選項均為說明一種新的類型名,其中正確的是()。
A.typedefv1int;
B.typedefv1=int;
C.typedefintv1;
D.typedefv1=int;
58.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結(jié)果是______。
A.64,28B.4,4C.4,3D.64,64
59.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
60.在下列關(guān)于二叉樹的敘述中,正確的一項是
A.在二叉樹中,任何一個結(jié)點的度都是2
B.二叉樹的度為2
C.在二叉樹中至少有一個結(jié)點的度是2
D.一棵二叉樹的度可以小于2
四、選擇題(20題)61.
62.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
該程序的輸出結(jié)果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
63.
64.(46)面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是()
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領(lǐng)域的概念去思考
65.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
66.下列程序的輸出結(jié)果是
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
A.2
B.4C.6
D.8
67.在單鏈表中,增加頭結(jié)點的目的是()。
A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標(biāo)識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性的鏈?zhǔn)酱鎯崿F(xiàn)
68.
69.下列關(guān)于指針變量賦空值的說法錯誤的是
A.當(dāng)賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達(dá)為變量名=’\0’;
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子產(chǎn)品代理經(jīng)銷合同
- 智能語音語義平臺開發(fā)合同
- 房屋中介銷售合同范本模板
- 房屋地基買賣合同格式文本
- 房屋買賣合同修改方法
- 企業(yè)與個人借款合同范本
- 熱處理設(shè)備購買協(xié)議范本
- 優(yōu)惠旅游服務(wù)合同
- 挖掘機租賃合同格式
- 食品調(diào)料供貨合同協(xié)議
- 商場用電安全培訓(xùn)
- 《中小學(xué)教育懲戒規(guī)則(試行)》宣講培訓(xùn)
- 結(jié)清貨款合同范例
- 開題報告:職普融通與職業(yè)教育高質(zhì)量發(fā)展:從國際經(jīng)驗到中國路徑創(chuàng)新
- 變、配電站防火制度范文(2篇)
- 九年級上冊人教版數(shù)學(xué)期末綜合知識模擬試卷(含答案)
- 重大版小英小學(xué)六年級上期期末測試
- 微積分知到智慧樹章節(jié)測試課后答案2024年秋銅陵學(xué)院
- 金融科技UI設(shè)計
- 《頭腦風(fēng)暴》課件
- 安全生產(chǎn)知識考試題庫(有答案)-安全考試題庫
評論
0/150
提交評論