一、選擇題(每小題1分,共40分)
(1)資料的存盤結構是指
A)存盤在外存中的資料 B)資料所占的存盤空間量
C)資料在計算機中的順序存盤方式 D)資料的邏輯結構中計算機中的表示
(2)堆疊底至堆疊頂依次存放元素A、B、C、D,在第五個元素E入堆疊前,堆疊中元素可以出堆疊,則出堆疊序列可能是
A)ABCED B)DBCEA C)CDABE D)DCBEA
(3)下列對于線性鏈表的描述中正確的是
A)存盤空間不一定是連續,且各元素的存盤順序是任意的
B)存盤空間不一定是連續,且前件元素一定存盤在后件元素的前面
C)存盤空間必須連續,且前件元素一定存盤在后件元素的前面
D)存盤空間必須連續,且各元素的存盤順序是任意的
(4)在深度為5的滿二叉樹中,葉子結點的個數為
A)15 B)16 C)31 D)32
(5)在面向物件方法中,一個物件請求另一物件為其服務的方式是通過發送
A)呼叫陳述句 B)命令 C)口令 D)訊息
(6)下列描述中正確的是
A)軟體工程只是解決軟體專案的管理問題
B)軟體工程主要解決軟體產品的生產率問題
C)軟體工程的主要思想是強調在軟體開發程序中需要應用工程化原則
D)軟體工程只是解決軟體開發中的技術問題
(7)需求分析階段的任務是確定
A)軟體開發方法 B)軟體開發工具 C)軟體開發費用 D)軟體系統功能
(8)下列不屬于結構化分析的常用工具的是
A)資料流圖 B)資料字典 C)判定樹 D)PAD圖
(9)資料庫設計的根本目標是要解決
A)資料共享問題 B)資料安全問題
C)大量資料存盤問題 D)簡化資料維護
(10)設有如下關系表:

下列操作中正確的是
A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S
(11) 若變數已正確定義并賦值,下面符合C語言語法的運算式是
A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b
(12) C語言中運算物件必須是整型的運算子是
A) %= B) /= C) *= D) 〈=
(13) 若已定義x和y為double型別,則運算式x=1,y=x+3/2 的值是
A) 1 B) 2 C) 2.0 D) 2.5
(14) 若變數a、iI已正確定義,且i已正確賦值,合法的陳述句是
A) a==1 B) ++i; C) a=a++=5; D) a=int(i);
(15)設有定義 int y=3,x=3,z=1;,則陳述句printf("%d %d\n",(++x,y++),z+2); 的輸出結果是
A) 3 3 B) 3 4 C) 4 2 D) 4 3
(16) 能正確表示邏輯關系:“a≥=10或a≤0”的C語言運算式是
A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=0
(17) 設有 int x=11; 則運算式 (x++ * 1/3) 的值是
A) 3 B) 4 C) 11 D) 12
(18) 設 int x=1, y=1; 運算式(!x||y--)的值是
A) 0 B) 1 C) 2 D) -1
(19) 設有定義int x='f'; ,則陳述句printf("%c \n",'A'+(x-'a'+1));的輸出結果是
A) G B) H C) I D) J
(20) 設有定義int a=2,c=5;,陳述句printf("a=%d,b=%d\n",a,c);的輸出結果是
A) a=%2,b=%5 B) a=2,b=5
C) a=d, b=d D) a=%d,b=%d
(21) 下列程式的輸出結果是
int main()
{
double d=3.2;
int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d \n", d*y);
return 0;
}
A) 0 B) 3 C) 3.07 D) 3.2
(22) 與 y=(x>0?1:x<0?-1:0);的功能相同的if陳述句是
A) if (x>0) y=1; B) if(x)
else if(x<0)y=-1; if(x>0)y=1;
else y=0; else if(x<0)y=-1;
else y=0;
C) y=-1 D) y=0;
if(x) if(x>=0)
if(x>0)y=1; if(x>0)y=1;
else if(x==0)y=0; else y=-1;
else y=-1;
(23) 有如下程式
int main()
{
float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf("%f\n",y);
return 0;
}
該程式的輸出結果是
A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000
(24) 以下回圈體的執行次數是
for(int i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);
A) 0 B) 1 C) 2 D) 3
(25) 以下敘述正確的是
A) do-while陳述句構成的回圈不能用其它陳述句構成的回圈來代替,
B) do-while陳述句構成的回圈只能用break陳述句退出,
C) 用do-while陳述句構成的回圈,在while后的運算式為非零時結束回圈,
D) 用do-while陳述句構成的回圈,在while后的運算式為零時結束回圈,
(26) 有如下程式
int main()
{
int n=9;
while(n>6)
{ n--; printf("%d",n);}
return 0;
}
該程式的輸出結果是
A) 876 B) 8765 C) 987 D) 9876
(27) 若已定義:
int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;
其中 0≤i≤9, 則對a陣列元素不正確的參考是
A) a[p-a] B) *(&a[i]) C) p[i] D) a[10]
(28) 下列程式執行后的輸出結果是
int main()
{
int a[3][3], *p,i;
p=&a[0][0];
for(i=0; i<9; i++) p[i]=i+1;
printf("%d \n",a[1][2]);
return 0;
}
A) 3 B) 6 C) 9 D) 亂數
(29) 設已有定義: char *st="how are you"; 下列程式段中正確的是
A) char a[11], *p; strcpy(p=a+1,&st[4]);
B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[], *p; strcpy(p=&a[1],st+2);
(30) 設有陣列定義: char array [ ]="China"; 則陣列 array所占的空間為
A) 4個位元組 B) 5個位元組 C) 6個位元組 D) 7個位元組
(31) 下列程式的輸出結果是
int b=2;
int func(int *a)
{ b += *a; return(b);}
int main()
{
int a=2, res=2;
res += func(&a);
printf("%d \n",res);
return 0;
}
A) 4 B) 6 C) 8 D) 10
(32) 下列程式的輸出結果是
struct abc
{ int a, b, c; };
int main()
{
struct abc s[2]={{1,2,3},{4,5,6}};
int t;
t=s[0].a+s[1].b;
printf("%d \n",t);
return 0;
}
A) 5 B) 6 C) 7 D) 8
(33) 設 int b=2;運算式(b>>2)/(b>>1)的值是
A) 0 B) 2 C) 4 D) 8
(34) 設有定義 int a[50],n;,若有呼叫陳述句fun(n, &a[9]);,則不正確的fun函式的首部是
A) void fun(int m, int x[]) B) void fun(int s, int h[41])
C) void fun(int p, int *s) D) void fun(int n, int a)
(35) 設有定義 int a[5]={10,20,30,40,50},*p=&a[2]; ,則執行陳述句 *--p;后*p的值是
A) 19 B) 20 C) 29 D) 30
(36) 下列程式執行后的輸出結果是
#define MA(x) x*(x-1)
int main()
{
int a=1,b=2;
printf("%d \n",MA(1+a+b));
return 0;
}
A) 6 B) 8 C) 10 D) 12
(37) 對于基型別相同的兩個指標變數之間,不能進行的運算是
A) < B) = C) + D) -
(38) 有如下函式呼叫陳述句
func(rec1,rec2+rec3,(rec4,rec5));
該函式呼叫陳述句中,含有的實參個數是
A) 3 B) 4 C) 5 D) 有語法錯
(39) 若有以下說明和定義
fun(int *c){ }
main()
{ int (*a)()=fun,*b(),w[10],c;
┆
}
在必要的賦值之后,對fun函式的正確呼叫陳述句是
A) a=a(w); B) (*a)(&c); C) b=*b(w); D) fun (b);
(40) 若fp是指向某檔案的指標,且已讀到此檔案末尾,則庫函式feof(fp)的回傳值是
A) EOF B) 0 C) 非零值 D) NULL
二、程式填空題(18分)
給定程式中,函式fun的功能是:計算形參x所指陣列中N個數的平均值(規定所有數均為正數),作為函式值回傳;并將大于平均值的數放在形參y所指陣列中,
例如,有10個正數:46 30 32 40 6 17 45 15 48 26,平均值為:30.500000
主函式中輸出:46 32 40 45 48
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdlib.h> #include <stdio.h> #define N 10 double fun(double x[],double *y) { int i,j; double av; /**********found**********/ av=__1__; /**********found**********/ for(i=0; i<N; i++) av = av + __2__; for(i=j=0; i<N; i++) /**********found**********/ if(x[i]>av) y[__3__]= x[i]; y[j]=-1; return av; } int main() { int i; double x[N],y[N]; for(i=0; i<N; i++) { x[i]=rand()%50; printf("%4.0f ",x[i]); } printf("\n"); printf("\nThe average is: %f\n",fun(x,y)); for(i=0; y[i]>=0; i++) printf("%5.1f ",y[i]); printf("\n"); return 0; }
三、程式修改題(18分)
給定程式中,函式fun的功能是:根據形參m的值,計算如下公式的值,

例如,若m=5,則應輸出:1.463611,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> double fun ( int m ) { double y = 1.0 ; int i ; /**************found**************/ for(i = 2 ; i < m ; i++) /**************found**************/ y += 1 /(i * i) ; return( y ) ; } int main( ) { int n = 5 ; printf( "\nThe result is %f\n", fun(n)); return 0; }
四、程式設計題(24分)
撰寫函式fun,它的功能是:實作B=A+A’,即把矩陣A加上A的轉置,存放在矩陣B中,
例如,輸入如下矩陣
1 2 3
4 5 6
7 8 9
程式輸出
2 6 10
6 10 14
10 14 18
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); void fun(int a[3][3], int b[3][3]) { } int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; int i, j ; fun(a, t) ; for (i = 0 ; i < 3 ; i++) { for (j = 0 ; j < 3 ; j++) printf("%7d", t[i][j]) ; printf("\n") ; } NONO() ; return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入測驗資料,呼叫fun函式,輸出資料,關閉檔案,*/ int i, j, k, a[3][3], t[3][3] ; FILE *rf, *wf ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(k = 0 ; k < 5 ; k++) { for(i = 0 ; i < 3 ; i++) fscanf(rf,"%d %d %d",&a[i][0],&a[i][1],&a[i][2]); fun(a, t) ; for(i = 0 ; i < 3 ; i++) { for(j = 0 ; j < 3 ; j++) fprintf(wf, "%7d", t[i][j]) ; fprintf(wf, "\n") ; } } fclose(rf) ; fclose(wf) ; }
一、選擇題 ( 1)~( 5): DDABD ( 6)~(10): CDDAB (11)~(15): BACBA (16)~(20): DABAB (21)~(25): AACBD (26)~(30): ADBAC (31)~(35): BBADB (36)~(40): BCABC 二、程式填空題 (1)0 (2)x[i]/N (3)j++ 三、程式修改題 for(i = 2 ; i <= m ; i++) y += 1.0 /(i * i) ; 四、程式設計題 void fun(int a[3][3], int b[3][3]) { int i,j; for (i=0;i<3;i++) for (j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i]; }參考答案:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/531877.html
標籤:C
