(1)棧和隊(duì)列的共同特點(diǎn)是
A)都是先進(jìn)先出
B)都是先進(jìn)后出
C)只允許在端點(diǎn)處插入和刪除元素
D)沒(méi)有共同點(diǎn)
(2)已知二叉樹(shù)后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是
A)acbed
B)decab
C)deabc
D)cedba
(3)鏈表不具有的特點(diǎn)是
A)不必事先估計(jì)存儲(chǔ)空間
B)可隨機(jī)訪(fǎng)問(wèn)任一元素
C)插入刪除不需要移動(dòng)元素
D)所需空間與線(xiàn)性表長(zhǎng)度成正比
(4)結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是
A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B)分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C)多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)
D)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
(5)為了提高測(cè)試的效率,應(yīng)該
A)隨機(jī)選取測(cè)試數(shù)據(jù)
B)取一切可能的輸入數(shù)據(jù)作為測(cè)試數(shù)據(jù)
C)在完成編碼以后制定軟件的測(cè)試計(jì)劃
D)集中對(duì)付那些錯(cuò)誤群集的程序
(6)算法的時(shí)間復(fù)雜度是指
A)執(zhí)行算法程序所需要的時(shí)間
B)算法程序的長(zhǎng)度
C)算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)
D)算法程序中的指令條數(shù)
(7)軟件生命周期中所花費(fèi)用最多的階段是
A)詳細(xì)設(shè)計(jì)
B)軟件編碼
C)軟件測(cè)試
D)軟件維護(hù)
(8)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS中用來(lái)定義模式、內(nèi)模式和外模式的語(yǔ)言為
A)C
B)Basic
C)DDL
D)DML
(9)下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是
A)數(shù)據(jù)庫(kù)是一個(gè)DBF文件
B)數(shù)據(jù)庫(kù)是一個(gè)關(guān)系
C)數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合
D)數(shù)據(jù)庫(kù)是一組文件
(10)下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是
A)數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過(guò)程
B)數(shù)據(jù)的物理獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時(shí),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不變
C)關(guān)系中的每一列稱(chēng)為元組,一個(gè)元組就是一個(gè)字段
D)如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個(gè)關(guān)系的關(guān)鍵字,則稱(chēng)其為本關(guān)系的外關(guān)鍵字
(11)以下敘述中正確的是
A)C語(yǔ)言比其他語(yǔ)言高級(jí)
B)C語(yǔ)言可以不用編譯就能被計(jì)算機(jī)識(shí)別執(zhí)行
C)C語(yǔ)言以接近英語(yǔ)國(guó)家的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言作為語(yǔ)言的表達(dá)形式
D)C語(yǔ)言出現(xiàn)的最晚,具有其他語(yǔ)言的一切優(yōu)點(diǎn)
(12)C語(yǔ)言中用于結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是
A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
B)if,switch,break
C)for,while,do-while
D)if,for,continue
(13)C語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類(lèi)型包括
A)整型、實(shí)型、邏輯型
B)整型、實(shí)型、字符型
C)整型、字符型、邏輯型
D)字符型、實(shí)型、邏輯型
(14)若變量已正確定義并賦值,以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是
A)a:=b+1
B)a=b=c+2
C)int 18.5%3
D)a=a+7=c+b
(15)下列可用于C語(yǔ)言用戶(hù)標(biāo)識(shí)符的一組是
A)void, define, WORD
B)a3_b3, _123,Car
C)For, -abc, IF Case
D)2a, DO, sizeof
(16)C語(yǔ)言中運(yùn)算對(duì)象必須是整型的運(yùn)算符是
A)%=
B)/
C)=
D)<=
(17)若變量a,i已正確定義,且i已正確賦值,合法的語(yǔ)句是
A)a= =1
B)++i;
C)a=a++=5;
D)a=int(i);
(18)已知
int t=0;
while (t=1)
{...}
則以下敘述正確的是
A)循環(huán)控制表達(dá)式的值為0
B)循環(huán)控制表達(dá)式的值為1
C)循環(huán)控制表達(dá)式不合法
D)以上說(shuō)法都不對(duì)
(19)若變量已正確說(shuō)明為float型,要通過(guò)語(yǔ)句scanf("%f%f%f",&a,&b,&c);給a賦予10.0,b賦予22.0,c賦予33.0,下列不正確的輸入形式是
A)10<回車(chē)>22<回車(chē)>33<回車(chē)>
B)10.0,22.0,33.0<回車(chē)>
C)10.0<回車(chē)>22.033.0<回車(chē)>
D)10 22<回車(chē)>33<回車(chē)>
(20)有如下程序:
main()
{
int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf("a=%d,b=%d\n",a,b);}
該程序的輸出結(jié)果是
A)a=2,b=1
B)a=1,b=1
C)a=1,b=0
D)a=2,b=2
(21)有以下程序
main()
{int i=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
執(zhí)行后輸出結(jié)果是
A)1,1,2
B)2,2,1
C)2,2,2
D)2,2,3
(22)有如下程序
main()
{float x=2.0,y;
if(x<0.0)y=0.0;
else if(x<10.0)y=1.0/x;
else y=1.0;
printf("%f\n",y);}
該程序的輸出結(jié)果是
A)0.000000
B)0.250000
C)0.500000
D)1.000000
(23)有如下程序:
main()
{int n=9;
while(n>6){n--; printf("%d",n);}
}
該程序的輸出結(jié)果是
A)987
B)876
C)8765
D)9876
(24)在下列選項(xiàng)中,沒(méi)有構(gòu)成死循環(huán)的是
A)int i=100;
while(1)
{i=i%100+1;
if(i>100)break;
}
B)for(;;);
C)int k=10000;
do{k++;}while(k>10000);
D)int s=36;
while(s)--s;
(25)設(shè)int x=1,y=1;表達(dá)式(!x||y--)的值是
A)0
B)1
C)2
D)-1
(26)若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是
A)函數(shù)調(diào)用可以作為獨(dú)立的語(yǔ)句存在
B)函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參
C)函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D)函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參
(27)有以下程序
float fun(int x,int y)
{return(x+y);}
main()
{int a=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序運(yùn)行后的輸出結(jié)果是
A)編譯出錯(cuò)
B)9
C)21
D)9.0
(28)若有以下調(diào)用語(yǔ)句,則不正確的fun函數(shù)的首部是
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
A)void fun(int m, int x[])
B)void fun(int s, int h[41])
C)void fun(int p, int *s)
D)void fun(int n, int a)
(29)fseek函數(shù)的正確調(diào)用形式是
A)fseek(文件指針,起始點(diǎn),位移量)
B)fseek(文件指針,位移量,起始點(diǎn))
C)fseek(位移量,起始點(diǎn),文件指針)
D)fseek(起始點(diǎn),位移量,文件指針)
(30)若fp是指向某文件的指針,且已讀到文件末尾,則函數(shù)feof(fp)的返回值是
A)EOF
B)-1
C)1
D)NULL
(31)若有說(shuō)明語(yǔ)句:char c='\72';則變量c
A)包含1個(gè)字符
B)包含2個(gè)字符
C)包含3個(gè)字符
D)說(shuō)明不合法,c的值不確定
(32)若有說(shuō)明 int a[3][4];則a數(shù)組元素的非法引用是
A)a[0][2*1]
B)a[1][3]
C)a[4-2][0
]
D)a[0][4](33)設(shè)有以下說(shuō)明語(yǔ)句
struct stu
{int a;
float b;
} stutype;
則下面的敘述不正確的是
A)struct是結(jié)構(gòu)體類(lèi)型的關(guān)鍵字
B)struct stu是用戶(hù)定義的結(jié)構(gòu)體類(lèi)型
C)stutype是用戶(hù)定義的結(jié)構(gòu)體類(lèi)型名
D)a和b都是結(jié)構(gòu)體成員名
(34)在C語(yǔ)言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類(lèi)型允許是
A)整型常量
B)整型表達(dá)式
C)整型常量或整型表達(dá)式
D)任何類(lèi)型的表達(dá)式
(35)若運(yùn)行時(shí)給變量x輸入12,則以下程序的運(yùn)行結(jié)果是
main()
{int x,y;
scanf("%d",&x);
y=x>12?x+10:x-12;
printf("%d\n",y);
}
A)0
B)22
C)12
D)10(
(36)以下說(shuō)法正確的是
A)C語(yǔ)言程序總是從第一個(gè)的函數(shù)開(kāi)始執(zhí)行
B)在C語(yǔ)言程序中,要調(diào)用函數(shù)必須在main()函數(shù)中定義
C)C語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行
D)C語(yǔ)言程序中的main()函數(shù)必須放在程序的開(kāi)始部分
(37)表達(dá)式0x13^0x17的值是
A)0x04
B)0x13
C)0xE8
D)0x17
(38)有以下程序
#define F(X,Y)(X)*(Y)
main()
{int a=3, b=4;
printf("%d\n", F(a++, b++));
}
程序運(yùn)行后的輸出結(jié)果是
A)12
B)15
C)16
D)20
(39)下列程序執(zhí)行后的輸出結(jié)果是
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{int a,b[5];
a=0; b[0]=3;
func(&a,b); printf("%d\n",b[0]);
}
A)6
B)7
C)8
D)9
(40)若有下面的程序段:
char s[]="china";char *p; p=s;
則下列敘述正確的是
A)s和p完全相同
B)數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等
C)s數(shù)組長(zhǎng)度和p所指向的字符串長(zhǎng)度相等
D)*p與s[0]相等
(41) 以下程序中函數(shù)sort的功能是對(duì)a數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序
void sort(int a[],int n)
{int i,j,t;
for(i=0;i for(j=i+1;j if(a[i] }
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序運(yùn)行后的輸出結(jié)果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
(42) 以下程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{struct date
{int year,month,day;}today;
printf("%d\n",sizeof(struct date));
}
A)6
B)8
C)10
D)12
(43)若有語(yǔ)句int *point,a=4;和 point=&a;下面均代表地址的一組選項(xiàng)是
A)a,point,*&a
B)&*a,&a,*point
C)*&point,*point,&a
D)&a,&*point,point
(44)在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單的變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是
A)地址傳遞
B)單向值傳遞
C)由實(shí)參傳形參,再由形參傳實(shí)參
D)傳遞方式由用戶(hù)指定
(45)已定義以下函數(shù)
fun(char *p2, char *p1)
{
while((*p2=*p1)!='\0'){p1++;p2++;}
}
函數(shù)的功能是
A)將p1所指字符串復(fù)制到p2所指內(nèi)存空間
B)將p1所指字符串的地址賦給指針p2
C)對(duì)p1和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
D)檢查p1和p2兩個(gè)指針?biāo)缸址惺欠裼?\0'
(46)若執(zhí)行下述程序時(shí),若從鍵盤(pán)輸入6和8時(shí),結(jié)果為
main()
{int a,b,s;
scanf("%d%d",&a,&b);
s=a
if(a s=b;
s*=s;
printf("%d",s);
}
A)36
B)64
C)48
D)以上都不對(duì)
(47)fscanf函數(shù)的正確調(diào)用形式是
A)fscanf(fp,格式字符串,輸出表列);
B)fscanf(格式字符串,輸出表列,fp);
C)fscanf(格式字符串,文件指針,輸出表列);
D)fscanf(文件指針,格式字符串,輸入表列);
(48)下列關(guān)于C語(yǔ)言數(shù)據(jù)文件的敘述中正確的是
A)文件由ASCII碼字符序列組成,C語(yǔ)言只能讀寫(xiě)文本文件
B)文件由二進(jìn)制數(shù)據(jù)序列組成,C語(yǔ)言只能讀寫(xiě)二進(jìn)制文件
C)文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
D)文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
(49)有以下程序
void ss(char *s,char t)
{while(*s)
{if(*s= =t)*s=t-'a'+'A';
s++;
}
}
main()
{char str1[100]="abcddfefdbd",c='d';
ss(str1,c); printf("%s\n",str1);
}
程序運(yùn)行后的輸出結(jié)果是
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd 二、填空題
(1)算法的基本特征是可行性、確定性、 【1】 和擁有足夠的情報(bào)。
解析: 算法是指解題方案的準(zhǔn)確而完整的描述。它有4個(gè)基本特征,分別是可行性、確定性、有窮性和擁有足夠的情報(bào)。
(2)在長(zhǎng)度為n的有序線(xiàn)性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為 【2】 。
解析: 對(duì)于長(zhǎng)度為n的有序線(xiàn)性表,在最壞情況下,二分查找只需要比較log2n次,而順序查找需要比較n次。
(3)在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類(lèi)描述的是具有相似性質(zhì)的一組 【3】 。
解析: 將屬性、操作相似的對(duì)象歸為類(lèi),也就是說(shuō),類(lèi)是具有共同屬性、共同方法的對(duì)象的集合。
(4)通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過(guò)程稱(chēng)為 【4】 。
解析: 軟件產(chǎn)品從考慮其概念開(kāi)始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、交付使用以及維護(hù)等活動(dòng)。
(5)數(shù)據(jù)庫(kù)管理系統(tǒng)常見(jiàn)的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和 【5】 3種。
解析: 數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶(hù)與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶(hù)與數(shù)據(jù)庫(kù)之間的一個(gè)標(biāo)準(zhǔn)接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關(guān)系模型。
(6)設(shè)y是int型,請(qǐng)寫(xiě)出y為奇數(shù)的關(guān)系表達(dá)式 【6】 。
答案(y%2)==1
(7)設(shè)int a=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【7】 。
解析: 此表達(dá)式為三目運(yùn)算符,++a的值為6,b--的值為6,則整個(gè)表達(dá)式的值為++a的值,++a的值為7。請(qǐng)注意前綴++,--和后綴++,--的區(qū)別。
(8)下列程序的輸出結(jié)果是【8】。
maim ()
{char b []="Hello you";
b[5]=0;
printf ("%s\n",b);}
解析: 語(yǔ)句b[5]=0;相當(dāng)于語(yǔ)句b[5]=′\0′,且′\0′為字符串結(jié)束標(biāo)志,輸出時(shí)遇到′\0′就停止輸出。
(9)當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳遞的是【9】。
解析: 在函數(shù)中,可以通過(guò)指針變量來(lái)引用調(diào)用函數(shù)中對(duì)應(yīng)的數(shù)組元素,此操作是通過(guò)傳遞數(shù)組的首地址來(lái)實(shí)現(xiàn)。
(10)以下程序的輸出結(jié)果是【10】。
int a=1234;
printf ("%2d\n",a);
解析: 在%與格式符之間插入一個(gè)整形數(shù)來(lái)指這輸出寬度,并不影響數(shù)據(jù)的完整性,當(dāng)插入的寬度小于實(shí)際的寬度時(shí),則實(shí)際的寬度輸出。
(11) 用高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)為【11】程序,它可以通過(guò)解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過(guò)編譯程序一次翻譯產(chǎn)生目標(biāo)程序,然后執(zhí)行。
解析: 用高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,源程序不能在計(jì)算機(jī)上直接運(yùn)行,運(yùn)行源程序有兩種方式:一種是通過(guò)解釋程序,對(duì)源程序逐句解釋執(zhí)行;另一種是先讓編譯程序?qū)⒃闯绦蛞淮畏g產(chǎn)生目標(biāo)程序(目標(biāo)程序是計(jì)算機(jī)可直接執(zhí)行的機(jī)器語(yǔ)言程序,它是一種二進(jìn)制代碼程序),然后執(zhí)行目標(biāo)程序。
(12) 以下程序的輸出結(jié)果是【12】。
main()
{int a=0;
a+=(a=8);
printf("%d\n",a);}
解析: 賦值表達(dá)式的值就是所賦值變量的值,本題中a+=8相當(dāng)于a=a+8,對(duì)表達(dá)式逐步進(jìn)行求解:
a+=(a=8)此時(shí),a的值由于賦值為8,而不是0
a+=8
a=a+8
a=16
【14】=s;}
解析: C語(yǔ)言中實(shí)參變量和形參變量的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指變量的值。
(14)函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個(gè)正數(shù)且要求m>n。
例如:m=12,n=8時(shí),運(yùn)行結(jié)果應(yīng)該是495.000000。請(qǐng)?jiān)陬}目的空白處填寫(xiě)適當(dāng)?shù)某绦蛘Z(yǔ)句,將該程序補(bǔ)充完整。
#include
#include
float fun (int m, int n)
{ int i;
double p=1.0;
for(i=1;i<=m;i++)【15】;
for(i=1;i<=n;i++)【16】;
for(i=1;i<=m-n;i++)p=p/i;
return p;}
main ()
{ clrscr();
printf ("p=%f\n",fun (12,8));}
解析:本題中,欲求p的值,需要先求m,n,m-n的階乘值,可用循環(huán)語(yǔ)句實(shí)現(xiàn)。
(15)該程序運(yùn)行的結(jié)果是【17】。
#include
#include
#define M 100
void fun(int m, int *a, int *n)
{ int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;}
main()
{ int aa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k if((k+1)%20==0)printf("\n");
else printf("%4d",aa[k]);
printf("\n");}
解析: 解答本題的關(guān)鍵是要讀懂程序,試題要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語(yǔ)言中的“或”的區(qū)別,但在此處,if條件語(yǔ)句中用了“||”運(yùn)算符,若要找能同時(shí)被7和11整除的所有整數(shù)則在if()中應(yīng)用“&&”運(yùn)算符。
當(dāng)然,如果m的值輸入50,即表達(dá)式fun(10,aa,&n);為fun(50,aa,&n);時(shí)輸入結(jié)果為:7 11 14 21 22 28 33 35 42 44 49。
(16)下列程序的功能是:求出ss所指字符串中指定字符的個(gè)數(shù),并返回此值。
例如,若輸入字符串123412132,輸入字符1,則輸出3,請(qǐng)?zhí)羁铡?BR> #include
#include
#define M 81
int fun(char *ss, char c)
{ int i=0;
for(; 【18】;ss++)
if(*ss==c)i++;
return i;}
main()
{ char a[M], ch;
clrscr();
printf("\nPlease enter a string: "); gets(a);
printf("\nPlease enter a char: "); ch=getchar();
printf("\nThe number of the char is: %d\n", fun(a,ch));}
解析: 從字符串ss中找出子字符串的方法是:從第1個(gè)字符開(kāi)始,對(duì)字符串進(jìn)行遍歷;若ss串的當(dāng)前字符等于t串的第1個(gè)字符,兩字符串的指針自動(dòng)加1,繼續(xù)比較下一個(gè)字符;若比較至字符串的結(jié)尾,則跳出循環(huán);若ss串的字符和c串的字符對(duì)應(yīng)不同,繼續(xù)對(duì)ss串的下一個(gè)字符進(jìn)行處理。本程序是采用逐一比較的方式找出出現(xiàn)的次數(shù)。循環(huán)的作用是在串中從左到右逐一走動(dòng),if()的作用是進(jìn)行判斷是否相同,若與c相同則表示又出現(xiàn)一次。
(17)下面程序把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個(gè)名為bi.dat的新文件中,請(qǐng)?zhí)羁铡?BR> #include "stdio.h"
FILE *fp;
{ char ch;
if((fp=fopen(【19】))==NULL)exit(0);
while((ch=getchar( ))!='@')fputc (ch,fp);
fclose(fp);}
解析: fopen函數(shù)的調(diào)用方式通常為:
FILE *fp
fp=fopen(文件名,使用文件方式);
(18)設(shè)有如下宏定義
#define MYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通過(guò)宏調(diào)用實(shí)現(xiàn)變量a,b內(nèi)容交換,請(qǐng)?zhí)羁铡?BR> float a=5,b=16,c;
MYSWAP(【20】,a,b);
解析: 該題考查兩個(gè)知識(shí)點(diǎn):
(1)用一個(gè)指定的標(biāo)識(shí)符(即名字)來(lái)代表一個(gè)字符串,它的一般形式為#define 標(biāo)識(shí)符 字符串
(2)在MYSWAP宏定義中,利用中間變量z來(lái)交換x和y的值,所以要實(shí)現(xiàn)a和b的交換,只需通過(guò)中間變量即可,所以,此處應(yīng)填c。
選擇題
01-05 C D B D D
06-10 C D C C B
11-15 C A B B B
16-20 A B B B A
21-25 C C S D B
26-30 D B D B C
31-35 A D C C A
36-40 C A A A D
41-45 C A B B A
46-50 B D D B D
A)都是先進(jìn)先出
B)都是先進(jìn)后出
C)只允許在端點(diǎn)處插入和刪除元素
D)沒(méi)有共同點(diǎn)
(2)已知二叉樹(shù)后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是
A)acbed
B)decab
C)deabc
D)cedba
(3)鏈表不具有的特點(diǎn)是
A)不必事先估計(jì)存儲(chǔ)空間
B)可隨機(jī)訪(fǎng)問(wèn)任一元素
C)插入刪除不需要移動(dòng)元素
D)所需空間與線(xiàn)性表長(zhǎng)度成正比
(4)結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是
A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B)分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C)多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)
D)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
(5)為了提高測(cè)試的效率,應(yīng)該
A)隨機(jī)選取測(cè)試數(shù)據(jù)
B)取一切可能的輸入數(shù)據(jù)作為測(cè)試數(shù)據(jù)
C)在完成編碼以后制定軟件的測(cè)試計(jì)劃
D)集中對(duì)付那些錯(cuò)誤群集的程序
(6)算法的時(shí)間復(fù)雜度是指
A)執(zhí)行算法程序所需要的時(shí)間
B)算法程序的長(zhǎng)度
C)算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)
D)算法程序中的指令條數(shù)
(7)軟件生命周期中所花費(fèi)用最多的階段是
A)詳細(xì)設(shè)計(jì)
B)軟件編碼
C)軟件測(cè)試
D)軟件維護(hù)
(8)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS中用來(lái)定義模式、內(nèi)模式和外模式的語(yǔ)言為
A)C
B)Basic
C)DDL
D)DML
(9)下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是
A)數(shù)據(jù)庫(kù)是一個(gè)DBF文件
B)數(shù)據(jù)庫(kù)是一個(gè)關(guān)系
C)數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合
D)數(shù)據(jù)庫(kù)是一組文件
(10)下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是
A)數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過(guò)程
B)數(shù)據(jù)的物理獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時(shí),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不變
C)關(guān)系中的每一列稱(chēng)為元組,一個(gè)元組就是一個(gè)字段
D)如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個(gè)關(guān)系的關(guān)鍵字,則稱(chēng)其為本關(guān)系的外關(guān)鍵字
(11)以下敘述中正確的是
A)C語(yǔ)言比其他語(yǔ)言高級(jí)
B)C語(yǔ)言可以不用編譯就能被計(jì)算機(jī)識(shí)別執(zhí)行
C)C語(yǔ)言以接近英語(yǔ)國(guó)家的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言作為語(yǔ)言的表達(dá)形式
D)C語(yǔ)言出現(xiàn)的最晚,具有其他語(yǔ)言的一切優(yōu)點(diǎn)
(12)C語(yǔ)言中用于結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是
A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
B)if,switch,break
C)for,while,do-while
D)if,for,continue
(13)C語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類(lèi)型包括
A)整型、實(shí)型、邏輯型
B)整型、實(shí)型、字符型
C)整型、字符型、邏輯型
D)字符型、實(shí)型、邏輯型
(14)若變量已正確定義并賦值,以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是
A)a:=b+1
B)a=b=c+2
C)int 18.5%3
D)a=a+7=c+b
(15)下列可用于C語(yǔ)言用戶(hù)標(biāo)識(shí)符的一組是
A)void, define, WORD
B)a3_b3, _123,Car
C)For, -abc, IF Case
D)2a, DO, sizeof
(16)C語(yǔ)言中運(yùn)算對(duì)象必須是整型的運(yùn)算符是
A)%=
B)/
C)=
D)<=
(17)若變量a,i已正確定義,且i已正確賦值,合法的語(yǔ)句是
A)a= =1
B)++i;
C)a=a++=5;
D)a=int(i);
(18)已知
int t=0;
while (t=1)
{...}
則以下敘述正確的是
A)循環(huán)控制表達(dá)式的值為0
B)循環(huán)控制表達(dá)式的值為1
C)循環(huán)控制表達(dá)式不合法
D)以上說(shuō)法都不對(duì)
(19)若變量已正確說(shuō)明為float型,要通過(guò)語(yǔ)句scanf("%f%f%f",&a,&b,&c);給a賦予10.0,b賦予22.0,c賦予33.0,下列不正確的輸入形式是
A)10<回車(chē)>22<回車(chē)>33<回車(chē)>
B)10.0,22.0,33.0<回車(chē)>
C)10.0<回車(chē)>22.033.0<回車(chē)>
D)10 22<回車(chē)>33<回車(chē)>
(20)有如下程序:
main()
{
int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf("a=%d,b=%d\n",a,b);}
該程序的輸出結(jié)果是
A)a=2,b=1
B)a=1,b=1
C)a=1,b=0
D)a=2,b=2
(21)有以下程序
main()
{int i=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
執(zhí)行后輸出結(jié)果是
A)1,1,2
B)2,2,1
C)2,2,2
D)2,2,3
(22)有如下程序
main()
{float x=2.0,y;
if(x<0.0)y=0.0;
else if(x<10.0)y=1.0/x;
else y=1.0;
printf("%f\n",y);}
該程序的輸出結(jié)果是
A)0.000000
B)0.250000
C)0.500000
D)1.000000
(23)有如下程序:
main()
{int n=9;
while(n>6){n--; printf("%d",n);}
}
該程序的輸出結(jié)果是
A)987
B)876
C)8765
D)9876
(24)在下列選項(xiàng)中,沒(méi)有構(gòu)成死循環(huán)的是
A)int i=100;
while(1)
{i=i%100+1;
if(i>100)break;
}
B)for(;;);
C)int k=10000;
do{k++;}while(k>10000);
D)int s=36;
while(s)--s;
(25)設(shè)int x=1,y=1;表達(dá)式(!x||y--)的值是
A)0
B)1
C)2
D)-1
(26)若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是
A)函數(shù)調(diào)用可以作為獨(dú)立的語(yǔ)句存在
B)函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參
C)函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D)函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參
(27)有以下程序
float fun(int x,int y)
{return(x+y);}
main()
{int a=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序運(yùn)行后的輸出結(jié)果是
A)編譯出錯(cuò)
B)9
C)21
D)9.0
(28)若有以下調(diào)用語(yǔ)句,則不正確的fun函數(shù)的首部是
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
A)void fun(int m, int x[])
B)void fun(int s, int h[41])
C)void fun(int p, int *s)
D)void fun(int n, int a)
(29)fseek函數(shù)的正確調(diào)用形式是
A)fseek(文件指針,起始點(diǎn),位移量)
B)fseek(文件指針,位移量,起始點(diǎn))
C)fseek(位移量,起始點(diǎn),文件指針)
D)fseek(起始點(diǎn),位移量,文件指針)
(30)若fp是指向某文件的指針,且已讀到文件末尾,則函數(shù)feof(fp)的返回值是
A)EOF
B)-1
C)1
D)NULL
(31)若有說(shuō)明語(yǔ)句:char c='\72';則變量c
A)包含1個(gè)字符
B)包含2個(gè)字符
C)包含3個(gè)字符
D)說(shuō)明不合法,c的值不確定
(32)若有說(shuō)明 int a[3][4];則a數(shù)組元素的非法引用是
A)a[0][2*1]
B)a[1][3]
C)a[4-2][0
]
D)a[0][4](33)設(shè)有以下說(shuō)明語(yǔ)句
struct stu
{int a;
float b;
} stutype;
則下面的敘述不正確的是
A)struct是結(jié)構(gòu)體類(lèi)型的關(guān)鍵字
B)struct stu是用戶(hù)定義的結(jié)構(gòu)體類(lèi)型
C)stutype是用戶(hù)定義的結(jié)構(gòu)體類(lèi)型名
D)a和b都是結(jié)構(gòu)體成員名
(34)在C語(yǔ)言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類(lèi)型允許是
A)整型常量
B)整型表達(dá)式
C)整型常量或整型表達(dá)式
D)任何類(lèi)型的表達(dá)式
(35)若運(yùn)行時(shí)給變量x輸入12,則以下程序的運(yùn)行結(jié)果是
main()
{int x,y;
scanf("%d",&x);
y=x>12?x+10:x-12;
printf("%d\n",y);
}
A)0
B)22
C)12
D)10(
(36)以下說(shuō)法正確的是
A)C語(yǔ)言程序總是從第一個(gè)的函數(shù)開(kāi)始執(zhí)行
B)在C語(yǔ)言程序中,要調(diào)用函數(shù)必須在main()函數(shù)中定義
C)C語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行
D)C語(yǔ)言程序中的main()函數(shù)必須放在程序的開(kāi)始部分
(37)表達(dá)式0x13^0x17的值是
A)0x04
B)0x13
C)0xE8
D)0x17
(38)有以下程序
#define F(X,Y)(X)*(Y)
main()
{int a=3, b=4;
printf("%d\n", F(a++, b++));
}
程序運(yùn)行后的輸出結(jié)果是
A)12
B)15
C)16
D)20
(39)下列程序執(zhí)行后的輸出結(jié)果是
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{int a,b[5];
a=0; b[0]=3;
func(&a,b); printf("%d\n",b[0]);
}
A)6
B)7
C)8
D)9
(40)若有下面的程序段:
char s[]="china";char *p; p=s;
則下列敘述正確的是
A)s和p完全相同
B)數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等
C)s數(shù)組長(zhǎng)度和p所指向的字符串長(zhǎng)度相等
D)*p與s[0]相等
(41) 以下程序中函數(shù)sort的功能是對(duì)a數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序
void sort(int a[],int n)
{int i,j,t;
for(i=0;i
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序運(yùn)行后的輸出結(jié)果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
(42) 以下程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{struct date
{int year,month,day;}today;
printf("%d\n",sizeof(struct date));
}
A)6
B)8
C)10
D)12
(43)若有語(yǔ)句int *point,a=4;和 point=&a;下面均代表地址的一組選項(xiàng)是
A)a,point,*&a
B)&*a,&a,*point
C)*&point,*point,&a
D)&a,&*point,point
(44)在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單的變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是
A)地址傳遞
B)單向值傳遞
C)由實(shí)參傳形參,再由形參傳實(shí)參
D)傳遞方式由用戶(hù)指定
(45)已定義以下函數(shù)
fun(char *p2, char *p1)
{
while((*p2=*p1)!='\0'){p1++;p2++;}
}
函數(shù)的功能是
A)將p1所指字符串復(fù)制到p2所指內(nèi)存空間
B)將p1所指字符串的地址賦給指針p2
C)對(duì)p1和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
D)檢查p1和p2兩個(gè)指針?biāo)缸址惺欠裼?\0'
(46)若執(zhí)行下述程序時(shí),若從鍵盤(pán)輸入6和8時(shí),結(jié)果為
main()
{int a,b,s;
scanf("%d%d",&a,&b);
s=a
if(a s=b;
s*=s;
printf("%d",s);
}
A)36
B)64
C)48
D)以上都不對(duì)
(47)fscanf函數(shù)的正確調(diào)用形式是
A)fscanf(fp,格式字符串,輸出表列);
B)fscanf(格式字符串,輸出表列,fp);
C)fscanf(格式字符串,文件指針,輸出表列);
D)fscanf(文件指針,格式字符串,輸入表列);
(48)下列關(guān)于C語(yǔ)言數(shù)據(jù)文件的敘述中正確的是
A)文件由ASCII碼字符序列組成,C語(yǔ)言只能讀寫(xiě)文本文件
B)文件由二進(jìn)制數(shù)據(jù)序列組成,C語(yǔ)言只能讀寫(xiě)二進(jìn)制文件
C)文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
D)文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
(49)有以下程序
void ss(char *s,char t)
{while(*s)
{if(*s= =t)*s=t-'a'+'A';
s++;
}
}
main()
{char str1[100]="abcddfefdbd",c='d';
ss(str1,c); printf("%s\n",str1);
}
程序運(yùn)行后的輸出結(jié)果是
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd 二、填空題
(1)算法的基本特征是可行性、確定性、 【1】 和擁有足夠的情報(bào)。
解析: 算法是指解題方案的準(zhǔn)確而完整的描述。它有4個(gè)基本特征,分別是可行性、確定性、有窮性和擁有足夠的情報(bào)。
(2)在長(zhǎng)度為n的有序線(xiàn)性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為 【2】 。
解析: 對(duì)于長(zhǎng)度為n的有序線(xiàn)性表,在最壞情況下,二分查找只需要比較log2n次,而順序查找需要比較n次。
(3)在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類(lèi)描述的是具有相似性質(zhì)的一組 【3】 。
解析: 將屬性、操作相似的對(duì)象歸為類(lèi),也就是說(shuō),類(lèi)是具有共同屬性、共同方法的對(duì)象的集合。
(4)通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過(guò)程稱(chēng)為 【4】 。
解析: 軟件產(chǎn)品從考慮其概念開(kāi)始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、交付使用以及維護(hù)等活動(dòng)。
(5)數(shù)據(jù)庫(kù)管理系統(tǒng)常見(jiàn)的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和 【5】 3種。
解析: 數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶(hù)與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶(hù)與數(shù)據(jù)庫(kù)之間的一個(gè)標(biāo)準(zhǔn)接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關(guān)系模型。
(6)設(shè)y是int型,請(qǐng)寫(xiě)出y為奇數(shù)的關(guān)系表達(dá)式 【6】 。
答案(y%2)==1
(7)設(shè)int a=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【7】 。
解析: 此表達(dá)式為三目運(yùn)算符,++a的值為6,b--的值為6,則整個(gè)表達(dá)式的值為++a的值,++a的值為7。請(qǐng)注意前綴++,--和后綴++,--的區(qū)別。
(8)下列程序的輸出結(jié)果是【8】。
maim ()
{char b []="Hello you";
b[5]=0;
printf ("%s\n",b);}
解析: 語(yǔ)句b[5]=0;相當(dāng)于語(yǔ)句b[5]=′\0′,且′\0′為字符串結(jié)束標(biāo)志,輸出時(shí)遇到′\0′就停止輸出。
(9)當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳遞的是【9】。
解析: 在函數(shù)中,可以通過(guò)指針變量來(lái)引用調(diào)用函數(shù)中對(duì)應(yīng)的數(shù)組元素,此操作是通過(guò)傳遞數(shù)組的首地址來(lái)實(shí)現(xiàn)。
(10)以下程序的輸出結(jié)果是【10】。
int a=1234;
printf ("%2d\n",a);
解析: 在%與格式符之間插入一個(gè)整形數(shù)來(lái)指這輸出寬度,并不影響數(shù)據(jù)的完整性,當(dāng)插入的寬度小于實(shí)際的寬度時(shí),則實(shí)際的寬度輸出。
(11) 用高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)為【11】程序,它可以通過(guò)解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過(guò)編譯程序一次翻譯產(chǎn)生目標(biāo)程序,然后執(zhí)行。
解析: 用高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,源程序不能在計(jì)算機(jī)上直接運(yùn)行,運(yùn)行源程序有兩種方式:一種是通過(guò)解釋程序,對(duì)源程序逐句解釋執(zhí)行;另一種是先讓編譯程序?qū)⒃闯绦蛞淮畏g產(chǎn)生目標(biāo)程序(目標(biāo)程序是計(jì)算機(jī)可直接執(zhí)行的機(jī)器語(yǔ)言程序,它是一種二進(jìn)制代碼程序),然后執(zhí)行目標(biāo)程序。
(12) 以下程序的輸出結(jié)果是【12】。
main()
{int a=0;
a+=(a=8);
printf("%d\n",a);}
解析: 賦值表達(dá)式的值就是所賦值變量的值,本題中a+=8相當(dāng)于a=a+8,對(duì)表達(dá)式逐步進(jìn)行求解:
a+=(a=8)此時(shí),a的值由于賦值為8,而不是0
a+=8
a=a+8
a=16
【14】=s;}
解析: C語(yǔ)言中實(shí)參變量和形參變量的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指變量的值。
(14)函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個(gè)正數(shù)且要求m>n。
例如:m=12,n=8時(shí),運(yùn)行結(jié)果應(yīng)該是495.000000。請(qǐng)?jiān)陬}目的空白處填寫(xiě)適當(dāng)?shù)某绦蛘Z(yǔ)句,將該程序補(bǔ)充完整。
#include
#include
float fun (int m, int n)
{ int i;
double p=1.0;
for(i=1;i<=m;i++)【15】;
for(i=1;i<=n;i++)【16】;
for(i=1;i<=m-n;i++)p=p/i;
return p;}
main ()
{ clrscr();
printf ("p=%f\n",fun (12,8));}
解析:本題中,欲求p的值,需要先求m,n,m-n的階乘值,可用循環(huán)語(yǔ)句實(shí)現(xiàn)。
(15)該程序運(yùn)行的結(jié)果是【17】。
#include
#include
#define M 100
void fun(int m, int *a, int *n)
{ int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;}
main()
{ int aa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k
else printf("%4d",aa[k]);
printf("\n");}
解析: 解答本題的關(guān)鍵是要讀懂程序,試題要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語(yǔ)言中的“或”的區(qū)別,但在此處,if條件語(yǔ)句中用了“||”運(yùn)算符,若要找能同時(shí)被7和11整除的所有整數(shù)則在if()中應(yīng)用“&&”運(yùn)算符。
當(dāng)然,如果m的值輸入50,即表達(dá)式fun(10,aa,&n);為fun(50,aa,&n);時(shí)輸入結(jié)果為:7 11 14 21 22 28 33 35 42 44 49。
(16)下列程序的功能是:求出ss所指字符串中指定字符的個(gè)數(shù),并返回此值。
例如,若輸入字符串123412132,輸入字符1,則輸出3,請(qǐng)?zhí)羁铡?BR> #include
#include
#define M 81
int fun(char *ss, char c)
{ int i=0;
for(; 【18】;ss++)
if(*ss==c)i++;
return i;}
main()
{ char a[M], ch;
clrscr();
printf("\nPlease enter a string: "); gets(a);
printf("\nPlease enter a char: "); ch=getchar();
printf("\nThe number of the char is: %d\n", fun(a,ch));}
解析: 從字符串ss中找出子字符串的方法是:從第1個(gè)字符開(kāi)始,對(duì)字符串進(jìn)行遍歷;若ss串的當(dāng)前字符等于t串的第1個(gè)字符,兩字符串的指針自動(dòng)加1,繼續(xù)比較下一個(gè)字符;若比較至字符串的結(jié)尾,則跳出循環(huán);若ss串的字符和c串的字符對(duì)應(yīng)不同,繼續(xù)對(duì)ss串的下一個(gè)字符進(jìn)行處理。本程序是采用逐一比較的方式找出出現(xiàn)的次數(shù)。循環(huán)的作用是在串中從左到右逐一走動(dòng),if()的作用是進(jìn)行判斷是否相同,若與c相同則表示又出現(xiàn)一次。
(17)下面程序把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個(gè)名為bi.dat的新文件中,請(qǐng)?zhí)羁铡?BR> #include "stdio.h"
FILE *fp;
{ char ch;
if((fp=fopen(【19】))==NULL)exit(0);
while((ch=getchar( ))!='@')fputc (ch,fp);
fclose(fp);}
解析: fopen函數(shù)的調(diào)用方式通常為:
FILE *fp
fp=fopen(文件名,使用文件方式);
(18)設(shè)有如下宏定義
#define MYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通過(guò)宏調(diào)用實(shí)現(xiàn)變量a,b內(nèi)容交換,請(qǐng)?zhí)羁铡?BR> float a=5,b=16,c;
MYSWAP(【20】,a,b);
解析: 該題考查兩個(gè)知識(shí)點(diǎn):
(1)用一個(gè)指定的標(biāo)識(shí)符(即名字)來(lái)代表一個(gè)字符串,它的一般形式為#define 標(biāo)識(shí)符 字符串
(2)在MYSWAP宏定義中,利用中間變量z來(lái)交換x和y的值,所以要實(shí)現(xiàn)a和b的交換,只需通過(guò)中間變量即可,所以,此處應(yīng)填c。
選擇題
01-05 C D B D D
06-10 C D C C B
11-15 C A B B B
16-20 A B B B A
21-25 C C S D B
26-30 D B D B C
31-35 A D C C A
36-40 C A A A D
41-45 C A B B A
46-50 B D D B D