閱讀屋>筆試> 計算機二級C筆試真題參考

計算機二級C筆試真題參考

計算機二級C筆試真題參考

  一、 選擇題((1)~(40)每題1分,(41)~(50)每題2分,共60分)

  1、 1MB等於()

  A)1000位元組 B)1024位元組 C)1000╳1000位元組 D)1024╳1024位元組

  2、 與十六進位制數200等值得十進位制數為()

  A)256 B)512 C)1024 D)2048

  3、 所謂“裸機“是指()

  A)微控制器B)單板機 C)不裝備任何軟體的計算機 D)只裝備作業系統的計算機

  4、 能將高階語言編寫的源程式轉換為目標程式的是()

  A)連結程式 B)解釋程式 C)編譯程式 D)編輯程式

  5、 在64為計算機中,一個字長所佔位元組數為()

  A)64 B)8 C)4 D)1

  6、 在Windows環境下,當一個應用程式視窗被最小化後,該應用程式()

  A)繼續在後臺執行 B)繼續在前臺執行

  C)終止執行 D)暫停執行

  7、在Windows環境下,能實現視窗移動的操作是()

  A)用滑鼠拖動視窗中的任何部位 B)用滑鼠拖動視窗的邊框

  C)用滑鼠拖動視窗的控制按鈕 D)用滑鼠拖動視窗的標題欄。

  8、 在Windows環境下,PrintScreen鍵的作用是()

  A)列印當前視窗的內容 B)列印螢幕內容

  C)複製螢幕到剪貼簿 D)複製當前視窗到剪貼簿

  9、 Internet的通訊協議是()

  A)TCP/IP B)BBS C)WWW D)FTP

  10、 下列敘述中正確的是()

  A)計算機病毒只感染可執行檔案

  B)計算機病毒只感染文字檔案

  C)計算機病毒只能透過軟體複製的方式進行傳播

  D)計算機病毒可以透過網路或讀寫磁碟方式進行傳播

  11、一個演算法應該具有“確定性”等5個特性,下面對另外4個特性的`描述中錯誤的是

  A)有零個或多個輸入 B)有零個或多個輸出

  C)有窮性 D)可行性

  12、 以下敘述中正確的是()

  A)C語言的源程式不必透過編譯就可以直接執行

  B)C語言中的每條可執行語句最終都將被轉換成二進位制的機器指令

  C)C源程式經編譯形成的二進位制程式碼可以直接執行

  D)C語言中的函式不可以單獨進行編譯

  13、 以下符合C語言語法的實型常量是()

  A)1.2E0.5 B)3.14.159E C).5E-3 D)E15

  14、 以下4組使用者定義識別符號中,全部合法的一組是()

  A)_main B)If C)txt D)int

  enclude -max REAL k_2

  sin turbo 3COM _001

  15、 若以下選項中的變數已正確定義,則正確的賦值語句是()

  A)x1=26.8%3 B)1+2=x2 C)x3=0x12 D)x4=1+2=3;

  16、 設有以下定義

  int a=0;

  double b=1.25;

  char c=’A’;

  #define d 2

  則下面語句中錯誤的是()

  A)a++; B)b++C)c++; D)d++;

  17、 設有定義:float a=2,b=4,h=3;,以下C語言表示式與代數式 計算結果不相

  符的是()

  A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b)

  18、 有以下程式

  main( )

  {

  int x=102,y=012;

  printf(“%2d,%2d ”,x,y);

  } 執行後輸出結果是()

  A)10,01 B002,12 C)102,10 D)02,10

  19、以下4個選項中,不能看作一條語句的是()

  A){;} B)a=0,b=0,c=0; C)if(a>0); D)if(b==0) m=1;n=2;

  20、設有定義:int a,*pa=&a;以下scanf語句中能正確為變數a讀入資料的是()

  A)scanf(“%d”,pa); B)scanf(“%d”,a);

  C)scanf(“%d”,&pa); D)scanf(“%d”,*pa);

  21、以下程式段中與語句k=a>b?(b>c?1:0):0;功能等價的是()

  A)if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1

  else k=0;

  C)if(a<=b) k="0;" a="">b) k=1;

  else if(b<=c) k="1;" else="" b="">c) k=1;

  else k=0;

  22、有以下程式

  main( )

  { char k; int I;

  for(i=1;i<3;i++)

  { scanf(“%c”,&k);

  switch(k)

  { case ‘0’: printf(“another ”);

  case ‘1’: printf(“number ”);

  }

  }

  }

  程式執行時,從鍵盤輸入:01<回車>,程式執行後的輸出結果是()

  A) another B)another C)another D)number

  number number number number

  another number

  23、有以下程式

  main( )

  { int x=0,y=5,z=3;

  while(z-->0&&++x<5) y=y-1;

  printf(“%d,%d,%d ”,x,y,z);

  } 程式執行後的輸出結果是()

  A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5

  24、有以下程式

  main( )

  { int i,s=0;

  for(i=1;i<10;i+=2) s+=i+1;

  printf(“%d ”,s);

  } 程式執行後的輸出結果是()

  A)自然數1~9的累加和 B)自然數1~10的累加和

  C)自然數1~9中的奇數之和 D)自然數1~10中的偶數之和

  25、有以下程式

  main( )

  { int i,n=0;

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

  { do

  { if(i%3) continue;

  n++;

  } while(!i);

  n++;

  }

  printf(“n=%d ”,n);

  } 程式執行後的輸出結果是()

  A)n=5 B)n=2 C)n=3 D) n=4

  26、若程式中定義了以下函式

  double myadd(double a,double b)

  { return (a+b);}

  並將其放在呼叫語句之後,則在呼叫之前應該對該函式進行說明,以下選項中錯誤的說明是()

  A)double myadd(double a,b); B)double myadd(double,double);

  C)double myadd(double b,double a); D)double myadd(double x,double y);

  27、有以下程式

  char fun(char x , char y)

  { if(x

  return y;

  }

  main( )

  { int a=’9’,b=’8’,c=’7’;

  printf(“%c ”,fun(fun(a,b),fun(b,c)));

  } 程式的執行結果是()

  A)函式調用出錯 B)8 C)9 D)7

  28、設有定義:int n=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()

  A)p=1; B)*q=2; C)q=p; D)*p=5;

  29、有以下程式

  void f(int v , int w)

  { int t;

  t=v;v=w;w=t;

  }

  main( )

  { int x=1,y=3,z=2;

  if(x>y) f(x,y);

  else if(y>z) f(y,z);

  else f(x,z);

  printf(“%d,%d,%d ”,x,y,z);

  } 執行後輸出結果是()

  A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1

  30、有以下程式段

  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;

  b=p[5];

  b中的值是()

  A)5 B)6 C)8 D)9

  31、有以下程式

  main( )

  { char a[]=”abcdefg”,b[10]=”abcdefg”;

  printf(“%d %d ”,sizeof(a),sizeof(b));

  } 執行後輸出結果是()

  A)7 7 B)8 8 C)8 10 D)10 10

  32、有以下程式

  void swap1(int c[])

  { int t;

  t=c[0];c[0]=c[1];c[1]=t;

  }

  void swap2(int c0,int c1)

  { int t;

  t=c0;c0=c1;c1=t;

  }

  main( )

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

  swap1(a); swap2(b[0],b[1]);

  printf(“%d %d %d %d ”,a[0],a[1],b[0],b[1]);

  } 其輸出結果是()

  A)5 3 5 3 B) 5 3 3 5 C)3 5 3 5 D)3 5 5 3

  33、有以下程式

  void sum(int *a)

  { a[0]=a[1];}

  main( )

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

  for(i=2;i>=0;i--) sp; sum(&aa[i]);

  printf(“%d ”,aa[0]);

  } 執行後的輸出結果是()

  A)4 B)3 C)2 D)1

  34、有以下程式

  int f(int b[][4])

  { int i,j,s=0;

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

  { i=j;

  if(i>2) i=3-j;

  s+=b[i][j];

  }

  return s;

  }

  main( )

  { int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

  printf(“%d ”,f(a));

  } 執行後的輸出結果是()

  A)12 B)11 C)18 D)16

  35、有以下定義

  #include

  char a[10],*b=a;

  不能給陣列a輸入字串的語句是()

  A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);

  36、有以下程式

  main( )

  { char *p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};

  printf(“%d ”,strlen(p[4]));

  } 執行後輸出結果是()

  A)2 B)3 C)4 D)5

  37、有以下程式

  int a=2;

  int f(int *a)

  {return (*a)++;}

  main( )

  { int s=0;

  { int a=5;

  s+=f(&a);

  }

  s+=f(&a);

  printf(“%d ”,s);

  } 執行後輸出結果是()

  A)10 B)9 C)7 D)8

  38、有以下程式

  #define f(x) x*x

  main( )

  { int i;

  i=f(4+4)/f(2+2);

  printf(“%d ”,i);

  } 執行後輸出結果是()

  A)28 B)22 C)16 D)4

  39、設有以下語句

  typedef struct S

  { int g; char h;} T;

  則下面敘述中正確的是()

  A)可用S定義結構體變數 B)可以用T定義結構體變數

  C)S是struct型別的變數 D)T是struct S型別的變數

  40、有以下程式

  struc STU{

  char name[10];

  int num;

  };

  void f1(struct STU c)

  { struct STU b={“LiSiGuo”,2042};

  c=b;

  }

  void f2(struct STU *c)

  { struct STU b={“SunDan”,2044};

  *c=b;

  }

  main( )

  { struct STU a={“YangSan”,2041},b={“WangYin”,2043};

  f1(a);f2(&b);

  printf(“%d %d ”,a.num,b.num);

  } 執行後的輸出結果是()

  A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043

  41、有以下程式

  main( )

  { unsigned char a,b;

  a=4|3;

  b=4&3;

  printf(“%d %d ”,a,b(;

  } 執行後輸出結果是()

  A) 7 0 B)0 7 C)1 1 D)43 0

  42、下面程式的功能是輸出以下形式的金字塔圖案是:

  *

  ***

  *****

  *******

  main( )

  { int i,j;

  for(i=1;i<=4;i++)

  { for(j=1;j<=4-i;j++) printf(“ “);

  for(j=1;j<=_______;j++) printf(“*”);

  printf(“ ”);

  }

  } 在下劃線處應填入的是()

  A)i B)2*i-1 C)2*i+1 D)i+2

  43、有以下程式

  void sort(int a[],int n)

  { int i,j,t;

  for(i=0;i

  for(j=i+2;j

  if(a[i]

  }

  main()

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

  sort(aa,10);

  for(i=0;i<10;i++) printf(“%d”,aa[i]);

  printf(“ ”);

  } 其輸出結果是()

  A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,

  C)9,2,7,4,5,6,3,8,1,10, D)1,10,3,8,5,6,7,4,9,2,

  44、以下程式段中,不能正確賦字串(編譯時系統會提示錯誤)的是()

  A) char s[10]=”abcdefg”; B) char t[]=”abcdefg”,*s=t;

  C) char s[10];s=”abcdefg”; D) char s[10];strcpy(s,”abcdefg”);

  45、有以下程式

  #include

  main(int argc ,char *argv[ ])

  { int i,len=0;

  for(i=1;i

  printf(“5d ”,len);

  } 經編譯連結後生成的可執行檔案是ex.exe,若執行時輸入以下帶引數的命令列

  ex abcd efg h3 k44

  執行後輸出結果是()

  A)14 B)12 C)8 D)6

  46、有以下程式

  void f(int a[],int i,int j)

  { int t;

  if(i

  { t=a[i]; a[i]=a[j];a[j]=t;

  f(a,i+1,j-1);

  }

  }

  main( )

  { int i,aa[5]={1,2,3,4,5};

  f(aa,0,4);

  for(i=0;i<5;i++) printf(“%d,”,aa[i]); printf(“ ”);

  } 執行後輸出結果是()

  A)5,4,3,2,1, B)5,2,3,4,1, C)1,2,3,4,5, D)1,2,3,4,5,

  47、有以下程式

  struct STU

  { char name[10];

  int num;

  int Score;

  };

  main( )

  { struct STU s[5]={{“YangSan”,20041,703},{“LiSiGuo”,20042,580},

  {“wangYin”,20043,680},{“SunDan”,20044,550},

  {“Penghua”,20045,537}},*p[5],*t;

  int i,j;

  for(i=0;i<5;i++) p[i]=&s[i];

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

  for(j=i+1;j<5;j++)

  if(p[i]->Score>p[j]->Score)

  { t=p[i];p[i]=p[j];p[j]=t;}

  printf(“5d %d ”,s[1].Score,p[1]->Score);

  } 執行後輸出結果是()

  A)550 550 B)680 680 C)580 550 D)580 680

  48、有以下程式

  #include

  struct NODE{

  int num;

  struct NODE *next;

  };

  main( )

  { struct NODE *p,*q,*r;

  int sum=0;

  p=(struct NODE *)malloc(sizeof(struct NODE));

  q=(struct NODE *)malloc(sizeof(struct NODE));

  r=(struct NODE *)malloc(sizeof(struct NODE));

  p->num=1;q->num=2;r->num=3;

  p->next=q;q->next=r;r->next=NULL;

  sum+=q->next->num;sum+=p->num;

  printf(“%d ”,sum);

  } 執行後的輸出結果是

  A)3 B)4 C)5 D)6

  49、有以下程式

  #include

  main( )

  { FILE *fp; int i,k=0,n=0;

  fp=fopen(“d1.dat”,”w”);

  for(i=1;i<4;i++) fprintf(fp,”%d”,i);

  fclose(fp);

  fp=fopen(“d1.dat”,”r”);

  fscanf(fp,”%d%d”,&k,&n); printf(“%d %d ”,k,n);

  fclose(fp);

  } 執行後輸出結果是()

  A)1 2 B)123 0 C)1 23 D) 0 0

  50、有以下程式(提示:程式中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指標從檔案尾向前移2*sizeof(int)位元組)

  #include

  main( )

  { FILE *fp; int i,a[4]={1,2,3,4},b;

  fp=fopen("data.dat","wb");

  for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp);

  fclose(fp);

  fp=fopen("data.dat","rb");

  fseek(fp,-2L*sizeof(int).SEEK_END);

  fread(&b,sizeof(int),1,fp);/*從檔案中讀取sizeof(int)位元組的資料到變數b中*/

  fclose(fp);

  printf("%d ",b);

  } 執行後輸出結果是()

  A)2 B)1 C) 4 D)3

  二、填空題(每空2分,共40分)

  1、E-mail地址由使用者名稱和域名兩部分組成,這兩部分的分隔符為【1】。

  2、計算機網路分為廣域網和區域網,因特網屬於【2】。

  3、從Windows環境進入MS-DOS方式後,返回Windows環境的DOS命令為【3】。

  4、在Windows環境下,只要在“開始”選單中單擊【4】選項,就可以查閱最近開啟過的文件清單。

  5、計算機的運算速度可以用MIPS來描述,1MIPS是指每秒執行【5】條指令。

  6、已知字元A的ACSII碼值為65,以下語句的輸出結果是【6】

  char ch=’B’;

  printf(“%c %d ”,ch,ch);

  7、有以下語句段

  int n1=10,n2=20;

  printf(“【7】”,n1.n2);

  要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請填空。

  n1=10

  n2=20

  8、有以下程式

  main( )

  { int t=1,i=5;

  for(;i>=0;i--) t*=i;

  printf(“%d ”,t);

  } 執行後輸出結果是【8】。

  9、有以下程式

  main( )

  { int n=0,m=1,x=2;

  if(!n) x-=1;

  if(m) x-=2;

  if(x) x-=3;

  printf(“%d ”,x);

  } 執行後輸出結果是【9】。

  10、有以下程式

  #include

  main( )

  { char ch1,ch2; int n1,n2;

  ch1=get); ch2=get);

  n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);

  printf(“%d ”,n2);

  } 程式執行時輸入:12<回車>,執行後輸出結果是【10】。

  11、有以下程式

  void f( int y,int *x)

  {y=y+*x; *x=*x+y;}

  main( )

  { int x=2,y=4;

  f(y,&x);

  printf(“%d %d ”,x,y);

  } 執行後輸出的結果是【11】。

  12、函式fun的功能是計算xn

  double fun(double x,int n)

  { int i; double y=1;

  for(i=1;i<=n;i++) y=y*x;

  return y;

  } 主函式中已經正確定義m,a,b變數並賦值,並呼叫fun函式計算:m=a4+b4-(a+b)3。實現這一計算的函式呼叫語句為【12】。

  13、下面rotate函式的功能是:將n行n列的矩陣A轉置為A’,例如:

  1 2 3 4 1 5 9 13

  5 6 7 8 2 6 10 14

  當 A= 9 10 11 12 則 A’= 3 7 11 15

  13 14 15 16 4 8 12 16

  請填空

  #define N 4

  void rotate(int a[][N])

  { int i,j,t;

  for(i=0;i

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

  { t=a[i][j];

  【14】;

  a[j][i]=t;

  }

  }

  14、以下sstrcpy( )函式實現字串複製,即將t所指字串複製到s所指向記憶體空間中,形成一個新的字串s。請填空。

  void sstrcpy(char *s,char *t)

  { while(*s++=【15】);}

  main( )

  { char str1[100],str2[]=”abcdefgh”;

  sstrcpy(str1,str2);

  printf(“%s ”,str1);

  }

  15、下列程式的執行結果是:【16】

  #include

  char *ss(char *s)

  { return s+strlen(s)/2;}

  main( )

  { char *p,*str=”abcdefgh”;

  p=ss(str); printf(“%s ”,p);

  }

  16、下面程式的執行結果是:【17】

  int f( int a[], int n)

  { if(n>1) return a[0]+f(&a[1],n-1);

  else return a[0];

  }

  main ( )

  { int aa[3]={1,2,3},s;

  s=f(&aa[0],3); ; printf(“%d ”,s);

  }

  17、以下程式中給指標p分配三個double型動態記憶體單元,請填空。

  # include

  main ( )

  { double *p;

  p=(double *) malloc(【18】);

  p[0]=1.5;p[1]=2.5;p[2]=3.5;

  printf(“%f%f%f ”,p[0],p[1],p[2]);

  }

  18、以下程式的執行結果是【19】

  # include

  typedef struct student{

  char name[10];

  long sno;

  float score;

  }STU;

  main( )

  { STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;

  d=a;

  if(strcmp(a.name,b.name)>0) d=b;

  if(strcmp(c.name,d.name)>0) d=c;

  printf(“%ld%s ”,d.sno,p->name);

  }

  19、以下sum函式的功能是計算下列級數之和。

  S=1+x+x2/2!+x3/3!+........+xn/n!

  請給函式中的各變數正確賦初值。

  double sum( double x, int n )

  { int i; double a,b,s;

  【20】

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

  { a=a*x; b=b*i; s=s+a/b; }

  return s;

  }

  附參考答案

  01~10:DBCCB ADCAD

  11~20:BBCAC DBCDA

  21~30: ACBDD ADDCD

  31~40: CBADB ACADA

  41~50: ABCCD ACBBD

  填空題:

  1、@

  2、廣域網

  3、EXIT或exit

  4、文件

  5、百萬條或一百萬條或1000000條

  6、B 66

  7、n1=%d n2=%d

  8、0

  9、-4

  10、12

  11、8 4

  12、fun(a,4)+fun(b,4)-fun(a+b,3);

  13、j<=i

  14、a[i][j]=a[j][i]

  15、*t++

  16、6

  17、efgh

  18、3*sizeof(double)

  19、2002Shangxian

【計算機二級C筆試真題參考】相關文章: