![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計_第1頁](http://file4.renrendoc.com/view/62c6e48c6c67c4e51146fe08cb821cfd/62c6e48c6c67c4e51146fe08cb821cfd1.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計_第2頁](http://file4.renrendoc.com/view/62c6e48c6c67c4e51146fe08cb821cfd/62c6e48c6c67c4e51146fe08cb821cfd2.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計_第3頁](http://file4.renrendoc.com/view/62c6e48c6c67c4e51146fe08cb821cfd/62c6e48c6c67c4e51146fe08cb821cfd3.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計_第4頁](http://file4.renrendoc.com/view/62c6e48c6c67c4e51146fe08cb821cfd/62c6e48c6c67c4e51146fe08cb821cfd4.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計_第5頁](http://file4.renrendoc.com/view/62c6e48c6c67c4e51146fe08cb821cfd/62c6e48c6c67c4e51146fe08cb821cfd5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有1000個無序的整數(shù),希望使用最快的方式找出前50個最大的,最佳的選擇是()
A.冒泡排序B.基數(shù)排序C.堆排序D.快速排序
2.
3.以下能正確定義一維數(shù)組的選項是()。
A.inta[5]={0,1,2,3,4,5};
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
4.數(shù)據(jù)字典(DD)所定義的對象都包含于()。
A.軟件結(jié)構(gòu)圖B.方框圖C.數(shù)據(jù)流圖(DFD圖)D.程序流程圖
5.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序運行后的輸出結(jié)果是()。
A.y=0B.y=-1C.y=1D.while構(gòu)成無限循環(huán)
6.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結(jié)果是()。
A.10,One*Dream!
B.9,One*Dream!
C.9,One*World
D.10,One*World
7.有兩個關(guān)系R和T如下:
則由關(guān)系R得到關(guān)系T的操作是()。A.選擇B.投影C.交D.并
8.軟件需求規(guī)格說明書的作用不包括()。
A.軟件設(shè)計的依據(jù)B.軟件可行性研究的依據(jù)C.軟件驗收的依據(jù)D.用戶與開發(fā)人員對軟件要做什么的共同理解
9.相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
10.有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}執(zhí)行后輸出結(jié)果是()A.28B.22C.16D.4
11.
12.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()
A.無序線性表B.線性鏈表C.二叉鏈表D.順序存儲的有序表
13.
14.若有定義intw[3][5];,則以下不能正確表示該數(shù)組元素的表達式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)
15.在具有101個元素的順序表中查找值為x的元素結(jié)點時,平均比較元素的次數(shù)為()。
A.50B.51C.100D.101
16.以下關(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ī)模的問題
17.已知10個元素(54,28,16,34,,73,62,95,60,26,43),按照依次插入的方法生成一棵二叉排序樹,查找值為62的結(jié)點所需比較次數(shù)為()
A.4B.3C.2D.5
18.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0
19.有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;Main(){inta=1,b=2;printf("%4.1f\n",S(a+b));程序運行后的輸出結(jié)果是()。A.7.5B.31.5C.程序有錯無輸出結(jié)果D.14.0
20.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預(yù)處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預(yù)處理命令
D.宏名必須用大寫字母表示
二、2.填空題(20題)21.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
22.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
primf("%d,%d%d\n",c,D);
}
23.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,這稱為______。
24.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。
25.有以下程序:
intsub(intn){return(n/10+n%10);}
main()
{intx,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。
26.設(shè)有下列宏定義:#defineA2
#defineBA+3
則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。
27.在面向?qū)ο蠓椒ㄖ校瑢傩耘c操作相似的一組對象稱為【】。
28.以下程序的運行結(jié)果是()。
main()
(inta=2,b=7,c=5;
switch(a>0)
{case1:switch(b<0)
{case1:switch(");break;
case2:printf("!");break;
}
case0:switch(c==5)
{case0:printf("*");break;
case1:printf("#");break;
case2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
29.若由以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
30.以下程序運行后的輸出結(jié)果是______。
main()
{inta=1,b=2,c=3;
if(c=A)printf("%d\n",C);
elseprintf("%d\n",B);
}
31.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
32.若輸入thistestterminal,以下程序的輸出結(jié)果為:terminaltestthis。請?zhí)羁铡?/p>
#defineMAXLINE20
【】
{inti;
char*pstr[3],str[3][MAXLINE];
for(i=0;i<3;++)pstr[i]=str[i];
for(i=0;i<3;i++)scanf("%s",pstr[1]);
sort(pstr);
for(i=0;i<3;i++)prntf("%s",pstr[i]);
}
sort(【】)
char*pstr[3];
{inti,j;
char*p;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
if(strcmp(*(pstr+i,*(pstr+j)>0
{p=*(pstr+i);
*(pstr+i=【】;
*(pstr+j)=p;
}
33.請用位運算實現(xiàn)下述目標(設(shè)16位二進制數(shù)的最低位為零位):
(1)輸出無符號正整數(shù)m的第i個二進制位的數(shù)值。
(2)將m的第i個二進制位置1,其余的位不變,然后輸出m。
#include"stdio.h"
【】
main()
{
unsignedk,i,m=0;
scanf("%d%d",&m,&i);
k=【】;
printf("%d\n",k);
k=pow(2,i);
m=【】;
printf("%d\n",m);
}
34.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。
35.以下程序的運行結(jié)果為【】。
main()
{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
}
36.下列程序的輸出結(jié)果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
printf("%d",sum);
}
37.表達式10+'a'+1.5-0.5*'B'的結(jié)果是【】。
38.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
39.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
40.在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化程序設(shè)計方法。可行性研究階段采用的是【】。
三、1.選擇題(20題)41.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序運行后的輸出結(jié)果是______。
A.22B.76C.72D.62
42.以下所列的各函數(shù)首部中,正確的是______。
A.voidplay(vara:Integer,varb:Integer)
B.voidplay(inta,b)
C.voidplay(inta,intb)
D.Subplay(aasinteger,basinteger)
43.若有程序片段:inta[12]={0},*p[3],**pp,ifor(i=0;i<3;i++)p[i]=&a[i*4];pp=p;則對數(shù)組元素的錯誤引用是()
A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)
44.若有說明:inta[][4]={0,0};則下面不正確的敘述是()。
A.數(shù)組a的每個元素都可得到初值0
B.二維數(shù)組a的第一維大小為1
C.當初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大小
D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到確定的初值
45.以下程序的輸出結(jié)果是______。main(){inta=3;printf("%d\n",(a+=a-=a*A));}
A.-6B.1C.2D.-12
46.以下能正確定義且賦初值的語句是______。
A.iht=n1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5
47.
若有下列定義(設(shè)int類型變量占2個字節(jié)):
inti=8,j=9;
則下列語句:
printf("i=%%d,j=%%d\n",i,j);
輸出的結(jié)果是()。
A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
48.下列程序的運行結(jié)果為______。#defineMSDOS#ifdefMSDOS#defineINTEGERSIZE32#else#defineINTEGERSIZE16#endifmain(){printf("integer_size=%d\n",INTEGER_SIZE);}
A.integersize=32
B.integer_size=16
C.integersize=32,integer_size=16
D.錯誤
49.對表達式for(表達式1;;表達式3)可理解為()。
A.for(表達式1;0;表達式3)
B.for(表達式1;1;表達式3)
C.for(表達式1;表達式1;表達式3)
D.for(表達式1;表達式3;表達式3)
50.若有如下說明,且int類型占兩個字節(jié),則正確的敘述為()。structst{inta;intb[2];}a;
A.結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是合法的
B.程序只在執(zhí)行到該結(jié)構(gòu)體時才為結(jié)構(gòu)體st分配存儲單元
C.程序運行時為結(jié)構(gòu)體st分配8字節(jié)存儲單元
D.類型名structst可以通過extern關(guān)鍵字提前引用
51.下列程序的輸出結(jié)果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}
A.2B.3C.4D.5
52.設(shè)已包含頭文件<string.h>,下列程序段的運行結(jié)果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));
A.3B.4C.6D.5
53.設(shè)有定義:“l(fā)ongx=123450L;”,則以下能夠正確輸出變量x的是()。
A.printf("x=%d\n",x);
B.printf("x=%id\a",x);
C.printf("x=%dL\n”,x);
D.printf("x=%ld\n",x);
54.下列二維數(shù)組初始化語句中,不正確的是()。
A.intb[][2]={1,2,3,4,5,6,7};
B.intb[3][5]={0,0,0};
C.intb[][4]={1,2},{3,4,5},{6}};
D.intb[3][2]={(1,2),(3,4),(5,6)};
55.下列程序的輸出結(jié)果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}
A.12B.13C.14D.15
56.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);
A.63B.36C.編譯出錯D.00
57.信息隱蔽的概念與下述______概念直接相關(guān)。
A.軟件結(jié)構(gòu)定義B.模塊獨立性C.模塊類型劃分D.模擬耦合度
58.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當輸入數(shù)據(jù)時,必須指明變量地址
59.在設(shè)計程序時,應(yīng)采納的原則之一是______。
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好
60.下列函數(shù)的運行結(jié)果是
main()
{inti=2,p;
intj,k;
j=i;k=++i;p=f(j,k);
printf("%d",p);}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);}
A.-1B.1C.2D.編譯出錯,無法運行
四、選擇題(20題)61.
執(zhí)行下述程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain
{inta=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf("%d",a);
}
A.1B.4C.9D.0
62.
63.有以下程序
#include<stdio.h>
voidfun(char**p)
{++p;printf("%s",*p);}
main
{char*a[]={"Morning","Afternoon","Evening","Night");
fun(a);
}
程序的運行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning
64.
下列程序的輸出結(jié)果是()。
intfl(intx,inty){returnx>y?x:y;)
intf2(intx,inty){returnx>y?y:x;}
main
{inta=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);}
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
65.
66.設(shè)有定義:
67.設(shè)有以下語句:
inta=1,b=2,c;c=a^(b<;<;2);執(zhí)行后,c的值為()。
A.7B.9C.8D.6
68.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9
69.
70.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其輸出結(jié)果是()。A.1B.30C.1-2D.死循環(huán)
71.設(shè)有如下函數(shù)定義若執(zhí)行調(diào)用語句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.3B.2C.4D.5
72.
73.
74.
75.
76.有以下程序:
若要按以下形式輸出數(shù)組右上半三角:
則在程序下劃線處應(yīng)填人的語句是()。
A.i-1B.i+1C.iD.4-i
77.
78.設(shè)有定義:
79.
80.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,
B.數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的共享問題
C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.下列程序判斷字符串s是否對稱,對稱則返回1,否則返回0;如f("abba")返回1,f("abab")返回0。
參考答案
1.D
2.A
3.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。
4.C數(shù)據(jù)字典(DD)是指對數(shù)據(jù)的數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數(shù)據(jù)流程圖中的各個元素做出詳細的說明。
5.B執(zhí)行“y--”直到值為0。退出循環(huán)。由于“y--”是后綴自減運算,先使用再自減,因此退出循環(huán)時,y的值為-1。故本題答案為B選項。
6.A函數(shù)“strlen(char*s)”;計算字符串s的長度,不包括‘\\0’在內(nèi)。p指向數(shù)組的第2個元素,因此“Strien(P)=10”,并輸出“one*Dream!”。故本題答案為A選項。
7.A
8.B《軟件可行性分析報告》是軟件可行性研究的依據(jù)。
9.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨立的,因此相對于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個缺點,數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點,人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點。
10.A解析:f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28。
11.C
12.DD)【解析】二分法查找只適用于順序存儲的有序表,表中的元素按值從小到大排列。
13.D
14.C在C語言中,二維數(shù)組的名字表示的是二維數(shù)組的地址,表達式*(W+1)表示的是二維數(shù)組的第一行的第二個元素。在其前面再加上*(*(w+1))就是錯誤的表達式。
15.B
16.B濫用90t0語句將使程序的流程毫無規(guī)律,可讀性差,對于初學者來說盡量不要使用,所以A錯誤?!獋€結(jié)構(gòu)化程序可以包含順序、分支、循環(huán)結(jié)構(gòu)中的一種或多種,所以C錯誤。由三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問題,所以D錯誤。
17.B
18.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。
19.C宏定義不是C語句,末尾不需要有分號。所以語句Printf("%4.1f\\n",,S(a+b));展開后為printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序會出現(xiàn)語法錯誤。
20.A宏替換是在編譯階段前的預(yù)處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預(yù)處理命令行無須在源文件的開頭,它可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預(yù)處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。
21.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。
22.7979解析:因為在調(diào)用子函數(shù)時進行的是數(shù)值傳遞,調(diào)用子函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
23.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應(yīng)用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式)改變時,不需要修改應(yīng)用程序。而邏輯獨立性是指當邏輯結(jié)構(gòu)改變時,不需要修改應(yīng)用程序。
24.2424解析:在循環(huán)隊列中因為頭指針指向的是隊頭元素的前一個位置,所以是從第6個位置開始有數(shù)據(jù)元素,所以隊列中的數(shù)據(jù)元素的個數(shù)為29-5=24。
25.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。
26.88解析:本題考查帶參數(shù)的宏定義及相關(guān)運算.運算過程為:t=B*2=A+3*2=2+3*2=8。
27.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨菩再|(zhì)的一組對象。所以,屬性與操作相似的一組對象稱為類。
28.#&#&解析:剛開始時,switch后面的表達式a>0為真(1),與case1匹配,然后執(zhí)行case1后面的switch語句,表達式b<0值為0,沒有與其匹配的語句,返回外層,因為外層沒有break語句,順序執(zhí)行case0后面的switch語句,表達式“c==5”值為1,與其后面的case1匹配,因此輸出#,遇到break返回外層,又因為外層沒有break語句,順序執(zhí)行default后的語句,輸出&。
29.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點是通過指針引用數(shù)組元素。98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。
30.11解析:本題是一個陷阱題。在if語句的判斷表達式中,使用的不是邏輯運算符==而是賦值運算符=,使該表達式返回的結(jié)果正好相反。如果是c==a,則結(jié)果為假。但是c=a則是將a賦給c,且表達式的結(jié)果是賦值之后的c的值,因此結(jié)果為1是真.故最后輸出c的值1。
31.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達式中,也只有賦值表達式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。
32.main()pstr*(pstr+j)
33.#include"math.h"m>>i&1m|k
34.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。
35.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。
36.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。
37.75.5
38.軟件開發(fā)
39.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
40.結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法解析:結(jié)構(gòu)化分析方法主要用于系統(tǒng)分析階段;結(jié)構(gòu)化設(shè)計方法主要用于系統(tǒng)設(shè)計階段;結(jié)構(gòu)化程序設(shè)計方法主要用于編碼階段??尚行匝芯繉儆谙到y(tǒng)分析階段,因此,可行性研究階段采用的是結(jié)構(gòu)化分析方法。
41.C題目中需要求出程序的輸出值i,j,其中i的值由sizeof決定,j的值由strlen函數(shù)決定。
sizeof是C語言的一種運算符,以字節(jié)的形式給出操作數(shù)的存儲空間的大小。sizeof的操作對象可以是具體的數(shù)據(jù)類型,也可以是變量。題目中的操作數(shù)為數(shù)組名,利用sizeof可計算出數(shù)組所占用內(nèi)存的字節(jié)數(shù),題目中數(shù)組類型為char,大小為7,故該數(shù)組占用的內(nèi)存數(shù)為7。
strlen函數(shù)則是計算一段字符串的長度,可以從整個字符串的頭部開始計算,也可以從字符串的中間開始計算,當碰到第一個字符串結(jié)束符“\\0”,則停止計算,返回當前的計算值。題目中在前兩個字符之后就出現(xiàn)了結(jié)束符“\\0”,故strlen函數(shù)的值為2。
42.C解析:除選項C項外,其他各項都沒有按照C語言中的函數(shù)定義規(guī)則定義函數(shù)。
43.C
44.D解析:本題考查二維數(shù)組的基本概念。對于二維數(shù)組,只可以省略第一個括號中的常量表達式,而不能省略第二個括號中的常量表達式。數(shù)組中未賦初值的元素系統(tǒng)會自動對它們賦初值0。
45.D解析:賦值運算符的結(jié)合方向是自右至左,所以表達式a+=a-=a*a先運算最右邊的a*a得9,再運算a=a-9,即a=3-9,所以此時a的值由3變成了-6,最后運算a=a-+(-6),即a=(-6)+(-6)=-12。
46.A解析:B選項中32應(yīng)加單引號,C選項中f=f+1.1兩邊都是不定值,不正確;D中E后要用整型數(shù),且E后必須要有數(shù)字。
47.B解析:本題考查printf函數(shù)的格式。在printf函數(shù)中,如果格式說明符中有兩個%說明,則將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)的變量值。
48.A
49.B在本題中,for循環(huán)結(jié)構(gòu)缺省了表達式2,而表達式2的作用是用來判斷循環(huán)是否結(jié)束,在缺省該語句的情況下,循環(huán)將無法結(jié)束,從題目給出的四個循環(huán)結(jié)構(gòu)我們可以看出,能構(gòu)成死循環(huán)的是選項B,該選項中for結(jié)構(gòu)的表達式2一直為1,即真,這樣循環(huán)就無法結(jié)束。因此,本題正確的答案選B。
50.A
51.C解析:帶參數(shù)的宏定義命令行形式如下:
#define宏名(形參表)替換文本
在編譯的時候編譯預(yù)處理程序用“替換文本”來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結(jié)果賦給a。注意,宏替換是在編譯時由預(yù)處理程序完成的,宏替換不占用運行的時間,而函數(shù)調(diào)用是在程序運行時進行的,在函數(shù)的調(diào)用過程中需要占用一系列的處理時間。
52.A解析:頭文件<string.h>是字符串處理函數(shù)對應(yīng)的頭文件,要想調(diào)用C語言的庫函數(shù)時,都要在程序中嵌入該函數(shù)對應(yīng)的頭文件,否則無法使用庫函數(shù)。
strcpy(s1,s2)把s2中的字符串復(fù)制到s1中,所以結(jié)果就為s2的長度。
53.D解析:C語言規(guī)定,輸出long型數(shù)值的格式符為%1d。
54.D解析:在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規(guī)定,對于二維數(shù)組,只可以省略第1個方括號中的常量表達式,而不能省略第2個方括號中的常量表達式;賦的初值不能多于事先定義好的數(shù)組元素個數(shù)。選項D賦值表達式中對每一維的元素賦初值應(yīng)用{},而不是0。
55.D
56.B解析:程序看上去是要實現(xiàn)交換兩個指針的值,但是C語言中實參變量和形參變量之間的數(shù)據(jù)傳遞是單向的“值傳遞”,指針變量做函數(shù)參數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不能企圖通過改變形參指針的值而使實參指針的值也改變。所以本題的輸出結(jié)果是36。
57.B解析:信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不合晰問的。模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。衡量軟件的模塊獨立性的度量標準是耦合性和內(nèi)聚性。一個模塊的內(nèi)聚性越強,則該模塊的模塊獨立性越強。而內(nèi)聚性是信息隱蔽和局部化概念的自然擴長。
58.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。
59.A解析:程序設(shè)計的風格主要強調(diào)程序的簡單、清晰和可理解性,以便讀者理解。因此選項A是正確答案。程序濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應(yīng)減少或取消;程序的長短要依照實際需要而定,并不是越短越好。因此選項B、C、D都是錯誤的。
60.A解析:函數(shù)調(diào)用相當于f(2,3),程序運算應(yīng)得結(jié)果為'-1'。
61.D
\n本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。
\n
62.B
63.A執(zhí)行fun(a)語句時,P指向的是字符串數(shù)組a的第一個字符串“Morning”,p自加1之后,p指向字符串數(shù)組a的第2個字符串“Afternoon”。
64.A
\n根據(jù)函數(shù)的定義可知,如果x>Y成立,則函數(shù)f1返回x的值,函數(shù)f2返回y的值。所以fl(a,b)=4,n(c,d)=5,f2(a,b)=3;,f2(c,d)=2,故e=f2(4,5)=4,f=f1(3,2)=3,g=4+3斗5+2-4-3=7。
\n
65.B
66.A選項B)、D)中if語句后都是一條復(fù)合語句,選項c)中if語句后都是一條語句。選項A)之后有3條語句,所以答案選擇A)。
67.Bb為2,二進制為00000010,執(zhí)行左移兩位操作后為000011300,然后與a00000001做異或操作結(jié)果為00001001.即十進制的9。
68.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b為逗號表達式,運算后取a+b的值為5,c++為3,故函數(shù)調(diào)用后輸出結(jié)果為8。
69.C
70.C本題考查do-while循環(huán),先執(zhí)行d0輸出的x的值為1,接著執(zhí)行while語句,此時--x的值為0,x也為0,而非0為1,循環(huán)成立,接著執(zhí)行do輸出X值為-2,執(zhí)行--x后,表達式為-2,而!(--x)為0,退出循環(huán)。
71.A首先n=fun(3),3被當作參數(shù)傳遞進去,進行了第一次調(diào)用,3被當作參數(shù)傳進去后,程序會執(zhí)行語句elseretllnlfun(k—1)+1;進行第二次調(diào)用,而參數(shù)是3"1也就是2。2被當作參數(shù)傳進去后,程序會執(zhí)行語句elsereturnfun(1[一l)+1;進行第三次調(diào)用,而參數(shù)是2一l也就是1。l被當作參數(shù)傳進去后。程序會執(zhí)行語句elseif(k==1)returnl;不再遞歸調(diào)用,因此最終結(jié)果為3次,選項A)正確。
72.B
73.A
74.C
75.C
76.C此題中嵌套了兩個for語句,第一個用來輸出空格,第二個用來輸出數(shù)字。如此類型的輸出某種格式的考題,一般是采用多重循環(huán)來解決,需要考生找出輸出數(shù)據(jù)的特點,并用相應(yīng)的數(shù)學公式表示出來。
77.D
78.A本題考查了格式化輸人函數(shù)searlf()的運用。scan“)函數(shù)的一般形式為:scanf《格式控制,地址表列)c其中,
“格式控制”是用雙引號括起來的字符串,也稱‘轉(zhuǎn)換控制字符串”.它包括兩種信息:①格式說明,由“%”和格式字符組成;
②普通字符,即需要原樣輸入的字符。
地址表列”是需要接收輸入數(shù)據(jù)的一系列變量的地址。本題中的“格式控制’’是“%2d%f”,其中%2d的意思是要輸入一一個整數(shù),但該整數(shù)最寬只占='個字符,而%堤要輸入一個浮點數(shù)。而題目要求輸入的是876和543.0.所以scan“)函數(shù)將87賦給a,6賦給b.
79.A
80.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結(jié)構(gòu),是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結(jié)構(gòu),又叫物理結(jié)構(gòu),是邏輯結(jié)構(gòu)在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。
數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。
數(shù)據(jù)庫設(shè)計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應(yīng)用的要求,設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。數(shù)據(jù)庫設(shè)計包含兩方面的內(nèi)容:一是結(jié)構(gòu)設(shè)計,也就是設(shè)計數(shù)據(jù)庫框架或數(shù)據(jù)庫結(jié)構(gòu);二是行為設(shè)計,即設(shè)計基于數(shù)據(jù)庫的各類應(yīng)用程序、事務(wù)等。因此,選項C的說法是錯誤的。
數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡(luò)系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。
81.(1)錯誤:p=j
正確:p=j;
(2)錯誤:p=j;
正確:p=i;
【解析】根據(jù)C語言的語法規(guī)則.每一條語句都要以分號結(jié)束。因此,“p=j”后要加上分號“;”。每次比較后要把小的下標賦值給p,因此,“p=j;”應(yīng)改為“p=i;”。
82.2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有1000個無序的整數(shù),希望使用最快的方式找出前50個最大的,最佳的選擇是()
A.冒泡排序B.基數(shù)排序C.堆排序D.快速排序
2.
3.以下能正確定義一維數(shù)組的選項是()。
A.inta[5]={0,1,2,3,4,5};
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
4.數(shù)據(jù)字典(DD)所定義的對象都包含于()。
A.軟件結(jié)構(gòu)圖B.方框圖C.數(shù)據(jù)流圖(DFD圖)D.程序流程圖
5.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序運行后的輸出結(jié)果是()。
A.y=0B.y=-1C.y=1D.while構(gòu)成無限循環(huán)
6.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結(jié)果是()。
A.10,One*Dream!
B.9,One*Dream!
C.9,One*World
D.10,One*World
7.有兩個關(guān)系R和T如下:
則由關(guān)系R得到關(guān)系T的操作是()。A.選擇B.投影C.交D.并
8.軟件需求規(guī)格說明書的作用不包括()。
A.軟件設(shè)計的依據(jù)B.軟件可行性研究的依據(jù)C.軟件驗收的依據(jù)D.用戶與開發(fā)人員對軟件要做什么的共同理解
9.相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
10.有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}執(zhí)行后輸出結(jié)果是()A.28B.22C.16D.4
11.
12.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()
A.無序線性表B.線性鏈表C.二叉鏈表D.順序存儲的有序表
13.
14.若有定義intw[3][5];,則以下不能正確表示該數(shù)組元素的表達式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)
15.在具有101個元素的順序表中查找值為x的元素結(jié)點時,平均比較元素的次數(shù)為()。
A.50B.51C.100D.101
16.以下關(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ī)模的問題
17.已知10個元素(54,28,16,34,,73,62,95,60,26,43),按照依次插入的方法生成一棵二叉排序樹,查找值為62的結(jié)點所需比較次數(shù)為()
A.4B.3C.2D.5
18.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0
19.有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;Main(){inta=1,b=2;printf("%4.1f\n",S(a+b));程序運行后的輸出結(jié)果是()。A.7.5B.31.5C.程序有錯無輸出結(jié)果D.14.0
20.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預(yù)處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預(yù)處理命令
D.宏名必須用大寫字母表示
二、2.填空題(20題)21.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
22.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
primf("%d,%d%d\n",c,D);
}
23.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,這稱為______。
24.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。
25.有以下程序:
intsub(intn){return(n/10+n%10);}
main()
{intx,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。
26.設(shè)有下列宏定義:#defineA2
#defineBA+3
則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。
27.在面向?qū)ο蠓椒ㄖ?,屬性與操作相似的一組對象稱為【】。
28.以下程序的運行結(jié)果是()。
main()
(inta=2,b=7,c=5;
switch(a>0)
{case1:switch(b<0)
{case1:switch(");break;
case2:printf("!");break;
}
case0:switch(c==5)
{case0:printf("*");break;
case1:printf("#");break;
case2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
29.若由以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
30.以下程序運行后的輸出結(jié)果是______。
main()
{inta=1,b=2,c=3;
if(c=A)printf("%d\n",C);
elseprintf("%d\n",B);
}
31.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
32.若輸入thistestterminal,以下程序的輸出結(jié)果為:terminaltestthis。請?zhí)羁铡?/p>
#defineMAXLINE20
【】
{inti;
char*pstr[3],str[3][MAXLINE];
for(i=0;i<3;++)pstr[i]=str[i];
for(i=0;i<3;i++)scanf("%s",pstr[1]);
sort(pstr);
for(i=0;i<3;i++)prntf("%s",pstr[i]);
}
sort(【】)
char*pstr[3];
{inti,j;
char*p;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
if(strcmp(*(pstr+i,*(pstr+j)>0
{p=*(pstr+i);
*(pstr+i=【】;
*(pstr+j)=p;
}
33.請用位運算實現(xiàn)下述目標(設(shè)16位二進制數(shù)的最低位為零位):
(1)輸出無符號正整數(shù)m的第i個二進制位的數(shù)值。
(2)將m的第i個二進制位置1,其余的位不變,然后輸出m。
#include"stdio.h"
【】
main()
{
unsignedk,i,m=0;
scanf("%d%d",&m,&i);
k=【】;
printf("%d\n",k);
k=pow(2,i);
m=【】;
printf("%d\n",m);
}
34.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。
35.以下程序的運行結(jié)果為【】。
main()
{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
}
36.下列程序的輸出結(jié)果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
printf("%d",sum);
}
37.表達式10+'a'+1.5-0.5*'B'的結(jié)果是【】。
38.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
39.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
40.在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化程序設(shè)計方法。可行性研究階段采用的是【】。
三、1.選擇題(20題)41.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序運行后的輸出結(jié)果是______。
A.22B.76C.72D.62
42.以下所列的各函數(shù)首部中,正確的是______。
A.voidplay(vara:Integer,varb:Integer)
B.voidplay(inta,b)
C.voidplay(inta,intb)
D.Subplay(aasinteger,basinteger)
43.若有程序片段:inta[12]={0},*p[3],**pp,ifor(i=0;i<3;i++)p[i]=&a[i*4];pp=p;則對數(shù)組元素的錯誤引用是()
A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)
44.若有說明:inta[][4]={0,0};則下面不正確的敘述是()。
A.數(shù)組a的每個元素都可得到初值0
B.二維數(shù)組a的第一維大小為1
C.當初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大小
D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到確定的初值
45.以下程序的輸出結(jié)果是______。main(){inta=3;printf("%d\n",(a+=a-=a*A));}
A.-6B.1C.2D.-12
46.以下能正確定義且賦初值的語句是______。
A.iht=n1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5
47.
若有下列定義(設(shè)int類型變量占2個字節(jié)):
inti=8,j=9;
則下列語句:
printf("i=%%d,j=%%d\n",i,j);
輸出的結(jié)果是()。
A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
48.下列程序的運行結(jié)果為______。#defineMSDOS#ifdefMSDOS#defineINTEGERSIZE32#else#defineINTEGERSIZE16#endifmain(){printf("integer_size=%d\n",INTEGER_SIZE);}
A.integersize=32
B.integer_size=16
C.integersize=32,integer_size=16
D.錯誤
49.對表達式for(表達式1;;表達式3)可理解為()。
A.for(表達式1;0;表達式3)
B.for(表達式1;1;表達式3)
C.for(表達式1;表達式1;表達式3)
D.for(表達式1;表達式3;表達式3)
50.若有如下說明,且int類型占兩個字節(jié),則正確的敘述為()。structst{inta;intb[2];}a;
A.結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是合法的
B.程序只在執(zhí)行到該結(jié)構(gòu)體時才為結(jié)構(gòu)體st分配存儲單元
C.程序運行時為結(jié)構(gòu)體st分配8字節(jié)存儲單元
D.類型名structst可以通過extern關(guān)鍵字提前引用
51.下列程序的輸出結(jié)果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}
A.2B.3C.4D.5
52.設(shè)已包含頭文件<string.h>,下列程序段的運行結(jié)果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));
A.3B.4C.6D.5
53.設(shè)有定義:“l(fā)ongx=123450L;”,則以下能夠正確輸出變量x的是()。
A.printf("x=%d\n",x);
B.printf("x=%id\a",x);
C.printf("x=%dL\n”,x);
D.printf("x=%ld\n",x);
54.下列二維數(shù)組初始化語句中,不正確的是()。
A.intb[][2]={1,2,3,4,5,6,7};
B.intb[3][5]={0,0,0};
C.intb[][4]={1,2},{3,4,5},{6}};
D.intb[3][2]={(1,2),(3,4),(5,6)};
55.下列程序的輸出結(jié)果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}
A.12B.13C.14D.15
56.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);
A.63B.36C.編譯出錯D.00
57.信息隱蔽的概念與下述______概念直接相關(guān)。
A.軟件結(jié)構(gòu)定義B.模塊獨立性C.模塊類型劃分D.模擬耦合度
58.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當輸入數(shù)據(jù)時,必須指明變量地址
59.在設(shè)計程序時,應(yīng)采納的原則之一是______。
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好
60.下列函數(shù)的運行結(jié)果是
main()
{inti=2,p;
intj,k;
j=i;k=++i;p=f(j,k);
printf("%d",p);}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);}
A.-1B.1C.2D.編譯出錯,無法運行
四、選擇題(20題)61.
執(zhí)行下述程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain
{inta=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf("%d",a);
}
A.1B.4C.9D.0
62.
63.有以下程序
#include<stdio.h>
voidfun(char**p)
{++p;printf("%s",*p);}
main
{char*a[]={"Morning","Afternoon","Evening","Night");
fun(a);
}
程序的運行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning
64.
下列程序的輸出結(jié)果是()。
intfl(intx,inty){returnx>y?x:y;)
intf2(intx,inty){returnx>y?y:x;}
main
{inta=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);}
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
65.
66.設(shè)有定義:
67.設(shè)有以下語句:
inta=1,b=2,c;c=a^(b<;<;2);執(zhí)行后,c的值為()。
A.7B.9C.8D.6
68.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9
69.
70.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其輸出結(jié)果是()。A.1B.30C.1-2D.死循環(huán)
71.設(shè)有如下函數(shù)定義若執(zhí)行調(diào)用語句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.3B.2C.4D.5
72.
73.
74.
75.
76.有以下程序:
若要按以下形式輸出數(shù)組右上半三角:
則在程序下劃線處應(yīng)填人的語句是()。
A.i-1B.i+1C.iD.4-i
77.
78.設(shè)有定義:
79.
80.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,
B.數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的共享問題
C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.下列程序判斷字符串s是否對稱,對稱則返回1,否則返回0;如f("abba")返回1,f("abab")返回0。
參考答案
1.D
2.A
3.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。
4.C數(shù)據(jù)字典(DD)是指對數(shù)據(jù)的數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數(shù)據(jù)流程圖中的各個元素做出詳細的說明。
5.B執(zhí)行“y--”直到值為0。退出循環(huán)。由于“y--”是后綴自減運算,先使用再自減,因此退出循環(huán)時,y的值為-1。故本題答案為B選項。
6.A函數(shù)“strlen(char*s)”;計算字符串s的長度,不包括‘\\0’在內(nèi)。p指向數(shù)組的第2個元素,因此“Strien(P)=10”,并輸出“one*Dream!”。故本題答案為A選項。
7.A
8.B《軟件可行性分析報告》是軟件可行性研究的依據(jù)。
9.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨立的,因此相對于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個缺點,數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點,人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點。
10.A解析:f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28。
11.C
12.DD)【解析】二分法查找只適用于順序存儲的有序表,表中的元素按值從小到大排列。
13.D
14.C在C語言中,二維數(shù)組的名字表示的是二維數(shù)組的地址,表達式*(W+1)表示的是二維數(shù)組的第一行的第二個元素。在其前面再加上*(*(w+1))就是錯誤的表達式。
15.B
16.B濫用90t0語句將使程序的流程毫無規(guī)律,可讀性差,對于初學者來說盡量不要使用,所以A錯誤?!獋€結(jié)構(gòu)化程序可以包含順序、分支、循環(huán)結(jié)構(gòu)中的一種或多種,所以C錯誤。由三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問題,所以D錯誤。
17.B
18.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。
19.C宏定義不是C語句,末尾不需要有分號。所以語句Printf("%4.1f\\n",,S(a+b));展開后為printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序會出現(xiàn)語法錯誤。
20.A宏替換是在編譯階段前的預(yù)處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預(yù)處理命令行無須在源文件的開頭,它可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預(yù)處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。
21.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。
22.7979解析:因為在調(diào)用子函數(shù)時進行的是數(shù)值傳遞,調(diào)用子函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
23.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應(yīng)用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式)改變時,不需要修改應(yīng)用程序。而邏輯獨立性是指當邏輯結(jié)構(gòu)改變時,不需要修改應(yīng)用程序。
24.2424解析:在循環(huán)隊列中因為頭指針指向的是隊頭元素的前一個位置,所以是從第6個位置開始有數(shù)據(jù)元素,所以隊列中的數(shù)據(jù)元素的個數(shù)為29-5=24。
25.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。
26.88解析:本題考查帶參數(shù)的宏定義及相關(guān)運算.運算過程為:t=B*2=A+3*2=2+3*2=8。
27.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似性質(zhì)的一組對象。所以,屬性與操作相似的一組對象稱為類。
28.#&#&解析:剛開始時,switch后面的表達式a>0為真(1),與case1匹配,然后執(zhí)行case1后面的switch語句,表達式b<0值為0,沒有與其匹配的語句,返回外層,因為外層沒有break語句,順序執(zhí)行case0后面的switch語句,表達式“c==5”值為1,與其后面的case1匹配,因此輸出#,遇到break返回外層,又因為外層沒有break語句,順序執(zhí)行default后的語句,輸出&。
29.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點是通過指針引用數(shù)組元素。98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。
30.11解析:本題是一個陷阱題。在if語句的判斷表達式中,使用的不是邏輯運算符==而是賦值運算符=,使該表達式返回的結(jié)果正好相反。如果是c==a,則結(jié)果為假。但是c=a則是將a賦給c,且表達式的結(jié)果是賦值之后的c的值,因此結(jié)果為1是真.故最后輸出c的值1。
31.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達式中,也只有賦值表達式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。
32.main()pstr*(pstr+j)
33.#include"math.h"m>>i&1m|k
34.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。
35.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。
36.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。
37.75.5
38.軟件開發(fā)
39.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
40.結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法解析:結(jié)構(gòu)化分析方法主要用于系統(tǒng)分析階段;結(jié)構(gòu)化設(shè)計方法主要用于系統(tǒng)設(shè)計階段;結(jié)構(gòu)化程序設(shè)計方法主要用于編碼階段??尚行匝芯繉儆谙到y(tǒng)分析階段,因此,可行性研究階段采用的是結(jié)構(gòu)化分析方法。
41.C題目中需要求出程序的輸出值i,j,其中i的值由sizeof決定,j的值由strlen函數(shù)決定。
sizeof是C語言的一種運算符,以字節(jié)的形式給出操作數(shù)的存儲空間的大小。sizeof的操作
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工程項目造價評估委托合同
- 2025年住宅租賃協(xié)議
- 2025年度員工策劃知識產(chǎn)權(quán)保密合同
- 2025年住宅租賃權(quán)交接協(xié)議
- 2025年環(huán)境監(jiān)測項目立項申請報告模稿
- 2025年融資租賃共同承租合同范文
- 2025年高通量試驗反應(yīng)堆及配套產(chǎn)品項目申請報告
- 2025年網(wǎng)安系統(tǒng)項目提案報告
- 2025年農(nóng)村物資配送代理合同
- 2025年區(qū)域配送營業(yè)代理協(xié)議書樣本
- 藍印花布鑒賞課件
- 血液灌流流程及注意事項詳細圖解
- 注水井洗井操作規(guī)程
- 貝克曼梁測定路基路面回彈彎沉
- 某道路拓寬工程施工組織設(shè)計
- 敏感紅血絲皮膚專題教學講解培訓課件
- 第一章染整工廠設(shè)計
- 機電安裝施工質(zhì)量標準化實施圖冊
- 易能變頻器說明書
- 上虞市化工、印染企業(yè)名單-企業(yè)負責人信息及聯(lián)系方式
- 【實用資料】隱匿陰莖業(yè)務(wù)學習PPT
評論
0/150
提交評論