一、選擇題
(1)下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是
A)線性鏈表 B)棧
C)循環(huán)鏈表 D)順序表
(2)具有3個(gè)結(jié)點(diǎn)的二叉樹有
A)2種形態(tài) B)4種形態(tài)
C)7種形態(tài) D)5種形態(tài)
(3)設(shè)有下列二叉樹:
對(duì)此二叉樹前序遍歷的結(jié)果為
A)ZBTYCPXA B)ATBZXCYP
C)ZBTACYXP D)ATBZXCPY
(4)結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是
A)程序的規(guī)模 B)程序的效率
C)程序設(shè)計(jì)語言的先進(jìn)性 D)程序易讀性
(5)程序的3種基本控制結(jié)構(gòu)是
A)過程、子過程和分程序 B)順序、選擇和重復(fù)
C)遞歸、堆棧和隊(duì)列 D)調(diào)用、返回和轉(zhuǎn)移
(6)下列敘述中,不屬于測(cè)試的特征的是
A)測(cè)試的挑剔性 B)完全測(cè)試的不可能性
C)測(cè)試的可靠性 D)測(cè)試的經(jīng)濟(jì)性
(7)需求分析中開發(fā)人員要從用戶那里了解
A)軟件做什么 B)用戶使用界面
C)輸入的信息 D)軟件的規(guī)模
(8)下列關(guān)系模型中,能使經(jīng)運(yùn)算后得到的新關(guān)系中屬性個(gè)數(shù)多于原來關(guān)系中屬性個(gè)數(shù)的是
A)選擇 B)連接
C)投影 D)并
(9)下列敘述中,正確的是
A)用E-R圖能夠表示實(shí)體集間一對(duì)一的聯(lián)系、一對(duì)多的聯(lián)系和多對(duì)多的聯(lián)系
B)用E-R圖只能表示實(shí)體集之間一對(duì)一的聯(lián)系
C)用E-R圖只能表示實(shí)體集之間一對(duì)多的聯(lián)系
D)用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
(10)“年齡在18~25之間”這種約束是屬于數(shù)據(jù)庫當(dāng)中的
A)原子性措施 B)一致性措施
C)完整性措施 D)安全性措施
(11)以下說法錯(cuò)誤的是
A)高級(jí)語言都是用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式
B)計(jì)算機(jī)只能處理由0和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù)
C)C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個(gè)后綴為.EXE的二進(jìn)制文件
D)每一種高級(jí)語言都有它對(duì)應(yīng)的編譯程序
(12)算法是指為解決某個(gè)特定問題而采取的確定且有限的步驟,下面不屬于算法的五個(gè)特性的是
A)有零個(gè)輸入或多個(gè)輸入
B)高效性
C)有窮性
D)確定性
(13)已知int a=6; 則執(zhí)行a+=a-=a*a;語句后,a的值為
A)36
B)0
C)-24
D)-60
(14)下面各選項(xiàng)中,均是C語言標(biāo)識(shí)符的選項(xiàng)組是
A)forchinato
B)long_123short56_do
C)voidunion_342
D)text.txt _023_3ew
(15)下列表達(dá)式中,結(jié)果為5的是
A)6*5%6
B)5*-2+15
C)5+75
D)6+-2/3
(16)下列常量中,為不合法的實(shí)型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
(17)關(guān)于C語言的主函數(shù)描述正確的是
A)C程序可以有多個(gè)main函數(shù)
B)C程序必有一個(gè)而且只能有一個(gè)main函數(shù)
C)C程序可以沒有main函數(shù)
D)C程序的執(zhí)行不一定在main函數(shù)開始執(zhí)行
(18)已知int a=1,b=-1;則語句printf("%d\n",(a--,++b));的輸出結(jié)果是
A)-1
B)0
C)1
D)語句錯(cuò)誤
(19)已知int a,b;double c;則以下語句中錯(cuò)誤的函數(shù)調(diào)用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
(20)已知x,y,z均為整型變量,且值均為1,則執(zhí)行語句++x||++y&&++z;后,表達(dá)式x+y的值為
A)1
B)2
C)3
D)4
(21)若int k=8;則執(zhí)行下列程序后,變量k的正確結(jié)果是
main()
{int k=8;
switch(k)
{case 9:k+=1;
case 10:k+=1;
case 11:k+=1;break;
default:k+=1;}
printf("%d\n",k);}
A)12
B)11
C)10
D)9
(22)若int i,j;,則for(i=j=0;i<10&&j<8;i++,j+=3)控制的循環(huán)體執(zhí)行的次數(shù)是
A)9
B)8
C)3
D)2
(23)下列程序的輸出結(jié)果是
#include "stdio.h"
main()
{ int i=6;
while(i--)
printf("%d",--i);
printf("\n");}
A)531
B)420
C)654321
D)死循環(huán)
(24)閱讀下列程序,則執(zhí)行結(jié)果是
#include "stdio.h"
main()
{int a=0,b=0,c=0,i;
for(i=0;i<4;i++)
switch(i)
{case 0:a=i++;
case 1:b=i++;
case 2:c=i++;
case 3:i++;}
printf("%d,%d,%d,%d\n",a,b,c,i);}
A)0,1,3,4
B)1,2,3,4
C)0,1,2,5
D)0,2,3,4
(25)下面程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{int j,i,k=0;
for(j=50;j<=60;j++)
{if(!(k))printf("\n");
for(i=2;i if(i>=j-1){printf("%d",j);
k++;}}}
A)5359
B)5953
C)3595
D)9535
(26)已知char ch=′C′;則以下表達(dá)式的值是
ch=(ch>=′A′ && ch<=′Z′)?(ch+32):ch;
A)A
B)a
C)Z
D)c
(27)以下描述錯(cuò)誤的是
A)C程序中,函數(shù)可以直接或間接的調(diào)用自己
B)函數(shù)調(diào)用時(shí),函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致
C)函數(shù)說明語句中的類型必須與函數(shù)返回值的類型一致
D)實(shí)參數(shù)可以與形參個(gè)數(shù)不一致
(28)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{fun3(fun1(),fun2());}
fun1()
{ int k=20;
return k;}
fun2()
{ int a=15;
return a;}
fun3(int a,int b)
{int k;
k=(a-b)*(a+b);
printf("%d\n",k);}
A)0
B)184
C)175
D)編譯不通過
(29)閱讀下面程序,則執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
fun(int a,int b)
{int s;
s=a*b/2;
printf("%d\n",s);}
main()
{int a=10,b=16;
fun(a,b);}
A)10
B)16
C)160
D)80
(30)閱讀下面程序,則程序執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int a=4,b=6,c=7;
double d,fun(int,int,int);
d=fun(a,b,c);
printf("%lf\n",d);}
double fun(int a,int b,int c)
{double s;
s=a%b*c;
return s;}
A)27
B)27.000000
C)28
D)28.000000
(31)下列不合法的指針變量的定義是
A)int *_k;
B)char *_245;
C)int *p;
D)double *5_is
(32)下列關(guān)于指針變量賦空值的說法錯(cuò)誤的是
A)當(dāng)賦空值的時(shí)候,變量指向地址為0的存儲(chǔ)單元
B)賦值語句可以表達(dá)為變量名=′\0′;
C)賦值語句可以表達(dá)為變量名=0;
D)一個(gè)指針變量可以被賦空值
(33)閱讀下面程序,則執(zhí)行后輸出的結(jié)果為
#include "stdio.h"
void fun(int *a,int *b)
{int m;
m=(*a+*b)*(*a+*b);
m+=(*a-*b)*(*a-*b);
printf("%d\n",m);}
main()
{ int a=5,b=6,*x=&a,*y=&b;
fun(x,y);}
A)120
B)121
C)122
D)123
(34)閱讀下面程序,則輸出結(jié)果是
#include "stdio.h"
void fun(int *a,int *b)
{int c=20,d=25;
*a=c/3;
*b=d/5;}
main()
{ int a=3,b=5;
fun(&a,&b);
printf("%d,%d\n",a,b);}
A)6,5
B)5,6
C)20,25
D)3,5
(35)以下對(duì)一維數(shù)組c進(jìn)行正確的定義初始化的語句是
A)int c[10]=0;
B)int c[10]={0}*10;
C)int c[1]={0,0,0,0,0,0,0};
D)int c[10]={0};(36)以下二維數(shù)組c的定義形式是
A)int c[3][]
B)float c[3,4]
C)double c[3][4]
D)float c(3)(4)
(37)閱讀下列程序,則執(zhí)行后輸出的結(jié)果是
#include "stdio.h"
int k=1;
main()
{fun(k);
printf("%d\n",k);}
fun(int k)
{ k++;
k=k*6;}
A)1
B)2
C)6
D)12
(38)已知#define M 2;的宏定義,執(zhí)行語句k=M*5;后,k的值是
A)10
B)5
C)2
D)以上答案都不對(duì)
(39)已知:int c[3][4];則對(duì)數(shù)組元素引用正確的是
A)c[1][4]
B)c[1.5][0]
C)c[1+0][0]
D)以上表達(dá)都錯(cuò)誤
(40)現(xiàn)有如下程序段
#include "stdio.h"
void fun(int *a,int *b,int *c)
{*c=*a+*b;}
main()
{int a[2]={12,23},c;
fun(a,a+1,&c);
printf("%d\n",c);}
則程序的輸出結(jié)果為
A)23
B)12
C)0
D)35
(41)若有以下語句,則正確的描述是
char a[]="toyou";
char b[]={′t′,′o′,′y′,′o′,′u′};
A)a數(shù)組和b數(shù)組的長度相同
B)a數(shù)組長度小于b數(shù)組長度
C)a數(shù)組長度大于b數(shù)組長度
D)a數(shù)組等價(jià)于b數(shù)組
(42)已知:char a[15],b[15]={"I love china"};則在程序中能將字符串I love china賦給數(shù)組a的正確語句是
A)a="I love china";
B)strcpy(b,a);
C)a=b;
D)strcpy(a,b);
(44)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{ char *str="abcdefghijklmnopq";
while(*str++!=′e′);
printf("%c\n",*str);}
A)f
B)a
C)e
D)q
(45)現(xiàn)有如下程序段
#include "stdio.h"
int fun(int k,int *m)
{if(k%3)*m=k*k;
else *m=k/3;}
main()
{ int (*p)(int,int *),m;
p=fun;
(*p)(78,&m);
printf("%d\n",m);}
則程序段的輸出結(jié)果為
A)24
B)25
C)26
D)27
(46)閱讀下列程序,則執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
fun(int x)
{if(x/2>0)fun(x/2);
printf("%d",x%2);}
main()
{ fun(20);
putchar(′\n′);}
A)11100
B)10100
C)10101
D)10110
(47)閱讀如下程序段,則執(zhí)行后程序的輸出結(jié)果是
#include
main()
{structa{int x; int y;}num[2]={{20,5},{6,7}};
printf("%d\n",num[0].x/num[0].y*num[1].y);}
A)0
B)28
C)20
D)5
(48)閱讀程序段,則執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
typedef union{ long x[2];
int y[4];
char z[8];} atx;
typedef struct aa{ long x[2];
int y[4];
char z[8]; } stx;
main()
{printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}
A)union=8,struct aa=8
B)union=8,struct aa=24
C)union=24,struct aa=8
D)union=24,struct aa=24
(49)閱讀下列程序段
#include "stdio.h"
typedef struct aa
{ int a;
struct aa *next; } M;
void set(M *k,int i,int *b)
{ int j,d=0;
for(j=1;j { k[j-1].next=&k[j];
k[j-1].a=b[d++]; }
k[j].a=b[d]; }
main()
{ M k[5],*p;
int d[5]={23,34,45,56,67};
set(k,5,d);
p=k+1;
printf("%d\n",table); }
則下面的表達(dá)式在table處,能使程序執(zhí)行后,打印輸出數(shù)據(jù)45的是
A)p->next->a
B)++p->a
C)(*p).a++
D)p++->a
(50)閱讀下面程序,程序?qū)崿F(xiàn)的功能是(a123.txt在當(dāng)前盤符下已經(jīng)存在)
#include "stdio.h"
void main()
{FILE *fp;
int a[10],*p=a;
fp=fopen("a123.txt","w");
while( strlen(gets(p))>0 )
{ fputs(a,fp);
fputs("\n",fp);}
fclose(fp);}
A)從鍵盤輸入若干行字符,按行號(hào)倒序?qū)懭胛谋疚募123.txt中
B)從鍵盤輸入若干行字符,取前2行寫入文本文件a123.txt中
C)從鍵盤輸入若干行字符,第一行寫入文本文件a123.txt中
D)從鍵盤輸入若干行字符,依次寫入文本文件a123.txt中二、填空題
(1)排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、 【1】 和選擇排序等。
【命題目的】需要考生記住常見的排序方法。
【解題要點(diǎn)】常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。
【考點(diǎn)鏈接】常見的排序方法及其作用機(jī)制和區(qū)別。
(2)當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為 【2】 。
【命題目的】本題考查了隊(duì)列的基本性質(zhì)。
【解題要點(diǎn)】入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時(shí)置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循環(huán)隊(duì)列非空(s=1)時(shí)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算,這種情況稱為“上溢”。
(3) 【3】 是一種信息隱蔽技術(shù),目的在于將對(duì)象的使用者和對(duì)象的設(shè)計(jì)者分開。
【命題目的】本題考查了面向?qū)ο蠹夹g(shù)中的一些基本概念。
【解題要點(diǎn)】面向?qū)ο蠹夹g(shù)中包括以下幾個(gè)基本概念,即對(duì)象、類、方法、消息、繼承和封裝,其中封裝是一種信息隱蔽技術(shù),目的在于將對(duì)象的使用者對(duì)象的和設(shè)計(jì)者分開。
(4)為了便于對(duì)照檢查,測(cè)試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的 【4】 兩部分組成。
【命題目的】本題主要考查測(cè)試的步驟。
【考點(diǎn)鏈接】測(cè)試的基本方法和步驟。
(5) 【5】 是從二維表列的方向進(jìn)行的運(yùn)算。
【命題目的】本題考查了關(guān)系運(yùn)算的基本知識(shí)。
【解題要點(diǎn)】在關(guān)系模型的數(shù)據(jù)語言中,一般除了運(yùn)用常規(guī)的集合運(yùn)算,(并、交、差、笛卡爾積等)外,還定義了一些專門的關(guān)系運(yùn)算,如投影、選擇、連接等。前者是將關(guān)系(即二維表)看成是元組的集合,這些運(yùn)算主要是從二維表的行的方向來進(jìn)行的;后者主要是從二維表的列的方向來進(jìn)行的運(yùn)算。兩者統(tǒng)稱為關(guān)系代數(shù)。
(6)定義int a=5,b=20;若執(zhí)行語句printf("%d\n",++a*--b/5);后,輸出的結(jié)果為 【6】 。
解析: ++和--做前綴使用的時(shí)候,先對(duì)變量進(jìn)行增1或減1,之后進(jìn)行其他的運(yùn)算,之后按照同級(jí)運(yùn)算符自左向右依次運(yùn)算。
(7)執(zhí)行程序時(shí)的輸入為123456789,則程序的運(yùn)行結(jié)果為 【7】 。
#include "stdio.h"
main()
{ int a,b;
scanf("-%*2d",&a,&b);
printf("%d\n",a-b);}
解析: 按照函數(shù)scanf中的格式控制符的描述:"-"控制前2個(gè)數(shù)字賦給變量a,變量a的值為12,""控制將隨后的1個(gè)數(shù)字作為輸入數(shù)據(jù)存入變量b中,變量b的值為5,所以隨后的輸出為7。注意:在%和格式控制符號(hào)之間加*號(hào),表示的是跳過相對(duì)應(yīng)的輸入數(shù)據(jù)。
(8)閱讀下面程序,則在執(zhí)行時(shí)候的輸出為 【8】 。
#include "stdio.h"
main()
{int x=1,y=2,z=0;
if(x=2)z=x,x=y,y=z;
printf("%d,%d\n",x,y);}
解析: if語句的執(zhí)行過程為:首先計(jì)算緊跟在if后面一對(duì)圓括號(hào)中的表達(dá)式,如果表達(dá)式的值為非零,則執(zhí)行其后的if子句,然后去執(zhí)行if語句后的下一個(gè)語句,如果表達(dá)式為零,則跳過if子句直接執(zhí)行if語句后的下一個(gè)語句,if(x=2)的值為真,即x的值為2。
(9)語句printf("%d\n",′H′-′0′+64);的執(zhí)行結(jié)果為 【9】 。
解析: 在C程序中的字符量可參與任何整數(shù)運(yùn)算,在運(yùn)算的時(shí)候都是以ASCII值進(jìn)行的。
(10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
#include "stdio.h"
main()
{ int a=10;
fun(a);
printf("%d\n",a);}
fun(int x)
{ x=50;}
解析: 函數(shù)調(diào)用的時(shí)候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實(shí)參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認(rèn)為整形,當(dāng)返回值為整型放到主函數(shù)后面時(shí),可以不需要事先說明就調(diào)用這個(gè)函數(shù)。
(11)以下程序的輸出結(jié)果是 【11】 。
int fun(int x,int y,int *p,int *q)
{ *p=x*y;
*q=x/y;}
main()
{int a,b,c,d;
a=4;b=3;
fun(a,b,&c,&d);
printf("%d,%d\n",c,d);}
解析: 通過地址傳遞可以在被調(diào)函數(shù)中對(duì)調(diào)用函數(shù)中的變量進(jìn)行引用,通過地址的傳遞,在經(jīng)過函數(shù)調(diào)用以后,改變了c,d變量的值。
(12)下面程序是求出數(shù)組arr的兩條對(duì)角線上元素之和,請(qǐng)?zhí)羁铡?BR> #include "stdio.h"
main()
{int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if( 【12】 )a=a+arr[i][j];
for(i=0;i<3;i++)
for( 【13】 ;j>=0;j--)
if( 【14】 )
b=b+ arr[i][j];
printf("%d,%d\n",a,b);}
解析: 由于是求對(duì)角線元素的和,所以【12】是判斷是否為對(duì)角線元素的,填i==j這個(gè)判斷條件;對(duì)于次對(duì)角線的求和,初始化的時(shí)候應(yīng)該是從數(shù)組的列開始,由于判斷條件是j>=0,所以初始化時(shí)候應(yīng)該為值減1,即j=2,所以【13】應(yīng)填j=2;【14】是對(duì)次對(duì)角線的判斷,所以填i+j==2。
(13)下面程序的功能是:對(duì)字符串從小到大進(jìn)行排序并輸出,請(qǐng)?zhí)羁铡?BR> #include "string.h"
#include "stdio.h"
sort(char *a[],int n)
{ int i,j;
char *p;
for(j=1;j<=n-1;j++)
for(i=0; 【15】 ;i++)
if( 【16】 >0)
{ p=a[i];
a[i]=a[i+1];
a[i+1]=p;}}
main()
{ int i;
char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};
sort( 【17】 );
for(i=0;i<6;i++)
printf("%s\n",book[i]);}
解析: 這個(gè)題目其實(shí)用的是冒泡排序法,每一次都找一個(gè)的,之后順序的從頭開始排列。所以【15】是一次循環(huán)的判定條件,填i
(14)下面的函數(shù)是完成1~n的累加,完成函數(shù)。
a(int k)
{if(k<=0)printf("error\n");
if(k==1) 【18】 ;
else 【19】 ;}
解析: 由于題目沒有給循環(huán)語句,所以實(shí)現(xiàn)累加一定是用遞歸算法。
(15)閱讀下列程序,則程序?qū)崿F(xiàn)的功能是 【20】 。
#include "stdio.h"
struct node
{ char data;
struct node *next; } *head;
fun(struct node *q)
{ if(head == NULL)
{q->next=NULL;
head=q;}
else
{ q->next=head;
head=q;}}
main()
{char ch;
struct node *p;
head = NULL;
while((ch=getchar())!=′\n′)
{p=(struct node *)malloc(sizeof(struct node));
p->data=ch;
fun(p); }
p=head;
while(p!=NULL)
{printf("%c",p->data);
p=p->next; }}
解析: 本題目的功能是從鍵盤輸入一行字符,調(diào)用函數(shù)建立反序的鏈表,然后輸出整個(gè)鏈表,從主函數(shù)開始依次向下對(duì)程序進(jìn)行分析,分析初始化狀態(tài)的程序,之后再分析函數(shù)的功能。
(1)下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是
A)線性鏈表 B)棧
C)循環(huán)鏈表 D)順序表
(2)具有3個(gè)結(jié)點(diǎn)的二叉樹有
A)2種形態(tài) B)4種形態(tài)
C)7種形態(tài) D)5種形態(tài)
(3)設(shè)有下列二叉樹:
對(duì)此二叉樹前序遍歷的結(jié)果為
A)ZBTYCPXA B)ATBZXCYP
C)ZBTACYXP D)ATBZXCPY
(4)結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是
A)程序的規(guī)模 B)程序的效率
C)程序設(shè)計(jì)語言的先進(jìn)性 D)程序易讀性
(5)程序的3種基本控制結(jié)構(gòu)是
A)過程、子過程和分程序 B)順序、選擇和重復(fù)
C)遞歸、堆棧和隊(duì)列 D)調(diào)用、返回和轉(zhuǎn)移
(6)下列敘述中,不屬于測(cè)試的特征的是
A)測(cè)試的挑剔性 B)完全測(cè)試的不可能性
C)測(cè)試的可靠性 D)測(cè)試的經(jīng)濟(jì)性
(7)需求分析中開發(fā)人員要從用戶那里了解
A)軟件做什么 B)用戶使用界面
C)輸入的信息 D)軟件的規(guī)模
(8)下列關(guān)系模型中,能使經(jīng)運(yùn)算后得到的新關(guān)系中屬性個(gè)數(shù)多于原來關(guān)系中屬性個(gè)數(shù)的是
A)選擇 B)連接
C)投影 D)并
(9)下列敘述中,正確的是
A)用E-R圖能夠表示實(shí)體集間一對(duì)一的聯(lián)系、一對(duì)多的聯(lián)系和多對(duì)多的聯(lián)系
B)用E-R圖只能表示實(shí)體集之間一對(duì)一的聯(lián)系
C)用E-R圖只能表示實(shí)體集之間一對(duì)多的聯(lián)系
D)用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
(10)“年齡在18~25之間”這種約束是屬于數(shù)據(jù)庫當(dāng)中的
A)原子性措施 B)一致性措施
C)完整性措施 D)安全性措施
(11)以下說法錯(cuò)誤的是
A)高級(jí)語言都是用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式
B)計(jì)算機(jī)只能處理由0和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù)
C)C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個(gè)后綴為.EXE的二進(jìn)制文件
D)每一種高級(jí)語言都有它對(duì)應(yīng)的編譯程序
(12)算法是指為解決某個(gè)特定問題而采取的確定且有限的步驟,下面不屬于算法的五個(gè)特性的是
A)有零個(gè)輸入或多個(gè)輸入
B)高效性
C)有窮性
D)確定性
(13)已知int a=6; 則執(zhí)行a+=a-=a*a;語句后,a的值為
A)36
B)0
C)-24
D)-60
(14)下面各選項(xiàng)中,均是C語言標(biāo)識(shí)符的選項(xiàng)組是
A)forchinato
B)long_123short56_do
C)voidunion_342
D)text.txt _023_3ew
(15)下列表達(dá)式中,結(jié)果為5的是
A)6*5%6
B)5*-2+15
C)5+75
D)6+-2/3
(16)下列常量中,為不合法的實(shí)型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
(17)關(guān)于C語言的主函數(shù)描述正確的是
A)C程序可以有多個(gè)main函數(shù)
B)C程序必有一個(gè)而且只能有一個(gè)main函數(shù)
C)C程序可以沒有main函數(shù)
D)C程序的執(zhí)行不一定在main函數(shù)開始執(zhí)行
(18)已知int a=1,b=-1;則語句printf("%d\n",(a--,++b));的輸出結(jié)果是
A)-1
B)0
C)1
D)語句錯(cuò)誤
(19)已知int a,b;double c;則以下語句中錯(cuò)誤的函數(shù)調(diào)用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
(20)已知x,y,z均為整型變量,且值均為1,則執(zhí)行語句++x||++y&&++z;后,表達(dá)式x+y的值為
A)1
B)2
C)3
D)4
(21)若int k=8;則執(zhí)行下列程序后,變量k的正確結(jié)果是
main()
{int k=8;
switch(k)
{case 9:k+=1;
case 10:k+=1;
case 11:k+=1;break;
default:k+=1;}
printf("%d\n",k);}
A)12
B)11
C)10
D)9
(22)若int i,j;,則for(i=j=0;i<10&&j<8;i++,j+=3)控制的循環(huán)體執(zhí)行的次數(shù)是
A)9
B)8
C)3
D)2
(23)下列程序的輸出結(jié)果是
#include "stdio.h"
main()
{ int i=6;
while(i--)
printf("%d",--i);
printf("\n");}
A)531
B)420
C)654321
D)死循環(huán)
(24)閱讀下列程序,則執(zhí)行結(jié)果是
#include "stdio.h"
main()
{int a=0,b=0,c=0,i;
for(i=0;i<4;i++)
switch(i)
{case 0:a=i++;
case 1:b=i++;
case 2:c=i++;
case 3:i++;}
printf("%d,%d,%d,%d\n",a,b,c,i);}
A)0,1,3,4
B)1,2,3,4
C)0,1,2,5
D)0,2,3,4
(25)下面程序的運(yùn)行結(jié)果是
#include "stdio.h"
main()
{int j,i,k=0;
for(j=50;j<=60;j++)
{if(!(k))printf("\n");
for(i=2;i if(i>=j-1){printf("%d",j);
k++;}}}
A)5359
B)5953
C)3595
D)9535
(26)已知char ch=′C′;則以下表達(dá)式的值是
ch=(ch>=′A′ && ch<=′Z′)?(ch+32):ch;
A)A
B)a
C)Z
D)c
(27)以下描述錯(cuò)誤的是
A)C程序中,函數(shù)可以直接或間接的調(diào)用自己
B)函數(shù)調(diào)用時(shí),函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致
C)函數(shù)說明語句中的類型必須與函數(shù)返回值的類型一致
D)實(shí)參數(shù)可以與形參個(gè)數(shù)不一致
(28)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{fun3(fun1(),fun2());}
fun1()
{ int k=20;
return k;}
fun2()
{ int a=15;
return a;}
fun3(int a,int b)
{int k;
k=(a-b)*(a+b);
printf("%d\n",k);}
A)0
B)184
C)175
D)編譯不通過
(29)閱讀下面程序,則執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
fun(int a,int b)
{int s;
s=a*b/2;
printf("%d\n",s);}
main()
{int a=10,b=16;
fun(a,b);}
A)10
B)16
C)160
D)80
(30)閱讀下面程序,則程序執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int a=4,b=6,c=7;
double d,fun(int,int,int);
d=fun(a,b,c);
printf("%lf\n",d);}
double fun(int a,int b,int c)
{double s;
s=a%b*c;
return s;}
A)27
B)27.000000
C)28
D)28.000000
(31)下列不合法的指針變量的定義是
A)int *_k;
B)char *_245;
C)int *p;
D)double *5_is
(32)下列關(guān)于指針變量賦空值的說法錯(cuò)誤的是
A)當(dāng)賦空值的時(shí)候,變量指向地址為0的存儲(chǔ)單元
B)賦值語句可以表達(dá)為變量名=′\0′;
C)賦值語句可以表達(dá)為變量名=0;
D)一個(gè)指針變量可以被賦空值
(33)閱讀下面程序,則執(zhí)行后輸出的結(jié)果為
#include "stdio.h"
void fun(int *a,int *b)
{int m;
m=(*a+*b)*(*a+*b);
m+=(*a-*b)*(*a-*b);
printf("%d\n",m);}
main()
{ int a=5,b=6,*x=&a,*y=&b;
fun(x,y);}
A)120
B)121
C)122
D)123
(34)閱讀下面程序,則輸出結(jié)果是
#include "stdio.h"
void fun(int *a,int *b)
{int c=20,d=25;
*a=c/3;
*b=d/5;}
main()
{ int a=3,b=5;
fun(&a,&b);
printf("%d,%d\n",a,b);}
A)6,5
B)5,6
C)20,25
D)3,5
(35)以下對(duì)一維數(shù)組c進(jìn)行正確的定義初始化的語句是
A)int c[10]=0;
B)int c[10]={0}*10;
C)int c[1]={0,0,0,0,0,0,0};
D)int c[10]={0};(36)以下二維數(shù)組c的定義形式是
A)int c[3][]
B)float c[3,4]
C)double c[3][4]
D)float c(3)(4)
(37)閱讀下列程序,則執(zhí)行后輸出的結(jié)果是
#include "stdio.h"
int k=1;
main()
{fun(k);
printf("%d\n",k);}
fun(int k)
{ k++;
k=k*6;}
A)1
B)2
C)6
D)12
(38)已知#define M 2;的宏定義,執(zhí)行語句k=M*5;后,k的值是
A)10
B)5
C)2
D)以上答案都不對(duì)
(39)已知:int c[3][4];則對(duì)數(shù)組元素引用正確的是
A)c[1][4]
B)c[1.5][0]
C)c[1+0][0]
D)以上表達(dá)都錯(cuò)誤
(40)現(xiàn)有如下程序段
#include "stdio.h"
void fun(int *a,int *b,int *c)
{*c=*a+*b;}
main()
{int a[2]={12,23},c;
fun(a,a+1,&c);
printf("%d\n",c);}
則程序的輸出結(jié)果為
A)23
B)12
C)0
D)35
(41)若有以下語句,則正確的描述是
char a[]="toyou";
char b[]={′t′,′o′,′y′,′o′,′u′};
A)a數(shù)組和b數(shù)組的長度相同
B)a數(shù)組長度小于b數(shù)組長度
C)a數(shù)組長度大于b數(shù)組長度
D)a數(shù)組等價(jià)于b數(shù)組
(42)已知:char a[15],b[15]={"I love china"};則在程序中能將字符串I love china賦給數(shù)組a的正確語句是
A)a="I love china";
B)strcpy(b,a);
C)a=b;
D)strcpy(a,b);
(44)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{ char *str="abcdefghijklmnopq";
while(*str++!=′e′);
printf("%c\n",*str);}
A)f
B)a
C)e
D)q
(45)現(xiàn)有如下程序段
#include "stdio.h"
int fun(int k,int *m)
{if(k%3)*m=k*k;
else *m=k/3;}
main()
{ int (*p)(int,int *),m;
p=fun;
(*p)(78,&m);
printf("%d\n",m);}
則程序段的輸出結(jié)果為
A)24
B)25
C)26
D)27
(46)閱讀下列程序,則執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
fun(int x)
{if(x/2>0)fun(x/2);
printf("%d",x%2);}
main()
{ fun(20);
putchar(′\n′);}
A)11100
B)10100
C)10101
D)10110
(47)閱讀如下程序段,則執(zhí)行后程序的輸出結(jié)果是
#include
main()
{structa{int x; int y;}num[2]={{20,5},{6,7}};
printf("%d\n",num[0].x/num[0].y*num[1].y);}
A)0
B)28
C)20
D)5
(48)閱讀程序段,則執(zhí)行后的輸出結(jié)果為
#include "stdio.h"
typedef union{ long x[2];
int y[4];
char z[8];} atx;
typedef struct aa{ long x[2];
int y[4];
char z[8]; } stx;
main()
{printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}
A)union=8,struct aa=8
B)union=8,struct aa=24
C)union=24,struct aa=8
D)union=24,struct aa=24
(49)閱讀下列程序段
#include "stdio.h"
typedef struct aa
{ int a;
struct aa *next; } M;
void set(M *k,int i,int *b)
{ int j,d=0;
for(j=1;j { k[j-1].next=&k[j];
k[j-1].a=b[d++]; }
k[j].a=b[d]; }
main()
{ M k[5],*p;
int d[5]={23,34,45,56,67};
set(k,5,d);
p=k+1;
printf("%d\n",table); }
則下面的表達(dá)式在table處,能使程序執(zhí)行后,打印輸出數(shù)據(jù)45的是
A)p->next->a
B)++p->a
C)(*p).a++
D)p++->a
(50)閱讀下面程序,程序?qū)崿F(xiàn)的功能是(a123.txt在當(dāng)前盤符下已經(jīng)存在)
#include "stdio.h"
void main()
{FILE *fp;
int a[10],*p=a;
fp=fopen("a123.txt","w");
while( strlen(gets(p))>0 )
{ fputs(a,fp);
fputs("\n",fp);}
fclose(fp);}
A)從鍵盤輸入若干行字符,按行號(hào)倒序?qū)懭胛谋疚募123.txt中
B)從鍵盤輸入若干行字符,取前2行寫入文本文件a123.txt中
C)從鍵盤輸入若干行字符,第一行寫入文本文件a123.txt中
D)從鍵盤輸入若干行字符,依次寫入文本文件a123.txt中二、填空題
(1)排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、 【1】 和選擇排序等。
【命題目的】需要考生記住常見的排序方法。
【解題要點(diǎn)】常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。
【考點(diǎn)鏈接】常見的排序方法及其作用機(jī)制和區(qū)別。
(2)當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為 【2】 。
【命題目的】本題考查了隊(duì)列的基本性質(zhì)。
【解題要點(diǎn)】入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時(shí)置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循環(huán)隊(duì)列非空(s=1)時(shí)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算,這種情況稱為“上溢”。
(3) 【3】 是一種信息隱蔽技術(shù),目的在于將對(duì)象的使用者和對(duì)象的設(shè)計(jì)者分開。
【命題目的】本題考查了面向?qū)ο蠹夹g(shù)中的一些基本概念。
【解題要點(diǎn)】面向?qū)ο蠹夹g(shù)中包括以下幾個(gè)基本概念,即對(duì)象、類、方法、消息、繼承和封裝,其中封裝是一種信息隱蔽技術(shù),目的在于將對(duì)象的使用者對(duì)象的和設(shè)計(jì)者分開。
(4)為了便于對(duì)照檢查,測(cè)試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的 【4】 兩部分組成。
【命題目的】本題主要考查測(cè)試的步驟。
【考點(diǎn)鏈接】測(cè)試的基本方法和步驟。
(5) 【5】 是從二維表列的方向進(jìn)行的運(yùn)算。
【命題目的】本題考查了關(guān)系運(yùn)算的基本知識(shí)。
【解題要點(diǎn)】在關(guān)系模型的數(shù)據(jù)語言中,一般除了運(yùn)用常規(guī)的集合運(yùn)算,(并、交、差、笛卡爾積等)外,還定義了一些專門的關(guān)系運(yùn)算,如投影、選擇、連接等。前者是將關(guān)系(即二維表)看成是元組的集合,這些運(yùn)算主要是從二維表的行的方向來進(jìn)行的;后者主要是從二維表的列的方向來進(jìn)行的運(yùn)算。兩者統(tǒng)稱為關(guān)系代數(shù)。
(6)定義int a=5,b=20;若執(zhí)行語句printf("%d\n",++a*--b/5);后,輸出的結(jié)果為 【6】 。
解析: ++和--做前綴使用的時(shí)候,先對(duì)變量進(jìn)行增1或減1,之后進(jìn)行其他的運(yùn)算,之后按照同級(jí)運(yùn)算符自左向右依次運(yùn)算。
(7)執(zhí)行程序時(shí)的輸入為123456789,則程序的運(yùn)行結(jié)果為 【7】 。
#include "stdio.h"
main()
{ int a,b;
scanf("-%*2d",&a,&b);
printf("%d\n",a-b);}
解析: 按照函數(shù)scanf中的格式控制符的描述:"-"控制前2個(gè)數(shù)字賦給變量a,變量a的值為12,""控制將隨后的1個(gè)數(shù)字作為輸入數(shù)據(jù)存入變量b中,變量b的值為5,所以隨后的輸出為7。注意:在%和格式控制符號(hào)之間加*號(hào),表示的是跳過相對(duì)應(yīng)的輸入數(shù)據(jù)。
(8)閱讀下面程序,則在執(zhí)行時(shí)候的輸出為 【8】 。
#include "stdio.h"
main()
{int x=1,y=2,z=0;
if(x=2)z=x,x=y,y=z;
printf("%d,%d\n",x,y);}
解析: if語句的執(zhí)行過程為:首先計(jì)算緊跟在if后面一對(duì)圓括號(hào)中的表達(dá)式,如果表達(dá)式的值為非零,則執(zhí)行其后的if子句,然后去執(zhí)行if語句后的下一個(gè)語句,如果表達(dá)式為零,則跳過if子句直接執(zhí)行if語句后的下一個(gè)語句,if(x=2)的值為真,即x的值為2。
(9)語句printf("%d\n",′H′-′0′+64);的執(zhí)行結(jié)果為 【9】 。
解析: 在C程序中的字符量可參與任何整數(shù)運(yùn)算,在運(yùn)算的時(shí)候都是以ASCII值進(jìn)行的。
(10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
#include "stdio.h"
main()
{ int a=10;
fun(a);
printf("%d\n",a);}
fun(int x)
{ x=50;}
解析: 函數(shù)調(diào)用的時(shí)候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實(shí)參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認(rèn)為整形,當(dāng)返回值為整型放到主函數(shù)后面時(shí),可以不需要事先說明就調(diào)用這個(gè)函數(shù)。
(11)以下程序的輸出結(jié)果是 【11】 。
int fun(int x,int y,int *p,int *q)
{ *p=x*y;
*q=x/y;}
main()
{int a,b,c,d;
a=4;b=3;
fun(a,b,&c,&d);
printf("%d,%d\n",c,d);}
解析: 通過地址傳遞可以在被調(diào)函數(shù)中對(duì)調(diào)用函數(shù)中的變量進(jìn)行引用,通過地址的傳遞,在經(jīng)過函數(shù)調(diào)用以后,改變了c,d變量的值。
(12)下面程序是求出數(shù)組arr的兩條對(duì)角線上元素之和,請(qǐng)?zhí)羁铡?BR> #include "stdio.h"
main()
{int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if( 【12】 )a=a+arr[i][j];
for(i=0;i<3;i++)
for( 【13】 ;j>=0;j--)
if( 【14】 )
b=b+ arr[i][j];
printf("%d,%d\n",a,b);}
解析: 由于是求對(duì)角線元素的和,所以【12】是判斷是否為對(duì)角線元素的,填i==j這個(gè)判斷條件;對(duì)于次對(duì)角線的求和,初始化的時(shí)候應(yīng)該是從數(shù)組的列開始,由于判斷條件是j>=0,所以初始化時(shí)候應(yīng)該為值減1,即j=2,所以【13】應(yīng)填j=2;【14】是對(duì)次對(duì)角線的判斷,所以填i+j==2。
(13)下面程序的功能是:對(duì)字符串從小到大進(jìn)行排序并輸出,請(qǐng)?zhí)羁铡?BR> #include "string.h"
#include "stdio.h"
sort(char *a[],int n)
{ int i,j;
char *p;
for(j=1;j<=n-1;j++)
for(i=0; 【15】 ;i++)
if( 【16】 >0)
{ p=a[i];
a[i]=a[i+1];
a[i+1]=p;}}
main()
{ int i;
char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};
sort( 【17】 );
for(i=0;i<6;i++)
printf("%s\n",book[i]);}
解析: 這個(gè)題目其實(shí)用的是冒泡排序法,每一次都找一個(gè)的,之后順序的從頭開始排列。所以【15】是一次循環(huán)的判定條件,填i
(14)下面的函數(shù)是完成1~n的累加,完成函數(shù)。
a(int k)
{if(k<=0)printf("error\n");
if(k==1) 【18】 ;
else 【19】 ;}
解析: 由于題目沒有給循環(huán)語句,所以實(shí)現(xiàn)累加一定是用遞歸算法。
(15)閱讀下列程序,則程序?qū)崿F(xiàn)的功能是 【20】 。
#include "stdio.h"
struct node
{ char data;
struct node *next; } *head;
fun(struct node *q)
{ if(head == NULL)
{q->next=NULL;
head=q;}
else
{ q->next=head;
head=q;}}
main()
{char ch;
struct node *p;
head = NULL;
while((ch=getchar())!=′\n′)
{p=(struct node *)malloc(sizeof(struct node));
p->data=ch;
fun(p); }
p=head;
while(p!=NULL)
{printf("%c",p->data);
p=p->next; }}
解析: 本題目的功能是從鍵盤輸入一行字符,調(diào)用函數(shù)建立反序的鏈表,然后輸出整個(gè)鏈表,從主函數(shù)開始依次向下對(duì)程序進(jìn)行分析,分析初始化狀態(tài)的程序,之后再分析函數(shù)的功能。