一、選擇題(每小題1分,共40分)
(1)下列關于堆疊敘述正確的是
A)堆疊頂元素最先能被洗掉 B)堆疊頂元素最后才能被洗掉
C)堆疊底元素永遠不能被洗掉 D)以上三種說法都不對
(2)下列敘述中正確的是
A)有一個以上根結點的資料結構不一定是非線性結構
B)只有一個根結點的資料結構不一定是線性結構
C)回圈鏈表是非線性結構
D)雙向鏈表是非線性結構
(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)
A)3 B)4 C)6 D)7
(4)在軟體開發中,需求分析階段產生的主要檔案是
A)軟體集成測驗計劃 B)軟體詳細設計說明書
C)用戶手冊 D)軟體需求規格說明書
(5)結構化程式所要求的基本結構不包括
A)順序結構 B)GOTO跳轉 C)選擇(分支)結構 D)重復(回圈)結構
(6)下列描述中錯誤的是
A)系統總體結構圖支持軟體系統的詳細設計
B)軟體設計是將軟體需求轉換為軟體表示的程序
C)資料結構與資料庫設計是軟體設計的任務之一
D)PAD圖是軟體詳細設計的表示工具
(7)負責資料庫中查詢操作的資料庫語言是
A)資料定義語言 B)資料管理語言 C)資料操縱語言 D)資料控制語言
(8)一個教師可講授多門課程,一門課程可由多個教師講授,則物體教師和課程間的聯系是
A)1:1聯系 B)1:m聯系 C)m:1聯系 D)m:n聯系
(9)有三個關系R、S和T如下:
則由關系R和S得到關系T的操作是
A)自然連接 B)交 C)除 D)并
(10)定義無符號整數類為UInt,下面可以作為類UInt實體化值的是
A)-369 B)369 C)0.369 D)整數集合{1,2,3,4,5}
(11)計算機高級語言程式的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是
A)C語言程式僅可以編譯執行
B)C語言程式僅可以解釋執行
C)C語言程式既可以編譯執行又可以解釋執行
D)以上說法都不對
(12)以下敘述中錯誤的是
A)C語言的可執行程式是由一系列機器指令構成的
B)用C語言撰寫的源程式不能直接在計算機上運行
C)通過編譯得到的二進制目標程式需要連接才可以運行
D)在沒有安裝C語言集成開發環境的機器上不能運行C源程式生成的.exe檔案
(13)以下選項中不能用作C程式合法常量的是
A)1,234 B)'123' C)123 D)"\x7G"
(14)以下選項中可用作C程式合法實數的是
A).1e0 B)3.0e0.2 C)E9 D)9.12E
(15)若有定義陳述句:int a=3,b=2,c=1;,以下選項中錯誤的賦值運算式是
A)a=(b=4)=3; B)a=b=c+1; C)a=(b=4)+c; D)a=1+(b=c=4);
(16)有以下程式段
char name[20];
int num;
scanf("name=%s num=%d",name,&num);
當執行上述程式段,并從鍵盤輸入:name=Lili num=1001<回車>后,name的值為
A)Lili B)name=Lili
C)Lili num= D)name=Lili num=1001
(17)if陳述句的基本形式是:if (運算式) 陳述句,以下關于“運算式”值的敘述中正確的是
A)必須是邏輯值 B)必須是整數值
C)必須是正數 D)可以是任意合法的數值
(18)有以下程式
#include <stdio.h>
main()
{ int x=011;
printf("%d\n",++x);
}
程式運行后的輸出結果是
A) 9 B) 10 C) 11 D) 12
(19)有以下程式
#include <stdio.h>
main()
{ int s;
scanf("%d",&s);
while (s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
運行時,若輸入1 2 3 4 5 0<回車>,則輸出結果是
A)6566456 B)66656 C)66666 D)6666656
(20)有以下程式段
int i,n;
for (i=0;i<8;i++)
{ n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n); continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下關于程式段執行情況的敘述,正確的是
A)for回圈陳述句固定執行8次
B)當產生的亂數n為4時結束回圈操作
C)當產生的亂數n為1和2時不做任何操作
D)當產生的亂數n為0時結束程式運行
(21)有以下程式
#include <stdio.h>
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0' && s[i]<='9') n++;
printf("%d\n",n);
}
程式運行后的輸出結果是
A)0 B)3 C)7 D)8
(22)若i和k都是int型別變數,有以下for陳述句
for(i=0,k=-1;k=1;k++) printf("*****\n");
下列關于陳述句執行情況的敘述中正確的是
A)回圈體執行兩次 B)回圈體執行一次
C)回圈體一次也不執行 D)構成無限回圈
(23)有以下程式
#include <stdio.h>
main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
}
printf("\n");
}
程式運行后的輸出結果是
A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef
(24)設有定義:double x[10],*p=x;,以下能給陣列x下標為6的元素讀入資料的正確陳述句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);
(25)有以下程式(說明:字母A的ASCII碼值是65)
#include <stdio.h>
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程式運行后的輸出結果是
A)BY B)BT C)YT D) YE
(26)有以下程式段
#include <stdio.h>
main()
{ …
while( getchar()!='\n');
…
}
以下敘述中正確的是
A)此while陳述句將無限回圈
B) getchar()不可以出現在while陳述句的條件運算式中
C)當執行此while陳述句時,只有按回車鍵程式才能繼續執行
D)當執行此while陳述句時,按任意鍵程式就能繼續執行
(27)有以下程式
#include <stdio.h>
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程式運行后的輸出結果是
A)0 B)1 C)2 D)3
(28)若有定義陳述句:char s[3][10],(*k)[3],*p;,則以下賦值陳述句正確的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;
(29)有以下程式
#include <stdio.h>
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s);
}
當執行程式時從鍵盤上輸入Hello Beijing<回車>,則程式的輸出結果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing
(30)以下函式的功能是:通過鍵盤輸入資料,為陣列中的所有元素賦值,
#include <stdio.h>
#define N 10
void fun(int x[N])
{ int i=0;
while(i<N) scanf(“%d”,________);
}
在程式中下劃線處應填入的是
A)x+i B)&x[i+1] C)x+(i++) D)&x[++i]
(31)有以下程式
#include <stdio.h>
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程式運行時若輸入:
how are you? I am fine<回車>
則輸出結果是
A)how are you? B)how
I am fine are you? I am fine
C)how are you? I am fine D)how are you?
(32)設有如下函式定義
int fun(int k)
{ if (k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若執行呼叫陳述句:n=fun(3);,則函式fun總共被呼叫的次數是
A)2 B)3 C)4 D)5
(33)有以下程式
#include <stdio.h>
int fun (int x,int y)
{ if (x!=y) return ((x+y)/2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程式運行后的輸出結果是
A)3 B)6 C)8 D)12
(34)有以下程式
#include <stdio.h>
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程式運行后的輸出結果是
A)0 B) 10 C)30 D)64
(35)有以下程式
#include <stdio.h>
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程式運行后的輸出結果是
A) 28 B) 33 C) 143 D) 197
(36)設有定義:struct { char mark[12];int num1;double num2;} t1,t2;,若變數均已正確賦初值,則以下陳述句中錯誤的是
A)t1=t2; B)t2.num1=t1.num1;
C)t2.mark=t1.mark; D)t2.num2=t1.num2;
(37)有以下程式
#include <stdio.h>
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{
struct ord *p=dt;
printf("%d,",++(p->x)); printf("%d\n",++(p->y));
}
程式運行后的輸出結果是
A)1,2 B) 2,3 C)3,4 D) 4,1
(38)有以下程式
#include <stdio.h>
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程式運行后的輸出結果是
A)10 B)11 C)20 D)21
(39)有以下程式
#include <stdio.h>
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程式運行后的輸出結果是
A) 0 B)1 C)16 D) 32
(40)設fp已定義,執行陳述句fp=fopen("file","w");后,以下針對文本檔案file操作敘述的選項中正確的是
A)寫操作結束后可以從頭開始讀 B)只能寫不能讀
C)可以在原有內容后追加寫 D)可以隨意讀和寫
二、程式填空題(18分)
下列給定程式中,函式fun的功能是:統計所有小于等于n(n>2)的素數的個數,素數的個數作為函式值回傳,
請在程式的下畫線處填入正確的內容并把下畫線洗掉,使程式得出正確的結果,
注意:部分源程式在檔案BLANK1.C中,不得增行或刪行,也不得更改程式的結構!
試題程式:
#include <stdio.h> int fun(int n) { int i,j, count=0; printf("\nThe prime number between 3 to %d\n", n); for (i=3; i<=n; i++) { /**********found**********/ for (___1___; j<i; j++) /**********found**********/ if (___2___%j == 0) break; /**********found**********/ if (___3___>=i) { count++; printf( count%15? "%5d":"\n%5d",i); } } return count; } int main() { int n=20, r; r = fun(n); printf("\nThe number of prime is : %d\n", r); return 0; }
三、程式修改題(18分)
下列給定程式中函式fun的功能是:用選擇法對陣列中的n個元素進行升序排列,
請修改程式中的錯誤,使它能得出正確的結果,
注意:部分源程式在檔案MODI1.C中,不得增行和刪行,也不得更改程式的結構!
試題程式:
#include <stdio.h> #define N 20 void fun(int a[], int n) { int i, j, t, p; for (j = 0 ;j < n-1 ;j++) { /************found************/ p = j for (i = j;i < n; i++) if(a[i] < a[p]) /************found************/ p = j; t = a[p] ; a[p] = a[j] ; a[j] = t; } } int main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的資料:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的資料:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); return 0; }
四、程式設計題:
請撰寫函式fun,其功能是:計算并輸出下列多項式的值,
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函式從鍵盤給n輸入8后,則輸出為S=0.662872,
注意:要求n的值大于1但不大于100,部分源程式在檔案PROG1.C中,請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
試題程式:
#include <stdio.h> double fun(int n) { } int main() { int n; double s; void NONO( ); printf("Input n: "); scanf("%d",&n); s=fun(n); printf("\ns=%f\n",s); NONO(); return 0; } void NONO() { int n, i ; double s ; for(i = 0 ; i < 10 ; i++) { s = fun(n) ; } }
一、選擇題 ( 1)~(10) :ABDDB ACDCB (11)~(20) : ADAAA ADBAD (21)~(30) : BDBCD CACCC (31)~(40) : BBBDC CBDBB 二、程式填空題 (1) j-2 (2) i (3) j 三、程式改錯題 (1) p=j; (2) p=i; 四、程式設計題 int i; double s=0.0; for (i=1;i<=n;i++) s=s+1.0/(2*i-1)-1.0/(2*i); return s;參考答案:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529823.html
標籤:C
上一篇:PowerShellIO大檔案,無需將所有內容加載到記憶體
下一篇:Go | 淺談包管理模式
