一、SpringBoot是什麼 在瞭解SpringBoot之前,我們需要先來回顧一下Spring。 Spring是一個輕量級的WEB應用開發的框架,它的初衷是為了簡化企業級應用開發的複雜性,說白了就是為了簡化開發。但是隨著Spring的不斷發展,它擴展的東西越來越多,導致其配置方面也越來越複雜,在每 ...
一、選擇題(每小題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]++; }參考答案: