一、選擇題
(1)下列敘述中正確的是
A)線性表是線性結(jié)構(gòu)
B)棧與隊(duì)列是非線性結(jié)構(gòu)
C)線性鏈表是非線性結(jié)構(gòu)
D)二叉樹是線性結(jié)構(gòu)
(2)非空的循環(huán)單鏈表head的尾結(jié)點(diǎn)(由p所指向),滿足
A)p->next==NULL
B)p==NULL
C)p->next=head
D)p=head
(3)已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是
A)堆排序
B)直接插入排序
C)快速排序
D)直接選擇排序
(4)對(duì)建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是
A)程序應(yīng)簡(jiǎn)單、清晰、可讀性好
B)符號(hào)名的命名只要符合語法
C)充分考慮程序的執(zhí)行效率
D)程序的注釋可有可無
(5)下列不屬于結(jié)構(gòu)化分析的常用工具的是
A)數(shù)據(jù)流圖
B)數(shù)據(jù)字典
C)判定樹
D)PAD圖
(6)在軟件生產(chǎn)過程中,需求信息的給出是
A)程序員
B)項(xiàng)目管理者
C)軟件分析設(shè)計(jì)人員
D)軟件用戶
(7)下列工具中為需求分析常用工具的是
A)PAD
B)PFD
C)N-S
D)DFD
(8)NULL是指
A)0
B)空格
C)未知的值或無任何值
D)空字符串
(9)數(shù)據(jù)庫的故障恢復(fù)一般是由
A)數(shù)據(jù)流圖完成的
B)數(shù)據(jù)字典完成的
C)DBA完成的
D)PAD圖完成的
(10)下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是
A)數(shù)據(jù)結(jié)構(gòu)
B)數(shù)據(jù)操作
C)數(shù)據(jù)查詢
D)數(shù)據(jù)約束
(11)C語言程序的基本單位是
A)程序行
B)語句
C)函數(shù)
D)字符
(12)下面四個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是
A)160 -0xffff 011
B)-0xcdf 01a 0xe
C)-01 986,012 0668
D)-0x48a 2e5 0x
(13)以下選項(xiàng)中合法的用戶標(biāo)識(shí)符是
A)long
B)_2Test
C)3Dmax
D)A.dat
(14)假定x和y為double型,則表達(dá)式x=2,y=x+3/2的值是
A)3.500000
B)3
C)2.000000
D)3.000000
(15)以下變量x,y,z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子x÷y÷z的C語言表達(dá)式是
A)x/y*z
B)x*(1/(y*z))
C)x/y*1/z
D)x/y/z
(16)設(shè)x,y,t均為int型變量,執(zhí)行語句:
x=y=3;
t=++x||++y;
完成后,y的值為
A)不確定
B)4
C)3
D)1
(17)已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項(xiàng)中正確的輸入語句是
A)scanf("%2d,%2d,%2d", i, j, k);
B)scanf("%d %d %d",&i,&j,&k);
C)scanf("%d,%d,%d",&i,&j,&k);
D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
(18)若變量已正確定義并賦值,下面符合C語言語法的表達(dá)式是
A)m∶=5
B)c=b=a=1
C)float 8%5
D)x+5=y+2
(19)下列程序運(yùn)行的結(jié)果是
main()
{float x;
int i;
x=3.6;
i=(int)x;
printf("x=%f,i=%d ",x,i);
}
A)x=3.600000,i=3
B)x=3.6,i=3
C)x=3,i=3
D)x=3.600000,i=3.000000
(20)若執(zhí)行下面的程序時(shí),從鍵盤上輸入5和2,則輸出結(jié)果是
main()
{ int a,b,k;
scanf("%d,%d ",&a,&b);
k=a;
if(a
else k=b%a;
printf("%d\n ",k);
}
A)5
B)3
C)2
D)0
(21)C語言中 while 和do-while循環(huán)的主要區(qū)別是
A)do-while的循環(huán)體至少無條件執(zhí)行一次
B)while的循環(huán)控制條件比do-while的循環(huán)控制條件更嚴(yán)格
C)do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)
D)do-while 的循環(huán)體不能是復(fù)合語句
(22)以下程序的輸出結(jié)果是
main()
{ int x=1,y=3;
printf("%d,",x++);
{ int x=0;x+=y*2;
printf("%d,%d, ",x,y);
}
printf("%d,%d\n",x,y);
}
A)1,6,3,1,3
B)1,6,3,6,3
C)1,6,3,2,3
D)1,7,3,2,3
(23)下面程序輸出的結(jié)果是
main()
{ int i;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d ",a[2-i][i]);
}
A)1 5 9
B)7 5 3
C)3 5 7
D)5 9 1
(24)請(qǐng)閱讀以下程序:
main()
{ int a=5,b=0,c=0;
if(a=b+c)printf("***\n");
else printf("$$$\n");
}
以上程序
A)有語法錯(cuò)不能通過編譯
B)可以通過編譯但不能通過連接
C)輸出***
D)輸出$$$
(25)以下程序的輸出結(jié)果是
main()
{ char c=′z′;
printf("%c",c-25);
}
A)a
B)Z
C)z-25
D)y
(26)下面函數(shù)的功能是
char *fun(char *str1,char*str2)
{while((*str1)&&(*str2++=*str1++));
return str2;
}
A)求字符串的長(zhǎng)度
B)比較兩個(gè)字符串的大小
C)將字符串str1復(fù)制到字符串str2中
D)將字符串str1接續(xù)到字符串str2中
(27)下面函數(shù)調(diào)用語句含有實(shí)參的個(gè)數(shù)為
func((exp1,exp2),(exp3,exp4,exp5));
A)1
B)2
C)4
D)5
(28)下面程序段的運(yùn)行結(jié)果是
char *s="abcde";
s+=2;printf("%d",s);
A)cde
B)字符′c′
C)字符′c′的地址
D)無確定的輸出結(jié)果
(29)已有變量定義和函數(shù)調(diào)用語句:int a=25;print_value(&a);下面函數(shù)的正確輸出結(jié)果是
void print_value(int *x)
{printf("%d\n",++*x);}
A)23
B)24
C)25
D)26
(30)當(dāng)順利執(zhí)行了文件關(guān)閉操作時(shí),fclose函數(shù)的返回值是
A)-1
B)TRUE
C)0
D)1
(31)設(shè)有如下定義
char *s[2]={ "abcd","ABCD"};
則下列說法錯(cuò)誤的是
A)s數(shù)組元素的值分別是"abcd"和"ABCD"兩個(gè)字符串的首地址
B)s是指針數(shù)組名,它含有兩個(gè)元素分別指向字符型一維數(shù)組
C)s數(shù)組的兩個(gè)元素分別存放的是含有4個(gè)字符的一維字符數(shù)組中的元素
D)s數(shù)組的兩個(gè)元素中分別存放了字符′a′和′A′的地址
(32)以下不能對(duì)二維數(shù)組a進(jìn)行正確初始化的語句是
A)int a[2][3]={0};
B)int a[][3]={{1,2},{0}};
C)int a[2][3]={{1,2},{3,4},{5,6}};
D)int a[][3]={1,2,3,4,5,6};
(33)有以下程序
struct STU
{ char num[10]; float score[3]; };
main()
{struct STU s[3]={{"20021",90,95,85},
{"20022",95,80,75},
{ "20023",100,95,90},
},*p=s;
int i; float sum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序運(yùn)行后的輸出結(jié)果是
A)260.00
B)270.00
C)280.00
D)285.00
(34)若有說明:int a[10];則對(duì)a數(shù)組元素的正確引用是
A)a[10]
B)a[3,5]
C)a(5)
D)a[10-10]
(35)下面程序段中,輸出*的個(gè)數(shù)是
char *s="\ta\018bc";
for(;*s!=′\0′;s++)printf("*");
A)9
B)5
C)6
D)7
(36)設(shè)有如下函數(shù)
fun (float x)
{
printf("\n%d",x*x);}
則函數(shù)的類型是
A)與參數(shù)x的類型相同
B)是void
C)是int型
D)無法確定
(37)有如下定義
#define D 2
int x=5;float y=3.83;
char c=′D′;
則下面選項(xiàng)中錯(cuò)誤的是
A)x++;
B)y++;
C)c++;
D)D++;
(38)以下程序段的執(zhí)行結(jié)果為
#define PLUS(X,Y)X+Y
main()
{ int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);
}
A)SUM=9
B)SUM=12
C)SUM=18
D)SUM=28
(39)C語言規(guī)定,函數(shù)返回值的類型是由
A)return語句中的表達(dá)式類型所決定
B)調(diào)用該函數(shù)時(shí)的主調(diào)函數(shù)類型所決定
C)調(diào)用該函數(shù)時(shí)系統(tǒng)臨時(shí)決定
D)在定義該函數(shù)時(shí)所指定的函數(shù)類型所決定
(40)下列程序的運(yùn)行結(jié)果是
void fun(int *a,int *b)
{ int *k;
k=a;a=b;b=k;
}
main()
{ int a=2004, b=9,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
A)2004 9
B)9 2004
C)0 0
D)編譯時(shí)出錯(cuò)
(41)下列程序是用來判斷數(shù)組中特定元素的位置所在。如果輸入如下整數(shù):
876 675 896 101 301 401 980 431 451 777
#include
#include
int fun(int *s, int t, int *k)
{ int i;
*k=0;
for(i=0;i
if(s[*k]
return s[*k];
}
main()
{
int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a, 10, &k);
printf("%d, %d\n ", k, a[k]);
}
則輸出結(jié)果為
A)7,431
B)6
C)980
D)6,980
(42) C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間
A)所有成員一直駐留在內(nèi)存中
B)只有一個(gè)成員駐留在內(nèi)存中
C)部分成員駐留在內(nèi)存中
D)沒有成員駐留在內(nèi)存中
(43)下面程序應(yīng)能對(duì)兩個(gè)整型變量的值進(jìn)行交換。以下正確的說法是
main()
{int a=10,b=20;
printf("(1)a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("(2)a=%d,b=%d\n",a,b);
}
swap(int p,int q)
{int t;
t=p;p=q;q=t;
}
A)該程序完全正確
B)該程序有錯(cuò),只要將語句swap(&a,&b);中的參數(shù)改為a,b即可
C)該程序有錯(cuò),只要將swap()函數(shù)中的形參p和q以及t均定義為指針(執(zhí)行語句不變)即可
D)以上說法都不對(duì)
(44)有以下程序
#include
main()
{ char *p,*q;
p=(char *)malloc(sizeof(char)*20); q=p;
scanf("%s %s",p,q); printf("%s %s\n",p,q);
}
若從鍵盤輸入:abc def<回車>,則輸出結(jié)果是
A)def def
B)abc def
C)abc d
D)d d
(45)以下程序的輸出結(jié)果是
int f()
{ static int i=0;
int s=1;
s+=i; i++;
return s;
}
main()
{ int i,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);
}
A)20
B)24
C)25
D)15
(46)已知 int a=1,b=3則a^b的值為
A)3
B)1
C)2
D)4
(47)如果需要打開一個(gè)已經(jīng)存在的非空文件“Demo”進(jìn)行修改下面正確的選項(xiàng)是
A)fp=fopen("Demo","r");
B)fp=fopen("Demo","ab+");
C)fp=fopen("Demo","w+");
D)fp=fopen("Demo","r+");
(48)若要打開A盤上user子目錄下名為abc.txt的文本文件進(jìn)行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是
A)fopen("A:\user\abc.txt","r")
B)fopen("A:\\user\\abc.txt","rt+")
C)fopen("A:\user\abc.txt","rb")
D)fopen("A:\user\abc.txt","w")
(49)有以下程序
#include
main()
{ char *p="abcde\0fghjik\0 ";
printf("%d\n ",strlen(p));
}
程序運(yùn)行后的輸出結(jié)果是
A)12
B)15
C)6
D)5
(50) 有以下程序
#include
struct NODE
{ int num; struct NODE *next; };
main()
{ struct NODE *p,*q,*r;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q;q->next=r;
printf("%d\n ",p->num+q->next->num);
}
程序運(yùn)行后的輸出結(jié)果是
A)10
B)20
C)30
D)40
二、填空題
(1)冒泡排序算法在最好的情況下的元素交換次數(shù)為 【1】 。
解析: 根據(jù)冒泡排序算法思想可知,若待排序的初始序列為“正序”序列,則只需進(jìn)行一趟排序,在排序過程中進(jìn)行n-1次關(guān)鍵字間的比較,且不移動(dòng)和交換記錄,這種情況是冒泡排序的最好情況,故冒泡排序算法在最好的情況下的元素交換次數(shù)為0。
(2)在最壞情況下,堆排序需要比較的次數(shù)為 【2】 。
答案:0(nlog2n)
(3)若串s="MathTypes",則其子串的數(shù)目是 【3】 。
解析: 串s************有9個(gè)字符,由于串中字符各不相同,則其子串中有0個(gè)字符的1個(gè)(空串),1個(gè)字符的9個(gè),2個(gè)字符的8個(gè),3個(gè)字符的7個(gè),4個(gè)字符的6個(gè),5個(gè)字符的5個(gè),6個(gè)字符的4個(gè),7個(gè)字符的3個(gè),8個(gè)字符的2個(gè),9個(gè)字符的1個(gè),共有1+2+3+4+5+6+7+8+9+1=46。
(4)軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的 【4】 集合。
答案:軟件工程
(5)關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以 【5】 為基礎(chǔ)的DML語言。
解析: 關(guān)系數(shù)據(jù)庫中的關(guān)系演算包括元組關(guān)系演算和域關(guān)系演算。二者都是由原子公式組成的公式。而這些關(guān)系演算都是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的。
(6)下列y的值是 【6】 。
int y; y=sizeof (2.25*4);
解析: sizeof (2.25*4)為sizeof (10.00)值為8,C語言規(guī)定浮點(diǎn)型常量當(dāng)雙精度處理(以IRM-PC機(jī)為例)。
(7)下列x的值是 【7】 。
int x;x=sizeof 2.25*4;
解析: sizeof運(yùn)算符高于算術(shù)運(yùn)算符,所以sizeof 2.25*4等價(jià)于(sizeof 2.25)*4為8×4=32(以IBM-PC機(jī)為例)。
(8)以下程序的輸出結(jié)果是 【8】 。
main ()
{int i=010,j=10;
pirntf ("%d,%d\n",i,j);
}
解析: 以0開頭的是八進(jìn)制數(shù)。
(9)下列程序的輸出結(jié)果為 【9】 。
main ()
{int x=3,y=5;
printf ("%d",x=(x--)*(--y));
}
解析: x--的值為3,--y的值為4;注意前綴--和后綴--的區(qū)別。
(10)以下程序的輸出結(jié)果是 【10】 。
fun (int x,int y,int z)
{ z =x*x+y*y;}
main ()
{int a=31;
fun (6,3,a)
printf ("%d", a)
}
解析: 在函數(shù)調(diào)用時(shí),形參值和改變,不能會(huì)改變實(shí)參的值。
(11)若有int a=1;int b=2;則a|b的值為 【11】 。
解析: 將a化成二進(jìn)數(shù)和制數(shù)是0001,b化成二進(jìn)制數(shù)為0010,|是或運(yùn)算符,a|b=0011即為3。
(12)已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)式ch=′a′+′8′-′3′的值為 【12】 。
解析: 在C語言中,整型,實(shí)型,字符型數(shù)據(jù)間可以混合運(yùn)算,在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后再進(jìn)行運(yùn)算。我們可以這樣計(jì)算本題,97+8-3=102,即102所對(duì)應(yīng)的字母為f。
(13)若從鍵盤輸入58,則以下程序輸出的結(jié)果是 【13】 。
main()
{int a;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
(14)下列程序的輸出的結(jié)果是 【14】 , 【15】 。
main()
{int i,j row,colum,m;
static int array[3][3]={{100,200,300},{28,72,-30}{-850,2,6}};
m=array[0][0];for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j]
{m=array[i][j];colum=j;row=i;}
printf("%d,%d,%d\n",m,row,colum);
}
解析: 兩個(gè)for循環(huán)是對(duì)數(shù)組元素進(jìn)行掃描,并找是數(shù)組中值最小的元素和它的位置。
(15)以下程序中,select 函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請(qǐng)?zhí)羁铡?/P>
#define N 3
#define M 3
select(int a[N][M],int *n)
{int i,j,row=1,colum=1;
for(i=0;i
for(j=0;j
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= 【16】 ;
return 【17】 ;
}
main()
{int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
解析: 本題中,首先假定a[1][1]為最大值,然后利用循環(huán)結(jié)構(gòu)將二維數(shù)組中的每個(gè)元素逐個(gè)與a[row][colum]進(jìn)行比較,如果比a[row][colum]的值大,則令a[row][colum]指向該元素,比較完后,row即是最大值所在的行,所以第1個(gè)空所在的行的語句應(yīng)是*n=row;,在第2個(gè)空中返回最大值,顯然,是a[row][colum]
(16)函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,否則返回s和t的第一個(gè)不同字符的ASCII碼差值,即s > t時(shí)返回正值,當(dāng)s < t時(shí)返回負(fù)值。請(qǐng)?zhí)羁铡?/P>
my_cmp(char *s, char *t)
{while (*s == *t)
{if (*s == ′\0′)return 0;
++s; ++t;
} return 【18】 ;
}
解析: 兩字符串大小比較必須從它們的首字符開始,在對(duì)應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時(shí),若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對(duì)字符。對(duì)應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時(shí),就以兩個(gè)當(dāng)前字符的差返回。所以在空框處應(yīng)填入*s-*t,保證在s > t時(shí)返回正值,當(dāng)s < t時(shí)返回負(fù)值。
(17)若有以下說明和定義語句,則變量w在內(nèi)存中所占的字節(jié)數(shù)是 【19】 。
union aa {float x; float y; char c[6]; };
struct st{ union aa v; float w[5]; double ave; } w;
解析: 共用型aa有3個(gè)成分,一個(gè)是float型成分x,一個(gè)是float型成分y,再一個(gè)是有6個(gè)元素的字符數(shù)組。若float 型數(shù)據(jù)占4個(gè)字節(jié),則類型aa 數(shù)據(jù)要占用6個(gè)字節(jié)。結(jié)構(gòu)變量w有3個(gè)成分,一個(gè)是共用型成分aa , 要占用6個(gè)字節(jié);一個(gè)是有5個(gè)float型元素的數(shù)組w,要占用20個(gè)字節(jié);一個(gè)是double型的ave。double型數(shù)據(jù)要8個(gè)字節(jié),則結(jié)構(gòu)變量w要占用34個(gè)字節(jié)。
(18)“FILE *p”的作用是定義一個(gè)文件指針變量,其中的“FILE”是在 【20】 頭文件中定義的。
解析: 代碼“FILE *p”的作用是定義一個(gè)文件指針變量,其中的FILE是在標(biāo)準(zhǔn)輸入輸出頭文件stdio.h中定義的。 相關(guān)推薦:2010年全國計(jì)算機(jī)等考二級(jí)C:程序設(shè)計(jì)實(shí)戰(zhàn)匯總
2010年9月計(jì)算機(jī)等級(jí)考試精華備考資料匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |