二、填空題(每空2分,共40分)
請(qǐng)將每一個(gè)空的正確答案寫在答題卡的【1】至【20】序號(hào)的橫線上,答在試卷上不得 分。
(1)算法的復(fù)雜度主要包括時(shí)間復(fù)雜度和 【1】 復(fù)雜度。
答案:【1】空間
評(píng)析:習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時(shí)間的相對(duì)量度,稱作算法的時(shí)間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。
(2)數(shù)據(jù)的物理結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的 【2】 。
答案:【2】內(nèi)模式或物理模式或存儲(chǔ)模式
評(píng)析:一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲(chǔ)方式是順序存儲(chǔ)、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密等。
(3)若按功能劃分,軟件測(cè)試的方法通常分為 【3】 測(cè)試方法和黑盒測(cè)試方法。
答案:【3】白盒
評(píng)析:軟件測(cè)試的方法有三種:動(dòng)態(tài)測(cè)試、靜態(tài)測(cè)試和正確性證明。設(shè)計(jì)測(cè)試實(shí)例的方法一般有兩類:黑盒測(cè)試方法和自盒測(cè)試方法。
(4)數(shù)據(jù)庫三級(jí)模式體系結(jié)構(gòu)的劃分,有利于保持?jǐn)?shù)據(jù)庫的 【4】 。
答案:【4】數(shù)據(jù)獨(dú)立性
評(píng)析:數(shù)據(jù)庫的三級(jí)模式體系結(jié)構(gòu)把數(shù)據(jù)的組織管理工作進(jìn)行了劃分,把數(shù)據(jù)的具體組織留給dbms管理,使用戶能邏輯地、抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的具體表示方式與存儲(chǔ)方式,保證了數(shù)據(jù)的獨(dú)立性。
(5)在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為 【5】 。
答案:【5】選擇
評(píng)析:在關(guān)系數(shù)據(jù)庫中,選擇運(yùn)算也是一個(gè)元運(yùn)算,關(guān)系r通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個(gè)關(guān)系。這個(gè)關(guān)系是由r中的那些滿足邏輯條件的元組所組成。
(6)在c語言中(以16位pc機(jī)為例),一個(gè)float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個(gè)double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為 【6】 。
答案:【6】8
評(píng)析:在一般16位pc機(jī)中,一個(gè)float型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),一個(gè)double型數(shù)據(jù)占8個(gè)字節(jié)。
(7)設(shè)有以下變量定義,并已賦確定的值,
char w;int x;float y;double z;
則表達(dá)式:w*x+z-y所求得的數(shù)據(jù)類型為 【7】 。
答案:【7】double型或雙精度型
評(píng)析:①先進(jìn)行w*x的運(yùn)算,先將字符型w轉(zhuǎn)換成整型,運(yùn)算結(jié)果為整型;②再將w*x的結(jié)果與z相加,要先將第一步的整型轉(zhuǎn)換為double型,運(yùn)算結(jié)果為double型;③最后將w*x+z的結(jié)果與y相減,要先將float型y轉(zhuǎn)換成double型,結(jié)果為double型。
(8)若運(yùn)行時(shí)給變量x輸入12,則以下程序的運(yùn)行結(jié)果是 【8】??;
main(){
int,y;
scanf(""%d"",&x);
y=x>12?x+lo:x-12;
printf(""%d\n"",y);
}
答案:【8】0
評(píng)析:三目運(yùn)算符的形式為(表達(dá)式1)7(表達(dá)式2):(表達(dá)式3)。當(dāng)(表達(dá)式1)值為真時(shí),返回(表達(dá)式2)的值;為假時(shí),返回(表達(dá)式3)的值。題中因?yàn)閤>t2為假,所以結(jié)果為x-12,即為0。(9)四條語句:x++;、++x;、x=x+l;、x=l+x;,執(zhí)行后都使變量x中的值增l,請(qǐng)寫出一條同一功能的賦值語句(不得與列舉的相同) 【9】 。
答案:【9】x+=1:
評(píng)析:題面中的四條語句的作用是使x的值加1,在c中有多種方法可以對(duì)變量進(jìn)行加1操作,這里可以利用c的復(fù)合賦值運(yùn)算符+=實(shí)現(xiàn),本題答案為x+=1:。
(10)設(shè)有以下定義和語句,則*(*(p+2)+1)的值為 【10】 。
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
答案:【10】60
評(píng)析:本題定義了一個(gè)3行2列的二維數(shù)組a,并定義了一個(gè)指向兩個(gè)元素的一維數(shù)組指針p,讓p指向二維數(shù)組a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。
(11)若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?BR> p= 【11】 malloc(sizeof(double));
答案:【11】(double*)
評(píng)析:函數(shù)malloc返回的是void*,所以若要使指針指向一個(gè)double類型,則必須進(jìn)行類型轉(zhuǎn)換,類型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。
(12)下面程序的功能:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)補(bǔ)充完整。
main().
{ int ij;
for(i=o; 【12】??;i++)
{ j=i*10+6;
if( 【13】 )continue;
printf("%d",j);
}
}
答案:【12】i 【13】j%3!=0
評(píng)析:本題要求輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),程序中j=i*10+6;語句是求個(gè)位數(shù)為6的整數(shù),由此可得出程序的循環(huán)次數(shù)為i (13)函數(shù)mycmp(char*s,char。t)的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,
當(dāng)s>t返回正值,當(dāng)s mycmp(char*s,char*t)
{ while(*s==*t)
{ if(*s==’\0’)return 0;
++s;++t;
}
return( 【14】 );
}
答案:【14】*s-*t或-*t+*s
評(píng)析:函數(shù)的兩個(gè)形參是兩個(gè)字符指針變量,字符串的首地址是指針變量的值,*s和*t表示字符串?dāng)?shù)組s和t的第一個(gè)字符,在while循環(huán)中,是通過s和t值的不斷變化來改變指針?biāo)赶虻淖址?,要改變s和t所指不同字符的ascii碼的差值,必須使用"*s-*t"得出。
(14)以下程序運(yùn)行后的輸出結(jié)果是 【15】 。
void fun(、)
{
static int a=0:
a+=2;printf("%d",a);
}
main()
{ int cc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
答案:【15】2 4 6
評(píng)析:static聲明的外部變量只限于被本文件引用,而不能被其他文件引用。用static來聲明一個(gè)變量的作用有:①對(duì)局部變量用static聲明,則為該變量分配的空間在整個(gè)程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。
(15)下列程序的運(yùn)行結(jié)果是 【16】 。
main()
{ union example
{ struct
{int x;int y;}in;
int a;
int b:
}e;
e.a(chǎn)=1;e.b=2;
e.in.x=e.a(chǎn)*e.b;
e.in.y=e.a(chǎn)+e.b;
printf("%d,%d\n",e.in.x,e.in.y);
}
答案:【16】4,8
評(píng)析:c語言規(guī)定,共用體中各個(gè)成員變量在內(nèi)存中占用同一段內(nèi)存單元,即e.in.x和e.a(chǎn)、e.b占用同一段內(nèi)存單元,由于e.in.x和e.a(chǎn)、e.b占用的是同一段內(nèi)存單元,所以程序最后的打印結(jié)果為"4,8"。 (16)在對(duì)文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù) 是 【17】 函數(shù)。
答案:【17】[nnlrewind或fseek
評(píng)析:在對(duì)文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,可以調(diào)用rewind或fseek函數(shù)。其中rewind函數(shù)的作用是將位置指針重新返回文件的開頭,而fseek函數(shù)可以實(shí)現(xiàn)文件指針的定位。
(17)以下函數(shù)用于求出一個(gè)2×4矩陣中的元素值。
max_value(arr)
int arr[][4];
{
int i,j,max;
max=alt[0][0];
for(i=0;i<2;i++)
for(j=0; 【18】 ;j++)
if( 【19】 >max)max=[2q];
return(max);
}
答案:【18】j<4
【19】arr[i][j]
【20】arr[i][j]
評(píng)析:2*4矩陣實(shí)際上就是一個(gè)二維數(shù)組,結(jié)合本題應(yīng)為arr[2][4],所以在第一個(gè)循環(huán)中應(yīng)當(dāng)填寫"4";第二個(gè)橫線處是要判斷當(dāng)前的數(shù)組元素值是否大于max,所以應(yīng)填寫arr[i][j];第三個(gè)橫線處是要將當(dāng)前大于max的數(shù)組元素的值賦給變量max,所以應(yīng)當(dāng)填寫"arr[i][il"。
請(qǐng)將每一個(gè)空的正確答案寫在答題卡的【1】至【20】序號(hào)的橫線上,答在試卷上不得 分。
(1)算法的復(fù)雜度主要包括時(shí)間復(fù)雜度和 【1】 復(fù)雜度。
答案:【1】空間
評(píng)析:習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時(shí)間的相對(duì)量度,稱作算法的時(shí)間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。
(2)數(shù)據(jù)的物理結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的 【2】 。
答案:【2】內(nèi)模式或物理模式或存儲(chǔ)模式
評(píng)析:一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲(chǔ)方式是順序存儲(chǔ)、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密等。
(3)若按功能劃分,軟件測(cè)試的方法通常分為 【3】 測(cè)試方法和黑盒測(cè)試方法。
答案:【3】白盒
評(píng)析:軟件測(cè)試的方法有三種:動(dòng)態(tài)測(cè)試、靜態(tài)測(cè)試和正確性證明。設(shè)計(jì)測(cè)試實(shí)例的方法一般有兩類:黑盒測(cè)試方法和自盒測(cè)試方法。
(4)數(shù)據(jù)庫三級(jí)模式體系結(jié)構(gòu)的劃分,有利于保持?jǐn)?shù)據(jù)庫的 【4】 。
答案:【4】數(shù)據(jù)獨(dú)立性
評(píng)析:數(shù)據(jù)庫的三級(jí)模式體系結(jié)構(gòu)把數(shù)據(jù)的組織管理工作進(jìn)行了劃分,把數(shù)據(jù)的具體組織留給dbms管理,使用戶能邏輯地、抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的具體表示方式與存儲(chǔ)方式,保證了數(shù)據(jù)的獨(dú)立性。
(5)在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為 【5】 。
答案:【5】選擇
評(píng)析:在關(guān)系數(shù)據(jù)庫中,選擇運(yùn)算也是一個(gè)元運(yùn)算,關(guān)系r通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個(gè)關(guān)系。這個(gè)關(guān)系是由r中的那些滿足邏輯條件的元組所組成。
(6)在c語言中(以16位pc機(jī)為例),一個(gè)float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個(gè)double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為 【6】 。
答案:【6】8
評(píng)析:在一般16位pc機(jī)中,一個(gè)float型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),一個(gè)double型數(shù)據(jù)占8個(gè)字節(jié)。
(7)設(shè)有以下變量定義,并已賦確定的值,
char w;int x;float y;double z;
則表達(dá)式:w*x+z-y所求得的數(shù)據(jù)類型為 【7】 。
答案:【7】double型或雙精度型
評(píng)析:①先進(jìn)行w*x的運(yùn)算,先將字符型w轉(zhuǎn)換成整型,運(yùn)算結(jié)果為整型;②再將w*x的結(jié)果與z相加,要先將第一步的整型轉(zhuǎn)換為double型,運(yùn)算結(jié)果為double型;③最后將w*x+z的結(jié)果與y相減,要先將float型y轉(zhuǎn)換成double型,結(jié)果為double型。
(8)若運(yùn)行時(shí)給變量x輸入12,則以下程序的運(yùn)行結(jié)果是 【8】??;
main(){
int,y;
scanf(""%d"",&x);
y=x>12?x+lo:x-12;
printf(""%d\n"",y);
}
答案:【8】0
評(píng)析:三目運(yùn)算符的形式為(表達(dá)式1)7(表達(dá)式2):(表達(dá)式3)。當(dāng)(表達(dá)式1)值為真時(shí),返回(表達(dá)式2)的值;為假時(shí),返回(表達(dá)式3)的值。題中因?yàn)閤>t2為假,所以結(jié)果為x-12,即為0。(9)四條語句:x++;、++x;、x=x+l;、x=l+x;,執(zhí)行后都使變量x中的值增l,請(qǐng)寫出一條同一功能的賦值語句(不得與列舉的相同) 【9】 。
答案:【9】x+=1:
評(píng)析:題面中的四條語句的作用是使x的值加1,在c中有多種方法可以對(duì)變量進(jìn)行加1操作,這里可以利用c的復(fù)合賦值運(yùn)算符+=實(shí)現(xiàn),本題答案為x+=1:。
(10)設(shè)有以下定義和語句,則*(*(p+2)+1)的值為 【10】 。
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
答案:【10】60
評(píng)析:本題定義了一個(gè)3行2列的二維數(shù)組a,并定義了一個(gè)指向兩個(gè)元素的一維數(shù)組指針p,讓p指向二維數(shù)組a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。
(11)若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?BR> p= 【11】 malloc(sizeof(double));
答案:【11】(double*)
評(píng)析:函數(shù)malloc返回的是void*,所以若要使指針指向一個(gè)double類型,則必須進(jìn)行類型轉(zhuǎn)換,類型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。
(12)下面程序的功能:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)補(bǔ)充完整。
main().
{ int ij;
for(i=o; 【12】??;i++)
{ j=i*10+6;
if( 【13】 )continue;
printf("%d",j);
}
}
答案:【12】i
評(píng)析:本題要求輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),程序中j=i*10+6;語句是求個(gè)位數(shù)為6的整數(shù),由此可得出程序的循環(huán)次數(shù)為i
當(dāng)s>t返回正值,當(dāng)s
{ while(*s==*t)
{ if(*s==’\0’)return 0;
++s;++t;
}
return( 【14】 );
}
答案:【14】*s-*t或-*t+*s
評(píng)析:函數(shù)的兩個(gè)形參是兩個(gè)字符指針變量,字符串的首地址是指針變量的值,*s和*t表示字符串?dāng)?shù)組s和t的第一個(gè)字符,在while循環(huán)中,是通過s和t值的不斷變化來改變指針?biāo)赶虻淖址?,要改變s和t所指不同字符的ascii碼的差值,必須使用"*s-*t"得出。
(14)以下程序運(yùn)行后的輸出結(jié)果是 【15】 。
void fun(、)
{
static int a=0:
a+=2;printf("%d",a);
}
main()
{ int cc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
答案:【15】2 4 6
評(píng)析:static聲明的外部變量只限于被本文件引用,而不能被其他文件引用。用static來聲明一個(gè)變量的作用有:①對(duì)局部變量用static聲明,則為該變量分配的空間在整個(gè)程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。
(15)下列程序的運(yùn)行結(jié)果是 【16】 。
main()
{ union example
{ struct
{int x;int y;}in;
int a;
int b:
}e;
e.a(chǎn)=1;e.b=2;
e.in.x=e.a(chǎn)*e.b;
e.in.y=e.a(chǎn)+e.b;
printf("%d,%d\n",e.in.x,e.in.y);
}
答案:【16】4,8
評(píng)析:c語言規(guī)定,共用體中各個(gè)成員變量在內(nèi)存中占用同一段內(nèi)存單元,即e.in.x和e.a(chǎn)、e.b占用同一段內(nèi)存單元,由于e.in.x和e.a(chǎn)、e.b占用的是同一段內(nèi)存單元,所以程序最后的打印結(jié)果為"4,8"。 (16)在對(duì)文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù) 是 【17】 函數(shù)。
答案:【17】[nnlrewind或fseek
評(píng)析:在對(duì)文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,可以調(diào)用rewind或fseek函數(shù)。其中rewind函數(shù)的作用是將位置指針重新返回文件的開頭,而fseek函數(shù)可以實(shí)現(xiàn)文件指針的定位。
(17)以下函數(shù)用于求出一個(gè)2×4矩陣中的元素值。
max_value(arr)
int arr[][4];
{
int i,j,max;
max=alt[0][0];
for(i=0;i<2;i++)
for(j=0; 【18】 ;j++)
if( 【19】 >max)max=[2q];
return(max);
}
答案:【18】j<4
【19】arr[i][j]
【20】arr[i][j]
評(píng)析:2*4矩陣實(shí)際上就是一個(gè)二維數(shù)組,結(jié)合本題應(yīng)為arr[2][4],所以在第一個(gè)循環(huán)中應(yīng)當(dāng)填寫"4";第二個(gè)橫線處是要判斷當(dāng)前的數(shù)組元素值是否大于max,所以應(yīng)填寫arr[i][j];第三個(gè)橫線處是要將當(dāng)前大于max的數(shù)組元素的值賦給變量max,所以應(yīng)當(dāng)填寫"arr[i][il"。

