一、選擇題
(1)循環(huán)鏈表的主要優(yōu)點(diǎn)是
A)不再需要頭指針了
B)從表中任一結(jié)點(diǎn)出發(fā)都能訪問(wèn)到整個(gè)鏈表
C)在進(jìn)行插入、刪除運(yùn)算時(shí),能更好的保證鏈表不斷開(kāi)
D)已知某個(gè)結(jié)點(diǎn)的位置后,能夠容易的找到它的直接前件
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A)ABCED B)DCBEA
C)DBCEA D)CDABE
(3)n個(gè)頂點(diǎn)的強(qiáng)連通圖的邊數(shù)至少有
A)n-1 B)n(n-1)
C)n D)n+1
(4)在結(jié)構(gòu)化程序設(shè)計(jì)思想提出之前,在程序設(shè)計(jì)中曾強(qiáng)調(diào)程序的效率,現(xiàn)在,與程序的效率相比,人們更重視程序的
A)安全性 B)一致性
C)可理解性 D)合理性
(5)模塊獨(dú)立性是軟件模塊化所提出的要求,衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)則是模塊的
A)抽象和信息隱蔽 B)局部化和封裝化
C)內(nèi)聚性和耦合性 D)激活機(jī)制和控制方法
(6)軟件開(kāi)發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成
A)定義、開(kāi)發(fā)、運(yùn)行維護(hù)
B)設(shè)計(jì)階段、編程階段、測(cè)試階段
C)總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試
D)需求分析、功能定義、系統(tǒng)設(shè)計(jì)
(7)在軟件工程中,白箱測(cè)試法可用于測(cè)試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是
A)路徑的集合 B)循環(huán)的集合
C)目標(biāo)的集合 D)地址的集合
(8)在數(shù)據(jù)管理技術(shù)發(fā)展過(guò)程中,文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫(kù)系統(tǒng)具有
A)特定的數(shù)據(jù)模型 B)數(shù)據(jù)無(wú)冗余
C)數(shù)據(jù)可共享 D)專(zhuān)門(mén)的數(shù)據(jù)管理軟件
(9)數(shù)據(jù)庫(kù)設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是
A)概念設(shè)計(jì)和邏輯設(shè)計(jì)
B)模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)
C)內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)
D)結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)
(10)實(shí)體是信息世界中廣泛使用的一個(gè)術(shù)語(yǔ),它用于表示
A)有生命的事物 B)無(wú)生命的事物
C)實(shí)際存在的事物 D)一切事物
(11)以下說(shuō)法錯(cuò)誤的是
A)一個(gè)算法應(yīng)包含有限個(gè)步驟
B)在計(jì)算機(jī)上實(shí)現(xiàn)的算法是用來(lái)處理數(shù)據(jù)對(duì)象的
C)算法中指定的操作,不能通過(guò)已經(jīng)實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次后實(shí)現(xiàn)
D)算法的目的是為了求解
(12)下列選項(xiàng)中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是
A)順序結(jié)構(gòu)
B)跳轉(zhuǎn)分支結(jié)構(gòu)
C)選擇結(jié)構(gòu)
D)循環(huán)結(jié)構(gòu)
(13)已知int k,m=1;執(zhí)行語(yǔ)句k=-m++;后,k的值是
A)-1
B)0
C)1
D)2
(14)已知int m;float k;正確的語(yǔ)句是
A)(int k)%m
B)int(k)%m
C)int(k%m)
D)(int)k%m
(15)下面各選項(xiàng)中,均是C語(yǔ)言標(biāo)識(shí)符的選項(xiàng)組是
A)33 we auto
B)_23 me _3ew
C)_43 3e_ else
D)ER -DF 32
(16)已知int k;float m=-3;執(zhí)行語(yǔ)句k=m%2;后,變量k的值是
A)-1
B)0
C)1
D)語(yǔ)句有錯(cuò)誤
(17)不能進(jìn)行++和--運(yùn)算的數(shù)據(jù)類(lèi)型為
A)指針
B)整型
C)長(zhǎng)整型
D)常量
(18)已知int k=10,m=3,n;則下列語(yǔ)句輸出結(jié)果是
printf("%d\n",n=(k%m,k/m));
A)2
B)3
C)4
D)5
(19)已知int a;float b;所用的scanf調(diào)用語(yǔ)句格式為:
scanf("a//%d,b=%f",&a,&b);
為了將數(shù)據(jù)3和25.08分別賦給x和y,正確的輸入應(yīng)當(dāng)是
A)3,25.08
B)a=3,b=25.08
C)a//3,b=25.08
D)a//3b=25.08
(20)當(dāng)k的值不為0時(shí),在下列選項(xiàng)中能夠?qū)的值賦給變量m,n的是
A)m=k=n
B)(m=k)&&(n=k)
C)(m=k)||(n=k)
D)(k=m)&&(n=k)
(21)下列程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{ int x=-9,y=5,z=8;
if(x if(y<0)z=0;
else z+=1;
printf("%d\n",z);}
A)6
B)7
C)8
D)9
(22)現(xiàn)有定義int k=1;則執(zhí)行語(yǔ)句while(++k<4);后,k的值為
A)4
B)5
C)6
D)8
(23)以下程序的運(yùn)行結(jié)果為
#include "stdio.h"
main()
{int m,n;
for(m=0,n=10;m printf("%d,%d\n",m,n);}
A)6,7
B)7,6
C)9,7
D)7,9
(24)閱讀下列程序,程序的輸出結(jié)果是
#include "stdio.h"
main()
{
int m,n;
float k;
for(m=6;m>2;m--)
{ k=0;
for(n=m;n>1;n--)
k=k+m*n;
}
printf("%f\n",k);
}
A)5.000000
B)15.000000
C)25.000000
D)35.000000
(25)下列程序的輸出結(jié)果是
#include "stdio.h"
main()
{int i,a=0,b=0;
for(i=1;i<10;i++)
{if(i%2==0)
{a++;
continue;}
b++;}
printf("a=%d,b=%d",a,b);}
A)a=4,b=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
(26)下列選項(xiàng)可以正確表示字符型常量的是
A)′\r′
B)"a"
C)"\897"
D)296
(27)下面對(duì)C語(yǔ)言的描述中,正確的是
A)函數(shù)一定有返回值,否則無(wú)法使用函數(shù)
B)C語(yǔ)言函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C)在C語(yǔ)言中,調(diào)用函數(shù)時(shí),只能將實(shí)參的值傳遞給形參
D)C語(yǔ)言程序中有調(diào)用關(guān)系的所有函數(shù)都必須放在同一源程序文件中
(28)閱讀下面程序段,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int m=4,n=2,k;
k=fun(m,n);
printf("%d\n",k);}
fun(int m,int n)
{return(m*m*m-n*n*n);}
A)64
B)8
C)56
D)0
(29)閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是
#include "stdio.h"
main()
{ char fun(char,int);
char a=′A′;
int b=13;
a=fun(a,b);
putchar(a);}
char fun(char a,int b)
{char k;
k=a+b;
return k;}
A)A
B)M
C)N
D)L
(30)編寫(xiě)求兩個(gè)雙精度數(shù)之和的函數(shù),選項(xiàng)中正確的是
A)double add(double a,double b)
{double s;
s=a+b;
return s; }
B)double add(double a,b)
{double s;
s=a+b;
return (s);}
C)double add(double a double b)
{double s;
s=a+b;
returns;}
D)double add(a,b)
{double a,b,s;
s=a+b;
return (s);}
(31)已知int a;則下面的說(shuō)明指針變量p的語(yǔ)句正確的是
A)int p=&a
B)int *p=a
C)int *p=&a
D)int *p=*a
(32)已知char **t;則變量t是
A)指向char變量的指針
B)指向指針的char變量
C)指向指針的指針
D)以上說(shuō)法都不對(duì)
(33)閱讀下面程序,執(zhí)行后的結(jié)果為
#include "stdio.h"
void fun(int *a,int *b)
{ int k;
k=5;
*a=k;
*b=*a+k;}
main()
{ int *a,*b,x=10,y=15;
a=&x;
b=&y;
fun(a,b);
printf("%d,%d\n",*a,*b);}
A)10,15
B)5,15
C)5,10
D)15,10
(34)閱讀下面程序,在程序執(zhí)行后的結(jié)果為
#include "stdio.h"
int *fun(int *a,int *b)
{ int m;
m=*a;
m+=*b-3;
return(&m);}
main()
{int x=21,y=35,*a=&x,*b=&y;
int *k;
k=fun(a,b);
printf("%d\n",*k);}
A)53
B)21
C)35
D)14
(35)已知int a[10];則對(duì)a數(shù)組元素的正確引用是
A)a[10]
B)a
C)a+5
D)a[10-10]
(36)在C語(yǔ)言中,一維數(shù)組的定義方法為
類(lèi)型說(shuō)明符 數(shù)組名
A)[常量表達(dá)式]
B)[整型常量]
C)[整型變量]
D)[整型常量]或[整型表達(dá)式]
(37)閱讀下列程序,則運(yùn)行結(jié)果為
#include "stdio.h"
fun()
{ static int x=5;
x++;
return x;}
main()
{ int i,x;
for(i=0;i<3;i++)
x=fun();
printf("%d\n",x);}
A)5
B)6
C)7
D)8
(38)下列程序的輸出結(jié)果是
#include "stdio.h"
#defineM(x,y)x%y
main()
{ int a,m=12,n=100;
a=M(n,m);
printf("%d\n",a--);}
A)2
B)3
C)4
D)5
(39)閱讀下面程序,則程序段的功能是
#include "stdio.h"
main()
{ int c[]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0 && t>c[j])
{c[j+1]=c[j];j--;}
c[j+1]=t;}
for(i=0;i<7;i++)
printf("%d ",c[i]);
putchar(′\n′);}
A)對(duì)數(shù)組元素的升序排列
B)對(duì)數(shù)組元素的降序排列
C)對(duì)數(shù)組元素的倒序排列
D)對(duì)數(shù)組元素的隨機(jī)排列
(40)閱讀下列程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A)3e,6
B)62,5
C)56,5
D)3E,6
(41)下列選項(xiàng)中錯(cuò)誤的說(shuō)明語(yǔ)句是
A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};
B)char a[]={"toyou\0"};
C)char a[]="toyou\0";
D)char a[]=′toyou\0′;
(42)下述對(duì)C語(yǔ)言字符數(shù)組的描述中錯(cuò)誤的是
A)字符數(shù)組的下標(biāo)從0開(kāi)始
B)字符數(shù)組中的字符串可以進(jìn)行整體輸入/輸出
C)可以在賦值語(yǔ)句中通過(guò)賦值運(yùn)算符“=”對(duì)字符數(shù)組整體賦值
D)字符數(shù)組可以存放字符串
(43)閱讀下列程序,則在執(zhí)行后,程序的運(yùn)行結(jié)果為
#include "stdio.h"
#include "string.h"
main()
{char a[30]="nice to meet you!";
strcpy(a+strlen(a)/2,"you");
printf("%s\n",a);}
A)nice to meet you you
B)nice to
C)meet you you
D)nice to you
(44)閱讀下面程序,則執(zhí)行后的結(jié)果是
#include "stdio.h"
main()
{char str[]="tomeetme",*p;
for(p=str;p printf("\n");}
A)tomeetme
B)tmem
C)oete
D)tome
(45)下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)如下:t to meet me<回車(chē)>
則程序輸出的結(jié)果是
#include "stdio.h"
main(argc,argv)
int argc;char *argv[];
{int i;
printf("%d\n",argc);}
A)3
B)4
C)2
D)以上答案都不正確
(46)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
long fun(int n)
{if(n>2)
return(fun(n-1)+fun(n-2));
else return(2);}
main()
{printf("%ld\n",fun(5));}
A)10
B)15
C)20
D)以上3個(gè)答案都不正確
(47)已知如下定義,則sizeof(a)的值是
struct{int i;
char c;
double a; } a;
A)8
B)9
C)10
D)11
(48)已知函數(shù)的原形如下,其中結(jié)構(gòu)體a為已經(jīng)定義過(guò)的結(jié)構(gòu),且有下列變量定義
struct a *f(int t1,int *t2,strcut a t3,struct a *t4)
struct a p,*p1;int i;
則正確的函數(shù)調(diào)用語(yǔ)句為
A)&p=f(10,&i,p,p1);
B)p1=f(i++,(int *)p1,p,&p);
C)p=f(i+1,&(i+2),*p,p);
D)f(i+1,&i,p,p);
(49)下面程序段的輸出為
#include "stdio.h"
main()
{ printf("%d\n",12<<2);}
A)0
B)47
C)48
D)24
(50)假定當(dāng)前盤(pán)符下有兩個(gè)文本文件,如下
文件名 a1.txt a2.txt
內(nèi)容 123# 321#
則下面程序段執(zhí)行后的結(jié)果為
#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}
main()
{ FILE *fp;
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
fclose(fp);
putchar(′\n′);}
A)123321
B)123
C)321
D)以上答案都不正確 二、填空題
(1)常用的黑箱測(cè)試有等價(jià)分類(lèi)法、 【1】 、因果圖法和錯(cuò)誤推測(cè)法4種。
解析: 黑箱測(cè)試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測(cè)試用例。常用的黑箱測(cè)試有等價(jià)分類(lèi)法、邊值分析法、因果圖法和錯(cuò)誤推測(cè)法4種。
(2)測(cè)試的目的是暴露錯(cuò)誤,評(píng)價(jià)程序的可靠性;而 【2】 的目的是發(fā)現(xiàn)錯(cuò)誤的位置并改正錯(cuò)誤。
解析: 軟件測(cè)試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯(cuò)誤,給出程序可靠性的鑒定;調(diào)試也稱(chēng)排錯(cuò),它是一個(gè)與測(cè)試有聯(lián)系又有區(qū)別的概念。具體來(lái)說(shuō),測(cè)試的目的是暴露錯(cuò)誤,評(píng)價(jià)程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯(cuò)誤的位置,并改正錯(cuò)誤。
(3)軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、 【3】 維護(hù)和預(yù)防性維護(hù)。
解析: 軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。改正性維護(hù)是指在軟件交付使用后,為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程;適應(yīng)性維護(hù)是指為了使軟件適應(yīng)變化,而去修改軟件的過(guò)程;完善性維護(hù)是指為了滿(mǎn)足用戶(hù)對(duì)軟件提出的新功能與性能要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性;預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后的進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。
(4)在面向?qū)ο蟮脑O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱(chēng)為【4】 。
解析: 在面向?qū)ο蠹夹g(shù)中,主要用到對(duì)象(object)、類(lèi)(class)、方法(method)、消息(message)、繼承(inheritance)、封裝(encapsulation)等基本概念。其中消息是用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求。
(5)關(guān)鍵字ASC和DESC分別表示 【5】 的含義。
解析: ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語(yǔ)句中的ORDER子句中。
(6)定義int a=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為 【6】 。
【命題目的】考查對(duì)于基本運(yùn)算符的掌握情況。
【解題要點(diǎn)】++和--做前綴使用的時(shí)候,先對(duì)變量進(jìn)行增1或減1,之后進(jìn)行其他的運(yùn)算。
【考點(diǎn)鏈接】賦值運(yùn)算符的優(yōu)先級(jí)僅僅高于逗號(hào)運(yùn)算符。
(7)以下程序的輸出結(jié)果是 【7】 。
#include "stdio.h"
main()
{int a=065;
printf("%d\n",--a);
}
【命題目的】考查對(duì)于數(shù)據(jù)的格式化輸出的掌握情況。
【解題要點(diǎn)】八進(jìn)制的65轉(zhuǎn)換為十進(jìn)制的53之后減1輸出。
【考點(diǎn)鏈接】0開(kāi)頭的是八進(jìn)制整數(shù)。
(8)閱讀下面程序,則執(zhí)行后的輸出結(jié)果是 【8】 。
#include "stdio.h"
main()
{int x,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
else printf("%d",y);
printf("%d\n",z);
}
【命題目的】考查對(duì)于if語(yǔ)句的掌握情況。
【解題要點(diǎn)】C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf("%d\n",z);語(yǔ)句。
(9)如下語(yǔ)句printf("%c\n",′B′+40);在執(zhí)行后的輸出結(jié)果是 【9】 。
【命題目的】考查對(duì)于字符常量運(yùn)算的掌握情況。
【解題要點(diǎn)】在C程序中的字符量可參與任何整數(shù)運(yùn)算。
【考點(diǎn)鏈接】%c是以字符的形式輸出。
(10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
#include "stdio.h"
main()
{int a=30,b=20,z;
z=fun(a+b,a-b);
printf("%d\n",z);
}
fun(int a,int b)
{int z;
z=a/b;
return z;
}
【命題目的】考查對(duì)于函數(shù)的調(diào)用和返回值的掌握情況。
【解題要點(diǎn)】函數(shù)調(diào)用的時(shí)候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實(shí)參類(lèi)型要一致,在沒(méi)有給出函數(shù)返回值類(lèi)型的情況下,默認(rèn)為整形,當(dāng)返回值為整型的函數(shù)放到主函數(shù)后面時(shí),可以不需要事先說(shuō)明就調(diào)用這個(gè)函數(shù)。
【考點(diǎn)鏈接】retrun既可以返回一個(gè)普通常量,也可以返回一個(gè)指針變量。
(11)下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個(gè)數(shù)中,求出的和最小的數(shù)據(jù),請(qǐng)?zhí)羁铡?BR> fun(int *p,int n)
{int *q;
int max,min;
max=min=*p;
for(q=p; 【11】 ;q++)
if( 【12】 )max=*q;
else if( 【13】 )min=*q;
}
【命題目的】考查對(duì)于函數(shù)的地址傳遞的掌握情況。
【解題要點(diǎn)】通過(guò)地址傳遞可以在被調(diào)函數(shù)中對(duì)調(diào)用函數(shù)中的變量進(jìn)行引用。
(12)下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進(jìn)制數(shù),所得二進(jìn)制數(shù)的每一位放在一維數(shù)組中返回,二進(jìn)制的最低位放在下標(biāo)為0的元素中,其他依次類(lèi)推,請(qǐng)?zhí)羁铡?BR> fun(int x,int b[])
{ int k=0,r;
do{
r=x% 【14】 ;
b[ 【15】 ]=r;
x/= 【16】 ;
}while(x);
}
【命題目的】考查對(duì)于數(shù)組操作的綜合運(yùn)用。
【解題要點(diǎn)】深刻理解十進(jìn)制轉(zhuǎn)化為二進(jìn)制的方法,即取余法;數(shù)組名作為實(shí)參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。
【考點(diǎn)鏈接】do…while循環(huán),先執(zhí)行循環(huán)體,后判斷循環(huán)條件。
(13)下面函數(shù)的功能是將一個(gè)字符串的內(nèi)容顛倒過(guò)來(lái),請(qǐng)?zhí)羁铡?BR> void fun(char str[])
{int i,j, 【17】 ;
for(i=0,j= 【18】 ;i { k=str[i];
str[i]=str[j];
str[j]=k;
}
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(15)閱讀下列程序,則程序的輸出結(jié)果為【20】。
#include "stdio.h"
struct ty
{int data;
char c;
};
main()
{ struct ty a={30,′x′};
fun(a);
printf("%d%c",a.data,a.c);
}
fun(struct ty b)
{ b.data=20;
b.c=′y′;
}
【命題目的】考查對(duì)于結(jié)構(gòu)體的掌握情況。
【解題要點(diǎn)】本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。
(1)循環(huán)鏈表的主要優(yōu)點(diǎn)是
A)不再需要頭指針了
B)從表中任一結(jié)點(diǎn)出發(fā)都能訪問(wèn)到整個(gè)鏈表
C)在進(jìn)行插入、刪除運(yùn)算時(shí),能更好的保證鏈表不斷開(kāi)
D)已知某個(gè)結(jié)點(diǎn)的位置后,能夠容易的找到它的直接前件
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A)ABCED B)DCBEA
C)DBCEA D)CDABE
(3)n個(gè)頂點(diǎn)的強(qiáng)連通圖的邊數(shù)至少有
A)n-1 B)n(n-1)
C)n D)n+1
(4)在結(jié)構(gòu)化程序設(shè)計(jì)思想提出之前,在程序設(shè)計(jì)中曾強(qiáng)調(diào)程序的效率,現(xiàn)在,與程序的效率相比,人們更重視程序的
A)安全性 B)一致性
C)可理解性 D)合理性
(5)模塊獨(dú)立性是軟件模塊化所提出的要求,衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)則是模塊的
A)抽象和信息隱蔽 B)局部化和封裝化
C)內(nèi)聚性和耦合性 D)激活機(jī)制和控制方法
(6)軟件開(kāi)發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成
A)定義、開(kāi)發(fā)、運(yùn)行維護(hù)
B)設(shè)計(jì)階段、編程階段、測(cè)試階段
C)總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試
D)需求分析、功能定義、系統(tǒng)設(shè)計(jì)
(7)在軟件工程中,白箱測(cè)試法可用于測(cè)試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是
A)路徑的集合 B)循環(huán)的集合
C)目標(biāo)的集合 D)地址的集合
(8)在數(shù)據(jù)管理技術(shù)發(fā)展過(guò)程中,文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫(kù)系統(tǒng)具有
A)特定的數(shù)據(jù)模型 B)數(shù)據(jù)無(wú)冗余
C)數(shù)據(jù)可共享 D)專(zhuān)門(mén)的數(shù)據(jù)管理軟件
(9)數(shù)據(jù)庫(kù)設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是
A)概念設(shè)計(jì)和邏輯設(shè)計(jì)
B)模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)
C)內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)
D)結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)
(10)實(shí)體是信息世界中廣泛使用的一個(gè)術(shù)語(yǔ),它用于表示
A)有生命的事物 B)無(wú)生命的事物
C)實(shí)際存在的事物 D)一切事物
(11)以下說(shuō)法錯(cuò)誤的是
A)一個(gè)算法應(yīng)包含有限個(gè)步驟
B)在計(jì)算機(jī)上實(shí)現(xiàn)的算法是用來(lái)處理數(shù)據(jù)對(duì)象的
C)算法中指定的操作,不能通過(guò)已經(jīng)實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次后實(shí)現(xiàn)
D)算法的目的是為了求解
(12)下列選項(xiàng)中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是
A)順序結(jié)構(gòu)
B)跳轉(zhuǎn)分支結(jié)構(gòu)
C)選擇結(jié)構(gòu)
D)循環(huán)結(jié)構(gòu)
(13)已知int k,m=1;執(zhí)行語(yǔ)句k=-m++;后,k的值是
A)-1
B)0
C)1
D)2
(14)已知int m;float k;正確的語(yǔ)句是
A)(int k)%m
B)int(k)%m
C)int(k%m)
D)(int)k%m
(15)下面各選項(xiàng)中,均是C語(yǔ)言標(biāo)識(shí)符的選項(xiàng)組是
A)33 we auto
B)_23 me _3ew
C)_43 3e_ else
D)ER -DF 32
(16)已知int k;float m=-3;執(zhí)行語(yǔ)句k=m%2;后,變量k的值是
A)-1
B)0
C)1
D)語(yǔ)句有錯(cuò)誤
(17)不能進(jìn)行++和--運(yùn)算的數(shù)據(jù)類(lèi)型為
A)指針
B)整型
C)長(zhǎng)整型
D)常量
(18)已知int k=10,m=3,n;則下列語(yǔ)句輸出結(jié)果是
printf("%d\n",n=(k%m,k/m));
A)2
B)3
C)4
D)5
(19)已知int a;float b;所用的scanf調(diào)用語(yǔ)句格式為:
scanf("a//%d,b=%f",&a,&b);
為了將數(shù)據(jù)3和25.08分別賦給x和y,正確的輸入應(yīng)當(dāng)是
A)3,25.08
B)a=3,b=25.08
C)a//3,b=25.08
D)a//3b=25.08
(20)當(dāng)k的值不為0時(shí),在下列選項(xiàng)中能夠?qū)的值賦給變量m,n的是
A)m=k=n
B)(m=k)&&(n=k)
C)(m=k)||(n=k)
D)(k=m)&&(n=k)
(21)下列程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{ int x=-9,y=5,z=8;
if(x if(y<0)z=0;
else z+=1;
printf("%d\n",z);}
A)6
B)7
C)8
D)9
(22)現(xiàn)有定義int k=1;則執(zhí)行語(yǔ)句while(++k<4);后,k的值為
A)4
B)5
C)6
D)8
(23)以下程序的運(yùn)行結(jié)果為
#include "stdio.h"
main()
{int m,n;
for(m=0,n=10;m printf("%d,%d\n",m,n);}
A)6,7
B)7,6
C)9,7
D)7,9
(24)閱讀下列程序,程序的輸出結(jié)果是
#include "stdio.h"
main()
{
int m,n;
float k;
for(m=6;m>2;m--)
{ k=0;
for(n=m;n>1;n--)
k=k+m*n;
}
printf("%f\n",k);
}
A)5.000000
B)15.000000
C)25.000000
D)35.000000
(25)下列程序的輸出結(jié)果是
#include "stdio.h"
main()
{int i,a=0,b=0;
for(i=1;i<10;i++)
{if(i%2==0)
{a++;
continue;}
b++;}
printf("a=%d,b=%d",a,b);}
A)a=4,b=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
(26)下列選項(xiàng)可以正確表示字符型常量的是
A)′\r′
B)"a"
C)"\897"
D)296
(27)下面對(duì)C語(yǔ)言的描述中,正確的是
A)函數(shù)一定有返回值,否則無(wú)法使用函數(shù)
B)C語(yǔ)言函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C)在C語(yǔ)言中,調(diào)用函數(shù)時(shí),只能將實(shí)參的值傳遞給形參
D)C語(yǔ)言程序中有調(diào)用關(guān)系的所有函數(shù)都必須放在同一源程序文件中
(28)閱讀下面程序段,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int m=4,n=2,k;
k=fun(m,n);
printf("%d\n",k);}
fun(int m,int n)
{return(m*m*m-n*n*n);}
A)64
B)8
C)56
D)0
(29)閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是
#include "stdio.h"
main()
{ char fun(char,int);
char a=′A′;
int b=13;
a=fun(a,b);
putchar(a);}
char fun(char a,int b)
{char k;
k=a+b;
return k;}
A)A
B)M
C)N
D)L
(30)編寫(xiě)求兩個(gè)雙精度數(shù)之和的函數(shù),選項(xiàng)中正確的是
A)double add(double a,double b)
{double s;
s=a+b;
return s; }
B)double add(double a,b)
{double s;
s=a+b;
return (s);}
C)double add(double a double b)
{double s;
s=a+b;
returns;}
D)double add(a,b)
{double a,b,s;
s=a+b;
return (s);}
(31)已知int a;則下面的說(shuō)明指針變量p的語(yǔ)句正確的是
A)int p=&a
B)int *p=a
C)int *p=&a
D)int *p=*a
(32)已知char **t;則變量t是
A)指向char變量的指針
B)指向指針的char變量
C)指向指針的指針
D)以上說(shuō)法都不對(duì)
(33)閱讀下面程序,執(zhí)行后的結(jié)果為
#include "stdio.h"
void fun(int *a,int *b)
{ int k;
k=5;
*a=k;
*b=*a+k;}
main()
{ int *a,*b,x=10,y=15;
a=&x;
b=&y;
fun(a,b);
printf("%d,%d\n",*a,*b);}
A)10,15
B)5,15
C)5,10
D)15,10
(34)閱讀下面程序,在程序執(zhí)行后的結(jié)果為
#include "stdio.h"
int *fun(int *a,int *b)
{ int m;
m=*a;
m+=*b-3;
return(&m);}
main()
{int x=21,y=35,*a=&x,*b=&y;
int *k;
k=fun(a,b);
printf("%d\n",*k);}
A)53
B)21
C)35
D)14
(35)已知int a[10];則對(duì)a數(shù)組元素的正確引用是
A)a[10]
B)a
C)a+5
D)a[10-10]
(36)在C語(yǔ)言中,一維數(shù)組的定義方法為
類(lèi)型說(shuō)明符 數(shù)組名
A)[常量表達(dá)式]
B)[整型常量]
C)[整型變量]
D)[整型常量]或[整型表達(dá)式]
(37)閱讀下列程序,則運(yùn)行結(jié)果為
#include "stdio.h"
fun()
{ static int x=5;
x++;
return x;}
main()
{ int i,x;
for(i=0;i<3;i++)
x=fun();
printf("%d\n",x);}
A)5
B)6
C)7
D)8
(38)下列程序的輸出結(jié)果是
#include "stdio.h"
#defineM(x,y)x%y
main()
{ int a,m=12,n=100;
a=M(n,m);
printf("%d\n",a--);}
A)2
B)3
C)4
D)5
(39)閱讀下面程序,則程序段的功能是
#include "stdio.h"
main()
{ int c[]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0 && t>c[j])
{c[j+1]=c[j];j--;}
c[j+1]=t;}
for(i=0;i<7;i++)
printf("%d ",c[i]);
putchar(′\n′);}
A)對(duì)數(shù)組元素的升序排列
B)對(duì)數(shù)組元素的降序排列
C)對(duì)數(shù)組元素的倒序排列
D)對(duì)數(shù)組元素的隨機(jī)排列
(40)閱讀下列程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A)3e,6
B)62,5
C)56,5
D)3E,6
(41)下列選項(xiàng)中錯(cuò)誤的說(shuō)明語(yǔ)句是
A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};
B)char a[]={"toyou\0"};
C)char a[]="toyou\0";
D)char a[]=′toyou\0′;
(42)下述對(duì)C語(yǔ)言字符數(shù)組的描述中錯(cuò)誤的是
A)字符數(shù)組的下標(biāo)從0開(kāi)始
B)字符數(shù)組中的字符串可以進(jìn)行整體輸入/輸出
C)可以在賦值語(yǔ)句中通過(guò)賦值運(yùn)算符“=”對(duì)字符數(shù)組整體賦值
D)字符數(shù)組可以存放字符串
(43)閱讀下列程序,則在執(zhí)行后,程序的運(yùn)行結(jié)果為
#include "stdio.h"
#include "string.h"
main()
{char a[30]="nice to meet you!";
strcpy(a+strlen(a)/2,"you");
printf("%s\n",a);}
A)nice to meet you you
B)nice to
C)meet you you
D)nice to you
(44)閱讀下面程序,則執(zhí)行后的結(jié)果是
#include "stdio.h"
main()
{char str[]="tomeetme",*p;
for(p=str;p printf("\n");}
A)tomeetme
B)tmem
C)oete
D)tome
(45)下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)如下:t to meet me<回車(chē)>
則程序輸出的結(jié)果是
#include "stdio.h"
main(argc,argv)
int argc;char *argv[];
{int i;
printf("%d\n",argc);}
A)3
B)4
C)2
D)以上答案都不正確
(46)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
long fun(int n)
{if(n>2)
return(fun(n-1)+fun(n-2));
else return(2);}
main()
{printf("%ld\n",fun(5));}
A)10
B)15
C)20
D)以上3個(gè)答案都不正確
(47)已知如下定義,則sizeof(a)的值是
struct{int i;
char c;
double a; } a;
A)8
B)9
C)10
D)11
(48)已知函數(shù)的原形如下,其中結(jié)構(gòu)體a為已經(jīng)定義過(guò)的結(jié)構(gòu),且有下列變量定義
struct a *f(int t1,int *t2,strcut a t3,struct a *t4)
struct a p,*p1;int i;
則正確的函數(shù)調(diào)用語(yǔ)句為
A)&p=f(10,&i,p,p1);
B)p1=f(i++,(int *)p1,p,&p);
C)p=f(i+1,&(i+2),*p,p);
D)f(i+1,&i,p,p);
(49)下面程序段的輸出為
#include "stdio.h"
main()
{ printf("%d\n",12<<2);}
A)0
B)47
C)48
D)24
(50)假定當(dāng)前盤(pán)符下有兩個(gè)文本文件,如下
文件名 a1.txt a2.txt
內(nèi)容 123# 321#
則下面程序段執(zhí)行后的結(jié)果為
#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}
main()
{ FILE *fp;
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
fclose(fp);
putchar(′\n′);}
A)123321
B)123
C)321
D)以上答案都不正確 二、填空題
(1)常用的黑箱測(cè)試有等價(jià)分類(lèi)法、 【1】 、因果圖法和錯(cuò)誤推測(cè)法4種。
解析: 黑箱測(cè)試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測(cè)試用例。常用的黑箱測(cè)試有等價(jià)分類(lèi)法、邊值分析法、因果圖法和錯(cuò)誤推測(cè)法4種。
(2)測(cè)試的目的是暴露錯(cuò)誤,評(píng)價(jià)程序的可靠性;而 【2】 的目的是發(fā)現(xiàn)錯(cuò)誤的位置并改正錯(cuò)誤。
解析: 軟件測(cè)試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯(cuò)誤,給出程序可靠性的鑒定;調(diào)試也稱(chēng)排錯(cuò),它是一個(gè)與測(cè)試有聯(lián)系又有區(qū)別的概念。具體來(lái)說(shuō),測(cè)試的目的是暴露錯(cuò)誤,評(píng)價(jià)程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯(cuò)誤的位置,并改正錯(cuò)誤。
(3)軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、 【3】 維護(hù)和預(yù)防性維護(hù)。
解析: 軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。改正性維護(hù)是指在軟件交付使用后,為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程;適應(yīng)性維護(hù)是指為了使軟件適應(yīng)變化,而去修改軟件的過(guò)程;完善性維護(hù)是指為了滿(mǎn)足用戶(hù)對(duì)軟件提出的新功能與性能要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性;預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后的進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。
(4)在面向?qū)ο蟮脑O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱(chēng)為【4】 。
解析: 在面向?qū)ο蠹夹g(shù)中,主要用到對(duì)象(object)、類(lèi)(class)、方法(method)、消息(message)、繼承(inheritance)、封裝(encapsulation)等基本概念。其中消息是用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求。
(5)關(guān)鍵字ASC和DESC分別表示 【5】 的含義。
解析: ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語(yǔ)句中的ORDER子句中。
(6)定義int a=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為 【6】 。
【命題目的】考查對(duì)于基本運(yùn)算符的掌握情況。
【解題要點(diǎn)】++和--做前綴使用的時(shí)候,先對(duì)變量進(jìn)行增1或減1,之后進(jìn)行其他的運(yùn)算。
【考點(diǎn)鏈接】賦值運(yùn)算符的優(yōu)先級(jí)僅僅高于逗號(hào)運(yùn)算符。
(7)以下程序的輸出結(jié)果是 【7】 。
#include "stdio.h"
main()
{int a=065;
printf("%d\n",--a);
}
【命題目的】考查對(duì)于數(shù)據(jù)的格式化輸出的掌握情況。
【解題要點(diǎn)】八進(jìn)制的65轉(zhuǎn)換為十進(jìn)制的53之后減1輸出。
【考點(diǎn)鏈接】0開(kāi)頭的是八進(jìn)制整數(shù)。
(8)閱讀下面程序,則執(zhí)行后的輸出結(jié)果是 【8】 。
#include "stdio.h"
main()
{int x,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
else printf("%d",y);
printf("%d\n",z);
}
【命題目的】考查對(duì)于if語(yǔ)句的掌握情況。
【解題要點(diǎn)】C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf("%d\n",z);語(yǔ)句。
(9)如下語(yǔ)句printf("%c\n",′B′+40);在執(zhí)行后的輸出結(jié)果是 【9】 。
【命題目的】考查對(duì)于字符常量運(yùn)算的掌握情況。
【解題要點(diǎn)】在C程序中的字符量可參與任何整數(shù)運(yùn)算。
【考點(diǎn)鏈接】%c是以字符的形式輸出。
(10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
#include "stdio.h"
main()
{int a=30,b=20,z;
z=fun(a+b,a-b);
printf("%d\n",z);
}
fun(int a,int b)
{int z;
z=a/b;
return z;
}
【命題目的】考查對(duì)于函數(shù)的調(diào)用和返回值的掌握情況。
【解題要點(diǎn)】函數(shù)調(diào)用的時(shí)候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實(shí)參類(lèi)型要一致,在沒(méi)有給出函數(shù)返回值類(lèi)型的情況下,默認(rèn)為整形,當(dāng)返回值為整型的函數(shù)放到主函數(shù)后面時(shí),可以不需要事先說(shuō)明就調(diào)用這個(gè)函數(shù)。
【考點(diǎn)鏈接】retrun既可以返回一個(gè)普通常量,也可以返回一個(gè)指針變量。
(11)下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個(gè)數(shù)中,求出的和最小的數(shù)據(jù),請(qǐng)?zhí)羁铡?BR> fun(int *p,int n)
{int *q;
int max,min;
max=min=*p;
for(q=p; 【11】 ;q++)
if( 【12】 )max=*q;
else if( 【13】 )min=*q;
}
【命題目的】考查對(duì)于函數(shù)的地址傳遞的掌握情況。
【解題要點(diǎn)】通過(guò)地址傳遞可以在被調(diào)函數(shù)中對(duì)調(diào)用函數(shù)中的變量進(jìn)行引用。
(12)下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進(jìn)制數(shù),所得二進(jìn)制數(shù)的每一位放在一維數(shù)組中返回,二進(jìn)制的最低位放在下標(biāo)為0的元素中,其他依次類(lèi)推,請(qǐng)?zhí)羁铡?BR> fun(int x,int b[])
{ int k=0,r;
do{
r=x% 【14】 ;
b[ 【15】 ]=r;
x/= 【16】 ;
}while(x);
}
【命題目的】考查對(duì)于數(shù)組操作的綜合運(yùn)用。
【解題要點(diǎn)】深刻理解十進(jìn)制轉(zhuǎn)化為二進(jìn)制的方法,即取余法;數(shù)組名作為實(shí)參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。
【考點(diǎn)鏈接】do…while循環(huán),先執(zhí)行循環(huán)體,后判斷循環(huán)條件。
(13)下面函數(shù)的功能是將一個(gè)字符串的內(nèi)容顛倒過(guò)來(lái),請(qǐng)?zhí)羁铡?BR> void fun(char str[])
{int i,j, 【17】 ;
for(i=0,j= 【18】 ;i { k=str[i];
str[i]=str[j];
str[j]=k;
}
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(15)閱讀下列程序,則程序的輸出結(jié)果為【20】。
#include "stdio.h"
struct ty
{int data;
char c;
};
main()
{ struct ty a={30,′x′};
fun(a);
printf("%d%c",a.data,a.c);
}
fun(struct ty b)
{ b.data=20;
b.c=′y′;
}
【命題目的】考查對(duì)于結(jié)構(gòu)體的掌握情況。
【解題要點(diǎn)】本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。