亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

試題

上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題

時(shí)間:2024-09-06 17:06:14 試題 我要投稿

2006上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題

  一、選擇題((1)一(10)每題2分,(11)一(50)每題1分,共60分)下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。

2006上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題

  (1)下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是

  A.自頂向下

  B.逐步求精

  C.模塊化

  D.可復(fù)用

  (2)兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱為

  A.耦合度

  B.內(nèi)聚度

  C.復(fù)雜度

  D.數(shù)據(jù)傳輸特性

  (3)下列敘述中正確的是

  A.軟件測(cè)試應(yīng)該由程序開發(fā)者來完成

  B.程序經(jīng)調(diào)試后一般不需要再測(cè)試

  C.軟件維護(hù)只包括對(duì)程序代碼的維護(hù)

  D.以上三種說法都不對(duì)

  (4)按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是

  A.隊(duì)列

  B.棧

  C.雙向鏈表

  D.二叉樹

  (5)下列敘述中正確的是

  A.線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

  B.棧與隊(duì)列是非線性結(jié)構(gòu)

  C.雙向鏈表是非線性結(jié)構(gòu)

  D.只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)

  (6)對(duì)如下二叉樹

  ABDECF

  進(jìn)行后序遍歷的結(jié)果為

  A.ABCDEF

  B.DBEAFC

  C.ABDECF

  D.DEBFCA

  (7)在深度為7的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為

  A.32

  B.31

  C.64

  D.63

  (8)“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是

  A.一對(duì)一

  B.一對(duì)多

  C.多對(duì)一

  D.多對(duì)多

  (9)在E-R圖中,用來表示實(shí)體的圖形是

  A.矩形

  B.橢圓形

  C.菱形

  D.三角形

  (10)數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是

  A.DB包含DBS和DBMS

  B.DBMS包含DB和DBS

  C.DBS包含DB和DBMS

  D.沒有任何關(guān)系

  (11)以下不合法的用戶標(biāo)識(shí)符是

  A.j2_KEY

  B.Double

  C.4d

  D._8_

  (12)以下不合法的數(shù)值常量是

  A.011

  B.1e1

  C.8.0E0.5

  D.0xabcd

  (13)以下不合法的字符常量是

  A.′\018′

  B.′\"′

  C.′\\′

  D.′\xcc′

  (14)表達(dá)式3.6-5/2+1.2+5%2的值是

  A.4.3

  B.4.8

  C.3.3

  D.3.8

  (15)以下能正確定義字符串的語句是

  A.char str[]={′\064′};

  B.char str="kx43";

  C.char str=";

  D.char str[]="\0";

  (16)以下數(shù)組定義中錯(cuò)誤的是

  A.int x[][3]={0};

  B.int x[2][3]={{l,2},{3,4},{5,6}};

  C.int x[][3]={{l,2,3},{4,5,6}};

  D.int x[2][3]={l,2,3,4,5,6};

  (17)若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)

  A.getc()

  B.gets()

  C.getchar()

  D.scanf()

  (18)以下四個(gè)程序中,完全正確的是

  A.#include

  B.#include

  main();main()

  {/*programming*/{/*/ programming /*/

  printf("programming!\n");} printf("programming!\n");}

  C.#include

  D. include

  main()main()

  {/*/*programming*/*/{/*programming*/

  printf("programming!\n");} printf("programming!\n");}

  (19)若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch語句是

  A.switch(x)

  B.switch((int)x);

  {case 1.0:printf("*\n"); {case 1:printf("*\n");

  case 2.0:printf("**\n");} case 2:printf("**\n");}

  C.switch(a+

  B.

  D.switch(a+

  B.

  {case 1:printf("*\n");{case 1:printf("*\n");

  case 2+1:printf("**\n");}case c:printf("**\n");}

  (20)若各選項(xiàng)中所用變量已正確定義,函數(shù)fun中通過return語句返回一個(gè)函數(shù)值,以下選項(xiàng)中錯(cuò)誤的程序是

  A.main()

  B.float fun(int a,int

  B.{……}

  {……x=fun(2,10);……}main()

  float fun(int a,int

  B.{……} {……x=fun(i,j);……}

  C.float fun(int,int);

  D.main()

  main() {float fun(int i,int j);

  {……x=fun(2,10);……} ……x=fun(i,j); ……}

  float fun(int a,int

  B.{……}float fun(int a,int

  B.{……}

  (21)在以下給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是

  A.(!E==0)

  B.(E>0‖E<0)

  C.(E==0)

  D.(E!=0)

  (22)要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時(shí)結(jié)束循環(huán)。若變量已正確定義,以下正確的程序段是

  A.while((ch=getchar())!=′N′)printf("%c",ch);

  B.while(ch=getchar()!=′N′)printf("%c",ch);

  C.while(ch=getchar()==′N′)printf("%c",ch);

  D.while((ch=getchar())==′N′)printf("%c",ch);

  (23)已定義以下函數(shù)

  int fun(int *p)

  {return *p;)

  fun函數(shù)返回值是

  A.不確定的值

  B.一個(gè)整數(shù)

  C.形參P中存放的值

  D.形參P的地址值

  (24)若有說明語句:double *p,a;則能通過scanf語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是

  A.*p=&a; scanf("%1f",p);

  B.*p=&a; scanf("%f",p);

  C.p=&a; scanf("%1f",*p);

  D.p=&a; scanf("%1f",p);

  (25)現(xiàn)有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個(gè)鏈表中連續(xù)的三個(gè)結(jié)點(diǎn)。

  struct node

  {char data;

  struct node *next; }*p,*q,*r;

  現(xiàn)要將q和r所指結(jié)點(diǎn)交換前后位置,同時(shí)要保持鏈表的連續(xù),以下不能完成此操作的語句是

  A.q->next=r->next;p->next=r;r->next=q;

  B.p->next=r;q->next=r->next;r->next=q;

  C.q->next=r->next;r->next=q;p->next=r;

  D.r->next=q;p->next=r;q->next=r->next;

  (26)有以下程序段

  struct st

  {int x;int *y;}*pt;

  int a[]={l,2},b[]={3,4};

  struct st c[2]={10,a,20,b};

  pt=c;

  以下選項(xiàng)中表達(dá)式的值為11的是

  A.*pt->y

  B.pt->x

  C.++pt->x

  D.(pt++)->x

  (27)設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為

  A.EOF

  B.非0值

  C.0

  D.NULL

  (28)設(shè)有以下語句

  int a=1,b=2,c;

  c=a^(b<<2);

  執(zhí)行后,C的值為

  A.6

  B.7

  C.8

  D.9

  (29)有以下程序

  #include

  main()

  {char c1,c2,c3,c4,c5,c6;

  scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

  c5=getchar(); c6=getchar();

  putchar(c1);putchar(c2);

  printf("%c%c\n",c5,c6);

  }

  程序運(yùn)行后,若從鍵盤輸入(從第1列開始)

  123<回車>

  45678<回車>

  則輸出結(jié)果是

  A.1267

  B.1256

  C.1278

  D.1245

  (30)有以下程序

  main()

  {int y=10;

  while(y--);printf("y=%d\n",y);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.y=0

  B.y=-1

  C.y=1

  D.while構(gòu)成無限循環(huán)


  (31)有以下程序

  main()

  {int a=0,b=0,c=0,d=0;

  if(a=1) b=1;c=2;

  else d=3;

  printf("%d,%d,%d,%d\n",a,b,c,

  D.;

  }

  程序輸出

  A.0,1,2,0

  B.0,0,0,3

  C.1,1,2,0

  D.編譯有錯(cuò)

  (32)有以下程序

  main()

  {int i,j,x=0;

  for(i=0;i<2;i++)

  {x++;

  for(j=0;j<=3;j++)

  {if(j%2)continue;

  x++;

  }

  x++;

  }

  printf("x=%d\n",x);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.x=4

  B.x=8

  C.x=6

  D.x=12

  (33)有以下程序

  int fun1(double a){return a*=a;}

  int fun2(double x,double y)

  {double a=0,b=0;

  a=fun1(x);b=fun1(y);return(int)(a+

  B.;

  }

  main()

  {double w;w=fun2(1.1,2.0);……}

  程序執(zhí)行后變量w中的值是

  A.5.21

  B.5

  C.5.0

  D.0.0

  (34)有以下程序

  main()

  {int i,t[][3]={9,8,7,6,5,4,3,2,1};

  for(i=0;i<3;i++) printf("%d",t[2-i][i]);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.7 5 3

  B.3 5 7

  C.3 6 9

  D.7 5 1

  (35)有以下程序

  fun(char p[][10])

  {int n=0,i;

  for(i=0;i<7;i++)

  if(p[i][0]==′T′)n++;

  return n;

  }

  main()

  {char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};

  printf("%d\n",fun(str));

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.1

  B.2

  C.3

  D.0

  (36)有以下程序

  main()

  {int i,s=0,t[]={l,2,3,4,5,6,7,8,9};

  for(i=0;i<9;i+=2)s+=*(t+i);

  printf("%d\n",s);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.45

  B.20

  C.25

  D.36

  (37)有以下程序

  void fun1(char *p)

  {char *q;

  q=p;

  while(*q!=′\0′)

  { (*q)++; q++; )

  }

  main()

  {char a[]={"Program"), *p;

  p=&a[3];fun1(p);printf("%s\n",a);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.Prohsbn

  B.Prphsbn

  C.Progsbn

  D.Program

  (38)有以下程序

  void swap(char *x,char *y)

  {char t;

  t=*x; *x=*y; *y=t;

  }

  main()

  {char *s1="abc",*s2="123";

  swap(s1,s2);printf("%s,%s\n",s1,s2);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.123,abc

  B.abc,123

  C.1bc,a23

  D.321,cba

  (39)有以下程序

  int fun(int n)

  {if(n==1)return 1;

  else

  return(n+fun(n-1));

  }

  main()

  {int x;

  scanf("%d",&x); x=fun(x);printf("%d\n",x);

  }

  執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是

  A.55

  B.54

  C.65

  D.45

  (40)有以下程序

  int fun(int x[],int n)

  {static int sum=0,i;

  for(i=0;ireturn sum;

  }

  main()

  {int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;

  s=fun(a,5)+fun(b,4);printf("%d\n",s);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.45

  B.50

  C.60

  D.55

  (41)有以下程序

  main()

  {union

  {char ch[2];

  int d;

  }s;

  s.d=0x4321;

  printf("%x,%x\n",s.ch[0],s.ch[1]);

  }

  在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是

  A.21,43

  B.43,21

  C.43,00

  D.21,00

  (42)有以下程序

  main()

  {char *p[]={"3697","2584"};

  int i,j;long num=0;

  for(i=0;i<2;i++)

  {j=0;

  while(p[i][j]!=′\0′)

  {if((p[i][j]-′0′)%2)num=10*num+p[i][j]-′0′;

  j+=2;

  }

  }

  printf("%d\n",num);

  }

  程序執(zhí)行后的輸出結(jié)果是

  A.35

  B.37

  C.39

  D.3975

  (43)執(zhí)行以下程序后,test.txt文件的內(nèi)容是(若文件能正常打開)

  #include

  main()

  {FILE *fp;

  char *s1="Fortran",*s2="Basic";

  if((fp=fopen("test.txt","wb”))==NULL)

  {printf("Can′t open test.txt file\n");exit(1);}

  fwrite(s1,7,1,fp); /*把從地址s1開始的7個(gè)字符寫到fp所指文件中*/

  fseek(fp,0L,SEEK_SET); /*文件位置指針移到文件開頭*/

  fwrite(s2,5,1,fp);

  fclose(fp);

  }

  A.Basican

  B.BasicFortran

  C.Basic

  D.FortranBasic

  (44)以下敘述中錯(cuò)誤的是

  A.C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序

  B.C程序經(jīng)過編譯、連接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件

  C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中

  D.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

  (45)以下敘述中錯(cuò)誤的是

  A.算法正確的程序最終一定會(huì)結(jié)束

  B.算法正確的程序可以有零個(gè)輸出

  C.算法正確的程序可以有零個(gè)輸入

  D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

  (46)以下敘述中錯(cuò)誤的是

  A.C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成

  B.函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語句存在

  C.若函數(shù)有返回值,必須通過return語句返回

  D.函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參

  (47)設(shè)有以下定義和語句

  char str[20]="Program",*p;

  p=str;

  則以下敘述中正確的是

  A.*p與str[0]的值相等

  B.str與p的類型完全相同

  C.str數(shù)組長度和p所指向的字符串長度相等

  D.數(shù)組str中存放的內(nèi)容和指針變量p中存放的內(nèi)容相同

  (48)以下敘述中錯(cuò)誤的是

  A.C程序中的#include和#define行均不是C語句

  B.除逗號(hào)運(yùn)算符外,賦值運(yùn)算符的優(yōu)先級(jí)最低

  C.C程序中,j++;是賦值語句

  D.C程序中,+、-、*、/、%號(hào)是算術(shù)運(yùn)算符,可用于整型和實(shí)型數(shù)的運(yùn)算

  (49)以下敘述中正確的是

  A.預(yù)處理命令行必須位于C源程序的起始位置

  B.在C語言中,預(yù)處理命令行都以"#"開頭

  C.每個(gè)C程序必須在開頭包含預(yù)處理命令行:#include

  D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能

  (50)以下敘述中錯(cuò)誤的是

  A.可以通過typedef增加新的類型

  B.可以用typedef將已存在的類型用一個(gè)新的名字來代表

  C.用typedef定義新的類型名后,原有類型名仍有效

  D.用typedef可以為各種類型起別名,但不能為變量起別名


  二、填空題(每空2分,共40分)請(qǐng)將每一個(gè)空的正確答案寫在答題卡【1】至【20】序號(hào)的橫線上,答在試卷上不得分。

  (1)對(duì)長度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為【1】。

  (2)在面向?qū)ο蠓椒ㄖ,?】描述的是具有相似屬性與操作的一組對(duì)象。

  (3)在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個(gè)二維表稱為一個(gè)【3】。

  (4)程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【4】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

  (5)數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【5】。

  (6)若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請(qǐng)寫出完整的的輸出語句【6】。

  (7)以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時(shí),確定a、b、c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。請(qǐng)?zhí)羁铡?/p>

  main()

  {float a,b,c;

  scanf("%f%f%f",&a,&b,&

  C.;

  if(【7】)printf("YES\n");/*a、b、c能構(gòu)成三角形*/

  else printf("NO\n");/*a、b、c不能構(gòu)成三角形*/

  }

  (8)以下程序的輸出結(jié)果是【8】 。

  main()

  {int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;

  for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];

  printf("%d\n",s);

  }

  (9)當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是:【9】。

  insert(char str[])

  {int i;

  i=strlen(str);

  while(i>0)

  {str[2*i]=str[i];str[2*i-1]=′*′;i--;}

  printf("%s\n",str);

  }

  main()

  {char str[40];

  scanf("%s",str);insert(str);

  }

  (10)下面程序的運(yùn)行結(jié)果是:【10】。

  fun(int t[],int n)

  {int i,m;

  if(n==1)return t[0];

  else

  if(n>=2){m=fun(t,n-1); return m; }

  }

  main()

  {int a[]={11,4,6,3,8,2,3,5,9,2};

  printf("%d\n",fun(a,10));

  }

  (11)現(xiàn)有兩個(gè)C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

  #include

  #include "myfun.c"

  main()

  {fun();printf("\n");}

  myfun.c文件如下:

  void fun()

  {char s[80],c; int n=0;

  while((c=getchar())!=′\n′) s[n++]=c;

  n--;

  while(n>=0) printf("%c",s[n--]);

  }

  當(dāng)編譯連接通過后,運(yùn)行程序T18時(shí),輸入Thank!則輸出結(jié)果是:【11】。

  (12)以下函數(shù)fun的功能是返回str所指字符串中以形參c中字符開頭的后續(xù)字符串的首地址,例如:str所指字符串為:Hello!,c中的字符為e,則函數(shù)返回字符串:ello!的首地址。若str所指字符串為空串或不包含c中的字符,則函數(shù)返回NULL。請(qǐng)?zhí)羁铡?/p>

  char *fun(char *str,char

  C.

  { int n=0; char *p=str;

  if(p!=NULL)

  while(p[n]!=c&&p[n]!=′\0′)n++;

  if(p[n]==′\0′) return NULL;

  return(【12】);

  }

  (13)以下程序的功能是:輸出100以內(nèi)(不含100)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)?zhí)羁铡?/p>

  main()

  (int i,j;

  for(i=0;【13】;i++)

  {j=i*10+6;

  if(【14】)continue;

  printf("%d",j);

  }

  }

  (14)以下isprime函數(shù)的功能是判斷形參a是否為素?cái)?shù),是素?cái)?shù),函數(shù)返回1,

  否則返回0。請(qǐng)?zhí)羁?/p>

  int isprime(int a)

  {int i;

  for(i=2;i<=a/2;i++)

  if(a%i==0)【15】;

  【16】;

  }

  (15)以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形

  字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

  A B C D E

  F G H I

  J K L

  M N

  O

  請(qǐng)?zhí)羁胀瓿稍摮绦颉?/p>

  main()

  {int i,j,n; char ch=′A′;

  scanf("%d",&n);

  if(n<11)

  {for(i=1;i<=n;i++)

  {for(j=1; j<=n-i+1;j++)

  {printf("%2c",ch);

  【17】;

  }

  【18】;

  }

  }

  else printf("n is too large!\n")

  printf("\n");

  }

  (16)以下程序中函數(shù)fun的功能是:構(gòu)成一個(gè)如圖所示的帶頭結(jié)點(diǎn)的單向鏈表,在結(jié)點(diǎn)的數(shù)據(jù)域中放入了具有兩個(gè)字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點(diǎn)中的字符串。請(qǐng)?zhí)羁胀瓿珊瘮?shù)disp。

  #include

  typedef struct node/*鏈表結(jié)點(diǎn)結(jié)構(gòu)*/

  {char sub[3];

  struct node *next;

  }Node;

  Node fun(char s) /*建立鏈表*/

  {…… }

  void disp(Node *h)

  {Node *p;

  p=h->next;

  while(【19】)

  {printf("%s\n",P->su

  B.; p=【20】; }

  }

  main()

  {Node *hd;

  hd=fun();disp(h

  D.;printf("\n");

  }


  2006年4月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言筆試試題答案

【上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題】相關(guān)文章:

計(jì)算機(jī)二級(jí)C語言筆試真題10-12

2005年上半年全國計(jì)算機(jī)二級(jí)C語言筆試真題03-02

2006上半年全國計(jì)算機(jī)二級(jí)C++筆試真題11-17

2005年上半年全國計(jì)算機(jī)二級(jí)C++筆試真題03-02

全國計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試真題10-11

計(jì)算機(jī)二級(jí)C語言真題09-30

全國計(jì)算機(jī)二級(jí)考試《C語言》真題練習(xí)及答案09-20

計(jì)算機(jī)二級(jí)C語言真題填空題03-04

3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試真題10-11