版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021-2022年浙江省杭州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.將10階對稱矩陣壓縮存儲到一維數組A中,則數組A的長度最少為()
A.100B.40C.55D.80
2.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序運行后的輸出結果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1
3.一個無向連連通圖的生成樹是含有該連通圖的全部項點的_______。
A.極小連通子圖B.極小子圖C.極大連通子圖D.極大子圖
4.微型計算機的運算器、控制器及內存儲器組合在一起,稱之為()
A.ALUB.CPUC.MPUD.主機
5.對兩個數組a和b進行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數組m與數組n完全相同B.數組m與數組n長度相同C.數組m比數組n長1D.數組m與數組n中都存放字符串
6.在位運算中,操作數每左移兩位,其結果相當于()。
A.操作數乘以2B.操作數除以2C.操作數除以4D.操作數乘以4
7.若x,y,z均被定義為整數,則下列表達式能正確表達代數式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z
8.計算機硬件組成中,CPU包含______。
A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.內存儲器和外存儲器
9.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
10.字符串通常采用的兩種存儲方式是()A.散列存儲和索引存儲B.索引存儲和鏈式存儲C.順序存儲和鏈式存儲D.散列存儲和順序存儲
11.設有兩個串p和q,求q在p中首次出現(xiàn)的位置的運算稱為()。
A.連接B.模式匹配C.求子串D.求串長
12.要求當A的值為奇數時,表達式的值為“真”,A的值為偶數時,表達式的值為“假”,以下不滿足要求的表達式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)
13.設有序順序表中有n個數據元素,則利用二分查找法查找數據元素X的最多比較次數不超過()。A.log2+1
B.log2(n-1)
C.log2n
D.log2(n+1)
14.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
15.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序運行后的輸出結果是()。
A.0,0,B.1,2,C.12,13,D.0,1,
16.以下數據結構中,()是線性結構。
A.有向圖B.棧C.線索二叉樹D.B樹
17.數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是______。
A.控制流B.加工C.數據存儲D.源和潭
18.有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的運行結果是
A.A.331
B.41
C.2
D.1
19.請選出以下程序的輸出結果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y(tǒng)-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
20.若有以下程序:inta=1,b=2;a=a^b;b=b^a;則執(zhí)行以上語句后a和b的值分別是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
二、2.填空題(20題)21.以下程序中,fun()函數的功能是求3行4列二維數組每行元素中的最大值,請?zhí)羁铡?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=x;
}
}
22.設一棵完全二叉樹共有500個結點,則在該二叉樹中有【】個葉子結點。
23.設有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。
24.以下程序的輸出結果是______。
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
25.以下程序運行后的輸出結果是______。
main()
inta.b,c;
a=10;b=20;c=(a%b<)||{a/b>1);
printf("%d%d%dn",a,b,c);
}
26.需求分析的最終結果是產生【】。
27.以下程序運行后的輸出結果是【】。
main()
{
chara[]="Language",b[]"Programe";
char*p1,*p2;
intk;
p1=a,p2=b;
for(k=0;k<=7;k++)
if(*(p1+k==*(p2+k))printf("%c",*(p1+k));
}
28.下列程序的輸出結果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
29.如果有以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
30.二分法查找僅限于這樣的表:表中的數據元素必須有序,其存儲結構必須是______。
31.若有如下結構體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數組的定義,t數組的每個元素為該結構體類型。
【】t[20]
32.診斷和改正程序中錯誤的工作通常稱為【】。
33.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
34.語句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。
35.按照“先進先出”的原則組織數據的結構是______。
36.當輸入的數據為2、5時,則下列程序的運行結果為【】。
#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.用鏈表表示線性表的突出優(yōu)點是______。
38.下列程序的輸出結果是______。
longfun5(intn)
(longs;
if((n==l)‖(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
}
main()
{longx;
x=fun5(4);
printf(%1d\n",x);
39.下面程序的功能是:輸出100以內能被4整除且個位數為8的所有整數,請?zhí)羁?。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}
40.下面程序的輸出是【】。
main()
{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;
printf("%d\n",z);
}
三、1.選擇題(20題)41.設有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是()。
A.輸出語句中格式說明符的個數少于輸出項的個數,不能正確輸出
B.運行時產生出錯信息
C.輸出值為2002
D.輸出值為2003
42.結構化程序設計主要強調的是
A.程序的規(guī)模B.程序的效率C.程序設計語言的先進性D.程序易讀性
43.下面各語句行中,能正確地給字符串賦值的語句行是()。
A.charst[4]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s="ABCDE";
D.char*s;scanf("%s",*s);
44.在以下術語中,與數據的邏輯結構無關的是______。
A.線性結構B.鏈式結構C.樹型結構D.網狀結構
45.下面各被調用函數首部書寫正確的是()
A.voidsub(floatx;floaty);
B.voidsub(floatx,y)
C.voidsub(floatx,floaty)
D.voidsub(floatx,floaty);
46.已有定義:intx=3,y=4,z=5;,則表達式!(x+y)+z-1&&y+z/2的值是
A.6B.0C.2D.1
47.下列關于C語言數據文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件
B.文件由二進制數據序列組成,C語言只能讀寫二進制文件
C.文件由記錄序列組成,可按數據的存放形式分為二進制文件和文本文件
D.文件由數據流形式組成,可按數據的存放形式分為二進制文件和文本文件
48.已知inta;floatb;所用的scanf調用語句格式為:scanf("a//%d,b=%f",&a,&b);為了將數據3和25.08分別賦給x和y,正確的輸入應當是
A.3,25.08<Enter>
B.a=3,b=25.08<Enter>
C.a//3.b=25.08<Enter>
D.a//3<Enter>b=25.08<Enter>
49.以下程序的輸出結果是main(){charx=040;printf("%o\n",x<<1);}
A.100B.80C.64D.32
50.軟件調試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
51.有以下程序:#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<回車>則輸出結果是()。
A.1267B.1256C.1278D.1245
52.執(zhí)行語句printf("%u\n",+12345)的輸出結果是()。
A.12345B.0C.-1D.非定值
53.按照“先進后出”原則組織數據的數據結構是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
54.數據的存儲結構是指()。
A.數據所占的存儲空間
B.數據的邏輯結構在計算機中的存放形式
C.數據在計算機中的順序存儲方式
D.存儲在計算機外存中的數據
55.已知在ASCII字符集中,數字0的序號為48,下列程序的輸出結果為______。main()}chara='0',b='9';printf("%d,%c\n",a,b);}
A.因輸出格式不合法B.48,57C.0,9D.48,9
56.下列程序的輸出結果是#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
57.若變量已正確定義,有以下程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!=a)c=b;
printf("%d,%d,%d\n",a,b,c);
其輸出結果是
A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7
58.以下選項中不屬于字符常量的是
A.′C′B.′′C′′C.′\xCC′D.′\072′
59.下列程序的執(zhí)行結果是______。#lnClude<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10x.c[l]=1;printf("\n%d,x.i);}
A.266B.11C.265D.138
60.以下合法的賦值語句是______。
A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)
四、選擇題(20題)61.以下敘述中錯誤的是()。A.c程序在運行過程中所有計算都以十進制方式進行
B.c程序在運行過程中所有計算都以二進制方式進行
C.所有C程序都需要編譯鏈接無誤后才能運行
D.c程序中字符變量存放的是字符的ASCIl值
62.下列選項中,能正確定義數組的語句是()。
A.
B.
C.
D.
63.設有數組定義:chararray[]="Chinese";則數組array所占的空間為
A.6個字節(jié)B.7個字節(jié)C.8個字節(jié)D.9個字節(jié)
64.
65.若變量已正確定義,在if(W)塒ntf(”%d\n”,k);中,以下不可替代w的是()。
A.a<>b+CB.ch=getcharC.a==b+CD.a++
66.有如下程序:
該程序的輸出結果是()。
A.0.000000B.0.250000C.0.500000D.1.000000
67.
68.
69.若有定義“inta=5,b=7;”,則表達式a%-(b%2)運算后,a的值為()。
A.0B.1C.11D.3
70.若有定義:doublea=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
71.
72.有以下程序l
該程序試圖通過指針P為變量n讀人數據并輸出,但程序有多處錯誤,以下語句正確的是()。
73.若變量已正確定義,有以下程序段其輸出結果是()。
A.0,1B.0,0C.1,1D.程序進入無限循環(huán)
74.
有以下程序:
main
{inta=0,b=0;
a=10;/*給a賦值
b=20;給b賦值*/
printf("a+b=%d\n",a+b);//輸出計算機結果
}
程序運行后的輸出結果是()。
A.a+b=10B.a+b=30C.30D.出錯
75.
76.有以下程序:
執(zhí)行后輸出結果是()。
A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday
77.(39)在關系數據庫中,用來表示實體之間聯(lián)系的是()
A.樹結構
B.網結構
C.線性表
D.二維表
78.
下列程序的運行結果是()。
#include<stdio.h>
#defineADD(x)x+x
main
{intm=1,n=2,k=3;
intS=ADD(m+n)*k;
printf("s=%d",s);
}
A.sum=18B.sum=10C.sum=9D.sum=25
79.以下選項中,不能作為合法常量的是
A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0
80.以理對枚舉類型名的定義中正確的是______。
A.enuma={one,two,three);
B.enuma{one=9,two=1three};
C.enuma={"one","two","three"};
D.enuma{"one","two"."three"};
五、程序改錯題(1題)81.下列給定程序中,proc()函數的功能是:根據形參n。計算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若輸入6,則應輸出0.616667。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.請編寫函數proc(),該函數的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。
例如,若一維數組中的數據是:
1122234456666778
9910101010
刪除后,數組中的內容應該是:
12345678910
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.C
2.C整型變量x、y的初值都為1,“x++,y++,++y”是一個逗號表達式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號表達式中的第二個表達式的值,為1。因此本題的答案為選項C。
3.A
4.D
5.C在m數組中賦值的是字符串,其長度為7,末尾有結束符\0,故字節(jié)數為8,而n數組中賦的是字符,其長度為7,故C選項正確。
6.D解析:本題主要考查左移、右移對數據值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。
7.B
8.B
9.C解析:帶參數宏的格式為:#define標識符(形參表)形參表達式。其功能是:在預處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達式。
10.C
11.B
12.D
13.A
14.B此題考查除法運算,根據先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉化一下取整除部分,結果Z=1
15.Dchange函數接收一個整型指針data,然后將data指向的數對2求余,求余后的值重新賦給data指向的變量,最后將data指向的變量值加1后返回。注意,此處data指向的數對2求余會改變實參指針指向的值,但返回值并不影響data指向的值。程序第1次調用change函數,傳入實參data的地址,將data的值修改為0(12%2=0),此時輸出data的值是0;再次調用change傳入data的地址,將data的值修改為0(0%2=0),然后將返回值1重新賦給主函數變量data,所以此時輸出data的值是1。綜上,程序輸出0,1,。故本題答案為D選項。
16.B
17.A解析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
18.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或為“假”時執(zhí)行指定的動作,由if引導條件為“真”時執(zhí)行的操作;由else引導條件為“假”時執(zhí)行的操作。else語句要與上面最近的if語句進行匹配,如果要嵌套調用if-else語句,需要將嵌套部分用{}括起來,避免程序報錯。題目中給出了一個if語句和一個if-else語句,if-else語句為第一個if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進行x++操作。x的初始值為1,輸出結果為1。
19.B
20.B本題考查按位異或的用法。按位異或運算的規(guī)則是:兩個運算數的相應二進制位相同,則結果為0,相異則結果為1。b=2的二進制為00000010,a=1的二進制為00000001,a=a^b一00000011,轉化為十進制后為3,b=b^a=00000010^00000011=00000001,即1。
21.br[i]
22.250250解析:所謂完全二叉樹是指除最后一層外,每—層上的結點數均達到最大值;在最后—層上只缺少右邊的若干結點。具有n個結點的完全二叉樹,其父結點數為int(n/2),而葉子結點數等于總結點數減去父結點數。本題n=500,故父結點數等于int(500/2)=250,葉子結點數等于500-25=250。
23.100100解析:本題考查帶參數的宏定義及相關運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
24.21
25.1020010200解析:本題的關鍵在于求表達式(a%b<1)‖a/b>1)的值。已知a=10,b=20,所以a%b=10,因此(a%b<1)為“假”。而a/b=0,因此(a/b>1)亦為“假”。,D運算的兩邊同時為“假”,所以整個表達式的值為?!凹佟?,即c等于0。所以,本題最終輸出為:10200。
26.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。
27.gaegae解析:本題定義了兩個字符串數組a[],b[],字符型指針變量p1和p2,且分別指向字符串數組a和b,執(zhí)行for循環(huán),當if(*p1+k)=*(p2+k))條件為真,執(zhí)打輸出*(p1+k)對應的字符。即當k=0時,*(p1+k)對應的字符串數組a中的字符L,*(p2+k)對應的字符串數組b中的字符P,因此if(*(p1+k)=*(p2+k))條件為假,不執(zhí)行printf語句,依此類推,將字符串數組a和b中對應位置上的字符一一比較,如果對應位置上的字符相同,則輸出該字符。
28.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。
29.*(p+5)*(p+5)解析:p+5指向了數組w的第6個元素,再取指針運算。
30.順序存儲(順序方式存儲)順序存儲(順序方式存儲)解析:二分法查找對表的要求是有序的順序表,即第一要求是數據元素有序,第二要求是按順序方式存儲。
31.strudctSTRUstrudctSTRU解析:結構件類型是構造數據類型,是用戶自己定義的一種類型。
結構體類型的定義:
struct結構體類型名
{
成員項表;
};
定義結構體變量的的形式為:
struct結構體類型名變量1,變量2,...?
其中變量包括;一般變量、指針變量、數組變量等。
32.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發(fā)階段。
33.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。
34.x+=1;
35.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數據的。
36.255
37.便于插入和刪除操作。便于插入和刪除操作。解析:為了克服順序表中插入和刪除時需要移動大量數據元素的缺點,引入了鏈式存儲結構。鏈表表示線性表的突出優(yōu)點是插入和刪除操作方便,不必移動數據元素,執(zhí)行效率高。
38.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。
39.i<10i<10解析:分析程序:當(i=0,1,2,…)時,“j=i*10+8”語句的運行結果是(8,18,28,…)個位數字為8的所有整數;題中要求是100以內的整數,所以i<10;“if(j%4!=0)continue;”語句的功能是當條件不能被4整除時,繼續(xù)循環(huán)不執(zhí)行操作,直到能被4整除時輸出該數,所以輸出的數滿足條件100以內能被4整除且個位數為8。
40.66解析:本題變量z的值應為最后一次給它賦的值,且最后一次for循環(huán)使prt指向a[2]
41.D解析:本題考查逗號表達式。逗號表達式的形式為:表達式1,表達式2,其求解過程為:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。
42.D結構化程序設計由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設計為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,這樣使完成每一個模塊的工作變得單純而明確,為設計一些較大的軟件打下了良好的基礎。
由于模塊相互獨立,因此,在設計其中一個模塊時,不會受到其他模塊的牽連,因而可將原來較為復雜的問題化簡為一系列簡單模塊的設計。模塊的獨立性還為擴充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因為可以充分利用現(xiàn)有的模塊作為積木式的擴展。
結構化程序設計的基本思想是采用“自頂向下,逐步求精”的程序設計方法和“單入口單出口”的控制結構。自頂向下、逐步求精的程序設計方法從問題本身開始,經過逐步細化,將解決問題的步驟分解為由基本程序結構模塊組成的結構化程序框圖;“單入口單出口”的思想認為一個復雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結構通過組合、嵌套構成,那么這個新構造的程序一定是一個單入口單出口的程序。據此就很容易編寫出結構良好、易于調試的程序。
43.C解析:選項A)字符串的賦值產生越界錯誤,不正確;選項B)是字符數組的賦值,而不是字符串的賦值;選項D)中scanf的列表項必須為變量的地址。
44.B
45.C
46.D解析:本題考查的知識點是!和&&的運算規(guī)則.本題中,&&左邊的表達式!(x+y)為!(3+7),結果為假,即為0。再加上2,然后減一,相當于0+5-1=4。左邊等于4,&&右邊的表達式y(tǒng)+z/2相當于4+5/2為6,所以整個表達式相當于4&&6為真,即為1,所以選項D正確。
47.D解析:C語言把文件看成是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數據順序組成。根據數據的組織形式,可分為ASCII文件和二進制文件。ASCII文件又稱文本文件,它的每一個字節(jié)放一個ASCII代碼,代表一個字符。二進制文件是把內存中的數據按其在內存中的存儲形式原樣輸出到磁盤上存放。
48.C解析:若在scanf的格式控制串中插入了其他字符,則在輸入時要求按一一對應的位置原樣輸入這些字符。由于scanf的格式控制串中插入了“a\\\\”、逗號和“b=”等字符,所以輸入時候應該一一對應地在對應位置上輸入這些字符。
49.A解析:本題考核的知識點是位運算符的應用.首先將八進制040轉換成二進制數000100000,在將此;進制數左移一位為001000000,輸出時轉換成八進制數100。所以,4個選項中A為所選。
50.B解析:在對程序進行測試時會發(fā)現(xiàn)錯誤,這就要進行程序調試(排錯)。程序調試活動由三部分組成:一是錯誤定位,根據錯誤的外部表現(xiàn)形式,確定程序中出錯的位置,找出錯誤的內在原因;二是對程序進行修改,排除這個錯誤;三是進行回歸測試,防止引進新的錯誤。所以程序調試的目的就是診斷和改正程序中的錯誤。軟件調試不能改善軟件的性能,也不能挖掘軟件的潛能。
51.D解析:在題目中,程序執(zhí)行到scanf()函數時,會暫停等待用戶輸入4個字符,按題意輸入123<回車>后,字符1~3被分別輸入到c1~c3中,而c4會得到一個換行符'\\n'。然后執(zhí)行第1個getchar()函數,由于前面的scanf()函數讀完了緩沖區(qū)中的所有字符,所以此時程序會又暫停等待用戶輸入,按題意輸入45678<回車>后,緩沖區(qū)第1個字符'4'被讀入并賦給c5,第2個getchar()函數會讀入緩沖區(qū)第2個字符'5'。所以最后依次輸出c1、c2、c5、c6的值后,屏幕上的結果是1245。故應該選擇D。
52.A解析:“%u”表示輸出無符號的整數(注意:如果輸出值前有符號,將自動轉化為相應的無符號數輸出)。
53.BB.【解析】棧是一種特殊的線性表,其插入和刪除運算都只在線性表的一端進行,而另一端是封閉的。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元索是最后被插入的元素,也是最后被刪除的元素。棧是按先進后出的原則組織數據的。
【知識拓展】“?!钡男问饺缡謽尩膹椣唬詈髩喝氲淖訌椏偸亲钕缺粡棾?,而最先壓人的子彈最后才被彈出,也就是“先進后出”。
54.B解析:數據的存儲結構,又稱為數據的物理結構,是數據的邏輯結構在計算機中的存放形式,數據的存儲結構有順序結構、鏈式結構、散列結構和索引結構等。
55.D解析:注意輸出控制符%d,%c,分別表示以十進制形式輸出字符的ASCII碼值和字符。
56.C解析:帶參數的宏定義命令行形式如下:
#define宏名(形參表)替換文本
在編譯的時候編譯預處理程序用“替換文本”來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結果賦給a。注意,宏替換是在編譯時由預處理程序完成的,宏替換不占用運行的時間,而函數調用是在程序運行時進行的,在函數的調用過程中需要占用一系列的處理時間。
57.B解析:兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒能變化,程序輸出的結果為3,5,3。所以正確答案為B)。
58.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。
59.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數組c共占用同—個存儲單元,且此存儲單元為2個字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以x.i的值為266。
60.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達式是不能獨立成為語句的,答案B使用了C語言的自減運算符它就相當于D=D-1,所以答案B為一賦值語句。
61.AC程序在運行過程中所有計算都以二進制方式進行,所以本題答案為A)。
62.D選項A)不符合c語言的語法要求;選項
B)中沒有指定數組的大小;選項c)中數組大小不能用變量來指定。
63.C本題主要考查字符數組的初始化操作。字符數組的初始化可以逐個元素賦值,也可以作為字符串賦值。
逐個元素賦值初始化形式:
char數組名[n]={字符1,字符2,……,字符n};
char數組名[]={字符1,字符2,……,字符n};
作為字符串賦值形式:
char數組名[n]='字符串';
char數組名[]='字符串';
在C語言中,為了方便確定字符串的長度,編譯系統(tǒng)在字符串后增加了一個結束標識’\\0’,即ASCII碼的0。因此,當采用字符串初始化字符數組時,必須為其保留一個存放結束標識符的位置。
在本題中,用一個字符串作為數組的初值,這種方法直觀、方便,而且符合人們的習慣。數組array的長度是7,但所占的空間是8,這點必須要注意。因為字符串常量的最后由系統(tǒng)加上一個’\0’,因此,上面的初始化是chararray[]={′C′,′h′,′i′,′n′,′e′,′s′,′e′,′\0′}。
64.C
65.A選項A是非法的表達式,C語言中沒有<>運算符。
66.D本題考查if語句的嵌套。if語句中的一
種表達方式,即:if…elseif…。
該表達式的語句是:
if(表達式1)
語句l
elseif(表達式2)
語句2
elseif(表達式3)
語句3
else
語句4
本題執(zhí)行elsey=1.0,并且以”%f”輸出。
67.D
68.D
69.A本題考查“%”運算符的使用。運算符“%”是整數除法的余數。本題中表達式a%=(b%2)等價于a=a%(b%2)=5%(7%2)=5%1=0。
70.B取模運算符“%”,二元運算符,具有左結合性,參與運算的量均為整型。選項B中的a變量是doable實型,所以8不符合規(guī)定。
71.C
72.A選項B的正確寫法應為P=&n;選項c的正確寫法應為scanf(”%d”,P);選項D的正確寫法應為printf(”%d\n”,*P)。
73.A循環(huán)語句中輸出o,i為。循環(huán)結束,執(zhí)行循環(huán)條件后i為l,輸出1,所以選擇A)。
74.A\n本題中/*……*/為多行注釋,所以可知b=20為注釋語句,在程序運行時不起作用,b仍為0,所以本題中A正確。
\n
75.B
76.CP指向字符串”tuesday”,因此*(P+1)的值為n。s[0]=”monday”。
77.D
78.B
\n本題考查帶參數的宏的定義:“#defineADD(x)x+x”中X代表m+n,故s寫成s=m+n+m+n*k=1+2+1+2*3=10。
\n
79.B本題考查實型數據的表示形式。
實型數據有十進制小數形式和指數形式兩種表示方法,指數形式中e后面的指數必須為整數。選項B中e后面的指數為0.3,不符合實型數據的表示方式。
80.B解析:聲明枚舉類型用enum開頭。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);
說明:1、在C編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數不能直接賦給一個枚舉變量。
81.(1)錯誤:intproc(intnJ
正確:doubleproc(intn)
(2)錯誤:for(i=1;i(n;i++)
正確:for(i=2;i<=n;i++)
【解析】由主函數中的函數調用以及函數proc()中返回值的類型,可知函數proc()的返回值類型為double型數據。因此,“intproc(intn)”應改為“doubleproc(intn)”。由題目中給出的表達式可知,循環(huán)的最大值應該取到n,因此,“for(i=l;i<n;i++)”應改為“for(i=2;i<=n;i++)”。
82.
【解析】題目中要求刪去一維數組中所有相同的數,使之只剩一個。首先需要將字符串中的每一個字符與其后的一個字符相比較,相同則不做任何操作,不相同則將其放入新的字符串中。最后將新的字符串中的字符個數返回給主函數。
2021-2022年浙江省杭州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.將10階對稱矩陣壓縮存儲到一維數組A中,則數組A的長度最少為()
A.100B.40C.55D.80
2.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序運行后的輸出結果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1
3.一個無向連連通圖的生成樹是含有該連通圖的全部項點的_______。
A.極小連通子圖B.極小子圖C.極大連通子圖D.極大子圖
4.微型計算機的運算器、控制器及內存儲器組合在一起,稱之為()
A.ALUB.CPUC.MPUD.主機
5.對兩個數組a和b進行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數組m與數組n完全相同B.數組m與數組n長度相同C.數組m比數組n長1D.數組m與數組n中都存放字符串
6.在位運算中,操作數每左移兩位,其結果相當于()。
A.操作數乘以2B.操作數除以2C.操作數除以4D.操作數乘以4
7.若x,y,z均被定義為整數,則下列表達式能正確表達代數式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z
8.計算機硬件組成中,CPU包含______。
A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.內存儲器和外存儲器
9.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
10.字符串通常采用的兩種存儲方式是()A.散列存儲和索引存儲B.索引存儲和鏈式存儲C.順序存儲和鏈式存儲D.散列存儲和順序存儲
11.設有兩個串p和q,求q在p中首次出現(xiàn)的位置的運算稱為()。
A.連接B.模式匹配C.求子串D.求串長
12.要求當A的值為奇數時,表達式的值為“真”,A的值為偶數時,表達式的值為“假”,以下不滿足要求的表達式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)
13.設有序順序表中有n個數據元素,則利用二分查找法查找數據元素X的最多比較次數不超過()。A.log2+1
B.log2(n-1)
C.log2n
D.log2(n+1)
14.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
15.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序運行后的輸出結果是()。
A.0,0,B.1,2,C.12,13,D.0,1,
16.以下數據結構中,()是線性結構。
A.有向圖B.棧C.線索二叉樹D.B樹
17.數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是______。
A.控制流B.加工C.數據存儲D.源和潭
18.有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的運行結果是
A.A.331
B.41
C.2
D.1
19.請選出以下程序的輸出結果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y(tǒng)-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
20.若有以下程序:inta=1,b=2;a=a^b;b=b^a;則執(zhí)行以上語句后a和b的值分別是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
二、2.填空題(20題)21.以下程序中,fun()函數的功能是求3行4列二維數組每行元素中的最大值,請?zhí)羁铡?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
______=x;
}
}
22.設一棵完全二叉樹共有500個結點,則在該二叉樹中有【】個葉子結點。
23.設有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。
24.以下程序的輸出結果是______。
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
25.以下程序運行后的輸出結果是______。
main()
inta.b,c;
a=10;b=20;c=(a%b<)||{a/b>1);
printf("%d%d%dn",a,b,c);
}
26.需求分析的最終結果是產生【】。
27.以下程序運行后的輸出結果是【】。
main()
{
chara[]="Language",b[]"Programe";
char*p1,*p2;
intk;
p1=a,p2=b;
for(k=0;k<=7;k++)
if(*(p1+k==*(p2+k))printf("%c",*(p1+k));
}
28.下列程序的輸出結果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
29.如果有以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
30.二分法查找僅限于這樣的表:表中的數據元素必須有序,其存儲結構必須是______。
31.若有如下結構體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數組的定義,t數組的每個元素為該結構體類型。
【】t[20]
32.診斷和改正程序中錯誤的工作通常稱為【】。
33.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
34.語句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。
35.按照“先進先出”的原則組織數據的結構是______。
36.當輸入的數據為2、5時,則下列程序的運行結果為【】。
#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.用鏈表表示線性表的突出優(yōu)點是______。
38.下列程序的輸出結果是______。
longfun5(intn)
(longs;
if((n==l)‖(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
}
main()
{longx;
x=fun5(4);
printf(%1d\n",x);
39.下面程序的功能是:輸出100以內能被4整除且個位數為8的所有整數,請?zhí)羁?。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}
40.下面程序的輸出是【】。
main()
{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;
printf("%d\n",z);
}
三、1.選擇題(20題)41.設有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是()。
A.輸出語句中格式說明符的個數少于輸出項的個數,不能正確輸出
B.運行時產生出錯信息
C.輸出值為2002
D.輸出值為2003
42.結構化程序設計主要強調的是
A.程序的規(guī)模B.程序的效率C.程序設計語言的先進性D.程序易讀性
43.下面各語句行中,能正確地給字符串賦值的語句行是()。
A.charst[4]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s="ABCDE";
D.char*s;scanf("%s",*s);
44.在以下術語中,與數據的邏輯結構無關的是______。
A.線性結構B.鏈式結構C.樹型結構D.網狀結構
45.下面各被調用函數首部書寫正確的是()
A.voidsub(floatx;floaty);
B.voidsub(floatx,y)
C.voidsub(floatx,floaty)
D.voidsub(floatx,floaty);
46.已有定義:intx=3,y=4,z=5;,則表達式!(x+y)+z-1&&y+z/2的值是
A.6B.0C.2D.1
47.下列關于C語言數據文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件
B.文件由二進制數據序列組成,C語言只能讀寫二進制文件
C.文件由記錄序列組成,可按數據的存放形式分為二進制文件和文本文件
D.文件由數據流形式組成,可按數據的存放形式分為二進制文件和文本文件
48.已知inta;floatb;所用的scanf調用語句格式為:scanf("a//%d,b=%f",&a,&b);為了將數據3和25.08分別賦給x和y,正確的輸入應當是
A.3,25.08<Enter>
B.a=3,b=25.08<Enter>
C.a//3.b=25.08<Enter>
D.a//3<Enter>b=25.08<Enter>
49.以下程序的輸出結果是main(){charx=040;printf("%o\n",x<<1);}
A.100B.80C.64D.32
50.軟件調試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
51.有以下程序:#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<回車>則輸出結果是()。
A.1267B.1256C.1278D.1245
52.執(zhí)行語句printf("%u\n",+12345)的輸出結果是()。
A.12345B.0C.-1D.非定值
53.按照“先進后出”原則組織數據的數據結構是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
54.數據的存儲結構是指()。
A.數據所占的存儲空間
B.數據的邏輯結構在計算機中的存放形式
C.數據在計算機中的順序存儲方式
D.存儲在計算機外存中的數據
55.已知在ASCII字符集中,數字0的序號為48,下列程序的輸出結果為______。main()}chara='0',b='9';printf("%d,%c\n",a,b);}
A.因輸出格式不合法B.48,57C.0,9D.48,9
56.下列程序的輸出結果是#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
57.若變量已正確定義,有以下程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!=a)c=b;
printf("%d,%d,%d\n",a,b,c);
其輸出結果是
A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7
58.以下選項中不屬于字符常量的是
A.′C′B.′′C′′C.′\xCC′D.′\072′
59.下列程序的執(zhí)行結果是______。#lnClude<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10x.c[l]=1;printf("\n%d,x.i);}
A.266B.11C.265D.138
60.以下合法的賦值語句是______。
A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)
四、選擇題(20題)61.以下敘述中錯誤的是()。A.c程序在運行過程中所有計算都以十進制方式進行
B.c程序在運行過程中所有計算都以二進制方式進行
C.所有C程序都需要編譯鏈接無誤后才能運行
D.c程序中字符變量存放的是字符的ASCIl值
62.下列選項中,能正確定義數組的語句是()。
A.
B.
C.
D.
63.設有數組定義:chararray[]="Chinese";則數組array所占的空間為
A.6個字節(jié)B.7個字節(jié)C.8個字節(jié)D.9個字節(jié)
64.
65.若變量已正確定義,在if(W)塒ntf(”%d\n”,k);中,以下不可替代w的是()。
A.a<>b+CB.ch=getcharC.a==b+CD.a++
66.有如下程序:
該程序的輸出結果是()。
A.0.000000B.0.250000C.0.500000D.1.000000
67.
68.
69.若有定義“inta=5,b=7;”,則表達式a%-(b%2)運算后,a的值為()。
A.0B.1C.11D.3
70.若有定義:doublea=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
71.
72.有以下程序l
該程序試圖通過指針P為變量n讀人數據并輸出,但程序有多處錯誤,以下語句正確的是()。
73.若變量已正確定義,有以下程序段其輸出結果是()。
A.0,1B.0,0C.1,1D.程序進入無限循環(huán)
74.
有以下程序:
main
{inta=0,b=0;
a=10;/*給a賦值
b=20;給b賦值*/
printf("a+b=%d\n",a+b);//輸出計算機結果
}
程序運行后的輸出結果是()。
A.a+b=10B.a+b=30C.30D.出錯
75.
76.有以下程序:
執(zhí)行后輸出結果是()。
A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday
77.(39)在關系數據庫中,用來表示實體之間聯(lián)系的是()
A.樹結構
B.網結構
C.線性表
D.二維表
78.
下列程序的運行結果是()。
#include<stdio.h>
#defineADD(x)x+x
main
{intm=1,n=2,k=3;
intS=ADD(m+n)*k;
printf("s=%d",s);
}
A.sum=18B.sum=10C.sum=9D.sum=25
79.以下選項中,不能作為合法常量的是
A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0
80.以理對枚舉類型名的定義中正確的是______。
A.enuma={one,two,three);
B.enuma{one=9,two=1three};
C.enuma={"one","two","three"};
D.enuma{"one","two"."three"};
五、程序改錯題(1題)81.下列給定程序中,proc()函數的功能是:根據形參n。計算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若輸入6,則應輸出0.616667。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.請編寫函數proc(),該函數的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。
例如,若一維數組中的數據是:
1122234456666778
9910101010
刪除后,數組中的內容應該是:
12345678910
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.C
2.C整型變量x、y的初值都為1,“x++,y++,++y”是一個逗號表達式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號表達式中的第二個表達式的值,為1。因此本題的答案為選項C。
3.A
4.D
5.C在m數組中賦值的是字符串,其長度為7,末尾有結束符\0,故字節(jié)數為8,而n數組中賦的是字符,其長度為7,故C選項正確。
6.D解析:本題主要考查左移、右移對數據值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。
7.B
8.B
9.C解析:帶參數宏的格式為:#define標識符(形參表)形參表達式。其功能是:在預處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達式。
10.C
11.B
12.D
13.A
14.B此題考查除法運算,根據先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉化一下取整除部分,結果Z=1
15.Dchange函數接收一個整型指針data,然后將data指向的數對2求余,求余后的值重新賦給data指向的變量,最后將data指向的變量值加1后返回。注意,此處data指向的數對2求余會改變實參指針指向的值,但返回值并不影響data指向的值。程序第1次調用change函數,傳入實參data的地址,將data的值修改為0(12%2=0),此時輸出data的值是0;再次調用change傳入data的地址,將data的值修改為0(0%2=0),然后將返回值1重新賦給主函數變量data,所以此時輸出data的值是1。綜上,程序輸出0,1,。故本題答案為D選項。
16.B
17.A解析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
18.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或為“假”時執(zhí)行指定的動作,由if引導條件為“真”時執(zhí)行的操作;由else引導條件為“假”時執(zhí)行的操作。else語句要與上面最近的if語句進行匹配,如果要嵌套調用if-else語句,需要將嵌套部分用{}括起來,避免程序報錯。題目中給出了一個if語句和一個if-else語句,if-else語句為第一個if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進行x++操作。x的初始值為1,輸出結果為1。
19.B
20.B本題考查按位異或的用法。按位異或運算的規(guī)則是:兩個運算數的相應二進制位相同,則結果為0,相異則結果為1。b=2的二進制為00000010,a=1的二進制為00000001,a=a^b一00000011,轉化為十進制后為3,b=b^a=00000010^00000011=00000001,即1。
21.br[i]
22.250250解析:所謂完全二叉樹是指除最后一層外,每—層上的結點數均達到最大值;在最后—層上只缺少右邊的若干結點。具有n個結點的完全二叉樹,其父結點數為int(n/2),而葉子結點數等于總結點數減去父結點數。本題n=500,故父結點數等于int(500/2)=250,葉子結點數等于500-25=250。
23.100100解析:本題考查帶參數的宏定義及相關運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
24.21
25.1020010200解析:本題的關鍵在于求表達式(a%b<1)‖a/b>1)的值。已知a=10,b=20,所以a%b=10,因此(a%b<1)為“假”。而a/b=0,因此(a/b>1)亦為“假”。,D運算的兩邊同時為“假”,所以整個表達式的值為?!凹佟?,即c等于0。所以,本題最終輸出為:10200。
26.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。
27.gaegae解析:本題定義了兩個字符串數組a[],b[],字符型指針變量p1和p2,且分別指向字符串數組a和b,執(zhí)行for循環(huán),當if(*p1+k)=*(p2+k))條件為真,執(zhí)打輸出*(p1+k)對應的字符。即當k=0時,*(p1+k)對應的字符串數組a中的字符L,*(p2+k)對應的字符串數組b中的字符P,因此if(*(p1+k)=*(p2+k))條件為假,不執(zhí)行printf語句,依此類推,將字符串數組a和b中對應位置上的字符一一比較,如果對應位置上的字符相同,則輸出該字符。
28.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。
29.*(p+5)*(p+5)解析:p+5指向了數組w的第6個元素,再取指針運算。
30.順序存儲(順序方式存儲)順序存儲(順序方式存儲)解析:二分法查找對表的要求是有序的順序表,即第一要求是數據元素有序,第二要求是按順序方式存儲。
31.strudctSTRUstrudctSTRU解析:結構件類型是構造數據類型,是用戶自己定義的一種類型。
結構體類型的定義:
struct結構體類型名
{
成員項表;
};
定義結構體變量的的形式為:
struct結構體類型名變量1,變量2,...?
其中變量包括;一般變量、指針變量、數組變量等。
32.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發(fā)階段。
33.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。
34.x+=1;
35.隊列隊列解析:隊列是一種特殊的線性表,只允
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年山西機電職業(yè)技術學院單招綜合素質考試參考題庫含詳細答案解析
- 2026年邵陽職業(yè)技術學院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026年青海柴達木職業(yè)技術學院單招綜合素質筆試備考試題含詳細答案解析
- 2026年湛江幼兒師范??茖W校單招職業(yè)技能考試參考題庫含詳細答案解析
- 2026年四川財經職業(yè)學院單招綜合素質考試備考題庫含詳細答案解析
- 2026福建水投集團漳浦水務有限公司招聘23人考試重點題庫及答案解析
- 2026年華北理工大學輕工學院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026年山西藝術職業(yè)學院單招綜合素質筆試備考題庫含詳細答案解析
- 2026年重慶文理學院單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年哈爾濱科學技術職業(yè)學院單招綜合素質考試備考試題含詳細答案解析
- 北方工業(yè)集團 筆試題目
- 環(huán)境監(jiān)測機構質量保證制度
- DL-T5169-2013水工混凝土鋼筋施工規(guī)范
- 農業(yè)科技園區(qū)生態(tài)旅游模式探討以珠海市“農科奇觀”為例(doc12)
- 酒店消殺方案
- 當前消費者權益保護工作中出現(xiàn)的新情況新問題與對策建議百度文剖析
- 【船舶污染問題研究國內外文獻綜述2300字】
- 管道壁厚計算表
- 內鏡進修匯報
- 春節(jié)后復工“收心會”會議紀要
- 景觀、綠化總進度計劃表
評論
0/150
提交評論