一、選擇題(每小題1分,共40分)
(1)下列敘述中正確的是
A)一個邏輯資料結構只能有一種存盤結構
B)資料的邏輯結構屬于線性結構,存盤結構屬于非線性結構
C)一個邏輯資料結構可以有多種存盤結構,且各種存盤結構不影響資料處理的效率
D)一個邏輯資料結構可以有多種存盤結構,且各種存盤結構影響資料處理的效率
(2)線性表的順序存盤結構和線性表的鏈式存盤結構分別是
A)順序存取的存盤結構、隨機存取的存盤結構
B)隨機存取的存盤結構、順序存取的存盤結構
C)隨機存取的存盤結構、隨機存取的存盤結構
D)任意存取的存盤結構、任意存取的存盤結構
(3)某二叉樹的前序遍歷為EFHIGJK,中序遍歷為HFIEJKG,則該二叉樹根的右子樹的根是
A)E B)F C)G D)H
(4)已知資料表A中每個元素距其最終位置不遠,為節省時間,應采用的演算法是
A)堆排序 B)直接插入排序 C)快速排序 D)直接選擇排序
(5)在面向物件的方法中,類的實體稱為
A) 物件 B)物體 C)屬性 D)方法
(6)在軟體工程中,白盒測驗法可用于測驗程式的內部結構,此方法將程式看做是
A) 回圈的集合 B)地址的集合 C)路徑的集合 D)目標的集合
(7)檢查軟體產品是否符合需求定義的程序稱為
A)確認測驗 B)集成測驗 C)系統測驗 D)驗收測驗
(8)程式流程圖(PFD)中的箭頭代表的是
A)資料流 B)控制流 C)呼叫關系 D)組成關系
(9)資料庫系統的核心是
A)資料模型 B)資料庫管理系統 C)資料庫 D)資料庫管理員
(10)設有關系R,S和T如下,關系T是由關系R和S經過哪種操作得到的

A)R∪S B)R – S C)R×S D)R∞S
(11) 下列C語言常量中,錯誤的是
A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72’
(12) 下列選項中,合法的C語言關鍵字是
A) VAR B) cher C) integer D) default
(13) 若a為int型別,且其值為3,則執行完運算式a+=a-=a*a后,a的值是
A) -12 B) -3 C) 6 D) 9
(14)設有定義 int x=3,y=3,t;,陳述句 t=++x||++y;執行后,y的值為
A) 1 B) 3 C) 4 D) 不定值
(15)設有定義int x=3; char z='a'; ,則陳述句printf("%d\n", (x&1)&&(z<'z'));的輸出結果是
A) 0 B) 1 C) 2 D) 3
(16) 若執行以下程式時從鍵盤上輸入9,則輸出結果是
int main()
{
int n;
scanf("%d",&n);
if(n++<10) printf("%d\n",n);
else printf("%d\n",n--);
return 0;
}
A)8 B)9 C) 10 D) 11
(17) 若a、 b、c1、c2、x、y、均是整型變數,正確的switch陳述句是
A) swich(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b; break; { case 3:
case 0:y=a-b; break; case 1:y=a+b;break;
} case 3:y=b-a,break;
}
C) switch a D) switch(a-b)
{ case c1 :y=a-b; break { default:y=a*b;break
case c2: x=a*d; break case 3:case 4:x=a+b;break
default:x=a+b; case 10:case 11:y=a-b;break;
} }
(18) 有如下程式
int main()
{
int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++;
printf("%d\n",c);
return 0;
}
該程式的輸出結果是
A) 0 B) 1 C) 2 D) 3
(19) 有如下程式
int 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);
return 0;
}
該程式的輸出結果是
A) a=1,b=0 B) a=1,b=1 C) a=2,b=1 D) a=2,b=2
(20) 有如下程式
int main()
{
int x=3;
do
{
printf("%d ",x-=2);
}while (!(--x));
return 0;
}
其輸出結果是
A) 1 B) 1 -2 C) 3 0 D) 死回圈
(21) 若變數c為char型別,能正確判斷出c為小寫字母的運算式是
A) ‘a’<=c<= ‘z’ B) (c>= ‘a’)||(c<= ‘z’)
C) (‘a’<=c)and (‘z’>=c) D) (c>= ‘a’)&&(c<= ‘z’)
(22) 設有說明陳述句:char a=’\72’;則變數a
A) 包含1個字符 B) 包含2個字符 C) 包含3個字符 D) 說明不合法
(23) 有如下說明int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;,則數值為9的運算式是
A) *P+9 B) *(P+8) C) *P+=9 D) P+8
(24) 下列各函式首部中,正確的是
A) void play(var :Integer,var b:Integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
(25) 下列程式段的輸出結果是
void fun(int *x, int *y)
{ printf("%d %d ", *x, *y); *x=3; *y=4;}
int main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d %d ",x, y);
return 0;
}
A) 1 2 1 2 B) 1 2 3 4 C) 2 1 1 2 D) 2 1 4 3
(26) 設有定義 int a[]={1,2,3,4,5,6,7,8,9,0,},*p=a;,則陳述句printf("%d\n",*p+9);的輸出結果是
A) 0 B) 1 C) 9 D) 10
(27) 當呼叫函式時,實參是一個陣列名,則向函式傳送的是
A) 陣列的長度 B) 陣列的首地址
C) 陣列每一個元素的地址 D) 陣列每個元素中的值
(28) 設有以下說明陳述句
struct ex
{ int x ; float y; char z ;} example;
則下面的敘述中不正確的是
A) struct結構體型別的關鍵字 B) example是結構體型別名
C) x,y,z都是結構體成員名 D) struct ex是結構體型別
(29) 下列只有在使用時才為該型別變數分配記憶體的存盤類說明是
A) auto和 static B) auto和 register
C) register和 static D) extern和 register
(30) 若fp是指向某檔案的指標,且已讀到檔案末尾,則庫函式feof(fp)的回傳值是
A) EOF B) -1 C) 非零值 D) NULL
(31) 下列程式的輸出結果是
int main()
{
int i, k, a[10], p[3];
k=5;
for (i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i *(i+1)];
for (i=0;i<3;i++) k+=p[i] *2;
printf("%d\n",k);
return 0;
}
A) 20 B) 21 C) 22 D)23
(32) 下列程式的輸出結果是
int main()
{
int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[i][2-i]);
return 0;
}
A) 1,4,7, B) 1,5,9, C) 3,5,7, D)3,6,9,
(33) 下列程式的輸出結果是
int main()
{
int a[3][3]={ {1,2},{3,4},{5,6} },i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%d\n",s);
return 0;
}
A) 18 B) 19 C) 20 D)21
(34) 下列程式的輸出結果是
int main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++) printf("%s\n",w[k]);
return 0;
}
A) ABCD B) ABCD C) EFG D) EFGH
FGH EFG JK IJKL
KL IJ O
M
(35) 當執行下面的程式時,如果輸入ABC,則輸出結果是
int main()
{
char ss[10]="1,2,3,4,5";
gets(ss);
strcat(ss, "6789");
printf("%s\n",ss);
return 0;
}
A) ABC67 B) ABC6789 C) ABC456789 D) 12345ABC6
(36) 下列程式的輸出結果是
long fun(int n)
{ long s;
if(n==1 || n==2) s=2;
else s=n-fun(n-1);
return s;
}
int main()
{
printf("%ld\n", fun(3));
return 0;
}
A) 1 B) 2 C) 3 D) 4
(37) 下列程式的輸出結果是
#define SQR(X) X*X
int main()
{
int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
return 0;
}
A) 1 B) 2 C) 9 D) 16
(38) 若定義了以下函式:
void f(……)
{……
*p=(double *)malloc( 10*sizeof( double));
……
}
p是該函式的形參,要求通過p把動態分配存盤單元的地址傳回主調函式,則形參p的正確定義應當是
A) double *p B) float **p C) double **p D) float *p
(39) 下列程式的輸出是
struct st
{ int x; int *y;};
int main()
{
int dt[4]={ 10,20,30,40 };
struct st aa[4]={ 50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};
struct st *p=aa;
printf("%d\n",++(p->x));
return 0;
}
A) 10 B) 11 C) 51 D) 60
(40) 假定建立了以下鏈表結構,指標p、q分別指向如圖所示的結點,則以下可以將q所指結點從鏈表中洗掉并釋放該結點的陳述句組是

A) free(q); p->next=q->next;
B) (*p).next=(*q).next; free(q);
C) q=(*q).next; (*p).next=q; free(q);
D) q=q->next; p->next=q; p=p->next; free(p);
二、程式填空題(18分)
給定程式中,函式fun的功能是:逆置陣列元素中的值,
例如,若a所指陣列中的資料依次為:1、2、3、4、5、6、7、8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> void fun(int a[], int n) { int t; /**********found**********/ if (n< ___1___) return ; else { t=a[0]; a[0]=a[n-1]; a[n-1]=t; /**********found**********/ fun(___2___ , ___3___); } } int main() { int b[9]={1,2,3,4,5,6,7,8,9}, i; printf("\nThe original data :\n"); for (i=0; i<9; i++) printf("%4d ", b[i]); printf("\n"); fun(b, 9); printf("\nThe data after invert :\n"); for (i=0; i<9; i++) printf("%4d ", b[i]); printf("\n"); }
三、程式修改題(18分)
給定程式中,函式fun的功能是:將n個無序整數從小到大排序,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <stdlib.h> void fun ( int n, int *a ) { int i, j, p, t; for ( j = 0; j<n-1 ; j++ ) { p = j; /************found************/ for ( i=j+1; i<n-1 ; i++ ) if ( a[p]>a[i] ) /************found************/ t=i; if ( p!=j ) { t=a[j]; a[j]=a[p]; a[p]=t; } } } void putarr(int n, int *z) { int i; for (i=1; i<=n; i++,z++) { printf( "%4d", *z ); if (!(i%10)) printf("\n"); } printf("\n"); } int main() { int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11; printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa ); fun( n, aa ); printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa ); return 0; }
四、程式設計題(24分)
撰寫函式fun,它的功能是:統計各年齡段的人數并存到b陣列中,n個人員的年齡放在a陣列中,年齡為1到9的人數存到b[0]中,年齡為10到19的人數存到b[1],年齡為20到29的人數存到b[2],年齡為30到39的人數存到b[3],年齡為40到49的人數存到b[4],年齡為50歲以上的人數存到b[5]中,
例如,當a陣列中的資料為:9、18、27、38、59、33、14、75、38,呼叫該函式后,b陣列中存放的資料應是:1、2、1、3、0、2,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); void fun(int a[], int b[], int n) { } int main() { int i,a[10]={9,18,27,38,59,33,14,75,38}, b[6]; fun(a, b, 9); printf("The result is: "); for (i=0; i<6; i++) printf("%d ", b[i]); printf("\n"); NONO(); return 0; } void NONO(void) { FILE *rf, *wf ; int a[10], b[6], i, j ; rf = fopen("in1.dat", "r") ; wf = fopen("out1.dat","w") ; for(i = 0 ; i < 10 ; i++) { for(j = 0 ; j < 10 ; j++) fscanf(rf, "%d,", &a[j]) ; fun(a, b, 10) ; for(j = 0 ; j < 6 ; j++) fprintf(wf, "%d ", b[j]) ; fprintf(wf, "\n") ; } fclose(rf); fclose(wf); }
一、選擇題 ( 1)~( 5): DBCBA ( 6)~(10): CABBB (11)~(15): BDABB (16)~(20): CDCCB (21)~(25): DABCD (26)~(30): DBBBC (31)~(35): BCADB (36)~(40): ABCCB 二、程式填空題 (1)2 (2)a+1 或 &a[1] (3)n-2 三、程式修改題 for (i=j+1; i<n ; i++) p=i; 四、程式設計題 void fun(int a[], int b[], int n) { int i; for (i=0; i<6; i++) b[i] = 0; for (i=0; i<n;i++) if (a[i] >= 50) b[5]++; else b[a[i]/10]++; }參考答案:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/531905.html
標籤:其他
