(1)根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分成
A)動(dòng)態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu) B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)
C)線性結(jié)構(gòu)和非線性結(jié)構(gòu) D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
(2)設(shè)一棵二叉樹中有3個(gè)葉子結(jié)點(diǎn),有8個(gè)度為1的結(jié)點(diǎn),則該二叉樹中總的結(jié)點(diǎn)數(shù)為
A)12 B)13
C)14 D)15
(3)在下列幾種排序方法中,要求內(nèi)存量的是
A)插入排序
B)選擇排序
C)快速排序
D)歸并排序
(4)下列敘述中,不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則的是
A)自頂向下
B)由底向上
C)模塊化
D)限制使用goto語句
(5)下列不屬于軟件調(diào)試技術(shù)的是
A)強(qiáng)行排錯(cuò)法
B)集成測試法
C)回溯法
D)原因排除法
(6)為了避免流程圖在描述程序邏輯時(shí)的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為
A)PAD圖 B)N-S圖
C)結(jié)構(gòu)圖 D)數(shù)據(jù)流圖
(7)軟件復(fù)雜性度量的參數(shù)包括
A)效率
B)規(guī)模
C)完整性
D)容錯(cuò)性
(8)下列敘述中,不屬于數(shù)據(jù)庫系統(tǒng)的是
A)數(shù)據(jù)庫
B)數(shù)據(jù)庫管理系統(tǒng)
C)數(shù)據(jù)庫管理員
D)數(shù)據(jù)庫應(yīng)用系統(tǒng)
(9)數(shù)據(jù)庫系統(tǒng)的核心是
A)數(shù)據(jù)庫
B)數(shù)據(jù)庫管理系統(tǒng)
C)數(shù)據(jù)模型
D)軟件工具
(10)視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)的是
A)自頂向下 B)由外向內(nèi)
C)由內(nèi)向外 D)自底向上
(11)下列常數(shù)中不能作為C語言常量的是
A)0xabc
B)2.5e-0.2
C)32
D)0747
(12)設(shè)int型的數(shù)據(jù)長度為2個(gè)字節(jié),則unsigned int 類型數(shù)據(jù)的取值范圍是
A)-127~128
B)0~255
C)0~65535
D)0~32768
(13)已知int t=6,s;則執(zhí)行語句s=(++t)+(t++);后,s的值是
A)12
B)13
C)14
D)15
(14)已知int x=6,y=2,z;則執(zhí)行表達(dá)式z=x=x>y后,變量z的值為
A)0
B)1
C)4
D)5
(15)已知int i,a;執(zhí)行語句i=(a=3,a++,--a,a+4,a+5,++a);后,變量i的值為
A)2
B)3
C)4
D)5
(16)下列說法中正確的是
A)一個(gè)C程序是從命令行開始執(zhí)行的
B)C程序中有些執(zhí)行語句不用分號(hào)(;)結(jié)束
C)分號(hào)不是C語句的一部分,是C語句之間的分隔符
D)命令行必須用“#”開頭,最后不能加“;”號(hào),命令行不是C程序中的語句
(17)已知int x=2;執(zhí)行語句x*=x+=++x;后,x的值是
A)16
B)26
C)36
D)46
(18)已知int a=20,b=5;則執(zhí)行以下語句后的輸出結(jié)果是
printf("%d\n",a%=(b%=2));
A)0
B)1
C)2
D)3
(19)現(xiàn)有以下程序段
#include
main()
{ int a,b,c;
scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c); }
若輸出的結(jié)果為a=20,b=30,c=40,則以下能夠正確輸入數(shù)據(jù)的是
A)a=10]20,b=20]30,c=40
B)20,30,40
C)a=20,b=30,c=40
D)a=10]20,b=30]20,c=40
[注]: “]”表示空格,表示回車
(20)已知int x=5,y=3;則表達(dá)式(x||y)&&78的結(jié)果為
A)1
B)0
C)5
D)78
(21)有如下程序段
#include "stdio.h"
main()
{int a=10,b=50,c=30;
a=a>30?1:2;
b=b>30?1:2;
c=c>30?1:2;
printf("%d,%d,%d\n",a,b,c);}
則執(zhí)行結(jié)果為
A)2,1,2
B)1,2,1
C)1,1,2
D)2,1,1
(22)閱讀如下程序段
#include "stdio.h"
main()
{ int a=45,b=40,c=50,d;
d=a>30?b:c;
switch(d)
{ case 30 : printf("%d,",a);
case 40 : printf("%d,",b);
case 50 : printf("%d,",c);
default : printf("#");}}
則輸出的結(jié)果是
A)40,50,
B)50,#
C)40,#
D)40,50,#
(23)若有定義int k=10;則下列程序的輸出結(jié)果為
do{
printf("%d",k--); } while(!k);
A)9
B)10
C)10987654321
D)沒有輸出
(24)閱讀下列程序段,則程序的輸出結(jié)果是
#include "stdio.h"
main()
{ int a=10,b=10,k;
for(k=0;a>8;b=++k)
printf("%d,%d,",a--,--b);
printf("\n");}
A)10,10,10,0,
B)10,9,9,0,
C)10,10,9,1,
D)9,9,9,1,
(25)下列程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{int a,b,m;
for(a=5;a>=1;a--)
{ m=0;
for(b=a;b<=5;b++)
m=m+a*b;}
printf("%d\n",m);}
A)30
B)15
C)20
D)10
(26)有字符串如下,"\n\\\407as1\"\xabc",則字符串的長度為
A)6
B)7
C)8
D)9
(27)閱讀下面程序段
#include "stdio.h"
main()
{ char c;
c=(′z′-′a′)/2+′A′;
putchar(c);}
輸出結(jié)果為
A)M
B)N
C)O
D)Q
(28)下列說法中不正確的是
A)C語言規(guī)定,不能在一個(gè)函數(shù)的內(nèi)部再定義函數(shù)
B)在沒有聲明函數(shù)返回值類型的情況下,C默認(rèn)的函數(shù)返回值類型為int型
C)函數(shù)的類型可以是整型、實(shí)型、字符型,但不能是指針型
D)函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號(hào)不能省略
(29)現(xiàn)有如下程序,則程序的輸出結(jié)果為
#include "stdio.h"
int f(int a,int b)
{int c;
if(a>0&&a<10)c=(a+b)/2;
else c=a*b/2;
return c;}
main()
{ int a=8,b=20,c;
c=f(a,b);
printf("%d\n",c);}
A)隨機(jī)數(shù)
B)80
C)28
D)14
(30)閱讀如下程序段,則程序段的執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
main()
{ char c;
int i;
char count();
int p(char);
for(i=0;i<30;i++)c=count();
p(c);}
char count()
{ char str=′A′;
str+=1;
return(str);}
p(char c)
{putchar(c);
putchar(′\n′);}
A)A
B)B
C)a
D)b
(31)閱讀如下程序段,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int a,*p,*q,**w;
p=&a;
q=&a;
w=&p;
*p=5%6;
*q=5;
**w=3;
printf("%d\n",a);}
A)無確定值
B)1
C)5
D)3
(32)現(xiàn)有定義int a=10,*p=&a;則不能使a的內(nèi)容增1的語句是
A)*p++;
B)*p=*p+1;
C)++*p;
D)*p+=1;
(33)現(xiàn)有下列程序段
#include "stdio.h"
void JFT(int *a,int *b,int *c,int *d,int *e)
{int i,j,k,m;
for(i=0;i<*a;i++)
for(j=0;j<*b;j++)
for(k=0;k<*c;k++)
for(m=0;m<*d;m++)*e++;}
main()
{int a=10,b=10,c=10,d=10,e=0;
JFT(&a,&b,&c,&d,&e);
printf("%d\n",e);}
則程序段的輸出結(jié)果是
A)10000
B)1000
C)10001
D)0
(34)已知:int c[5][6];則對數(shù)組元素引用不正確的是
A)c[0+2][2*1]
B)c[1][3]
C)c[4-2][0]
D)c[5][2]
(35)以下能對二維數(shù)組c進(jìn)行正確的初始化的語句是
A)int c[3][]={{3},{3},{4}};
B)int c[][3]={{3},{3},{4}};
C)int c[3][2]={{3},{3},{4},{5}};
D)int c[][3]={{3},{},{3}};
(36)閱讀下列程序段,則程序段實(shí)現(xiàn)的功能是
#include "stdio.h"
main()
{ int k[10];
int j;
for(j=0;j<10;j++)
scanf("%d",&k[j]);
for(j=9;j>=0;j--)
printf("%d,",k[j]);}
A)輸入10個(gè)數(shù)據(jù)的順序輸入并輸出
B)輸入10個(gè)數(shù)據(jù)的逆序存放
C)輸入10個(gè)數(shù)據(jù)的逆序輸出
D)以上敘述均錯(cuò)誤
(37)閱讀程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int i,m,n;
for(i=0;i<3;i++)
{m=test1();
n=test2();}
printf("%d,%d\n",m,n);}
test1()
{ int x=0;
x++;
return x;}
test2()
{static int x=0;
x++;
return x;}
A)1,1
B)1,3
C)3,1
D)3,3
(38)以下關(guān)于宏替換敘述中,錯(cuò)誤的是
A)宏替換占用編譯時(shí)間
B)替換文本中可以包含已定義過的宏名
C)宏名可以由+號(hào)組成
D)宏替換只能是字符替換
(39)閱讀下面程序,則程序的輸出結(jié)果為
#include "stdio.h"
main()
{ int c[]={1,2,3,4,5,6};
int *p;
p=c;
printf("%d,",*p);
printf("%d\n",*++p);}
A)1,2
B)2,1
C)1,1
D)2,2
(40)有如下定義,則函數(shù)fun的首部可以是
#define N 5
#define M 6
main()
{doublec[M][N];
fun(c); }
A)fun(double a)
B)fun(double a[M][])
C)fun(double *a)
D)fun(double (*a)[N])
(41)下面關(guān)于字符串的說明中,錯(cuò)誤的是
A)char a[15]= "jft";
B)char a[]="jft";
C)char *a=:"jft";
D)char a[]={′j′,′f′,′t′};
(42)已知:char a[20]= "abc",b[20]= "defghi";則執(zhí)行下列語句后的輸出結(jié)果為
printf("%d",strlen(strcpy(a,b)));
A)11
B)6
C)5
D)以上答案都不正確
(43)閱讀如下程序段,則程序在先后輸入love和china后,輸出結(jié)果是
#include
#include
main()
{char a[30],b[30];
int k;
gets(a);
gets(b);
k=strcmp(a,b);
if(k>0)puts(a);
else if(k<0)puts(b);}
A)love
B)china
C)lovechina
D)沒有輸出結(jié)果
(44)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
#include "string.h"
#define N 10
#define M 10
char *find(char (*a)[M],int n)
{char *q; int i;
q=a[0];
for(i=0;i if(strcmp(a[i],q)<0)q=a[i];
return q;}
main()
{char s[N][M]={"tomeetme","you","and","he","china"};
char *p;
int n=5,i;
p=find(s,n);
puts(p);}
A)he
B)and
C)you
D)tomeetme
(45)當(dāng)定義一個(gè)結(jié)構(gòu)變量時(shí)系統(tǒng)分配給它的內(nèi)存是
A)各個(gè)成員占用內(nèi)存的總和
B)成員中占內(nèi)存量者所需的容量
C)定義的同時(shí)并不分配空間
D)結(jié)構(gòu)中最后一個(gè)成員所需內(nèi)存量
(46)有以下說明語句
struct a{ char x;
double y; } ptype;
則下列選項(xiàng)中錯(cuò)誤的是
A)a是用戶定義的結(jié)構(gòu)體標(biāo)識(shí)
B)struct a是用戶定義的結(jié)構(gòu)類型
C)ptype是用戶定義的結(jié)構(gòu)類型名
D)x和y都是結(jié)構(gòu)成員名
(47)已知有如下定義:struct a{char x; double y;}data,*t;,若有t=&data,則對data中的成員的正確引用是
A)(*t).data.x
B)(*t).x
C)t->data.x
D)t.data.x
(48)若有以下程序段,則選項(xiàng)中值為2的是
struct a{int n,*next;};
int x=1,y=2,z=3;
struct a s[3],*p=s;
s[0].next=&x;s[1].next=&y;s[2].next=&2;
A)*(p++)->next
B)*(++p)->next
C)(*p).next
D)(p++)->next
(49)下面程序段的輸出為
#include "stdio.h"
main()
{ int a=8,b;
b=a|1;
b>>=1;
printf("%d,%d\n",a,b);}
A)4,4
B)4,0
C)8,4
D)8,0
(50)閱讀下面程序,此程序的功能為
#include "stdio.h"
main(int argc,char *argv[])
{ FILE *p1,*p2;
int c;
p1=fopen(argv[1],"r");
p2=fopen(argv[2],"a");
c=fseek(p2,0L,2);
while((c=fgetc(p1))!=EOF)fputc(c,p2);
fclose(p1);
fclose(p2);}
A)實(shí)現(xiàn)將p1打開的文件中的內(nèi)容復(fù)制到p2打開的文件
B)實(shí)現(xiàn)將p2打開的文件中的內(nèi)容復(fù)制到p1打開的文件
C)實(shí)現(xiàn)將p1打開的文件中的內(nèi)容追加到p2打開的文件內(nèi)容之后
D)實(shí)現(xiàn)將p2打開的文件中的內(nèi)容追加到p1打開的文件內(nèi)容之后
二、填空題
(1)算法的工作量大小和實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少分別稱為算法的 【1】 。
【命題目的】本題考查了考生對算法的理解程度。
【解題要點(diǎn)】算法的復(fù)雜性是指對一個(gè)在有限步驟內(nèi)終止算法和所需存儲(chǔ)空間大小的估計(jì)。算法的計(jì)算量是算法的時(shí)間復(fù)雜性,算法所需存儲(chǔ)空間大小是算法的空間復(fù)雜性。
【考點(diǎn)鏈接】算法的各種屬性及其相互作用。
(2)數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的 【2】 以及對數(shù)據(jù)的操作運(yùn)算。
【命題目的】本題考查了數(shù)據(jù)結(jié)構(gòu)所包括的幾個(gè)方面。
【解題要點(diǎn)】數(shù)據(jù)結(jié)構(gòu)包括3個(gè)方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)及對數(shù)據(jù)的操作運(yùn)算。
【考點(diǎn)鏈接】數(shù)據(jù)結(jié)構(gòu)包含的3個(gè)方面及各方面之間的關(guān)系。
(3)可以把具有相同屬性的一些不同對象歸類,稱為 【3】 。
【命題目的】本題考查了對象的一些基本特征。
【解題要點(diǎn)】類描述的是具有相似性質(zhì)的一組對象;把具有相同屬性的一些不同對象歸為類,我們稱之為對象類。
(4)軟件工程包括3個(gè)要素,分別為方法、工具和 【4】 。
【命題目的】本題考查軟件工程的3要素。
【解題要點(diǎn)】軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的基礎(chǔ)上的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。
【考點(diǎn)鏈接】軟件工程的3個(gè)要素及各要素的作用。
(5)由關(guān)系數(shù)據(jù)庫系統(tǒng)支持的完整性約束是指 【5】 和參照完整性。
【命題目的】掌握關(guān)系的完整性約束。
【解題要點(diǎn)】關(guān)系的完整性約束指關(guān)系的某種約束條件,包括實(shí)體完整性、參照完整性和用戶定義的完整性。其中,前兩種完整性約束由關(guān)系數(shù)據(jù)庫系統(tǒng)自動(dòng)支持。
【考點(diǎn)鏈接】關(guān)系的各種性質(zhì)。
(6)表達(dá)式3*7/2+7/2%5的值為 【6】 。
解析: 算術(shù)運(yùn)算符的優(yōu)先級(jí)別依次為(由高到低):*,/,%,+,-。
(7)閱讀下面的程序,當(dāng)程序在執(zhí)行時(shí),如果輸入的是′A′,則輸出結(jié)果為 【7】 。
#include "stdio.h"
main()
{char a;
a=getchar();
switch(a)
{case 65: printf("%c",′A′);
case 66: printf("%c",′B′);
default :printf("%s\n","other");}}
解析: switch語句中的某一個(gè)標(biāo)號(hào)被選中,將依次執(zhí)行這個(gè)語句到default語句之間的所有語句。如遇到break語句之后就跳出了switch語句。
(8)以下程序的輸出結(jié)果是 【8】 。
main()
{char a []="abcdefg";
char b[10]="abcdefg";
printf("%d,%d\n",sizeof(a),sizeof(b));}
解析: 當(dāng)維數(shù)組省略維數(shù)時(shí),系統(tǒng)會(huì)按數(shù)組實(shí)際元數(shù)分配內(nèi)存空間,如規(guī)定了一維的大小,則按維數(shù)分配內(nèi)存空間的大小。
(9) 閱讀下面程序段,則執(zhí)行后的輸出結(jié)果為 【9】 。
#include "stdio.h"
main()
{int a=1;
for(;a<=15;)
if(++a%5!=2)continue;
else printf("%d",a);
printf("\n");}
解析: continue是結(jié)束本次循環(huán),即從continue開始到最后的執(zhí)行,直接執(zhí)行循環(huán)判定條件。
(10)以下程序的輸出結(jié)果是 【10】 。
main()
{int m=2,n=6;
for(;n>=0;n--)m*=n;
printf("%d\n",m);}
解析: for語句執(zhí)行最后時(shí)n的值為0,所以m的值也為0。
(11)閱讀下列程序,則執(zhí)行后的結(jié)果為 【11】 。
#include "stdio.h"
fun(int x,int y)
{ int z;
z=x;x=y;y=z;}
main()
{int a,b;
a=100;b=640;
fun(a,b);
printf("%d,%d\n",a,b);}
解析: 當(dāng)傳遞數(shù)據(jù)值的時(shí)候,在被調(diào)用函數(shù)內(nèi)部不能改變調(diào)用函數(shù)的變量的值。
(12)閱讀以下程序,使程序輸出結(jié)果為30,4.000 000,請?zhí)羁铡?BR> #include "stdio.h"
main()
{int a=30,b=40,c;
double 【12】 ,s;
s=fun(&a,&b,&c);
printf("%d,%lf\n",c,s);}
double fun(int *a,int *b, 【13】 )
{ *c=*a%*b;
return(4.0); }
解析: 函數(shù)說明的一般形式為:類型名 函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)。
(13)下面程序段的功能是:從鍵盤上輸入兩個(gè)字符串,對兩個(gè)字符串分別排序;然后將它們合并,合并后的字符串按ASCII碼值從小到大排序,并刪去相同的字符。請?zhí)羁铡?BR> #include "stdio.h"
fun(char *x,char *y,char *z)
{char t,*p;
p=z;
while(*x!=′\0′&&*y!=′\0′)
{ t=*x<*y?*x++:*y<*x?*y++: 【14】 ;
if(*p==′\0′)*p=t;
else if(t!=*p)*++p=t;}
if(*x!=′\0′)
while(*x!=′\0′)
if(*x!=*p)*++p=*x++;
else x++;
if(*y!=′\0′)while(*y!=′\0′)
if(*y!=*p)*++p=*y++;
else y++;
*++p= 【15】 ;}
sort(char *s)
{ int i,j,k;
char t,*p;
p=s;
for(k=0;*p!=′\0′;k++)p++;
for(i=0;i for(j=i+1;j if(s[i]>s[j])
{ 【16】 }}
main()
{ char s1[100],s2[100],s3[200];
scanf("%s",s1);
scanf("%s",s2);
sort(s1);
sort(s2);
s3[0]=′\0′;
fun(s1,s2,s3);
printf("%s\n",s3);}
解析: 根據(jù)題目的要求認(rèn)真閱讀程序,找到各個(gè)部分的功能所在,這樣就很容易做出答案。
(14)下面函數(shù)是一個(gè)求階乘的遞歸調(diào)用函數(shù)。請?zhí)羁铡?BR> int fun(int k)
{if(k==1) 【17】 ;
else return( 【18】 );}
解析: 解這個(gè)題目應(yīng)該首先寫遞歸公式,之后很容易得出答案。
(15)以下函數(shù)set用來建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插入在鏈表的末尾。單向鏈表的頭指針作為函數(shù)值返回,請?zhí)羁铡?BR> struct node{char data;
struct node *next; };
struct node *set()
{struct node *t1,*t2,*t3;
char ch;
t1=(struct node*)malloc(sizeof(struct node));
t3=t2=t1;
ch=getchar();
while(ch!=′\n′)
{ t2= 【19】 malloc(sizeof(struct node));
t2->data=ch;
t3->next=t2;
t3=t2;
ch=getchar();}
t3->next=′\0′ ;
【20】 }
解析: 動(dòng)態(tài)申請的返回值是void *類型,所以在使用動(dòng)態(tài)申請函數(shù)的時(shí)候都要在前面加上適當(dāng)?shù)膹?qiáng)制類型轉(zhuǎn)換,使它的返回值有意義。
選擇題
01-05 C B D B B
06-10 B B B B B
11-15 B C C B C
16-20 D C A D C
21-25 A D B B B
26-30 D A C D B
31-35 D A D B C
36-40 C B C A D
41-45 D B A B A
46-50 C B B C C
A)動(dòng)態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu) B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)
C)線性結(jié)構(gòu)和非線性結(jié)構(gòu) D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
(2)設(shè)一棵二叉樹中有3個(gè)葉子結(jié)點(diǎn),有8個(gè)度為1的結(jié)點(diǎn),則該二叉樹中總的結(jié)點(diǎn)數(shù)為
A)12 B)13
C)14 D)15
(3)在下列幾種排序方法中,要求內(nèi)存量的是
A)插入排序
B)選擇排序
C)快速排序
D)歸并排序
(4)下列敘述中,不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則的是
A)自頂向下
B)由底向上
C)模塊化
D)限制使用goto語句
(5)下列不屬于軟件調(diào)試技術(shù)的是
A)強(qiáng)行排錯(cuò)法
B)集成測試法
C)回溯法
D)原因排除法
(6)為了避免流程圖在描述程序邏輯時(shí)的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為
A)PAD圖 B)N-S圖
C)結(jié)構(gòu)圖 D)數(shù)據(jù)流圖
(7)軟件復(fù)雜性度量的參數(shù)包括
A)效率
B)規(guī)模
C)完整性
D)容錯(cuò)性
(8)下列敘述中,不屬于數(shù)據(jù)庫系統(tǒng)的是
A)數(shù)據(jù)庫
B)數(shù)據(jù)庫管理系統(tǒng)
C)數(shù)據(jù)庫管理員
D)數(shù)據(jù)庫應(yīng)用系統(tǒng)
(9)數(shù)據(jù)庫系統(tǒng)的核心是
A)數(shù)據(jù)庫
B)數(shù)據(jù)庫管理系統(tǒng)
C)數(shù)據(jù)模型
D)軟件工具
(10)視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)的是
A)自頂向下 B)由外向內(nèi)
C)由內(nèi)向外 D)自底向上
(11)下列常數(shù)中不能作為C語言常量的是
A)0xabc
B)2.5e-0.2
C)32
D)0747
(12)設(shè)int型的數(shù)據(jù)長度為2個(gè)字節(jié),則unsigned int 類型數(shù)據(jù)的取值范圍是
A)-127~128
B)0~255
C)0~65535
D)0~32768
(13)已知int t=6,s;則執(zhí)行語句s=(++t)+(t++);后,s的值是
A)12
B)13
C)14
D)15
(14)已知int x=6,y=2,z;則執(zhí)行表達(dá)式z=x=x>y后,變量z的值為
A)0
B)1
C)4
D)5
(15)已知int i,a;執(zhí)行語句i=(a=3,a++,--a,a+4,a+5,++a);后,變量i的值為
A)2
B)3
C)4
D)5
(16)下列說法中正確的是
A)一個(gè)C程序是從命令行開始執(zhí)行的
B)C程序中有些執(zhí)行語句不用分號(hào)(;)結(jié)束
C)分號(hào)不是C語句的一部分,是C語句之間的分隔符
D)命令行必須用“#”開頭,最后不能加“;”號(hào),命令行不是C程序中的語句
(17)已知int x=2;執(zhí)行語句x*=x+=++x;后,x的值是
A)16
B)26
C)36
D)46
(18)已知int a=20,b=5;則執(zhí)行以下語句后的輸出結(jié)果是
printf("%d\n",a%=(b%=2));
A)0
B)1
C)2
D)3
(19)現(xiàn)有以下程序段
#include
main()
{ int a,b,c;
scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c); }
若輸出的結(jié)果為a=20,b=30,c=40,則以下能夠正確輸入數(shù)據(jù)的是
A)a=10]20,b=20]30,c=40
B)20,30,40
C)a=20,b=30,c=40
D)a=10]20,b=30]20,c=40
[注]: “]”表示空格,
(20)已知int x=5,y=3;則表達(dá)式(x||y)&&78的結(jié)果為
A)1
B)0
C)5
D)78
(21)有如下程序段
#include "stdio.h"
main()
{int a=10,b=50,c=30;
a=a>30?1:2;
b=b>30?1:2;
c=c>30?1:2;
printf("%d,%d,%d\n",a,b,c);}
則執(zhí)行結(jié)果為
A)2,1,2
B)1,2,1
C)1,1,2
D)2,1,1
(22)閱讀如下程序段
#include "stdio.h"
main()
{ int a=45,b=40,c=50,d;
d=a>30?b:c;
switch(d)
{ case 30 : printf("%d,",a);
case 40 : printf("%d,",b);
case 50 : printf("%d,",c);
default : printf("#");}}
則輸出的結(jié)果是
A)40,50,
B)50,#
C)40,#
D)40,50,#
(23)若有定義int k=10;則下列程序的輸出結(jié)果為
do{
printf("%d",k--); } while(!k);
A)9
B)10
C)10987654321
D)沒有輸出
(24)閱讀下列程序段,則程序的輸出結(jié)果是
#include "stdio.h"
main()
{ int a=10,b=10,k;
for(k=0;a>8;b=++k)
printf("%d,%d,",a--,--b);
printf("\n");}
A)10,10,10,0,
B)10,9,9,0,
C)10,10,9,1,
D)9,9,9,1,
(25)下列程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{int a,b,m;
for(a=5;a>=1;a--)
{ m=0;
for(b=a;b<=5;b++)
m=m+a*b;}
printf("%d\n",m);}
A)30
B)15
C)20
D)10
(26)有字符串如下,"\n\\\407as1\"\xabc",則字符串的長度為
A)6
B)7
C)8
D)9
(27)閱讀下面程序段
#include "stdio.h"
main()
{ char c;
c=(′z′-′a′)/2+′A′;
putchar(c);}
輸出結(jié)果為
A)M
B)N
C)O
D)Q
(28)下列說法中不正確的是
A)C語言規(guī)定,不能在一個(gè)函數(shù)的內(nèi)部再定義函數(shù)
B)在沒有聲明函數(shù)返回值類型的情況下,C默認(rèn)的函數(shù)返回值類型為int型
C)函數(shù)的類型可以是整型、實(shí)型、字符型,但不能是指針型
D)函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號(hào)不能省略
(29)現(xiàn)有如下程序,則程序的輸出結(jié)果為
#include "stdio.h"
int f(int a,int b)
{int c;
if(a>0&&a<10)c=(a+b)/2;
else c=a*b/2;
return c;}
main()
{ int a=8,b=20,c;
c=f(a,b);
printf("%d\n",c);}
A)隨機(jī)數(shù)
B)80
C)28
D)14
(30)閱讀如下程序段,則程序段的執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
main()
{ char c;
int i;
char count();
int p(char);
for(i=0;i<30;i++)c=count();
p(c);}
char count()
{ char str=′A′;
str+=1;
return(str);}
p(char c)
{putchar(c);
putchar(′\n′);}
A)A
B)B
C)a
D)b
(31)閱讀如下程序段,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int a,*p,*q,**w;
p=&a;
q=&a;
w=&p;
*p=5%6;
*q=5;
**w=3;
printf("%d\n",a);}
A)無確定值
B)1
C)5
D)3
(32)現(xiàn)有定義int a=10,*p=&a;則不能使a的內(nèi)容增1的語句是
A)*p++;
B)*p=*p+1;
C)++*p;
D)*p+=1;
(33)現(xiàn)有下列程序段
#include "stdio.h"
void JFT(int *a,int *b,int *c,int *d,int *e)
{int i,j,k,m;
for(i=0;i<*a;i++)
for(j=0;j<*b;j++)
for(k=0;k<*c;k++)
for(m=0;m<*d;m++)*e++;}
main()
{int a=10,b=10,c=10,d=10,e=0;
JFT(&a,&b,&c,&d,&e);
printf("%d\n",e);}
則程序段的輸出結(jié)果是
A)10000
B)1000
C)10001
D)0
(34)已知:int c[5][6];則對數(shù)組元素引用不正確的是
A)c[0+2][2*1]
B)c[1][3]
C)c[4-2][0]
D)c[5][2]
(35)以下能對二維數(shù)組c進(jìn)行正確的初始化的語句是
A)int c[3][]={{3},{3},{4}};
B)int c[][3]={{3},{3},{4}};
C)int c[3][2]={{3},{3},{4},{5}};
D)int c[][3]={{3},{},{3}};
(36)閱讀下列程序段,則程序段實(shí)現(xiàn)的功能是
#include "stdio.h"
main()
{ int k[10];
int j;
for(j=0;j<10;j++)
scanf("%d",&k[j]);
for(j=9;j>=0;j--)
printf("%d,",k[j]);}
A)輸入10個(gè)數(shù)據(jù)的順序輸入并輸出
B)輸入10個(gè)數(shù)據(jù)的逆序存放
C)輸入10個(gè)數(shù)據(jù)的逆序輸出
D)以上敘述均錯(cuò)誤
(37)閱讀程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int i,m,n;
for(i=0;i<3;i++)
{m=test1();
n=test2();}
printf("%d,%d\n",m,n);}
test1()
{ int x=0;
x++;
return x;}
test2()
{static int x=0;
x++;
return x;}
A)1,1
B)1,3
C)3,1
D)3,3
(38)以下關(guān)于宏替換敘述中,錯(cuò)誤的是
A)宏替換占用編譯時(shí)間
B)替換文本中可以包含已定義過的宏名
C)宏名可以由+號(hào)組成
D)宏替換只能是字符替換
(39)閱讀下面程序,則程序的輸出結(jié)果為
#include "stdio.h"
main()
{ int c[]={1,2,3,4,5,6};
int *p;
p=c;
printf("%d,",*p);
printf("%d\n",*++p);}
A)1,2
B)2,1
C)1,1
D)2,2
(40)有如下定義,則函數(shù)fun的首部可以是
#define N 5
#define M 6
main()
{doublec[M][N];
fun(c); }
A)fun(double a)
B)fun(double a[M][])
C)fun(double *a)
D)fun(double (*a)[N])
(41)下面關(guān)于字符串的說明中,錯(cuò)誤的是
A)char a[15]= "jft";
B)char a[]="jft";
C)char *a=:"jft";
D)char a[]={′j′,′f′,′t′};
(42)已知:char a[20]= "abc",b[20]= "defghi";則執(zhí)行下列語句后的輸出結(jié)果為
printf("%d",strlen(strcpy(a,b)));
A)11
B)6
C)5
D)以上答案都不正確
(43)閱讀如下程序段,則程序在先后輸入love和china后,輸出結(jié)果是
#include
#include
main()
{char a[30],b[30];
int k;
gets(a);
gets(b);
k=strcmp(a,b);
if(k>0)puts(a);
else if(k<0)puts(b);}
A)love
B)china
C)lovechina
D)沒有輸出結(jié)果
(44)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
#include "string.h"
#define N 10
#define M 10
char *find(char (*a)[M],int n)
{char *q; int i;
q=a[0];
for(i=0;i
return q;}
main()
{char s[N][M]={"tomeetme","you","and","he","china"};
char *p;
int n=5,i;
p=find(s,n);
puts(p);}
A)he
B)and
C)you
D)tomeetme
(45)當(dāng)定義一個(gè)結(jié)構(gòu)變量時(shí)系統(tǒng)分配給它的內(nèi)存是
A)各個(gè)成員占用內(nèi)存的總和
B)成員中占內(nèi)存量者所需的容量
C)定義的同時(shí)并不分配空間
D)結(jié)構(gòu)中最后一個(gè)成員所需內(nèi)存量
(46)有以下說明語句
struct a{ char x;
double y; } ptype;
則下列選項(xiàng)中錯(cuò)誤的是
A)a是用戶定義的結(jié)構(gòu)體標(biāo)識(shí)
B)struct a是用戶定義的結(jié)構(gòu)類型
C)ptype是用戶定義的結(jié)構(gòu)類型名
D)x和y都是結(jié)構(gòu)成員名
(47)已知有如下定義:struct a{char x; double y;}data,*t;,若有t=&data,則對data中的成員的正確引用是
A)(*t).data.x
B)(*t).x
C)t->data.x
D)t.data.x
(48)若有以下程序段,則選項(xiàng)中值為2的是
struct a{int n,*next;};
int x=1,y=2,z=3;
struct a s[3],*p=s;
s[0].next=&x;s[1].next=&y;s[2].next=&2;
A)*(p++)->next
B)*(++p)->next
C)(*p).next
D)(p++)->next
(49)下面程序段的輸出為
#include "stdio.h"
main()
{ int a=8,b;
b=a|1;
b>>=1;
printf("%d,%d\n",a,b);}
A)4,4
B)4,0
C)8,4
D)8,0
(50)閱讀下面程序,此程序的功能為
#include "stdio.h"
main(int argc,char *argv[])
{ FILE *p1,*p2;
int c;
p1=fopen(argv[1],"r");
p2=fopen(argv[2],"a");
c=fseek(p2,0L,2);
while((c=fgetc(p1))!=EOF)fputc(c,p2);
fclose(p1);
fclose(p2);}
A)實(shí)現(xiàn)將p1打開的文件中的內(nèi)容復(fù)制到p2打開的文件
B)實(shí)現(xiàn)將p2打開的文件中的內(nèi)容復(fù)制到p1打開的文件
C)實(shí)現(xiàn)將p1打開的文件中的內(nèi)容追加到p2打開的文件內(nèi)容之后
D)實(shí)現(xiàn)將p2打開的文件中的內(nèi)容追加到p1打開的文件內(nèi)容之后
二、填空題
(1)算法的工作量大小和實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少分別稱為算法的 【1】 。
【命題目的】本題考查了考生對算法的理解程度。
【解題要點(diǎn)】算法的復(fù)雜性是指對一個(gè)在有限步驟內(nèi)終止算法和所需存儲(chǔ)空間大小的估計(jì)。算法的計(jì)算量是算法的時(shí)間復(fù)雜性,算法所需存儲(chǔ)空間大小是算法的空間復(fù)雜性。
【考點(diǎn)鏈接】算法的各種屬性及其相互作用。
(2)數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的 【2】 以及對數(shù)據(jù)的操作運(yùn)算。
【命題目的】本題考查了數(shù)據(jù)結(jié)構(gòu)所包括的幾個(gè)方面。
【解題要點(diǎn)】數(shù)據(jù)結(jié)構(gòu)包括3個(gè)方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)及對數(shù)據(jù)的操作運(yùn)算。
【考點(diǎn)鏈接】數(shù)據(jù)結(jié)構(gòu)包含的3個(gè)方面及各方面之間的關(guān)系。
(3)可以把具有相同屬性的一些不同對象歸類,稱為 【3】 。
【命題目的】本題考查了對象的一些基本特征。
【解題要點(diǎn)】類描述的是具有相似性質(zhì)的一組對象;把具有相同屬性的一些不同對象歸為類,我們稱之為對象類。
(4)軟件工程包括3個(gè)要素,分別為方法、工具和 【4】 。
【命題目的】本題考查軟件工程的3要素。
【解題要點(diǎn)】軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的基礎(chǔ)上的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。
【考點(diǎn)鏈接】軟件工程的3個(gè)要素及各要素的作用。
(5)由關(guān)系數(shù)據(jù)庫系統(tǒng)支持的完整性約束是指 【5】 和參照完整性。
【命題目的】掌握關(guān)系的完整性約束。
【解題要點(diǎn)】關(guān)系的完整性約束指關(guān)系的某種約束條件,包括實(shí)體完整性、參照完整性和用戶定義的完整性。其中,前兩種完整性約束由關(guān)系數(shù)據(jù)庫系統(tǒng)自動(dòng)支持。
【考點(diǎn)鏈接】關(guān)系的各種性質(zhì)。
(6)表達(dá)式3*7/2+7/2%5的值為 【6】 。
解析: 算術(shù)運(yùn)算符的優(yōu)先級(jí)別依次為(由高到低):*,/,%,+,-。
(7)閱讀下面的程序,當(dāng)程序在執(zhí)行時(shí),如果輸入的是′A′,則輸出結(jié)果為 【7】 。
#include "stdio.h"
main()
{char a;
a=getchar();
switch(a)
{case 65: printf("%c",′A′);
case 66: printf("%c",′B′);
default :printf("%s\n","other");}}
解析: switch語句中的某一個(gè)標(biāo)號(hào)被選中,將依次執(zhí)行這個(gè)語句到default語句之間的所有語句。如遇到break語句之后就跳出了switch語句。
(8)以下程序的輸出結(jié)果是 【8】 。
main()
{char a []="abcdefg";
char b[10]="abcdefg";
printf("%d,%d\n",sizeof(a),sizeof(b));}
解析: 當(dāng)維數(shù)組省略維數(shù)時(shí),系統(tǒng)會(huì)按數(shù)組實(shí)際元數(shù)分配內(nèi)存空間,如規(guī)定了一維的大小,則按維數(shù)分配內(nèi)存空間的大小。
(9) 閱讀下面程序段,則執(zhí)行后的輸出結(jié)果為 【9】 。
#include "stdio.h"
main()
{int a=1;
for(;a<=15;)
if(++a%5!=2)continue;
else printf("%d",a);
printf("\n");}
解析: continue是結(jié)束本次循環(huán),即從continue開始到最后的執(zhí)行,直接執(zhí)行循環(huán)判定條件。
(10)以下程序的輸出結(jié)果是 【10】 。
main()
{int m=2,n=6;
for(;n>=0;n--)m*=n;
printf("%d\n",m);}
解析: for語句執(zhí)行最后時(shí)n的值為0,所以m的值也為0。
(11)閱讀下列程序,則執(zhí)行后的結(jié)果為 【11】 。
#include "stdio.h"
fun(int x,int y)
{ int z;
z=x;x=y;y=z;}
main()
{int a,b;
a=100;b=640;
fun(a,b);
printf("%d,%d\n",a,b);}
解析: 當(dāng)傳遞數(shù)據(jù)值的時(shí)候,在被調(diào)用函數(shù)內(nèi)部不能改變調(diào)用函數(shù)的變量的值。
(12)閱讀以下程序,使程序輸出結(jié)果為30,4.000 000,請?zhí)羁铡?BR> #include "stdio.h"
main()
{int a=30,b=40,c;
double 【12】 ,s;
s=fun(&a,&b,&c);
printf("%d,%lf\n",c,s);}
double fun(int *a,int *b, 【13】 )
{ *c=*a%*b;
return(4.0); }
解析: 函數(shù)說明的一般形式為:類型名 函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)。
(13)下面程序段的功能是:從鍵盤上輸入兩個(gè)字符串,對兩個(gè)字符串分別排序;然后將它們合并,合并后的字符串按ASCII碼值從小到大排序,并刪去相同的字符。請?zhí)羁铡?BR> #include "stdio.h"
fun(char *x,char *y,char *z)
{char t,*p;
p=z;
while(*x!=′\0′&&*y!=′\0′)
{ t=*x<*y?*x++:*y<*x?*y++: 【14】 ;
if(*p==′\0′)*p=t;
else if(t!=*p)*++p=t;}
if(*x!=′\0′)
while(*x!=′\0′)
if(*x!=*p)*++p=*x++;
else x++;
if(*y!=′\0′)while(*y!=′\0′)
if(*y!=*p)*++p=*y++;
else y++;
*++p= 【15】 ;}
sort(char *s)
{ int i,j,k;
char t,*p;
p=s;
for(k=0;*p!=′\0′;k++)p++;
for(i=0;i
{ 【16】 }}
main()
{ char s1[100],s2[100],s3[200];
scanf("%s",s1);
scanf("%s",s2);
sort(s1);
sort(s2);
s3[0]=′\0′;
fun(s1,s2,s3);
printf("%s\n",s3);}
解析: 根據(jù)題目的要求認(rèn)真閱讀程序,找到各個(gè)部分的功能所在,這樣就很容易做出答案。
(14)下面函數(shù)是一個(gè)求階乘的遞歸調(diào)用函數(shù)。請?zhí)羁铡?BR> int fun(int k)
{if(k==1) 【17】 ;
else return( 【18】 );}
解析: 解這個(gè)題目應(yīng)該首先寫遞歸公式,之后很容易得出答案。
(15)以下函數(shù)set用來建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插入在鏈表的末尾。單向鏈表的頭指針作為函數(shù)值返回,請?zhí)羁铡?BR> struct node{char data;
struct node *next; };
struct node *set()
{struct node *t1,*t2,*t3;
char ch;
t1=(struct node*)malloc(sizeof(struct node));
t3=t2=t1;
ch=getchar();
while(ch!=′\n′)
{ t2= 【19】 malloc(sizeof(struct node));
t2->data=ch;
t3->next=t2;
t3=t2;
ch=getchar();}
t3->next=′\0′ ;
【20】 }
解析: 動(dòng)態(tài)申請的返回值是void *類型,所以在使用動(dòng)態(tài)申請函數(shù)的時(shí)候都要在前面加上適當(dāng)?shù)膹?qiáng)制類型轉(zhuǎn)換,使它的返回值有意義。
選擇題
01-05 C B D B B
06-10 B B B B B
11-15 B C C B C
16-20 D C A D C
21-25 A D B B B
26-30 D A C D B
31-35 D A D B C
36-40 C B C A D
41-45 D B A B A
46-50 C B B C C