版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年江西省鷹潭市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.用鄰接矩陣A表示有向圖G的存儲結(jié)構(gòu),則有向圖G中頂點i的出度為()。
A.第i行非0元素的個數(shù)之和B.第i列非0元素的個數(shù)之和C.第i行0元素的個數(shù)之和D.第i列0元素的個數(shù)之和
2.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序運行后的輸出結(jié)果是A.6B.7C.5D.8
3.下列選項中,當X為大于1的奇數(shù)時,值為0的表達式是()。
A.x%2==0B.x/2C.x%2!=0D.x%2==1
4.程序運行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
5.設(shè)s1="Good",s2="",s3="Bye",則s1、s2和s3連接后的結(jié)果是()。
A.GoodB.GoodByeC.GoodByeD.Bye
6.數(shù)組A中,每個元素的長度為4個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放在存儲器內(nèi),該數(shù)組按行存放時,元素A[8][5]的起始地址為()。
A.SA+292B.SA+296C.SA+300D.304
7.以下程序是用來計算兩個非負數(shù)之間的最大公約數(shù):我們假設(shè)x,y中最大的那個數(shù)的長度為n,基本運算時間復雜度為O(1),那么該程序的時間復雜度為()A.O(1)B.O(logn)C.O(n)D.O(n^2)
8.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈式存儲結(jié)構(gòu)
9.有以下定義和語句
StructWorkers
{intnum;charname[20];charc;
struct
{intday;intmonth;intyear;}s;
};
StructWorkersW,*pe;
PW=&W;
能給W中yeaR成員賦1980的語句是A.*pW.yeaR=1980;
B.W.yeaR=1980;
C.pW->yeaR=1980;
D.W.s.yeaR=1980;
10.算法的空間復雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法所需要的存儲空間
11.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。
A.1/2B.1C.2D.4
12.以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。
A.可隨機訪問B.需要連續(xù)的存儲空間C.不便于插入和刪除D.邏輯相鄰的數(shù)據(jù)物理位置上不相鄰
13.若有語句“void*P=malloc(80);”,則以下敘述錯誤的是()。
A.可以通過指針P直接訪問用malloc開辟的這塊內(nèi)存
B.p所指內(nèi)存可以通過強制類型轉(zhuǎn)換當作具有20個int型元素的一維數(shù)組來使用
C.p所指內(nèi)存可以通過強制類型轉(zhuǎn)換當作具有10個double型元素的一維數(shù)組來使用
D.P所指內(nèi)存可以通過強制類型轉(zhuǎn)換當作具有80個char型元素的一維數(shù)組來使用
14.若要判斷char型變量c中存放的是否為小寫字母,以下正確的表達式是()。A.'a'<=c<='z'
B.(c>='a')&&(c<='z')
C.(c>='a')‖(c<='z')
D.('a'<=c)AND('z'>=c)
15.若a是數(shù)值類型,則邏輯表達式“(a==1)||(a!=1)”的值是()。
A.1B.0C.2D.不知道a的值,不能確定
16.如果最常用的操作是取第i個結(jié)點及其前驅(qū),最節(jié)省時間的存儲方式是()。
A.單鏈表B.雙向鏈表C.單循環(huán)鏈表D.順序表
17.當n=5時,函數(shù)輸出為()A.5B.11C.29D.10
18.設(shè)x、y、z、t均為int型變量,則執(zhí)行以下語句后,t的值是()x=y(tǒng)=z=l;t=++x||++y&&++z;
A.不定值B.2C.1D.0
19.下列敘述中正確的是()。
A.可以用關(guān)系運算符比較字符串的大小
B.空字符串不占用內(nèi)存,其內(nèi)存空間大小是0
C.兩個連續(xù)的單引號是合法的字符常量
D.兩個連續(xù)的雙引號是合法的字符串常量
20.
二、2.填空題(20題)21.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?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*bar)
{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.設(shè)有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
charsi10],ti10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)strcpy(t,s);
}
printf("%s\n",t);
}
程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。
23.常用的黑箱測試有等價分類法、【】、因果圖法和錯誤推測法4種。
24.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
25.下列程序輸出的結(jié)果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
26.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
27.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
28.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。
29.下列程序運行后的輸出的結(jié)果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
運行程序,輸入HOWAREYOU。
30.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineMAX(x,y)(x),(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
31.黑盒測試是從【】觀點的測試。
32.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
33.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。
34.fun1函數(shù)的功能是將3個整數(shù)按由大到小的順序調(diào)整后依次放入a、b、c3個變量中,a中放最大數(shù),fun2函數(shù)的功能是交換兩個變量中的值。補足所缺語句。
fun2(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
fun1(int*p1,int*p2,int*p3)
{if(*p3>*p2)fun2(*P2,*p3);
if(*p1<*p3)fun2(______);
if(*p1<*p2)fun2(______);
}
main()
{inta,b,c;
scanf("%d%d%d",&a,&b,&c);
fun1(&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
}
35.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁?,使下面程序段的功能與之完全相同
s=1.0;k=1;
while(【】){s=s+1.0/(k*(k+1));【】;}
printf("s=%f\n\n",s);
36.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。
37.下面程序的運行結(jié)果是______。
#defineDOUBLE(x,y)x/y
main()
{intx=4,y=2,t;
t=DOUBLE(x+y,x-y);
printf("%d",t);
}
38.已知字符A的ACSII碼值為65,以下語句的輸出結(jié)果是______。
charch='B';
printf("%c%d\n",ch,ch);
39.以下程序的運行結(jié)果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
40.下列程序段的輸出結(jié)果是【】。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':
case'A':
case'b':
case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':case'D':printf("warn");
}
三、1.選擇題(20題)41.對于下述程序,在方式串分別采用“wt”和“wb”運行時,兩次生成的文件TEST的長度分別是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fpute('\n',fp);fputc('C',fp);fclose(fp);}
A.7字節(jié)、7字節(jié)B.7字節(jié)、5字節(jié)C.5字節(jié)、7字節(jié)D.5字節(jié)、5字節(jié)
42.八位二進制補碼01000100用十進制數(shù)表示為()
A.68B.-68C.-36D.60
43.若已定義:inta[9],*p=a;并在以后的語句中未改變p的值,下列選項中不能表示a[1]地址的表達式是()。
A.p+1B.a+1C.a++D.#NAME?
44.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()
A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.線性結(jié)構(gòu)
45.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
46.以下程序#include<stdio.h>#include<string.h>main(){char*pl="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}的輸出是________。
A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC
47.下列程序的運行結(jié)果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}
A.500B.5C.4D.400
48.已知學生記錄描述為:structstudent{intno;charname[20],sex;struct{intyear,month,day;}birth;};structstudents;設(shè)變量s中的“生日”是“1984年11月12日”,對“birth”正確賦值的程序段是()。
A.year=1984;month=11;day=12;
B.s.year=1984;s.month=11;s.day=12;
C.birth.year=1984;birth.month=11;birth.day=12;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;
49.已知字母A的ASCII碼為十進制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。
A.67,DB.B,CC.C,DD.不確定的值
50.設(shè)有:
inta=1,b=2,c=3,d=4,m=2,n=2;
執(zhí)行(m=a>b)&&(n=c>d)后,n的值是
A.1B.2C.3D.4
51.已定義ch為字符型變量,以下賦值語句中錯誤的是
A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';
52.軟件調(diào)試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
53.在設(shè)計程序時,應(yīng)采納的原則之—是______。
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或者取消注解行D.程序越短越好
54.設(shè)有如下定義structss{charname[10];intage;charsex;}std[3],*p=std;下面各輸入語句中錯誤的是
A.scanf("%d",&(*p).age);
B.scant("%s",&);
C.scanf("%c",&std[0].sex);
D.scanf("%c",&(p->sex));
55.假定所有變量均已正確說明,以下程序段運行后,x的值是______。a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;
A.34B.4C.35D.3
56.在C語言的循環(huán)語句for、while、do-while中,用于結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)的語句是______。
A.switchB.breakC.continueD.goto
57.已定義以下函數(shù):fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函數(shù)的功能是()。
A.將p1所指字符串復制到p2所指內(nèi)存空間
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個指針所指字符串進行比較
D.檢查p1和p2兩個指針所指字符串中是否有'\0',
58.假定所有變量均已正確說明,下列程序段運行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
59.設(shè)有下列二叉樹:[*]對此二叉樹前序遍歷的結(jié)果為A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
60.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
四、選擇題(20題)61.(42)希爾排序法屬于哪一種類型的排序法()
A.交換類排序法
B.插入類排序法
C.選擇類排序法
D.建堆排序法
62.有以下程序:
程序運行后的輸出結(jié)果是()。
A.3B.1C.2D.0
63.下列程序的輸出結(jié)果是()。
inta[5]={2,4,6,8,10},*P,**k;
p=a;k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
A.44B.22C.24D.46
64.
65.
66.有如下說明
inta[10]={1,2,3,4,5,6,7},*p=a;
則數(shù)值為5的表達式是
A.*p+4B.*(p+4)C.*p+=4D.p+4
67.有以下程序
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5]={0};
a=0;b[0]=3;
func(&a,b);
rintf("%d\n",b[0]);
}
程序的運行結(jié)果是
A.6B.7
C.8D.9
68.執(zhí)行下列程序時輸入:123<空格>456<空格>789<回車>,輸出結(jié)果是
main()
{chars[100];intc,i;
scanf("%c",&c);scanf("%d",&i);scanf("%s",s);
prinnf("%c,%d,%s\n",c,i,s);}
A.123,456,789B.1,456,789
C.1,23,456,789D.1,23,456
69.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
70.以下程序的輸出結(jié)果是()。
main
{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);A.A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
71.有以下程序執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
72.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
73.(62)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()
A.ABCED
B.DBCEA
C.CDABE
D.DCBEA
74.下列敘述中正確的是()。
A.在switch語句中,不-定使用break語句
B.在switch語句中必須使用default
C.break語句必須與switch語句中的case配對使用
D.break語句只能用于switch語句
75.以下選項中不屬于字符常量的是()。
A.
B.
C.
D.
76.下列對于線性鏈表的描述中正確的是()。
A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的
B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面
C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面
D.存儲空間必須連續(xù),且各元素的存儲順序是任意的
77.
78.
79.(57)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。
A.便于用戶、開發(fā)人員進行理解和交流
B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)
C.作為確認測試和驗收的依據(jù)
D.便于開發(fā)人員進行需求分析
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算并輸出下列級數(shù)的前N項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值為57,則函數(shù)值為59.593612。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將s所指字符串中除了下標為奇數(shù)同時ASCII值也為奇數(shù)的字符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個新字符串存放在t所指的數(shù)組中。例如,若s所指字符串的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII值為奇數(shù),但所在元素的下標為偶數(shù),因此需要刪除;而字符1的ASCII值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應(yīng)當刪除,其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100]; printf(“\nPleaseenterstrings:”); scanf(“%s”,s); fun(s,t); printf(“\nTheresultis:%s\n”,t);}
參考答案
1.A
2.A本題考查的是數(shù)組和函數(shù)。sum()函數(shù)接收一個int型數(shù)組作參數(shù),也可以把它看作是一個int型指針,語句a[0]=a[*1)+a(比的意思就是將參數(shù)指針指向內(nèi)容的前一個元素和后一個元素的值相加放到指針所指的位置.因此,主函數(shù)中調(diào)用sum(&a[2]);的意思就是讓a[2]=a[1]+a[3];,所以最后輸出的結(jié)果是6。應(yīng)該選擇A。
3.A算術(shù)運算符的優(yōu)先級高于關(guān)系運算符的優(yōu)先級。所以當x為大于1的奇數(shù)時,A選項的值為假,即0。B選項的值為不定值,但絕對不是0。C選項的值為真,即1。0選項的值為真,即1。故本題答案為A選項。
4.D
5.C
6.B
7.B
8.C
9.D解析:結(jié)構(gòu)體structureworkers中的成員s是結(jié)構(gòu)體類型,給w中成員year賦值的語句是w.s.year=1980,故選D。
10.D解析:算法的復雜度主要包括算法的時間復雜度和算法的空間復雜度。所謂算法的時間復雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
11.C
12.DD)【解析】線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。
13.A題干中使用malloc函數(shù)分配了80個字節(jié)的內(nèi)存單元,void指針p指向該內(nèi)存單元。在C語言中,void*不能直接使用,必須利用強制類型轉(zhuǎn)換將其轉(zhuǎn)成所需的類型才能使用,選項A錯誤。int類型的元素占4個字節(jié),所以可以將p指向的內(nèi)存強制類型轉(zhuǎn)換成具有20個int類型的一維數(shù)組來使用,同理,也可以強制類型轉(zhuǎn)換成10個double類型的一維數(shù)組來使用,或強制類型轉(zhuǎn)換成80個char類型的一維數(shù)組來使用,選項B、C、D正確。故本題答案為A選項。
14.BC語言中,char型變量的值是其對應(yīng)字符的ASCII值,可以做比較運算。由于小寫字母的ASCII值按字母表的順序連續(xù)遞增,因此判斷char型變量c是不是小寫字母時,判斷c的ASCII值是否在’a’和’z’之間,即(c>=’a’)&&(c<=’z’)。本題答案為B選項。
15.A邏輯或“||”要求兩邊的運算對象有一個非零值,結(jié)果就為真。變量a的值不確定,但是若a為1,則左邊運算對象的值為1;若a不為1,則右邊運算對象的值為1,所以總能保證一邊為非零值。故本題答案為A選項。
16.D
17.C
18.C
19.D比較兩個字符串大小用函數(shù)strcomp(S,t),空字符串有結(jié)束符,所以也要占用字節(jié),兩個雙引號表示的是空字符串。
20.B
21.br[i]br[i]解析:函數(shù)fun的功能是求出二維數(shù)組每行元素中的最大值。對于3行4列的二維數(shù)組將有3個最大值存放到數(shù)組br[]中。x存放的是每行的最大值,當求出每行的最大值x后,應(yīng)該將x賦值給br[]。因此此處填空應(yīng)該是br[i]。
22.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0;若t<s,則函數(shù)值小于0。strcpy(t,s)函數(shù)的功能是把字符數(shù)組,所指字符串的內(nèi)容復制到字符數(shù)組t所指的存儲空間中。
本題中,t[10]='CDEF'.第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán),s='QTHRG”,if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復制到字符數(shù)組t所指的存儲空間中,然后輸出字符數(shù)組t。
23.邊值分析法邊值分析法解析:本題考查了黑箱測試的方法。黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法。
24.邏輯關(guān)系邏輯關(guān)系
25.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。
26.p[5]或*(p+5)p[5]或*(p+5)解析:98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種寫法:p[5]、*(p+5)。
27.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)
28.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。
29.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符串,則不能使用scanf()函數(shù),所以本題中輸入空格就返回了'\\0',s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。
30.77解析:本題綜合考查帶參數(shù)的宏以及三目運算符的計算方法。三目運算符的一般形式是:<表達式1>?<表達式2>:<表達式3>?!?:”運算符的含義是:先求表達式1的值,如果為真,則求表達式2的值,并把它作為整個表達式的值;如果表達式1的值為假,則求表達式3的值,并把它作為整個表達式的值。注意,在本題中宏替換時可采用逐步求解,最終為7>6?7:6*10,即t=7>6?7:60,其值為t=7。
31.用戶用戶解析:黑盒測試又稱為功能測試,黑盒測試是把程序看作一個黑盒子,完全不考慮程序內(nèi)部的結(jié)構(gòu)和處理過程。測試者只考慮該程序輸入和輸出的關(guān)系,或只考慮程序的功能。黑盒測試是一種從用戶觀點出發(fā)的測試。
32.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達式相當于2.0的3.0次方,結(jié)果為8.000000。
33.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設(shè)計測試實例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設(shè)計測試實例時,測試人員將程序看成一個“黑盒”,即不關(guān)心程序內(nèi)部是如何實現(xiàn)的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設(shè)計的測試用例完全是根據(jù)程序的功能說明來設(shè)計的。
34.*p1*p3*p1*p2。*p1,*p3*p1,*p2。解析:本題考查的知識點有3個,①指針變量作為形參,②函數(shù)的嵌套調(diào)用,③排序的基本方法。
35.k<=nk++k<=n\r\nk++解析:本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句“k++;”。
36.模塊獨立原理模塊獨立原理
37.2
38.B66B66解析:printf函數(shù)的功能是按照指定的格式,在標準輸出設(shè)備上輸出數(shù)據(jù),它有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù)。本題中,printf('%c%d\\n',ch,ch)表示以字符格式和十進制整數(shù)格式輸出ch,B的ACSII碼值為66,即在計算機中B的十進制整數(shù)格式是66。所以,輸出為B66。
39.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函數(shù)main()中定義了一個變量i,并賦初值4,調(diào)用fun()函數(shù)將i的初值傳遞給形參m,進行fun()函數(shù)后的運算,輸出結(jié)果為m=4,k=4。將k值輸出后自行增加1,k=5,此時全局變量k的值變?yōu)?。主函數(shù)中調(diào)用fun()函數(shù)后,i再自行增加1,i=5,所以主函數(shù)輸出的結(jié)果為“i=5k=5”。
40.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。
41.B解析:以“wt”方式寫入的是字符文件,轉(zhuǎn)義字符“\\n”被看做兩個字符來處理。而“wb”方式寫入的是二進制文件,轉(zhuǎn)義字符“\\n”是一個字符。
42.A
43.C解析:本題考查數(shù)組地址的表示。選項C)中,數(shù)組名所表示的數(shù)組地址不能被重新賦值。
44.Cc)【解析】數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計算機無關(guān)。
45.B解析:a=b=c+2實際上相當于a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。注意:選項A)中包含一個不合法的運算符“:=”;選項C)應(yīng)改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C++語言規(guī)定賦值號的左邊只能是單個變量,不能是表達式或常量等。注意:C++語言賦值語句的運用,
46.D解析:strcat(p1,P2)將字符串a(chǎn)bcABC放到了*pl所指向的存儲單元中;strcpy在本題將abcABC復制到str+2所指向的存儲單元中,即覆蓋原str數(shù)組中的字符z及其后的所有字符,故str的值為“xyabcABC”。
47.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算:(x)>(y)?(x):(y)是x>y時輸出x,否則輸出y,調(diào)用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。
48.D解析:本題考查結(jié)構(gòu)體變量的基本概念。引用結(jié)構(gòu)體成員的方式為:
結(jié)構(gòu)體變量名.成員名
“.”是“成員運算符”(分量運算符),如果成員本身又是一個結(jié)構(gòu)體類型,則要用若干個成員運算符,一級一級地找到最低一級的成員。只能對最低級的成員進行賦值或存取以及運算,所以選項D)正確。
49.A解析:由于字符“5”和“3”的ASCII碼相差為2,所以ch1經(jīng)過運算后的值應(yīng)為65+2=67;同理,ch2經(jīng)過運算后的值應(yīng)為65+3=68,即是字符“D”。
50.B本題考查邏輯與運算符“&&”的使用。對于邏輯與運算符&&來說,對象的結(jié)合方式為從左往右,只有&&左邊的值為真,才繼續(xù)右邊的運算。題目中&&左邊的表達式為m=a>b,“>”運算符優(yōu)先級高于“=”,故先判斷a>b,因為a=1,b=2,所以a>b為假,于是m=0。“&&”左邊的值為假,所以不進行右邊的運算。n的值沒有發(fā)生改變,n=2。
51.A解析:字符型變量用來存放字符常量,且只能存放一個字符。賦值反斜杠線“\\”,必須用轉(zhuǎn)義字符實現(xiàn),即ch='\\\\',所以選項A)錯誤;字符型變量可以賦0~255之間的ASCII碼值,整型數(shù)據(jù)和字符型數(shù)據(jù)有時可以通用,所以選項B)正確;可以將NULL賦給一個字符型變量,NULL代表一個空字符,相當于0,選項C)正確;'\\xaa'表示的是1~2位16進制數(shù)所代表的字符,所以選項D)正確。
52.B解析:在對程序進行測試時會發(fā)現(xiàn)錯誤,這就要進行程序調(diào)試(排錯)。程序調(diào)試活動由三部分組成:一是錯誤定位,根據(jù)錯誤的外部表現(xiàn)形式,確定程序中出錯的位置,找出錯誤的內(nèi)在原因;二是對程序進行修改,排除這個錯誤;三是進行回歸測試,防止引進新的錯誤。所以程序調(diào)試的目的就是診斷和改正程序中的錯誤。軟件調(diào)試不能改善軟件的性能,也不能挖掘軟件的潛能。
53.A解析:濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應(yīng)減少或取消;程序的長短要依照實際需要而定,并不是越短越好。
54.B解析:選項A中“&(*p).a(chǎn)ge”代表的是etd[0].age的地址,是正確的,選項C也是正確的,選項D先用指針變量引用結(jié)構(gòu)型的成員sex,然后取它的地址,也是正確的,選項B中的“std.name”是錯誤的引用,因為std是數(shù)組名,代表的是數(shù)組的首地址,地址沒有成員“name”。
55.B
56.C解析:循環(huán)輔助控制語句有continue;和break;,前者跳過本次循環(huán),進行下一次循環(huán),后者跳出整個循環(huán)語句。
57.A解析:fun()函數(shù)中聲明了兩個字符串指針作為形參,在其函數(shù)體中用了一個while循環(huán),首先while括號內(nèi)表達式*p2=*p1是將p1所指的內(nèi)容賦值到p2所指的存儲空間中,然后在判斷是否為'\\0',表達式的值為真時,執(zhí)行循環(huán)體,指針p1和p2分別下移一位,當p1指向字符'\\n'時,表達式的值為假,循環(huán)結(jié)束,故此函數(shù)的功能是將p1所指字符串復制到p2所指內(nèi)存空間中。所以,4個選項中選項A符合題意。
58.B解析:本題考查ifelse語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a=0,則!a成立,執(zhí)行下列的語句,x--,得x=11:第二個if語句,判斷條件,發(fā)現(xiàn)c=o,則條件不成立,執(zhí)行下列的else語句,得x=4。
59.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時,上述規(guī)則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結(jié)果為“ATBZXCYP”。注意:對于本題,若使用后序遍歷和中序遍歷的結(jié)果分別為"ZBTYCPXA"和"TZBACYXP"。
60.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。
61.B
62.A本愿考查位運算符以及相關(guān)運算,‘為按位或,&為按位與,部么a"b為3,再與c按位與仍然為3,所以答案為A選項。
63.C
64.D
65.A
66.B本題考查C語言的數(shù)組元素的引用方法。我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達式*(p+0)即*p來引用;對于數(shù)組元素a[1],可以用表達式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”*(p+1)就代表存儲單元a[1],注意,一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達式*(p+2)來引用,……,對于數(shù)組元素a[9],可以用表達式*(p+9)來引用。因此,當指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。
67.A本題考查數(shù)組作為函數(shù)形參與實參的使用。題目給出的程序分為兩個部分,一個是函數(shù)func,該函數(shù)有兩個形參,一個為整型的指針a,一個為整型的數(shù)組b[],這里的b只是一個形參數(shù)組名,與main函數(shù)中的數(shù)組b沒有關(guān)系。為了區(qū)別,將func函數(shù)中的數(shù)組b用b’表示。func函數(shù)實現(xiàn)的功能是將指針a所指向的整型值*a與6相加,并將結(jié)果放入數(shù)組b’[0]處。main函數(shù)首先對整型數(shù)據(jù)a和數(shù)組b進行初始化,初始化后a的值為0,數(shù)組b中第一個值b[0]=3。初始化結(jié)束后,對函數(shù)func進行調(diào)用。應(yīng)當注意,調(diào)用函數(shù)func時,是將數(shù)組b的數(shù)組名作為函數(shù)的實參。這樣調(diào)用的結(jié)果就是沒有把數(shù)組元素的值傳遞給形參數(shù)組,而是把實參數(shù)組的起始地址傳遞給形參,b和b’共占有同一段內(nèi)存,這樣形參數(shù)組中的值發(fā)生變化也將導致實參數(shù)組中的值發(fā)生變化。題目中雖然main函數(shù)初始化使得b[0]=3,但是在調(diào)用func函數(shù)的過程中,作為該函數(shù)形參的數(shù)組b’有b’[0]=*a+6=6,故main函數(shù)中的實參數(shù)組b[0]值也發(fā)生改變,變?yōu)?。
68.D本題考查格式輸入。程序中定義了一個字符數(shù)組s,兩個整型變量i和c。隨后調(diào)用了三次格式輸入函數(shù)scanf。第一個scanf函數(shù)只能輸入一個字符型的數(shù)據(jù),第二個函數(shù)是輸入一個整型數(shù)據(jù),第三個函數(shù)是輸入一個字符串。執(zhí)行代碼時,輸入123<空格>456<空格>789<回車>,將1作為一個字符用第一個scanf函數(shù)輸入,23作為一個整型數(shù)據(jù)由第二個函數(shù)輸入,而字符串的輸入則是以非空白字符開始到第一個空白字符結(jié)束,將456作為字符串由第三個scanf函數(shù)輸入到數(shù)組中,該函數(shù)在第二個空格處結(jié)束。
69.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。
70.D當k=1時,循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當k=2時,循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當k=3時,循環(huán)不成立,退出。
71.A判斷循環(huán)條件一k,k值為4,條件為真,執(zhí)行輸出語句,其中k一=3執(zhí)行后,k為1,即輸出為1,然后判斷循環(huán)條件一k,值為0,為假,循環(huán)結(jié)束。答案選擇A)。
72.B指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向uE63,存放的是b[6]的地址。
73.D
74.Adefault語句在swtch語句中可以省,所以8錯誤;switch語句中并非每個case后都需要使用break語句,所以c錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D錯誤。
75.A在c語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項B)、c)和D)為正確的字符常量,而選項A)是用雙引號括起來的字符,表示一個字符串常量。
76.A解析:在鏈式存儲結(jié)構(gòu)中,存儲數(shù)據(jù)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,數(shù)據(jù)元素之間的邏輯關(guān)系,是由指針域來確定的。由此可見,選項A的描述正確。因此,本題的正確答案為A。
77.C
78.D
79.D
80.D
81.(1)錯誤:doubleproc(doubleq)
正確:doubleproc(intq)
(2)錯誤:sum=sum+(n+1)/n;
正確:sum=sum+(double)(n+1)/n;
(3)錯誤:returnsum;
正確:returnt;
【解析】由主函數(shù)中函數(shù)調(diào)用的實參可知,函數(shù)proc()的形參為int型,因此,“doubleproc(doubleq)”應(yīng)改為“doubleproc(intq)”;變量sum為double型變量,因此表達式(n+1)/n要進行強制類型轉(zhuǎn)換,因此,“sum=sum+(n+1)/n;”應(yīng)改為“sum=sum+(double)(n+1)/n;”,由函數(shù)proc()可知,變量sum中存放的是SN+1項,而變量t表示SN項,因此,“returnsum;”應(yīng)改為“returnt;”。
82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s); for(i=0;i<=""p=""> if((i%2)&&(s[i]%2)) { t[j++]=s[i]; /*將下標為奇數(shù)同時ASCII值為奇數(shù)的字符放入數(shù)組t中*/ } t[j]=‘\0’; /*最后加上字符串結(jié)束標志*/}本題要求保留下標為奇數(shù)同時ASCII值也為奇數(shù)的字符,其余的所有字符都刪除。將s字符串中,滿足條件的字符存放到字符串t中。if的條件表達式為:if(i%2!=0&&s[i]%2!=0)。2021-2022年江西省鷹潭市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.用鄰接矩陣A表示有向圖G的存儲結(jié)構(gòu),則有向圖G中頂點i的出度為()。
A.第i行非0元素的個數(shù)之和B.第i列非0元素的個數(shù)之和C.第i行0元素的個數(shù)之和D.第i列0元素的個數(shù)之和
2.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序運行后的輸出結(jié)果是A.6B.7C.5D.8
3.下列選項中,當X為大于1的奇數(shù)時,值為0的表達式是()。
A.x%2==0B.x/2C.x%2!=0D.x%2==1
4.程序運行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
5.設(shè)s1="Good",s2="",s3="Bye",則s1、s2和s3連接后的結(jié)果是()。
A.GoodB.GoodByeC.GoodByeD.Bye
6.數(shù)組A中,每個元素的長度為4個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放在存儲器內(nèi),該數(shù)組按行存放時,元素A[8][5]的起始地址為()。
A.SA+292B.SA+296C.SA+300D.304
7.以下程序是用來計算兩個非負數(shù)之間的最大公約數(shù):我們假設(shè)x,y中最大的那個數(shù)的長度為n,基本運算時間復雜度為O(1),那么該程序的時間復雜度為()A.O(1)B.O(logn)C.O(n)D.O(n^2)
8.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈式存儲結(jié)構(gòu)
9.有以下定義和語句
StructWorkers
{intnum;charname[20];charc;
struct
{intday;intmonth;intyear;}s;
};
StructWorkersW,*pe;
PW=&W;
能給W中yeaR成員賦1980的語句是A.*pW.yeaR=1980;
B.W.yeaR=1980;
C.pW->yeaR=1980;
D.W.s.yeaR=1980;
10.算法的空間復雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法所需要的存儲空間
11.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。
A.1/2B.1C.2D.4
12.以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。
A.可隨機訪問B.需要連續(xù)的存儲空間C.不便于插入和刪除D.邏輯相鄰的數(shù)據(jù)物理位置上不相鄰
13.若有語句“void*P=malloc(80);”,則以下敘述錯誤的是()。
A.可以通過指針P直接訪問用malloc開辟的這塊內(nèi)存
B.p所指內(nèi)存可以通過強制類型轉(zhuǎn)換當作具有20個int型元素的一維數(shù)組來使用
C.p所指內(nèi)存可以通過強制類型轉(zhuǎn)換當作具有10個double型元素的一維數(shù)組來使用
D.P所指內(nèi)存可以通過強制類型轉(zhuǎn)換當作具有80個char型元素的一維數(shù)組來使用
14.若要判斷char型變量c中存放的是否為小寫字母,以下正確的表達式是()。A.'a'<=c<='z'
B.(c>='a')&&(c<='z')
C.(c>='a')‖(c<='z')
D.('a'<=c)AND('z'>=c)
15.若a是數(shù)值類型,則邏輯表達式“(a==1)||(a!=1)”的值是()。
A.1B.0C.2D.不知道a的值,不能確定
16.如果最常用的操作是取第i個結(jié)點及其前驅(qū),最節(jié)省時間的存儲方式是()。
A.單鏈表B.雙向鏈表C.單循環(huán)鏈表D.順序表
17.當n=5時,函數(shù)輸出為()A.5B.11C.29D.10
18.設(shè)x、y、z、t均為int型變量,則執(zhí)行以下語句后,t的值是()x=y(tǒng)=z=l;t=++x||++y&&++z;
A.不定值B.2C.1D.0
19.下列敘述中正確的是()。
A.可以用關(guān)系運算符比較字符串的大小
B.空字符串不占用內(nèi)存,其內(nèi)存空間大小是0
C.兩個連續(xù)的單引號是合法的字符常量
D.兩個連續(xù)的雙引號是合法的字符串常量
20.
二、2.填空題(20題)21.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?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*bar)
{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.設(shè)有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
charsi10],ti10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)strcpy(t,s);
}
printf("%s\n",t);
}
程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。
23.常用的黑箱測試有等價分類法、【】、因果圖法和錯誤推測法4種。
24.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
25.下列程序輸出的結(jié)果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
26.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
27.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
28.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。
29.下列程序運行后的輸出的結(jié)果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
運行程序,輸入HOWAREYOU。
30.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineMAX(x,y)(x),(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
31.黑盒測試是從【】觀點的測試。
32.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
33.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。
34.fun1函數(shù)的功能是將3個整數(shù)按由大到小的順序調(diào)整后依次放入a、b、c3個變量中,a中放最大數(shù),fun2函數(shù)的功能是交換兩個變量中的值。補足所缺語句。
fun2(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
fun1(int*p1,int*p2,int*p3)
{if(*p3>*p2)fun2(*P2,*p3);
if(*p1<*p3)fun2(______);
if(*p1<*p2)fun2(______);
}
main()
{inta,b,c;
scanf("%d%d%d",&a,&b,&c);
fun1(&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
}
35.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁?,使下面程序段的功能與之完全相同
s=1.0;k=1;
while(【】){s=s+1.0/(k*(k+1));【】;}
printf("s=%f\n\n",s);
36.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。
37.下面程序的運行結(jié)果是______。
#defineDOUBLE(x,y)x/y
main()
{intx=4,y=2,t;
t=DOUBLE(x+y,x-y);
printf("%d",t);
}
38.已知字符A的ACSII碼值為65,以下語句的輸出結(jié)果是______。
charch='B';
printf("%c%d\n",ch,ch);
39.以下程序的運行結(jié)果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
40.下列程序段的輸出結(jié)果是【】。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':
case'A':
case'b':
case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':case'D':printf("warn");
}
三、1.選擇題(20題)41.對于下述程序,在方式串分別采用“wt”和“wb”運行時,兩次生成的文件TEST的長度分別是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fpute('\n',fp);fputc('C',fp);fclose(fp);}
A.7字節(jié)、7字節(jié)B.7字節(jié)、5字節(jié)C.5字節(jié)、7字節(jié)D.5字節(jié)、5字節(jié)
42.八位二進制補碼01000100用十進制數(shù)表示為()
A.68B.-68C.-36D.60
43.若已定義:inta[9],*p=a;并在以后的語句中未改變p的值,下列選項中不能表示a[1]地址的表達式是()。
A.p+1B.a+1C.a++D.#NAME?
44.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()
A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.線性結(jié)構(gòu)
45.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
46.以下程序#include<stdio.h>#include<string.h>main(){char*pl="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}的輸出是________。
A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC
47.下列程序的運行結(jié)果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}
A.500B.5C.4D.400
48.已知學生記錄描述為:structstudent{intno;charname[20],sex;struct{intyear,month,day;}birth;};structstudents;設(shè)變量s中的“生日”是“1984年11月12日”,對“birth”正確賦值的程序段是()。
A.year=1984;month=11;day=12;
B.s.year=1984;s.month=11;s.day=12;
C.birth.year=1984;birth.month=11;birth.day=12;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;
49.已知字母A的ASCII碼為十進制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。
A.67,DB.B,CC.C,DD.不確定的值
50.設(shè)有:
inta=1,b=2,c=3,d=4,m=2,n=2;
執(zhí)行(m=a>b)&&(n=c>d)后,n的值是
A.1B.2C.3D.4
51.已定義ch為字符型變量,以下賦值語句中錯誤的是
A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';
52.軟件調(diào)試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
53.在設(shè)計程序時,應(yīng)采納的原則之—是______。
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或者取消注解行D.程序越短越好
54.設(shè)有如下定義structss{charname[10];intage;charsex;}std[3],*p=std;下面各輸入語句中錯誤的是
A.scanf("%d",&(*p).age);
B.scant("%s",&);
C.scanf("%c",&std[0].sex);
D.scanf("%c",&(p->sex));
55.假定所有變量均已正確說明,以下程序段運行后,x的值是______。a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;
A.34B.4C.35D.3
56.在C語言的循環(huán)語句for、while、do-while中,用于結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)的語句是______。
A.switchB.breakC.continueD.goto
57.已定義以下函數(shù):fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函數(shù)的功能是()。
A.將p1所指字符串復制到p2所指內(nèi)存空間
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個指針所指字符串進行比較
D.檢查p1和p2兩個指針所指字符串中是否有'\0',
58.假定所有變量均已正確說明,下列程序段運行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
59.設(shè)有下列二叉樹:[*]對此二叉樹前序遍歷的結(jié)果為A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
60.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
四、選擇題(20題)61.(42)希爾排序法屬于哪一種類型的排序法()
A.交換類排序法
B.插入類排序法
C.選擇類排序法
D.建堆排序法
62.有以下程序:
程序運行后的輸出結(jié)果是()。
A.3B.1C.2D.0
63.下列程序的輸出結(jié)果是()。
inta[5]={2,4,6,8,10},*P,**k;
p=a;k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
A.44B.22C.24D.46
64.
65.
66.有如下說明
inta[10]={1,2,3,4,5,6,7},*p=a;
則數(shù)值為5的表達式是
A.*p+4B.*(p+4)C.*p+=4D.p+4
67.有以下程序
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5]={0};
a=0;b[0]=3;
func(&a,b);
rintf("%d\n",b[0]);
}
程序的運行結(jié)果是
A.6B.7
C.8D.9
68.執(zhí)行下列程序時輸入:123<空格>456<空格>789<回車>,輸出結(jié)果是
main()
{chars[100];intc,i;
scanf("%c",&c);scanf("%d",&i);scanf("%s",s);
prinnf("%c,%d,%s\n",c,i,s);}
A.123,456,789B.1,456,789
C.1,23,456,789D.1,23,456
69.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
70.以下程序的輸出結(jié)果是()。
main
{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);A.A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
71.有以下程序執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
72.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
73.(62)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()
A.ABCED
B.DBCEA
C.CDABE
D.DCBEA
74.下列敘述中正確的是()。
A.在switch語句中,不-定使用break語句
B.在switch語句中必須使用default
C.break語句必須與switch語句中的case配對使用
D.break語句只能用于switch語句
75.以下選項中不屬于字符常量的是()。
A.
B.
C.
D.
76.下列對于線性鏈表的描述中正確的是()。
A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的
B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面
C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面
D.存儲空間必須連續(xù),且各元素的存儲順序是任意的
77.
78.
79.(57)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。
A.便于用戶、開發(fā)人員進行理解和交流
B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)
C.作為確認測試和驗收的依據(jù)
D.便于開發(fā)人員進行需求分析
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算并輸出下列級數(shù)的前N項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值為57,則函數(shù)值為59.593612。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將s所指字符串中除了下標為奇數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精密輸送帶銷售協(xié)議
- 隧道支護專項作業(yè)勞務(wù)分包協(xié)議
- 軟件外包項目技術(shù)協(xié)議解析
- 大型機械設(shè)備交易協(xié)議
- 獨家代理商合同范本
- 裝卸合作承包協(xié)議
- 小區(qū)房產(chǎn)買賣合同問答
- 育苗基地合作方案
- 典當行貸款協(xié)議范本
- 弱電智能化勞務(wù)分包條件
- 2020年污水處理廠設(shè)備操作維護必備
- LSS-250B 純水冷卻器說明書
- 中藥分類大全
- 防止返貧監(jiān)測工作開展情況總結(jié)范文
- 精文減會經(jīng)驗交流材料
- 淺談離子交換樹脂在精制糖行業(yè)中的應(yīng)用
- 設(shè)備研發(fā)項目進度表
- 管道定額價目表
- 新時期如何做好檔案管理課件
- 復興號動車組空調(diào)系統(tǒng)設(shè)計優(yōu)化及應(yīng)用
- 礦山壓力與巖層控制課程設(shè)計.doc
評論
0/150
提交評論