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

等級考試

全國計算機等級考試二級C語言試題二

時間:2024-09-18 06:06:11 等級考試 我要投稿
  • 相關(guān)推薦

全國計算機等級考試二級C語言試題二

考試頻道小編綜合整理了全國計算機等級考試二級C語言試題。
  一、選擇題

全國計算機等級考試二級C語言試題二

  在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。

  (1)軟件是指 A)程序 B)程序和文檔 C)算法加數(shù)據(jù)結(jié)構(gòu) D)程序、數(shù)據(jù)與相關(guān)文檔的完整集合

  (2)檢查軟件產(chǎn)品是否符合需求定義的過程稱為

  A)確認測試 B)集成測試 C)驗證測試 D)驗收測試

  (3)以下不屬于對象的基本特點的是

  A)分類性 B)多態(tài)性 C)繼承性 D)封裝性

  (4)在設(shè)計程序時,應(yīng)采納的原則之一是

  A)不限制goto語句的使用 B)減少或取消注解行 C)程序越短越好 D)程序結(jié)構(gòu)應(yīng)有助于讀者理解

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

  A)程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān) B)程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)

  C)程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量 D)以上三種說法都不對 (6)數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的

  A)存儲結(jié)構(gòu) B)物理結(jié)構(gòu) C)邏輯結(jié)構(gòu) D)物理和存儲結(jié)構(gòu)

  (7)線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)分別是

  A)順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu) B)隨機存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

  C)隨機存取的存儲結(jié)構(gòu)、隨機存取的存儲結(jié)構(gòu) D)任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu)

  (8)樹是結(jié)點的集合,它的根結(jié)點數(shù)目是

  A)有且只有1 B)1或多于1 C)0或1 D)至少2

  (9)下列有關(guān)數(shù)據(jù)庫的描述,正確的是

  A)數(shù)據(jù)庫是一個DBF文件 B)數(shù)據(jù)庫是一個關(guān)系 C)數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合 D)數(shù)據(jù)庫是一組文件

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

  A)數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng) B)數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng) C)數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng) D)三者沒有明顯的包含關(guān)系

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

  A); B)a=5,b=2.5,c=3.6; C)if(a<5); D)if(b!=5)x=2;y=6;

  (12)下面四個選項中,均是不合法的用戶標(biāo)識符的選項是

  A)A P_0 do B)float la0_A C)b-a goto int D)_123 temp int

  (13)以下選項中不屬于字符常量的是

  A)′C′ B)′′C′′ C)′\xCC′ D) ′\072′

  (14)設(shè)變量已正確定義并賦值,以下正確的表達式是

  A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,++y D)x=25%5.0

  (15)若變量已正確定義并賦值,以下符合C語言語法的表達式是

  A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b

  (16)以下程序的運行結(jié)果是

  int k=0;

  void fun(int m)

  {m+=k;k+=m;printf("m=%d k=%d ",m,k++);}

  main()

  {int i=4;

  fun(i++); printf("i=%d k=%d\n",i,k);

  }

  A)m=4 k=5 i=5 k=5 B)m=4 k=4 i=5 k=5 C)m=4 k=4 i=4 k=5 D)m=4 k=5 i=4 k=5

  (17)已有定義:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是

  A)isupper(c) B)′A′<=c<=′Z′ C)′A′<=c&&c<=′Z′ D)c<=(′z′-32)&&(′a′-32)<=c

  (18)設(shè)有:

  int a=1,b=2,c=3,d=4,m=2,n=2;

  執(zhí)行 (m=a>b)&&(n=c>d)后,n的值是

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

  (19)若變量已正確定義,有以下程序段

  int a=3,b=5,c=7;

  if(a>b) a=b; c=a;

  if(c!=a) c=b;

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

  其輸出結(jié)果是

  A)程序段有語法錯 B)3,5,3 C)3,5,5 D)3,5,7

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

  A)switch(x)

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

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

  B)switch((int)x);

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

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

  C)switch(a+b)

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

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

  D)switch(a+b)

  {case1:printf(**\n);}

  casec:printf(**\n);}

  (21)有以下程序

  #include

  main0

  { int y=9;

  for( ; y>0;y--)

  if(y%3==0) printf("%d",--y);

  }

  程序的運行結(jié)果是

  A)741 B)963 C)852 D)875421

  (22)以下描述中正確的是

  A)由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句

  B)do-while循環(huán)由do開始,用while結(jié)束,在while(表達式)后面不能寫分號

  C)在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進行判斷 D)do-while循環(huán)中,根據(jù)情況可以省略while

  (23)有以下程序

  #include

  main()

  { int a[ ]={1,2,3,4},y,?*p=&a[3];

  --p; y=?*p;printf("y=%d\n",y);

  }

  程序的運行結(jié)果是

  A)y=0 B)y=1 C)y=2 D)y=3

  (24)以下數(shù)組定義中錯誤的是

  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};

  (25)下面說明不正確的是

  A)char a[10]="china"; B)char a[10],*p=a;p="china" C)char *a;a="china" D)char a[10],*p;p=a="china"

  (26)若有定義:int a[2][3];,以下選項中對a數(shù)組元素正確引用的是

  A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1]

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

  A)getc() B)gets() C)getchar() D)scanf()

  (28)閱讀下列程序段,則程序的輸出結(jié)果為

  #include "stdio.h"

  #define M(X,Y)(X)*(Y)

  #define N(X,Y)(X)/(Y)

  main()

  { int a=5,b=6,c=8,k;

  k=N(M(a,b),c);

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

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

  (29)在16位IBM-PC機上使用C語言,若有如下定義

  struct data

  { int i;

  char ch;

  double f;

  } b;

  則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是

  A)1 B)2 C)7 D)11

  (30)有以下程序 #include

  main()

  {FILE *fp; int i,a[6]={l,2,3,4,5,6};

  fp=fopen("d3.dat","w+b");

  fwrite(a,sizeof(int),6,fp);

  fseek(fp,sizeof(int)*3,SEEK_SET);/*該語句使讀文件的位置指針從文件頭向后移動3個int型數(shù)據(jù)*/

  fread(a,sizeof(int),3,fp); fclose(fp);

  for(i=0;i<6;i++)printf("%d,",a[i]);

  }

  程序運行后的輸出結(jié)果是

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

  (31)有以下程序

  #include

  main()

  { int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

  for(i=0;i<12;i++) c[s[i]]++;

  for(i=1;i<5;i++) printf("%d",c[i]);

  printf("\n");

  }

  程序的運行結(jié)果是

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

  (32)有以下程序

  #include

  void fun(int *a,int n)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/

  { int t,i,j;

  for(i=0;i

  for(j=i+1;j

  if(a[i]

  }

  main()

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

  fun(c+4,6);

  for(i=0;i<10;i++) printf("%d,",c[i]);

  printf("\n");

  }

  程序的運行結(jié)果是

  A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4, C)0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,

  (33)下面程序的輸出結(jié)果是

  #include

  #include

  main()

  { char *p1="abc",*p2="ABC",str[50]= "xyz";

  strcpy(str+2,strcat(p1,p2));

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

  A)xyzabcABC B)zabcABC C)xyabcABC D)yzabcABC

  (34)以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值

  fun(int *a, int n)

  { int i,j=0,p;

  p=j;

  for(i=j;i

  if(a[i]

  return(p);}

  在橫線處應(yīng)填入的是

  A)i=p B)a[p]=a[i] C)p=j D)p=i

  (35)下列程序的運行結(jié)果為

  #include

  void abc(char*str)

  { int a,b;

  for(a=b=0;str[a]!='\0';a++)

  if(str[a]!='c')

  str[b++]=str[a];

  str[b]='\0';}

  void main()

  { char str[]="abcdef";

  abc(str);

  printf("str[]=%s",str); }

  A)str[]=abdef B)str[]=abcdef C)str[]=a D)str[]=ab

  (36)有以下程序

  #include

  #include

  typedef struct{ char name[9]; char sex; float score[2]; }STU;

  void f(STU a)

  { STU b={"Zhao",′m′,85?0,90?0}; int i;

  strcpy(a.name,b.name);

  a.sex=b.sex;

  for(i=0;i<2;i++) a.score[i]=b.score[i];

  }

  main()

  { STU c={"Qian",′f′,95.0,92.0};

  f(c);

  printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);

  }

  程序的運行結(jié)果是

  A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90

  (37)有以下程序

  #include

  main()

  { FILE ?*fp; int a[10]={1,2,3},i,n;

  fp=fopen("d1.dat","w");

  for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);

  fprintf(fp,"\n");

  fclose(fp);

  fp=fopen("d1.dat","r");

  fscanf(fp,"%d",&n);

  fclose(fp);

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

  }

  程序的運行結(jié)果是

  A)12300 B)123 C)1 D)321

  (38)已知 int a=1,b=3則a^b的值為

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

  (39)閱讀下列程序,則運行結(jié)果為
 

考試頻道小編綜合整理了全國計算機等級考試二級C語言試題

 

  #include "stdio.h"

  fun()

  { static int x=5;

  x++;

  return x;}

  main()

  { int i,x;

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

  x=fun();

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

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

  (40)有以下程序

  #include

  void fun(char *t,char *s)

  { while(*t!=0) t++;

  while((*t++=*s++)!=0);

  }

  main()

  { char ss[10]="acc",aa[10]="bbxxyy";

  fun(ss,aa); printf("%s,%s\n",ss,aa);

  }

  程序的運行結(jié)果是

  A)accxyy,bbxxyy B)acc,bbxxyy C)accxxyy,bbxxyy D)accbbxxyy,bbxxyy

  二、填空題

  請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。

  (1)需求分析的最終結(jié)果是產(chǎn)生 【1】 。

  (2)為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的 【2】 兩部分組成。

  (3)數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于 【3】 。

  (4)某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有 【4】 個葉子結(jié)點。

  (5) 【5】 是數(shù)據(jù)庫設(shè)計的核心。

  (6)已有定義:char c=′ ′;int a=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為? 【6】 ?。

  (7)設(shè)變量已正確定義為整型,則表達式n=i=2,++i,i++的值為 【7】 。

  (8)下面程序的功能是:計算1 10之間的奇數(shù)之和與偶數(shù)之和,請?zhí)羁铡?/p>

  #include

  main()

  { int a,b,c,I;

  a=c=0;

  for(I=0;I<=10;I+=2)

  {a+=I;

  【8】 ;

  c+=b; }

  printf("偶數(shù)之和=%d\n",a);

  printf("奇數(shù)之和=%d\n",c-11);}

  (9)以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。

  #define N 4

  void rotade(int a[][N],int b[][N])

  { int I,j;

  for(I=0;I

  { b[I][N-1]= 【9】 ; 【10】 =a[N-1][I]; } }

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

  #include

  void swap(int ?*a, int ?*b)

  { int ?*t;

  t=a; a=b; b=t;

  }

  main()

  { int i=3,j=5,?*p=&i,?*q=&j;

  swap(p,q); printf("%d %d\n",*p,*q);

  }

  (11)下面程序的運行結(jié)果是 【12】 。

  #include

  #define SIZE 12

  main()

  { char s[SIZE]; int I;for(I=0;I

  sub(s,7,SIZE-1);

  for(I=0;I

  printf("\n");}

  sub(char*a,int t1,int t2)

  { char ch;

  while (t1

  { ch=*(a+t1);

  *(a+t1)=*(a+t2);

  *(a+t2)=ch;

  t1++;t2--; } }

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

  #include

  main()

  { int a[5]={2,4,6,8,10},?*p;

  p=a; p++;

  printf("%d",?*p);

  }

  (13)設(shè)有定義"struct {int a; float b; char c;} abc, *p_abc=&abc;",則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc 【14】 a。

  (14)以下程序的運行結(jié)果是 【15】 。

  #include

  main()

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

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

  fwtite(a,sizeof(int),5,fp);

  fwrite(a,sizeof(int),5,fp);

  fclose(fp);

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

  fread(a,sizeof(int),10,fp);

  fclose(fp);

  for(i=0;i<10;i++)printf("%d",a[i]);

  }

  一、選擇題

  (1)D 【解析】 軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合,相對于計算機硬件而言,軟件是邏輯產(chǎn)品而不是物理產(chǎn)品,是計算機的無形部分。

  (2)A 【解析】 確認測試的任務(wù)是驗證軟件的功能和性能,以及其他特性是否滿足需求規(guī)格說明中確定的各種需求;集成測試的主要目的是發(fā)現(xiàn)與接口有關(guān)的錯誤。

  (3)C 【解析】 對象的基本特點:標(biāo)識惟一性、分類性、多態(tài)性、封裝性和模塊獨立性。

  (4)D 【解析】 濫用goto 語句將使程序流程無規(guī)律,可讀性差,因此A)不選;注解行有利于對程序的理解,不應(yīng)減少或取消,B)也不選;程序的長短要依照實際情況而論,而不是越短越好,C)也不選。

  (5)A 【解析】 程序執(zhí)行的效率與很多因素有關(guān),如數(shù)據(jù)的存儲結(jié)構(gòu)、程序所處理的數(shù)據(jù)量、程序所采用的算法等。順序存儲結(jié)構(gòu)在數(shù)據(jù)插入和刪除操作上的效率比鏈?zhǔn)酱鎯Y(jié)構(gòu)的效率低。

  (6)C 【解析】 數(shù)據(jù)結(jié)構(gòu)概念一般包括數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及數(shù)據(jù)上的運算集合等。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管它在計算機中的存儲形式。

  (7)B 【解析】 順序存儲結(jié)構(gòu)中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)=LOC(a1)+(i-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈?zhǔn)酱鎯Y(jié)構(gòu),要對某結(jié)點進行存取,都得從鏈的頭指針指向的結(jié)點開始,這是一種順序存取的存儲結(jié)構(gòu)。

  (8)C 【解析】 樹是N(N>0)個結(jié)點的有限集合,當(dāng)?N=0?,時稱為空樹,對于空樹沒有根結(jié)點,即根結(jié)點的個數(shù)為0,對于非空樹有且只有一個根結(jié)點,所以樹的根結(jié)點數(shù)目為0或1。

  (9)C 【解析】 數(shù)據(jù)庫(DataBase,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有"集成"、"共享"的特點。

  (10)B 【解析】 數(shù)據(jù)庫系統(tǒng)(Database System,簡稱DBS),包括數(shù)據(jù)庫(Database,簡稱DB)和數(shù)據(jù)庫管理系統(tǒng)(Database Management System,簡稱DBMS)。

  (11)D 【解析】 選項D)為兩條語句。

  (12)C 【解析】 C語言規(guī)定的標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,第一個字符必須為字母或下劃線,并且不能使用C語言中的關(guān)鍵字作為標(biāo)識符。選項C)中g(shù)oto和int是關(guān)鍵字,b-a中'-'不是組成標(biāo)識符的3種字符之一;選項D)中int是關(guān)鍵字,所以,均是不合法用戶標(biāo)識符的選項是C)。

  (13)B 【解析】 在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。

  (14)C 【解析】 求余運算符"%"兩邊的運算對象必須是整型,而選項B)和D)中 "%"兩邊的運算對象有浮點整數(shù)據(jù),所以選項B)和D)是錯誤的表達式。在選項A)中賦值表達式的兩邊出現(xiàn)相同的變量x,也是錯誤的。選項C)是一個逗號表達式,所以正確答案為C)。

  (15)B 【解析】 選項A)中包含一個不合法的運算符":=";選項C)應(yīng)改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C語言規(guī)定賦值號的左邊只能是單個變量,不能是表達式或常量等。因此,正確答案是選項B),它實際上相當(dāng)于a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。

  (16)B 【解析】 由于在main()函數(shù)中,變量 i=4,所以就調(diào)用fun(4),則輸出"m=4 k=4"。然后變量k增1等于5,變量i增1等于5,所以main()函數(shù)的"printf("i=%d k=%d\n",i,k);"語句輸出"i=5 k=5"

  (17)B 【解析】 在本題中,選項B)實際是先計算關(guān)系表達式"'A'<=c"的值是0還是1,再比較該值與字符'Z'之間的大小關(guān)系,顯然不能實現(xiàn)題目所要求的功能,而選項A)、C)、D)都可以。

  (18)B 【解析】 本題考查邏輯與運算的運算規(guī)則。其規(guī)則是:當(dāng)運算符前后兩個條件表達式都滿足時,其最終結(jié)果才為真。當(dāng)發(fā)現(xiàn)第一個表達式的值為假,計算機將不再執(zhí)行后面表達式的運算。

  本題中,由于前一個表達式的值為"假",所以,后面的表達式不再進行運算,因而n的值保持不變,仍為2。

  (19)B 【解析】 兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒有變化,程序輸出的結(jié)果為3,5,3。

  (20)C 【解析】 C語言中,switch語句專用于實現(xiàn)多分支結(jié)構(gòu)程序,其特點是各分支清晰而直觀。switch后面括號中可以是任何表達式,取其整數(shù)部分與各常量表達式進行比較。常量表達式中不能出現(xiàn)變量,且類型必須是整型、字符型或枚舉型,各常量表達式各不相同。

  (21)C 【解析】 本題考察變量的自加"++"和自減"--"問題。當(dāng)y 的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達式--y的值,y的自減要先于輸出語句執(zhí)行,故輸出結(jié)果為8 5 2。

  (22)C 【解析】 do while語句的一般形式為:do 循環(huán)體語句 while(表達式);,其中循環(huán)體語句可以是復(fù)合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。

  (23)D 【解析】 在程序中指針變量p初始指向a[3],執(zhí)行p減1后,p指向a[2],語句y=*p的作用是把a[2]的值賦給變量y,所以輸出為y=3。

  (24)B 【解析】 二維數(shù)組的初始化有以下幾種形式:①分行進行初始化;②不分行進行初始化;③部分數(shù)組元素進行初始化;④省略第一維的定義,不省略第二維的定義。選項B)等號右邊分了3行,大于等號左邊數(shù)組的行數(shù)2。

  (25)D 【解析】 C語言中操作一個字符串常量的方法有:①將字符串常量存放在一個字符數(shù)組之中;② 用字符指針指向字符串, 然后通過字符指針來訪問字符串存儲區(qū)域。當(dāng)字符串常量在表達式中出現(xiàn)時, 根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)則, 將其轉(zhuǎn)換成字符指針。

  本題D)項中錯誤的關(guān)鍵是對數(shù)組初始化時,可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。

  (26)D 【解析】 C語言中數(shù)組下標(biāo)是從0開始的,所以二維數(shù)組a[2][3]的第一維下標(biāo)取值為0、1;第二維的下標(biāo)取值為0、1、2,因而選項A)、B)、C)都是錯誤的,選項D)表示數(shù)組元素a[0][0]。

  (27)B 【解析】 scanf()語句用"空格"區(qū)別不同的字符串;getc()與getchar()語句不能用于字符串的讀入。

  (28)A 【解析】 帶參數(shù)的宏定義命令行形式如下:#define 宏名(形參表) 替換文本。首先進行M的宏替換,之后再進行N的宏替換,替換后的表達式為 (a)*(b)/(c)。

  (29)D 【解析】 結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。

  (30)A 【解析】 首先利用fwrite函數(shù)將數(shù)組a中的數(shù)據(jù)寫到文件中,接著fseek函數(shù)的功能是讀文件的位置,指針從文件頭向后移動3個int型數(shù)據(jù),這時文件位置指針指向的是文件中的第4個int數(shù)據(jù)"4",然后 fread函數(shù)將文件fp中的后3個數(shù)據(jù)4,5,6讀到數(shù)組a中,這樣就覆蓋了數(shù)組中原來的前3項數(shù)據(jù)。最后數(shù)組中的數(shù)據(jù)就成了{4,5,6,4,5,6}。

  (31)C 【解析】 在for(i=0;i<12;i++) c[s[i]]++中,數(shù)組元素s[i]的值作為數(shù)組c的下標(biāo),當(dāng)退出循環(huán)時,數(shù)組c的4個元素的值分別為4、3、3、2。

  (32)D 【解析】 在本題中,主函數(shù)在調(diào)用fun()函數(shù)進行排序時,傳遞的參數(shù)是c+4和6,fun()函數(shù)實現(xiàn)的功能是將數(shù)組c的第5個元素開始的6個元素依次進行從大到小的順序排列。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。

  (33)C 【解析】 本題考查的重點是拷貝字符串──使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組, 字符串),其中"字符串"可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將"字符串"完整地復(fù)制到"字符數(shù)組"中,字符數(shù)組中原有的內(nèi)容被覆蓋。

  使用該函數(shù)時注意:①字符數(shù)組必須定義得足夠大,以便容納復(fù)制過來的字符串。復(fù)制時,連同結(jié)束標(biāo)志'\0'一起復(fù)制;②不能用賦值運算符"="將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy( )函數(shù)處理。

  另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組, 字符串)。

  功能是把"字符串"連接到"字符數(shù)組"中的字符串尾端,并存儲于"字符數(shù)組"中。"字符數(shù)組"中原來的結(jié)束標(biāo)志,被"字符串"的第一個字符覆蓋,而"字符串"在操作中未被修改。

  使用該函數(shù)時注意:①由于沒有邊界檢查,編程者要注意保證"字符數(shù)組"定義得足夠大,以便容納連接后的目標(biāo)字符串;否則,會因長度不夠而產(chǎn)生問題;②連接前兩個字符串都有結(jié)束標(biāo)志'\0',連接后"字符數(shù)組"中存儲的字符串的結(jié)束標(biāo)志'\0'被舍棄,只在目標(biāo)串的最后保留一個'\0'。

  (34)D 【解析】 該程序先判斷a[i]

  (35)A 【解析】 本題考查了用字符指針引用字符數(shù)組中的字符及對字符的操作。函數(shù)abc()的for語句執(zhí)行過程是:從字符指針str所指向的字符數(shù)組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數(shù)組元素的賦值過程,若字符為'c'就不執(zhí)行。

  (36)A 【解析】 本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f的所有操作只是針對這個數(shù)據(jù)拷貝進行的修改,這些都不會影響變量c的值。

  (37)B 【解析】 在函數(shù)中首先把整型數(shù)組a[10]中的每個元素寫入文件d1.dat中,然后再次打開這個文件,把文件d1.dat中的內(nèi)容讀入到整型變量n中,最后輸出變量n的值。

  (38)C 【解析】 ^是按位異或運算,如果對應(yīng)位不同則結(jié)果為1,相同則為0。

  (39)D 【解析】 在整個程序運行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)著永久的存儲單元,即使退出函數(shù)以后,下次再進入該函數(shù)時,靜態(tài)局部變量仍使用原來的存儲單元,靜態(tài)局部變量的初值是在編譯的時候賦予的,在程序執(zhí)行期間不再賦予初值。本題由于連續(xù)三次調(diào)用函數(shù)fun(),三次對靜態(tài)變量x進行操作,x的值應(yīng)依次為6,7,8。

  (40)D 【解析】 本題中fun函數(shù)實現(xiàn)了字符串函數(shù)strcat的功能,將字符串a(chǎn)a連接到字符串ss的末尾。調(diào)用fun函數(shù)時,形參t和s分別指向了字符串ss和aa,然后通過一個while循環(huán)使t指向字符串ss的結(jié)束符的位置,第二個while循環(huán)將字符串a(chǎn)a中的字符(包括結(jié)束符'\0')逐個復(fù)制到字符串ss的末尾處。

  二、選擇題

  (1)【1】 需求規(guī)格說明書 【解析】 軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

  (2)【2】 輸出結(jié)果 【解析】 測試用例(Text Case)是為測試設(shè)計的數(shù)據(jù)。測試用例由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果兩部分組成。

  (3)【3】 存儲結(jié)構(gòu) 【解析】 數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式。在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅要存放各數(shù)據(jù)元素的信息,還需要存放各數(shù)據(jù)元素之間的前后件關(guān)系的信息。

  (4)【4】 19 【解析】 在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。

  (5)【5】 數(shù)據(jù)模型 【解析】 數(shù)據(jù)模型是對客觀事物及聯(lián)系的數(shù)據(jù)描述,它反映了實體內(nèi)部及實體與實體之間的聯(lián)系。因此,數(shù)據(jù)模型是數(shù)據(jù)庫設(shè)計的核心。

  (6)【6】 1 【解析】 字符空格的ASCII碼不為0,所以本題中表達式?!c?的值為0, b=0&&1的結(jié)果顯然為0。

  (7)【7】 3 【解析】 本題考查的是C語言逗號表達式的相關(guān)知識。程序在計算逗號表達式時,從左到右計算由逗號分隔各表達式的值,整個逗號表達式的值等于其中最后一個表達式的值。本題中,首先i被賦值為2,再自加1,最后i++的值計算為3。

  (8)【8】 b=I+1 【解析】 本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正表達式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2后的和累加至a,所以a的值就是1 10之間的偶數(shù)之和; b的值是1 11之間的奇數(shù)和,但在輸出b值時,c去掉多加的11,即為1 10之間的奇數(shù)之和。

  (9)【9】 a[0][I] 【10】 b[I][0] 【解析】 b[i][N-1]= a[0][i]實現(xiàn)把a所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,?b[I][0]=a[N-1][I] 實現(xiàn)將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組中的第0列。

  (10)【11】 3 5 【解析】 函數(shù)swap(int *a,int *b)的功能是實現(xiàn)*a和?*b?中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int *a,int *b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為3 5。

  (11)【12】 a b c d e f g l k j I h 【解析】 本題主要考查了字符變量可參與的運算。因為字符在計算機中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運算等,某字符的大寫字母的ASCII碼值比它對應(yīng)的小寫字母ASCII碼值小32。

  (12)【13】 4 【解析】 在主函數(shù)中,語句p=a;p++使用指針p指向數(shù)組a[1],所以輸出結(jié)果為4。

  (13)【14】 -> 【解析】 若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的標(biāo)記形式有abc.a和p_abc->a。

  (14)【15】 1,2,3,0,0,1,2,3,0,0, 【解析】 本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個元素輸出到文件fp中兩次,共10個字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為"1,2,3,0,0,1,2,3,0,0,"。

考試頻道小編綜合整理了全國計算機等級考試二級C語言試題

【全國計算機等級考試二級C語言試題二】相關(guān)文章:

全國計算機等級考試二級C語言03-29

全國計算機等級考試二級C語言筆試第二套10-19

計算機等級考試二級C語言真題09-26

全國計算機二級《C語言》備考復(fù)習(xí)試題12-08

全國計算機二級《C語言》鞏固試題及答案12-07

全國計算機二級《C語言》考試題庫與答案06-29

2016全國計算機二級《C語言》機考試題及答案03-11

2016年全國計算機二級《C語言》沖刺試題11-27

計算機二級《C語言》考試沖刺試題及答案201603-11