2012年3月份全國計算機等級考試二級C 語言 筆試+上機題 庫_第1頁
2012年3月份全國計算機等級考試二級C 語言 筆試+上機題 庫_第2頁
2012年3月份全國計算機等級考試二級C 語言 筆試+上機題 庫_第3頁
2012年3月份全國計算機等級考試二級C 語言 筆試+上機題 庫_第4頁
2012年3月份全國計算機等級考試二級C 語言 筆試+上機題 庫_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2012年3月份全國計算機等級考試二級C語言筆試+上機題庫(全)

一、選擇題

在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫

在答題卡相應位置上,答在試卷上不得分。

(1)為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,

通常也把這種圖稱為

A)PAD圖B)N-S圖0)結構圖D)數(shù)據(jù)流圖

(2)結構化程序設計主要強調的是

A)程序的規(guī)模B)程序的效率C)程序設計語言的先進性D)程序易讀

(3)為了使模塊盡可能獨立,要求

A)模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強

B)模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C)模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D)模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強

(4)需求分析階段的任務是確定

A)軟件開發(fā)方法B)軟件開發(fā)工具C)軟件開發(fā)費用D)軟件系統(tǒng)功能

(5)算法的有窮性是指

A)算法程序的運行時間是有限的

B)算法程序所處理的數(shù)據(jù)量是有限的

C)算法程序的長度是有限的

D)算法只能被有限的用戶使用

(6)對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是

A)快速排序B)冒泡排序C)直接插入排序D)堆排序

(7)如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是

A)e3,e1,e4,e2B)e2,e4,e3,e1C)e3,e4,e1,e2D)任意順序

(8)將E-R圖轉換到關系模式時,實體與聯(lián)系都可以表示成

A)屬性B)關系C)鍵D)域

(9)有三個關系R、S和T如下:

R

BCD

a0k1

b1n1

BCD

f3h2

a0k1

n2x1

T

BCD

a0k1

由關系R和S通過運算得到關系T,則所使用的運算為

A)并B)自然連接C)笛卡爾積D)交

(10)下列有關數(shù)據(jù)庫的描述,正確的是

A)數(shù)據(jù)處理是將信息轉化為數(shù)據(jù)的過程

B)數(shù)據(jù)的物理獨立性是指當數(shù)據(jù)的邏輯結構改變時,數(shù)據(jù)的存儲結構不變

C)關系中的每一列稱為元組,一個元組就是一個字段

D)如果一個關系中的屬性或屬性組并非該關系的關鍵字,但它是另一個關系的關鍵字,

則稱其為本關系的外關鍵字

(11)以下敘述中正確的是

A)用C程序實現(xiàn)的算法必須要有輸入和輸出操作

B)用C程序實現(xiàn)的算法可以沒有輸出但必須要有輸入

C)用C程序實現(xiàn)的算法可以沒有輸入但必須要有輸出

D)用C程序實現(xiàn)的算法可以既沒有輸入也沒有輸出

(12)下列可用于C語言用戶標識符的一組是

A)void,define,WORDB)a3_3,_123,CarC)For,-abc,IFCase

D)2a,DO,sizeof

(13)以下選項中可作為C語言合法常量的是

A)-80B)-080C)-8e1.0D)-80.Oe

(14)若有語句:char*line[5];,以下敘述中正確的是

A)定義Iine是一個數(shù)組,每個數(shù)組元素是一個基類型為char為指針變量

B)定義Iine是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

0定義Iine是一個指針數(shù)組,語句中的*號稱為間址運算符

D)定義Iine是一個指向字符型函數(shù)的指針

(15)以下定義語句中正確的是

A)inta=b=0;B)charA=65+1,b='b';OfIoata=1,*b=&a,*c=&b;

D)doublea=00;b=1.1;

(16)有以下程序段

charch;intk;

ch='a';

k=12;

printf(z,%c,%d,",ch,ch,k);printf("k=%d\n”,k);

已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結果是

A)因變量類型與格式描述符的類型不匹配輸出無定值

B)輸出項與格式描述符個數(shù)不符,輸出為零值或不定值

C)a,97,12k=12

D)a,97,k=12

(17)有以下程序

main()

{inti,s=1;

for(i=1;i<50;i++)

if(!(i%5)&&!(i%3))s+=i;

printf("%d\n",s);}

程序的輸出結果是

A)409B)2770)1D)91

(18)當變量c的值不為2、4、6時,值也為"真”的表達式是

A)(c=2)||(c=4)||(c==6)

B)(c>=2&&c<=6)||(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)

D)(c>=2&&c<=6)&&(c%2!=1)

(19)若變量已正確定義,有以下程序段

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!=a)c=b;

printf("%d,%d,%d\n”,a,b,c);

其輸出結果是

A)程序段有語法錯B)3,5,303,5,5D)3,5,7

(20)有以下程序

#include<stdio.h>

main()

{intx=1,y—0,a—0,b—0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

)

case2:a++;b++;break;

case3:a++;b++;

)

printf("a=%d,b=%d\n”,a,b);

}

程序的運行結果是

A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1

(21)下列程序的輸出結果是

#include“stdio.h"

main0

{inti,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=4B)a=4,b=5C)a=5,b=4D)a=5,b=5

(22)已知

#intt=0;

while(t=1)

{...)

則以下敘述正確的是

A)循環(huán)控制表達式的值為0

B)循環(huán)控制表達式的值為1

C)循環(huán)控制表達式不合法

D)以上說法都不對

(23)下面程序的輸出結果是

main()

{inta[10]=(1,2,3,4,5,6,7,8,9,10),*p=a;

printf("%d\n”,*(p+2));}

A)3B)4C)1D)2

(24)以下錯誤的定義語句是

A)intx[][3]={{0},{1},{1,2,3)};B)int

x[4][3]={{1,2.3},{1,2.3},{1,2.3},{1,2.3});

0intx[4][]={{1,2,3}r{1,2,3},{1,2.3},{1,2.3}};D)int

x[][3]={1,2,3,4);

(25)有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s—t)a'+'A';

s++;})

main()

{charstr1[100]="abcddfefdbd",c='d';

ss(str1,c);printf("%s\n”,str1);}

程序運行后的輸出結果是

A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd

(26)有如下程序

main0

{charch[2][5]={"6937”,"8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>,\0z;j+=2)

s=10*s+p[i][j]-?O';

printf("%d\n",s);}

該程序的輸出結果是

A)69825B)638250)6385D)693825

(27)有定義語句:chars[10]若要從終端給s輸入5個字符,錯誤的輸入語句是

A)gets(&s[0]);B)scanf("%s”,s+1);C)gets(s);D)scanfs[1]);

(28)以下敘述中錯誤的是

A)在程序中凡是以"#"開始的語句行都是預處理命令行B)預處理命令行的最后不

能以分號表示結束C)#defineMAX是合法的宏定義命令行D)C程序對預

處理命令行的處理是在程序執(zhí)行的過程中進行的

(29)設有以下說明語句

typedefstruct

{intn;

charch[8];

}PER;

則下面敘述中正確的是

A)PER是結構體變量名B)PER是結構體類型名C)typedefstruct是結構體類

型D)struct是結構體類型名

(30)以下敘述中錯誤的是

A)gets函數(shù)用于從終端讀入字符串B)getchar函數(shù)用于從磁盤文件讀入字符

0fputs函數(shù)用于把字符串輸出到文件D)fwrite函數(shù)用于以二進制形式輸出數(shù)據(jù)

到文件

(31)以下能正確定義一維數(shù)組的選項是

A)inta[5]={0,1,2,3,4,5};B)chara[]={(O'J1','2'J3','4'J

5'\0'};C)chara={'A','B','C'};D)inta[5]="0123”;

(32)有以下程序

#incIude<string.h>

main0

{charpD={'a','b','c'},q[10]={'a','b','c'};

printf("%d%d\n”,strlen(p),strIen(q));}

以下敘述中正確的是

A)在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結束符,故輸出的長度都為3

B)由于p數(shù)組中沒有字符串結束符,長度不能確定,但q數(shù)組中字符串長度為3

C)由于q數(shù)組中沒有字符串結束符,長度不能確定,但p數(shù)組中字符串長度為3

D)由于p和q數(shù)組中都沒有字符串結束符,故長度都不能確定

(33)有以下程序

#include<stdio.h>

#include<string.h>

voidfun(char*s[],intn)

{char*t;inti,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(strIen(s[i])>strIen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}

)

main()

char*ssLJ=lbcc,bbcc,xy,aaaacc,aabcc\;

fun(ss,5);printf(,z%s,%s\n〃,ss[0],ss[4]);

)

程序的運行結果是

A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc

(34)有以下程序

#include<stdio.h>

intf(intx)

{inty;

if(x=0||x==1)return(3);

y=x*x-f(x-2);

returny;

)

main()

{intz;

z=f(3);printf(〃%d\n〃,z);

)

程序的運行結果是

A)0B)906D)8

(35)下面程序段的運行結果是

charstr口二“ABC”,*p=str;

,,,

printfC%d\nr*(p+3));

A)67B)0C)字符'Cf的地址D)字符'C'

(36)若有以下定義:

structIink

{intdata;

structIink*next;

}a,b,ct*p,*q;

且變量a和b之間已有如下圖所示的鏈表結構:

指針P指向變量a,q指向變量則能夠把c插入到a和b之間并形成新的鏈表的語句組是:

A)a.next=c;c.next=b;B)p.next=q;q.next=p.next;C)p->next=&c;

q->next=p->next;D)(*p).next=q;(*q).next=&b;

(37)對于下述程序,在方式串分別采用〃和〃wb〃運行時,兩次生成的文件TEST的長度分

別是

#incIude<stdio.h>

voidmain()

zz/z

{FILE*fp=fOpen(TEST,);

fputc(zA',fp);fputc(,\nz,fp);

fputc('Bz,fp);fputc(,\nf,fp);

fputc(zCf,fp);

fclose(fp);}

A)7字節(jié)、7字節(jié)B)7字節(jié)、5字節(jié)C)5字節(jié)、7字節(jié)D)5字節(jié)、5字節(jié)

(38)變量a中的數(shù)據(jù)用二進制表示的形式是01011101,變量b中的數(shù)據(jù)用二進制表示的形

式是11110000o若要求將a的高4位取反,低4位不變,所要執(zhí)行的運算是

A)a'bB)a|bC)a&bD)a?4

(39)下面的程序段運行后,輸出結果是

inti,j,x=0;

staticinta[8][8];

for(i=0;i<3;i++)

for(j=0;j<3;j++)

a[i][j]=2*i+j;

for(i=0;i<8;i++)

x+=a[i][j];

printf("%d”,x);

A)9B)不確定值C)0D)18

(40)下列程序執(zhí)行后的輸出結果是

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main0

{inta,b[5];

a=0;b[0]=3;

func(&a,b);printf("%d\n",b[0]);}

A)6B)708D)9

二、填空題

請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。

(1)測試的目的是暴露錯誤,評價程序的可靠性;而【1】的目的是發(fā)現(xiàn)錯誤的位置并

改正錯誤。

(2)某二叉樹中度為2的結點有18個,則該二叉樹中有[2]個葉子結點。

(3)當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算。

這種情況稱為【3】。

(4)在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個[4]。

(5)在計算機軟件系統(tǒng)的體系結構中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和[5]之間。

(6)以下程序的輸出結果是[6】o

main()

{charc='z';

printfc-25);}

(7)閱讀下面語句,則程序的執(zhí)行結果是【7】o

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b—<=0))

printf("%d,%d\",a,b);

eIseprintf("%d,%d\n”,b,a);)

(8)下列程序的輸出結果是[8】。

main()

{inti;

for(i=1;i+1;i++)

{if(i>4)

{printf("%d\n”,i);

break;}

printf("%d\n”,i++);}}

(9)以下程序的定義語句中,x[1]的初值是[9】,程序運行后輸出的內容是[10]。

#include<stdio.h>

main()

{intx口二{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf(z,%dzz,p[i][0]);

}

printf(zz\n/z);)

)

(10)以下程序的輸出結果是[11]o

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

)

main()

(inti=3,J=5,*p=&i,*q=&j;

,z

swap(p,q);printf(%d%d\Nf*p,*q))

)

(11)以下程序的輸出結果是[12]o

main()

{chars口=“ABCD〃,*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

(12)以下程序的輸出結果是[131o

fIoatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf(,z%3.0f\n,\fun((int)fun(a+c,b),a-c));}

(13)有如下圖所示的雙鏈表結構,請根據(jù)圖示完成結構體的定義:

IheaddatarchiId

structaa

{intdata;

[14]]node;

(14)fseek函數(shù)的正確調用形式是【15】。

一、選擇題

(DB【解析】N-S圖是由Nassi和Shneiderman提出的一種符合程序化結構設計原則

的圖形描述工具。它的提出是為了避免流程圖在描述程序邏輯時的隨意性上靈活性。

(2)D【解析】結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、模塊

化及限制使用got。語句,總的來說可使程序結構良好、易讀、易理解、易維護。

(3)B【解析】模塊的獨立程度可以由兩個定性標準度量:耦合性和內聚性。耦合性是衡量不

同模塊彼此間互相依賴(連接)的緊密程度;內聚性是衡量一個模塊內部各個元素彼此結合的

緊密程度。一般來說,要求模塊之間的耦合盡可能地低,而內聚性盡可能地高。

(4)D【解析】需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調查現(xiàn)

實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需

求,然后在此基礎上確定新系統(tǒng)的功能。選項A)軟件開發(fā)方法是在總體設計階段需完成的任

務;選項B)軟件開發(fā)工具是在實現(xiàn)階段需完成的任務;選項C)軟件開發(fā)費用是在可行性研究

階段需完成的任務。

(5)A【解析】算法具有5個特性:①有窮性:一個算法必須(對任何合法的輸入值)在執(zhí)

行有窮步之后結束,且每一步都可在有限時間內完成,即運行時間是有限的;②確定性:算法

中每一條指令必須有確切的含義,讀者理解時不會產(chǎn)生歧義;③可行性:一個算法是可行的,

即算法中描述的操作都是可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn);④輸入:一個算

法有零個或多個輸入,這些輸入取自于某個特定的對象的集合;⑤輸出:一個算法有一個或

多個輸出。

(6)D【解析】在最壞情況下,快速排序、冒泡排序和直接插入排序需要的比較次數(shù)都為

n(n-1)/2,堆排序需要的比較次數(shù)為nlog2n。

(7)B【解析】由?!昂筮M先出”的特點可知:A)中e1不可能比e2先出,C)中e1不可能比

e2先出,D)中棧是先進后出的,所以不可能是任意順序。B)中出棧過程如下圖所示:

(8)B【解析】關系數(shù)據(jù)庫邏輯設計的主要工作是將E-R圖轉換成指定RDBMS中的

關系模式。首先,從E-R圖到關系模式的轉換是比較直接的,實體與聯(lián)系都可以表示成關

系,E-R圖中屬性也可以轉換成關系的屬性,實體集也可以轉換成關系。

(9)D【解析】在關系運算中,交的定義如下:設R1和R2為參加運算的兩個關系,它們具

有相同的度n,且相對應的屬性值取自同一個域,則R1R2為交運算,結果仍為度等于n的關

系,其中,交運算的結果既屬于R1,又屬于R2。

(10)D【解析】數(shù)據(jù)處理是指將數(shù)據(jù)轉換成信息的過程,故選項A)敘述錯誤;數(shù)據(jù)的物理

獨立性是指數(shù)據(jù)的物理結構的改變,不會影響數(shù)據(jù)庫的邏輯結構,故選項B)敘述錯誤;關系

中的行稱為元組,對應存儲文件中的記錄,關系中的列稱為屬性,對應存儲文件中的字段,故

選項0敘述錯誤。

1DC【解析】算法具有的5個特性是:有窮性;確定性;可行性;有。個或多個輸入;有一

個或多個輸出。所以說,用C程序實現(xiàn)的算法可以沒有輸入但必須要有輸出。

(12)B【解析】C語言規(guī)定標識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個

字符必須為字母或下劃線,排除選項C)和D);C語言中還規(guī)定標識符不能為C語言的關鍵字,

而選項A)中void為關鍵字,故排除選項A)。

(13)A【解析】選項B)項中,以0開頭表示是一個八進制數(shù),而八進制數(shù)的取值范圍是0~7,

所以-080是不合法的;選項0和D)中,e后面的指數(shù)必須是整數(shù),所以也不合法。

(14)A【解析】C語言中[]比*優(yōu)先級高,因此line先與[5]結合,形成line[5]形式,這

是數(shù)組形式,它有5個元素,然后再與Iine前面的“*”結合,表示此數(shù)組是一個指針數(shù)組,每個

數(shù)組元素都是一個基類型為char的指針變量。

(15)6【解析】本題考查變量的定義方法。如果要一次進行多個變量的定義,則在它們

之間要用逗號隔開,因此選項A)和D)錯誤。在選項C)中,變量c是一個浮點型指針,它只能

指向一個浮點型數(shù)據(jù),不能指向指針變量b,故選項C)錯誤。

(16)D【解析】輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表

示將變量以帶符號的十進制整型數(shù)輸出,所以第一個輸出語句輸出的結果為a,97;第二個輸

出語句輸出的結果為k=12。

(17)D【解析】本題是計算50之內的自然數(shù)相加之和,題中if語句括號中的條件表達

式!(i%5)&&!(i%3)表明只有能同時被5和3整除的數(shù)才符合相加的條件,/49之間滿足這

個條件的只有,15、30和45,因為s的初始值為1,所以8=1+15+30+45=91o

(18)B【解析】滿足表達式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當變量c的

值不為2,4,6時,其值只能為3或5,所以表達式c!=3和c!=5中至少有一個為真,即不論c

為何值,選項B中的表達式都為“真"。

(19)B【解析】兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變

量c的值等于3,變量b的值沒能變化,程序輸出的結果為3,5,3。所以正確答案為B)。

(20)D【解析】本題考查switch語句,首先,x=1符合條件case1,執(zhí)行switch(y)語

句,y=0符合case0語句,執(zhí)行a++并跳出switch(y)語句,此時a=1。因為case1語句后面

沒有break語句,所以向后執(zhí)行case2語句,執(zhí)行a++,b++,然后跳出switch(x),得a=2,b=1,

(2DB【解析】continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再

一次進行循環(huán)條件的判定。當能被2整除時,a就會增1,之后執(zhí)行continue語句,直接執(zhí)行

到for循環(huán)體的結尾,進行i++,判斷循環(huán)條件。

(22)B【解析】t=1是將t賦值為1,所以循環(huán)控制表達式的值為1。判斷t是否等于1

時,應用t==1,注意“="與"==”的用法。

(23)A【解析】在C語言中,數(shù)組元素是從0開始的。指針變量p指向數(shù)組的首地址,(p+2)

就會指向數(shù)組中的第3個元素。題目中要求輸出的是元素的值。

(24)C【解析】本題考查的是二維數(shù)組的定義和初始化方法。C語言中,在定義并初始

化二維數(shù)組時,可以省略數(shù)組第一維的長度,但是不能省略第二維的長度。故選項C)錯誤。

(25)B【解析】在內存中,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式與整數(shù)的存儲形式類

似。C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以對字符型數(shù)據(jù)進行算術運算,此

時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數(shù)組中的

下一個元素。

(26)C【解析】該題稍微難一點。主要要搞清楚以下幾點:①定義了一個指針數(shù)組char

*p⑵后,程序中第一個循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數(shù)組的p[0]元

素(它本身是一個指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p[1]元素指向

二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應關系,

以后對二維數(shù)組ch的某個元素的引用就有兩種等價的形式:ch[i][j]或②對二維

數(shù)組ch的初始化,使其第一行ch[0]中存入了字符串"6937”,第二行ch[1]中的內容為字符串

“8254”。③程序中第二個循環(huán)中的循環(huán)體s=s*10+p[i][j]」(T;的功能是這樣的,每執(zhí)行一

次,將s中的值乘以10(也即,將s中的數(shù)值整體向左移動一位,并在空出來的個位上添一個

0),再將當前p[i][j]中的字符量轉換為相應的數(shù)字,然后把這個數(shù)字加到s的個位上。④注

意到內層循環(huán)的循環(huán)條件p[i][j]>>\0'是指p[i][j]中的字符只要不是字符串結束標志

''0’就繼續(xù)循環(huán),語句j+=2;是使下標J每次增加2,也即一個隔一個地從p[i]所指向的

字符串中取出字符。經(jīng)過上述解析后,不難看出,該程序首先從p[0]所指向的字符串“6937”

中一個隔一個地取出字符,分別是'6,和,3,,然后從p[1]所指向的字符串“8254”中一個

隔一個地取出字符,分別是'8,和,51同時經(jīng)過轉換和相加運算后,結果s中的值應該是

638511

(27)D【解析】在格式輸入中,要求給出的是變量的地址,而D)答案中給出的s[1]是一個

值的表達式。

(28)D【解析】C語言中的預處理命令以符號#開頭,這些命令是在程序編譯之前進行處

理的,選項D)的描述錯誤。

(29)6【解析】本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面

指定的一個結構體類型,此時,也可以用PER來定義變量。

(30)B【解析】getchar函數(shù)的作用是從終端讀入一個字符。

(3DB【解析】選項A)中,定義的初值個數(shù)大于數(shù)組的長度;選項C)中,數(shù)組名后少了中

括號;選項D)中,整型數(shù)組不能賦予字符串。

(32)A【解析】在給p和q數(shù)組賦初值時,系統(tǒng)會自動添加字符串結束符,從題目中可以

看出數(shù)組p和q都有3個字符,所以長度均為3。

(33)A【解析】函數(shù)fun(char*s口,intn)的功能是對字符串數(shù)組的元素按照字符串

的長度從小到大排序。在主函數(shù)中執(zhí)行fun(ss,5)語句后,*ss[]=rxy","bcc","bbcc”,

"aabcc","aaaacc"},ss[0],ss[4]的輸出結果為xy,aaaacc。

(34)C【解析】函數(shù)intf(intx)是一個遞歸函數(shù)調用,當x的值等于?;?時,函數(shù)

值等于3,其他情況下y=x2-f(x-2),所以在主函數(shù)中執(zhí)行語句z=f(3)

時,y=3*3-f(3-2)=9-f(1)=9-3=6。

(35)B【解析】考查指向字符串的指針變量。在該題中,指針變量p指向的應該是該字

符串中的首地址,p+3指向的是字符串結束標志'\0'的地址,因而*(p+3)的值為0o

(36)D【解析】本題考查鏈表的數(shù)據(jù)結構,必須利用指針變量才能實現(xiàn),即一個結點中應

包含一個指針變量,用它存放下一結點的地址。

(37)B【解析】以"wt”方式寫入的是字符文件,轉義字符,\n,被看作兩個字符來處理。

而"wb”方式寫入的是二進制文件,轉義字符,\n,是一個字符。

(38)A【解析】本題考查的是位運算的知識,對于任何二進制數(shù),和1進行異或運算會讓

其取反,而和0進行異或運算不會產(chǎn)生任何變化。

(39)C【解析】本題主要考查的是用二維數(shù)組首地址和下標來引用二維數(shù)組元素的方法。

通過分析可知,程序中的雙重循環(huán)定義了一個如下的二維數(shù)組:

012

234

456

由于數(shù)組的下標是從0開始的,所以二維數(shù)組元素表示的是二維數(shù)組a的第i+1行、

第J+1列對應位置的元素。

(40)A【解析】函數(shù)的參數(shù)不僅可以是整型、實型、字符型等數(shù)據(jù),還可以是指針型。

它的作用是將一個變量的地址傳遞到另一個函數(shù)中。當數(shù)組名作參數(shù)時,如果形參數(shù)組中的

各元素的值發(fā)生變化,實參數(shù)組元素的值也將隨之發(fā)生變化。

二、選擇題

(1)【1】調試【解析】軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中

的錯誤,給出程序可靠性的鑒定;調試也稱排錯,它是一個與測試既有聯(lián)系又有區(qū)別的概念。

具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調試的目的是發(fā)現(xiàn)錯誤的位置,并

改正錯誤。

(2)[2]19【解析】在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2

的結點多一個。

(3)[3]上溢【解析】入隊運算是指在循環(huán)隊列的隊尾加入一個新元素。這個運算有

兩個基本操作:首先將隊尾指針進一(即rea尸rear+1),并當rear=m+1時,置rear=1;然后將

新元素插入隊尾指針指向的位置.當循環(huán)隊列非空(s=1)且隊尾指針等于隊頭指針時,說明循

環(huán)隊列已滿,不能進行入隊運算,這種情況稱為“上溢"。

(4)[4]關系【解析】在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個

關系。表中的每一列稱為一個屬性,相當于記錄中的一個數(shù)據(jù)項,對屬性的命名稱為屬性名;

表中的一行稱為一個元組,相當于記錄值。

(5)[5]操作系統(tǒng)或0S【解析】數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機構,它是一種系統(tǒng)軟件,

負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務。位于用戶和操作

系統(tǒng)之間。

(6)[6]a【解析】'z'的ASCII碼值為122,經(jīng)過c-25運算后,得97,以字符形式輸出

是a。

(7)[7]1,0【解析】與運算兩邊的語句必須同時為真時,結果才為真。當執(zhí)行完

if((++a<0)&&!(b-Y=0))時,a,b的值已經(jīng)發(fā)生了變化。

(8)[8]135【解析】本題考查了for循環(huán)語句的使用,break語句用在本題中

是結束for循環(huán)直接跳出循環(huán)體外。當i=1時,因為if語句條件不滿足,所以直接執(zhí)行

printf("%d\n",i++);輸出1,同時i自加1;執(zhí)行第二次for循環(huán)時,i=3;同樣的if語句

條件不滿足,所以直接執(zhí)行printf("%d\n",i++);輸出3,同時i自加1;執(zhí)行第三次for

循環(huán)時,i=5,if語句條件滿足,所以執(zhí)行printf("%d\n”,i),輸出5,然后break語句跳出

了for循環(huán)。

⑼[9]2

[10]2468【解析】在主函數(shù)中根據(jù)整型數(shù)組x□的定義可知,x[1]的初值等于2。

在for循環(huán)語句中當i=0時,p[0]=&x[1],p[0][0]=2;當i=1B4,p[1]=&x[3],p[1][0]=4;

當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的

結果為2■146、8。

(10)[11]35【解析】函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)

的交換,在主函數(shù)中調用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int

*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有

發(fā)生變化所以輸出結果為35。

(11)[12]BCDCDD【解析】本題考查指向字符串的指針的運算方法。指針變

量P首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后

輸出值"BCD”并換行,依次執(zhí)行循環(huán)語句。

(12)[13]9【解析】本題考查函數(shù)的綜合知識。首先,我們可以利用強制轉換類型轉

換運算符,將一個表達式轉換成所需類型。如:(double)a是將a轉換成double類

型;(int)(x+y)是將x+y的值轉換成整型。

本題可按部就班地逐步運算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

(13)[14]structaa*lhead,*rchiId;【解析】結構體對鏈表的定義。

(14)[15]fseek(文件指針,位移量,起始點)【解析】本題考查函數(shù)fseek的用法。fseek

函數(shù)的調用形式為:

fseek(文件指針,位移量,起始點)

"起始點”用0,1或2代替,其中,0代表“文件開始";1為"當前位置";2為"文件末尾"?!蔽灰?/p>

量”指以"起始點”為基點,向前移動的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型

數(shù)據(jù),這樣當文件的長度大于64k時不致出現(xiàn)問題。ANSIC標準規(guī)定在數(shù)字的末尾加一

個字母L,就表示long型。

一、選擇題

在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫

在答題卡相應位置上,答在試卷上不得分。

(1)程序流程圖中帶有箭頭的線段表示的是

A)圖元關系B)數(shù)據(jù)流C)控制流D)調用關系

(2)下面不屬于軟件設計原則的是

A)抽象B)模塊化C)自底向上D)信息隱蔽

(3)下列選項中,不屬于模塊間耦合的是

A)數(shù)據(jù)耦合B)標記耦合C)異構耦合D)公共耦合

(4)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是

A)便于用戶、開發(fā)人員進行理解和交流B)反映出用戶問題的結構,可以作為軟件開發(fā)工

作的基礎和依據(jù)

C)作為確認測試和驗收的依據(jù)D)便于開發(fā)人員進行需求分析

(5)算法的時間復雜度是指

A)執(zhí)行算法程序所需要的時間B)算法程序的長度C)算法執(zhí)行過程中所需要的

基本運算次數(shù)

D)算法程序中的指令條數(shù)

(6)已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為節(jié)省時間,應采用的算法是

A)堆排序B)直接插入排序C)快速排序口花)和0

(7)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,

則出棧序列可能是

A)ABCEDB)DCBEA0)DBCEAD)CDABE

(8)數(shù)據(jù)庫設計包括兩個方面的設計內容,它們是

A)概念設計和邏輯設計B)模式設計和內模式設計C)內模式設計和物理設計

D)結構特性設計和行為特性設計

(9)關系表中的每一橫行稱為一個

A)元組B)字段C)屬性D)碼

(10)設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),調呈C(課

號,課名),選課SC(學號,課號,成績),則表SC的關鍵字(鍵或碼)為

A)課號,成績B)學號,成績C)學號,課號D)學號,姓

名,成績

(11)以下不正確的敘述是

A)在C程序中,逗號運算符的優(yōu)先級最低B)在C程序中,APH和aph是兩個不同的

變量

C)若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不

D)當從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型

數(shù)值

(12)請選出可用作C語言用戶標識符的是

A)void,define,WORDB)a3_b3,_123,IF0)FOR,-abc,Case

D)2a,Do,Sizeof

(13)以下選項中,不能作為合法常量的是

A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0

(14)在C語言中,運算對象必須是整型數(shù)的運算符是

A)%B)\C)%和、

D)**

(15)若變量均已正確定義并賦值,以下合法的C語言賦值語句是

A)x=y=5;B)x=n%2.5;0)x+n=i;D)x=5=4+1;

(16)有以下程序段

charch;intk;

ch='a';k=12;

printf%d,",ch,ch,k);printf("k=%d\n”,k);

已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結果是

A)因變量類型與格式描述符的類型不匹配輸出無定值B)輸出項與格式描述符個數(shù)

不符,輸出為零值或不定值

C)a,97,12k=12D)a,97,k=12

(17)已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的

值為大寫字母的表達式是

A)kk>='A'&&kk<='Z'B)!(kk>=,A'\\kk<='Z')

C)(kk+32)>=za'&&(kk+32)<='Z'D)isalpha(kk)&&(kk<91)

(18)當變量c的值不為2、4、6時,值也為"真”的表達式是

A)(c==2)||(c-4)||(c==6)B)(c>=2&&c<=6)11(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)

(19)若有條件表達式(exp)?a++:b—,則以下表達式中能完全等價于表達式(exp)的是

A)(exp==0)B)(exp!=0)C)(exp==1)D)(exp!=1)

(20)以下不正確的定義語句是

A)doublex[5]={2.0,4,0,6.0,8.0,10.0};B)inty[5]={0,1,3,5,7,9);Ochar

c1[]={'1','2','3','4','5');D)charc2[]={'\xM,'xa','\x8'};

(21)下列程序執(zhí)行后的輸出結果是

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=1;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2];)

A)3B)609D)隨機數(shù)

(22)設有以下程序段

intx=0,s=0;

whiIe(!x!=0)s+=++x;

printf("%d”,s);

A)運行程序段后輸出0B)運行程序段后輸出1C)程序段中的控制表達式是非法

的D)程序段執(zhí)行無限次

(23)(23)下面程序段的運行結果是

char*s="abcde”;

s+=2;printf("%d”,s);

A)cdeB)字符'c'C)字符'c'的地址D)無確定的輸出結果

(24)閱讀下列程序,則執(zhí)行后的結果為

#include"stdio.

main()

{intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56);

printf(z,%x,%x\nzz,c[2][2],*(*(c+1)+1));}

A)3e,6B)62,5C)56,5D)3E,6

(25)下面判斷正確的是

A)char*a="china”;等價于char*a;*a="china〃;B)charstr⑸={〃china〃};等

價于charstr□二{“china"};

C)char*s=〃china”;等價于char*s;s=“china”;D)charc[4]="abc”,d[4]=〃abc”;

等價于charc[4]=d[4]=z/abcz,;

(26)若有定義:inta[2][3];,以下選項中對a數(shù)組元素正確引用的是

A)a[2][!1]B)a[2][3]C)a[0][3]D)a[1>2][!1]

(27)有定義語句:chars[10]若要從終端給s輸入5個字符,錯誤的輸入語句是

A)gets(&s[0]);B)scanfs+1);C)gets(s);

D)scanf("%s”,s[1]);

(28)有以下程序

#include<stdio.h>

#defineN5

#defineMN+1

#definef(x)(x*M)

main()

{inti1,i2;

i1二千⑵;

i2=f(1+1);

printf(,z%d%d\n,z,i1,i2);

)

程序的運行結果是

A)1212B)1170)1111D)127

(29)若有以下說明和定義

uniondt

{inta;charb;doublec;}data;

以下敘述中錯誤的是

A)data的每個成員起始地址都相同B)變量data所占內存字節(jié)數(shù)與成員c所占字

節(jié)數(shù)相等

C)程序段:data.a=5;printfdata,c);輸出結果為5.000000D)data可以作

為函數(shù)的實參

(30)有以下程序

#include<stdio.h>

main()

{FILE*fp;intk,n,a[6]={1,2,3,4,5,6);

fp=fopen(z,d2.dat","w");

fprintf(fp,",%d%d%d\n,\a[0],a[1],a[2]);

fprintf(fp,"%d%d%d\n”,a[3],a[4],a[5]);

fclose(fp);

fp=fopenCd2.dat〃,"r");

fscanf(fp,z,%d%d/z,&k,&n);printf(〃%d%d\n〃,k,n);

fclose(fp);

程序運行后的輸出結果是

A)12B)1401234D)123456

(31)若已定義

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中則對a數(shù)組元素不正確的引用是

A)a[p-a]B)*(&a[i])C)p[i]D)a[10]

(32)有以下程序

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;]

)

main()

{inta[10]={1,2,3,4,5,6,7,8,9.0},k;

fun(a,0,3);fun(a,4,9);fun(a,0,9);

for(k=0;k<10;k++)printfC%d,z,a[k]);printf("\n");

)

程序的運行結果是

A)0987654321B)43210987650)5678901234D)0987651234

(33)閱讀下列程序,當運行函數(shù)時,輸入asdafaaz67,則輸出為

#include<stdio.h>

#incIude<ctype.h>

#include<string.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=z\0';i++)

if(str[i]!=f')str[j++]=str[i];

str[j]='\0';

)

main()

(

charstr[81];

intn;

printfCInputastring:");

gets(str);

puts(str);

fun(str);

printf("%s\n",str);

)

A)asdafaaz67B)asdafaaz67C)asdD)z67

(34)有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

)

main()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x)

)

執(zhí)行程序時,給變量x輸入10,程序的輸出結果是

A)55B)54065D)45

(35)下面程序段中,輸出*的個數(shù)是

char*s="\ta\018bc”;

for(;*s!='\0';s++)printf("*");

A)9B)50)6D)7

(36)C語言結構體類型變量在程序運行期間

A)TC環(huán)境在內存中僅僅開辟一個存放結構體變量地址的單元B)所有的成員一直

駐留在內存中

C)只有最開始的成員駐留在內存中D)部分成員駐留在內存中

(37)已知函數(shù)的調用形式為fread(buf,size,count,fp),參數(shù)buf的含義是

A)一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)B)一個文件指針,指向要讀的文件

0一個指針,指向要讀入數(shù)據(jù)的存放地址D)一個存儲區(qū)存放要讀的數(shù)據(jù)項

(38)設有以下語句

charx=3,y=6,z;

z-

則Z的二進制值是

A)000101006)000110110)00011100D)00011000

(39)在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是

A)auto和registerB)extern和registerC)auto和static

D)static和register

(40)設有定義語句int(*f)(int)則以下敘述正確的是

A)f是基類型為int的指針變量B)f是指向函數(shù)的指針變量,該函數(shù)具有一個int

類型的形參

Of是指向int類型一維數(shù)組的指針變量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論