亚欧洲精品在线观看,窝窝影院午夜看片,久久国产成人午夜av影院宅,午夜91,免费国产人成网站,ts在线视频,欧美激情在线一区

等級考試

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

時間:2025-03-15 21:19:06 等級考試 我要投稿
  • 相關推薦

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

考試頻道小編收集整理計算機等級考試資料,免費提供給大家交流參考!
 一、選擇題

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

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

  (1)軟件生命周期中花費費用最多的階段是

  A)詳細設計 B)軟件編碼 C)軟件測試 D)軟件維護

  (2)為了提高測試的效率,應該

  A)隨機選取測試數據 B)取一切可能的輸入數據作為測試數據 C)在完成編碼以后制定軟件的測試計劃 D)集中對付那些錯誤群集的程序

  (3)以下不是面向對象思想中的主要特征的是

  A)多態(tài) B)繼承 C)封裝 D)垃圾回收

  (4)下列敘述中,不符合良好程序設計風格要求的是

  A)程序的效率第一,清晰第二 B)程序的可讀性好 C)程序中要有必要的注釋 D)輸入數據前要有提示信息

  (5)軟件設計包括軟件的結構、數據接口和過程設計,其中軟件的過程設計是指

  A)模塊間的關系 B)系統(tǒng)結構部件轉換成軟件的過程描述 C)軟件層次結構 D)軟件開發(fā)過程

  (6)數據處理的最小單位是

  A)數據 B)數據元素 C)數據項 D)數據結構

  (7)假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為

  A)log2n B)n2 C)O(n1..5) D)n(n-1)/2

  (8)在深度為5的滿二叉樹中,葉子結點的個數為

  A)32 B)31 C)16 D)15

  (9)數據庫系統(tǒng)的核心是

  A)數據庫 B)數據庫管理系統(tǒng) C)模擬模型 D)軟件工程

  (10)一個關系中屬性個數為1時,稱此關系為

  A)對應關系 B)單一關系 C)一元關系 D)二元關系

  (11)下面各選項中,均是C語言合法標識符的選項組是

  A)33 we auto B)_23 me _3ew C)_43 3e_ else D)ER -DF 32

  (12)可在C程序中用作用戶標識符的一組標識符是

  A)and B)Date C)Hi D)case

  _2007 y-m-d Dr.Tom Bigl

  (13)以下對C語言函數的有關描述中,正確的是

  A)在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參

  B)C函數既可以嵌套定義又可以遞歸調用

  C)函數必須有返回值,否則不能使用函數

  D)函數必須有返回值,返回值類型不定

  (14)若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是

  A)函數的實參和其對應的形參共占同一存儲單元 B)形參只是形式上的存在,不占用具體存儲單元

  C)同名的實參和形參占同一存儲單元 D)函數的形參和實參分別占用不同的存儲單元

  (15)現(xiàn)有定義int a;double b;float c;char k;,則表達式a/b+c-k值的類型為:

  A)int B)double C)float D)char

  (16)以下關于long、int和short類型數據占用內存大小的敘述中正確的是

  A)均占4個字節(jié) B)根據數據的大小來決定所占內存的字節(jié)數

  C)由用戶自己定義 D)由C語言編譯系統(tǒng)決定

  (17)有以下程序段

  int j;float y;char name[50];

  scanf("%2d%f%s",&j,&y,name);

  當執(zhí)行上述程序段,從鍵盤上輸入55566 7777abc后,y的值為

  A)55566.0 B)566.0 C)7777.0 D)566777.0

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

  i=0;

  do printf("%d,",i);while(i++);

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

  其輸出結果是

  A)0,0 B)0,1 C)1,1 D)程序進入無限循環(huán)

  (19)下列程序的運行結果是

  #include "stdio.h"

  main()

  { int x=-9,y=5,z=8;

  if(x

  if(y<0)z=0;

  else z+=1;

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

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

  (20)若程序執(zhí)行時的輸入數據是"2473",則下述程序的輸出結果是

  #include

  void main()

  { int cs;

  while((cs=getchar())!=; '\n')

  {switch(cs-'2')

  { case 0

  case 1: putchar(cs+4);

  case 2: putchar(cs+4);

  break;

  case 3: putchar(cs+3); default: putchar(cs+2); } } }

  A)668977

  B)668966

  C)6677877

  D)6688766

  (21)以下程序的輸出結果是

  main()

  { int a,i;a=0;

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

  { switch(i)

  { case 0:

  case 3:a+=2;

  case 1:

  case 2:a+=3;

  default:a+=5; }

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

  A)31 B)13 C)10 D)20

  (22)現(xiàn)有如下程序段

  #include "stdio.h"

  main()

  { int k[30]={12,324,45,6,768,98,21,34,453,456};

  int count=0,i=0;

  while(k[i])

  { if(k[i]%2==0||k[i]%5==0)count++;

  i++; }

  printf("%d,%d\n",count,i);}

  則程序段的輸出結果為

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

  (23)若有以下程序

  #include

  int a[]={2,4,6,8};

  main()

  { int i;

  int *p=a;

  for(i=0;i<4;i++)a[i]=*p;

  printf("%d\n",a[2]);}

  上面程序的輸出結果是

  A)6 B)8 C)4 D)2

  (24)有以下程序

  #include

  main()

  { int i,j,m=55;

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

  for(j=3;j<=i;j++)m=m%j;

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

  }

  程序的運行結果是

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

  (25)已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2 的值是′D′。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結果是

  A)A,B B)A,68 C)65,66 D)65,68

  (26)下列程序是用來判斷數組中特定元素的位置所在的。

  #include

  #include

  int fun(int *s, int t, int *k)

  { int i;

  *k=0;

  for(i=0;i

  if(s[*k]

  return s[*k]; }

  main()

  { int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;

  fun(a, 10, &k);

  printf("%d, %d\n",k,a[k]);}

  如果輸入如下整數:876 675 896 101 301 401 980 431 451 777

  則輸出結果為

  A)7,431 B)6 C)980 D)6,980

  (27)下面程序的文件名為t.exe,在DOS下輸入的命令行參數為:t to meet me<回車>

  則程序輸出的結果是

  #include "stdio.h"

  main(argc,argv)

  int argc;char *argv[];

  { int i;

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

  A)3 B)4 C)2 D)以上答案都不正確

  (28)有如下程序

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

  int *p=&a[3],b;b=p[5];

  則b的值是

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

  (29)以下敘述中錯誤的是

  A)改變函數形參的值,不會改變對應實參的值 B)函數可以返回地址值

  C)可以給指針變量賦一個整數作為地址值 D)當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL

  (30)下面程序的輸出結果是

  #include

  main()

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

  p=a;

  printf("%d\n",*p+9);}

  A)0 B)1 C)10 D)9

  (31)有下面程序段

  #include "stdio.h"

  #include "string.h"

  main()

  { char a[3][20]={{"china"},{"isa"},{"bigcountry!"}};

  char k[100]={0},*p=k;

  int i;

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

  { p=strcat(p,a[i]);}

  i=strlen(p);

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

  則程序段的輸出結果是

  A)18 B)19 C)20 D)21

  (32)若有定義: char *st= "how are you "; ,下列程序段中正確的是

  A)char a[11], *p; strcpy(p=a+1,&st[4]); B)char a[11]; strcpy(++a, st);

  C)char a[11]; strcpy(a, st); D)char a[], *p; strcpy(p=&a[1],st+2);

  (33)有以下程序

  #include

  int fun(char s[])

  { int n=0;

  while(*s<=′9′&&*s>=′0′) {n=10*n+*s-′0′;s++;}

  return(n);

  }

  main()

  { char s[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

  }

  程序的運行結果是

  A)9 B)61490 C)61 D)5

  (34)設有定義:char p[]={′1′,′2′,′3′},*q=p;,以下不能計算出一個char型數據所占字節(jié)數的表達式是

  A)sizeof(p) B)sizeof(char) C)sizeof(*q) D)sizeof(p[0])

  (35)有以下函數

  int aaa(char *s)

  { char *t=s;

  while(*t++);

  t--;

  return(t-s);

  }

  以下關于aaa函數的功能的敘述正確的是

  A)求字符串s的長度 B)比較兩個串的大小 C)將串s復制到串t D)求字符串s所占字節(jié)數

  (36)當用戶要求輸入的字符串中含有空格時,應使用的輸入函數是

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

  (37)下列選項中錯誤的說明語句是

  A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′}; B)char a[]={"toyou\0"};

  C)char a[]="toyou\0"; D)char a[]=′toyou\0′;

  (38)以下程序的輸出結果是

  int f()

  { static int i=0;

  int s=1;

  s+=i; i++;

  return s; }

  main()

  { int i,a=0;

  for(i=0;i<5;i++)a+=f();

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

  A)20 B)24 C)25 D)15

  (39)下列程序的輸出結果是

  #include "stdio.h"

  #define M(x,y) x%y

  main()

  { int a,m=12,n=100;

  a=M(n,m);

  printf("%d\n",a--);}

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

  (40)假定當前盤符下有兩個如下文本文件:

  文件名 a1.txt a2.txt

  內容 123# 321#

  則下面程序段執(zhí)行后的結果為

  #include "stdio.h"

  void fc(FILE *p)

  { char c;

  while((c=fgetc(p))!=′#′)putchar(c);}

  main()

  { FILE *fp;

  fp=fopen("a1.txt","r");

  fc(fp);

  fclose(fp);

  fp=fopen("a2.txt","r");

  fc(fp);

  fclose(fp);

  putchar('\n');}

  A)123321 B)123 C)321 D)以上答案都不正確

  二、填空題

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

  (1)軟件定義時期主要包括 【1】 和需求分析兩個階段。

  (2)軟件維護活動包括以下幾類:改正性維護、適應性維護、 【2】 維護和預防性維護。

  (3)數據的邏輯結構有線性結構和 【3】 兩大類。

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

  (5)在ER圖中,矩形表示? 【5】 。

  (6)閱讀下面程序,則執(zhí)行后的輸出結果是 【6】 。

  #include "stdio.h"

  main()

  { int x,y,z;

  x=1;y=2;z=3;

  if(x>y)if(x>z)printf("%d",x);

  else printf("%d",y);

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

  (7)以下程序的輸出結果是 【7】 。

  main()

  { int y=9;

  for(; y>0; y--)

  if (y%3==0)

  {printf("%d", --y); continue;} }

  (8)有以下程序段,且變量已正確定義和賦值

  for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

  printf("s=%f\n\n",s);

  請?zhí)羁?使下面程序段的功能與之完全相同

  s=1.0;k=1;

  while(? 【8】 ?){s=s+1.0/(k*(k+1));? 【9】 ?;}

  printf("s=%f\n\n",s);

  (9)設有以下定義和語句,則*(*(p+2)+1)的值為 【10】 。

  int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2];

  p=a;

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

  #include

  main()

  { int i;

  for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

  printf("\n");

  }

  (11)以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)中找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最后一個數對換。請?zhí)羁铡?/p>

  #include

  void f(int x[],int n)

  { int p0,p1,i,j,t,m;

  i=j=x[0]; p0=p1=0;

  for(m=0;m

  { if(x[m]>i) {i=x[m];p0=m;}

  else if(x[m]

  }

  t=x[p0];x[p0]=x[n-1];x[n-1]=t;

  t=x[p1];x[p1]=? 【12】 ; 【13】 =t;

  }

  main()

  { int a[10],u;

  for(u=0;u<10;u++) scanf("%d",&a[u]);

  f(a,10);

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

  printf("\n");

  }

  (12)mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請?zhí)羁铡?/p>

  int mystrlen(char *str)

  { int I;

  for(I=0; 【14】 != '\n';I++);

  return(I); }

  (13)閱讀下列程序,則程序的輸出結果為 【15】 。

  #include "stdio.h"

  struct ty

  { int data;

  char c; };

  main()

  { struct ty a={30,′x′};

  fun(a);

  printf("%d%c",a.data,a.c); }

  fun(struct ty b)

  { b.data=20;

  b.c=′y′; }一、選擇題  1)D 【解析】 軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個階段。本題中,詳細設計、軟件編碼和軟件測試都屬于軟件開發(fā)階段;維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段,軟件工程學的一個目的就是提高軟件的可維護性,降低維護的代價。

  (2)D 【解析】 測試的目的是發(fā)現(xiàn)軟件中的錯誤。經驗表明,程序中存在錯誤的概率與該程序中已發(fā)現(xiàn)的錯誤成正比。這一現(xiàn)象說明,為了提高測試效率,測試人員應該集中對待那些錯誤群集的程序。

  (3)D 【解析】 面向對象思想中的三個主要特征是:封裝性、繼承性和多態(tài)性。

  (4)A 【解析】 當今主導的程序設計風格是"清晰第一,效率第二"的觀點。結構化程序設計思想提出之前,在程序設計中曾強調程序的效率,而在實際應用中,人們更注重程序的可理解性。

  (5)B 【解析】 軟件設計包括軟件結構設計、數據設計、接口設計和過程設計。其中,結構設計是定義軟件系統(tǒng)各主要部件之間的關系;數據設計是將分析時創(chuàng)建的模型轉化為數據結構的定義;接口設計是描述軟件內部、軟件和操作系統(tǒng)之間及軟件與人之間如何通信;過程設計則是把系統(tǒng)結構部件轉換成軟件的過程性描述。

  (6)C 【解析】 數據處理的最小單位是數據項;由若干數據項組成數據元素;數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。

  (7)D 【解析】 假設線性表的長度為n,則在最壞情況下,冒泡排序要經過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數為n(n-1)/2。

  (8)C 【解析】 滿二叉樹是指除最后一層外,每一層上的所有結點都有兩個葉子結點。在滿二叉樹中,層上的結點數都達到最大值,即在滿二叉樹的第k層上有2k-1個結點,且深度為m的滿二叉樹有2m-1個結點。

  (9)B 【解析】 數據庫管理系統(tǒng)(Database Management System,簡稱DBMS)是數據庫的機構,它是一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等,數據庫管理系統(tǒng)是數據庫系統(tǒng)的核心。

  (10)C 【解析】 在關系模型數據庫中,基本結構是二維表,這種二維表稱為關系。關系的列稱為屬性,一個具有N個屬性的關系稱為N元關系。

  (11)B 【解析】 合法的標識符是由字母、數字和下劃線組成,并且第一個字符必須為字母或下劃線,用戶定義的標識符不能與關鍵字相同。選項A),數字不能為第一個字母,auto為關鍵字;選項C)中,也是數字不能為第一個字母,else為關鍵字;選項D)中負號不合法。

  (12)A 【解析】 在C語言中,合法標識符的命名規(guī)則是:標識符可以由字母、數字和下劃線3種字符組成,且第一個字符必須為字母或下劃線。C語言的標識符可以分為關鍵字、預定義標識符和用戶標識符。選項B)和C)中的橫線以及點都不合法,選項D)中的case為C語言關鍵字。

  (13)A 【解析】 C語言中的函數可以進行遞歸調用,但是不能在函數中定義函數,函數不用有返回值,若有返回值,則返回值類型必確定。

  (14)D 【解析】 在內存中,實參單元與形參單元是不同的單元。在C語言中,僅在調用函數時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。

  (15)B 【解析】 雙目運算中兩邊運算量類型轉換規(guī)律:

  運算數1運算數2轉換結果類型

  短整型 長整型 短整型->長整型

  整型 長整型 整型->長整型

  字符型 整型 字符型->整型

  有符號整型 無符號整型 有符號整型->無符號整型

  整型 浮點型 整型->浮點型

  在a/b的時候,a、b的類型不一致,根據類型轉換規(guī)則,把整型轉換成double類型,之后的加、減類似。轉化規(guī)則為char,short->int->unsigned->long->double←float。

  (16)D 【解析】 在ANSI標準中,long、int和short分別占用4、2和2個字節(jié)。但實際上對于某些C編譯系統(tǒng),int和short都占用4個字節(jié),所以說各種類型數據占用內存大小是由選擇何種C編譯系統(tǒng)決定的。

  (17)B 【解析】 本題考查通過scanf函數輸入數據時的格式控制問題。變量j的格式控制為"%2d",即只接收輸入數據的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量y中,因為y為浮點型數據,所以輸出結果為選項B)。

  (18)B 【解析】 對于do…while循環(huán),程序先執(zhí)行一次循環(huán)體,再判斷循環(huán)是否繼續(xù)。本題先輸出一次i的值"0,",再接著判斷表達式i++的值,其值為0,所以循環(huán)結束。此時變量i的值經過自加已經變?yōu)?,程序再次輸出i的值"1"。

  (19)D 【解析】 if…else語句的執(zhí)行過程如下,首先計算if后面一對圓括號內表達式的值,若表達式的值為非0,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句后的下一條語句;若表達式的值為0,跳過if子句,去執(zhí)行else子句,接著去執(zhí)行if語句后的下一條語句。C語言的語法規(guī)定,else子句總是與前面最近的不帶else的if匹配,與書寫格式無關,本題目的后一個if-else相當于嵌套在第一個if子句里,相當于x=0時,z=z+1。

  (20)A 【解析】 本題主要考查switch語句的使用方法。switch語句的執(zhí)行過程為:進入switch結構后,對條件表達式進行運算,然后從上至下去找與條件表達式值相匹配的case,以此作為入口,執(zhí)行switch結構中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時,則執(zhí)行default后面的語句。

  (21)A 【解析】 本題考查用于多分支選擇的switch語句, 其一般形式為:

  switch(表達式)

  {

  case常量表達式1: 語句1;

  case常量表達式2: 語句2;

  …

  case常量表達式n: 語句n;

  default : 語句n+1;

  }

  其語義是:計算表達式的值,并逐個與其后的常量表達式值進行比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有 case后的語句;如表達式的值與所有case后的常量表達式均不相等時,則執(zhí)行default后的語句。

  (22)D 【解析】 在C語言中,定義一維數組的語句一般形式如下:

  類型名 數組名[常量表達式];

  一維數組的引用形式為:數組名[下標表達式]。count表示能被2整除或被5整除的個數,i則計算有多少個數組元素。

  (23)D 【解析】 在C語言中,數組元素下標是從0開始的;指針變量p指向數組的首地址。for循環(huán)語句中,指針變量p始終指向數組的首地址,因而執(zhí)行循環(huán)賦值語句后數組各元素的值均變?yōu)?。

  (24)B 【解析】 本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內層循環(huán)判斷條件為"?j<=i?",而j的初值為3,故當i的值為1和2時,內層循環(huán)體都不會被執(zhí)行。只有當i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結果為1。

  (25)C 【解析】 在C語言中,字符型數據在內存中的存儲形式是ASCII碼值。當需要以整型格式輸出字符時,輸出的也是ASCII碼值。字符'A'和'D'的ASCII碼值分別為65和68。

  (26)D 【解析】 本題中直接使用指針變量k,但在使用時要注意對k的指針運算。此外,一開始應知道*k的值為數組中的某一下標值,即*k=0,本函數的功能是找出數組中的最大元素的位置及最大元素的值。

  (27)B 【解析】 argc中存入的是命令行中字符串的個數。argv是一個指向字符型的指針數組的指針。

  (28)C 【解析】 p=&a[3]將指針指向數組a的第4個元素,p[5]指向數組a的第9個元素,而a[8]=9,所以b=9。

  29)C 【解析】 函數形參和實參分別占用不同的內存單元,改變形參的值不會影響對應實參的值,選項A)正確。指針類型的函數可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void 型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數,選項C)錯誤。

  (30)C 【解析】 此題考查了指針引用一維數組元素的方法。*p+9因為運算符"*"的優(yōu)先級高于"+",所以輸出結果為p指向的元素1,然后加9,值為10。

  (31)B 【解析】 字符串連接函數strcat的調用形式如下:strcat(s1,s2)。此函數將s2所指字符串的內容連接到s1所指的字符串后面,并自動覆蓋s1串末尾的尾標,函數返回s1的地址值。

  (32)A 【解析】 本題綜合考查字符數組的賦值和strcpy函數的用法。C語言不允許用賦值表達式對字符數組賦值,如下面的語句就是非法的:str1=?"China",?如果想把"China"這5個字符放到數組str1中,除了逐個輸入外,還能使用strcpy函數,該函數的功能是將一個字符串復制到一字符數組中。例如:strcpy(str1,"China")或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數組直接給一個字符數組。

  strcpy函數的結構是:strcpy(字符數組1,字符串2)

  其中,需要注意的是,字符數組1的長度不應小于字符串2的長度,"字符數組1"必須寫成數組名形式,如(str1),"字符串2"可以是字符數組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數組直接給一個字符數組。

  (33)C 【解析】 在fun函數中,while循環(huán)的功能是:逐個取字符數組s的字符判斷其是否是數字。若是則將其作為個位數字保存到變量n中,n的原數據的各個數位將相應左移一個10進制位。當指針s指向數組的第3位時,循環(huán)條件不成立,循環(huán)結束,返回n 的值,輸出n的值為61。

  (34)A 【解析】 在本題中,p和q同為指向字符類型數據的指針。*q 和p[0]同為字符型數據。選項B)、C)和D)都符合題目的要求;選項A)計算得出的是指針類型數據所占的內存字節(jié)數。

  (35)A 【解析】 循環(huán)開始前,指針t和s都指向字符串的起始位置,然后通過while循環(huán)判斷t指向的位置是否為空,同時讓t向右移動一位。while循環(huán)結束時,t自減1,此時t指向的位置是字符串的結束標志'\0'處,故t-s的值是字符串的長度,并不包括結束標志。

  (36)C 【解析】 本題綜合考查了輸入函數的使用。scanf函數會將空格視為分隔符,getchar函數只能輸入單個字符,getc函數是文件操作函數,顯然都不符合題意。通過gets函數輸入字符串時,輸入的空格被認為是字符串的一個字符。

  (37)D 【解析】 通過賦初值的方式給一維數組賦字符串,可以用給一般數組賦初值的相同方式給一維字符數組賦字符串,也可以在賦值時直接賦字符串常量。選項B)和C)后面的'\0'是多余的,在C語言中,系統(tǒng)會自動在字符串的結尾處加上一個字符'\0'作為串的結束標記。

  (38)D 【解析】 函數的靜態(tài)局部變量在編譯時就賦初值,即只賦初值一次,在程序運行時它已有初值,以后每次調用函數時不再重新賦值,而只是保留上次函數調用結束時的值。

  (39)C 【解析】 帶參數的宏定義命令行形式如下: #define 宏名(形參表) 替換文本

  在編譯的時候編譯預處理程序用"替換文本"來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結果賦給a。注意,宏替換是在編譯時由預處理程序完成的,宏替換不占用運行的時間,而函數調用是在程序運行時進行的,在函數的調用過程中需要占用一系列的處理時間。

  (40)A 【解析】 本題的功能是順序的讀兩個文本文件,依次輸出。當打開文件時出現(xiàn)錯誤,fopen函數將返回NULL。

  二、填空題

  (1)【1】 可行性研究 【解析】 軟件生命周期一般包括可行性研究與需求分析、設計、實現(xiàn)、測試、交付使用以及維護等,還可以將軟件生命周期分為三個階段:①軟件定義階段:可行性研究和需求分析;②軟件開發(fā)階段:設計、實現(xiàn)和測試;③軟件運行維護階段:交付使用和維護。

  (2)【2】 完善性 【解析】 軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。改正性維護是指在軟件交付使用后,為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤使用,應當進行的診斷和改正錯誤的過程;適應性維護是指為了使軟件適應變化,而去修改軟件的過程;完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再次開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性;預防性維護是為了提高軟件的可維護性、可靠性等,為以后的進一步改進軟件打下良好基礎。

  (3)【3】 非線性結構 【解析】 數據的邏輯結構有線性結構和非線性結構兩大類。

  (4)【4】 n+1 【解析】 在任意一棵二叉樹中,度為O多結點(即葉子結點)總是比度為2多結點多一個。

  (5)【5】 實體 【解析】 在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

  (6)【6】 3 【解析】 C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結合。因為x不大于y,所以執(zhí)行printf("%d\n",z);語句。

  (7)【7】 852 【解析】 循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當y能被3整除時輸出表達式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經兩次循環(huán)后,y的值變成0,結束循環(huán),所以程序輸出852。

  (8)【8】 k<=n 【9】 k++ 【解析】 本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數值的語句"k++;"?。

  9)【10】 60 【解析】 本題中,代碼定義3行2列的二維數組a,定義指向兩個元素的一維數組指針p,并讓p指向兩維數組a的首行,則代碼*(*(p+2)+1)中的p+2指向兩維數組a的第三行a[2],*(p+2)指向a[2][0],?*(p+2)?+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60

  (10)【11】 ACE 【解析】 在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為'a',執(zhí)行一次循環(huán)后變?yōu)?#39;c',之后再變成'e',當其變?yōu)?#39;g'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式"i-'a'+?'A'?"即表示輸出i對應的大寫字母,結果為ACE。

  (11)【12】 x[0] 【13】 x[0] 【解析】 函數f( )通過for循環(huán)逐個比較數組x中的元素,循環(huán)結束后,p0和p1分別表示最大值和最小值在數組中的下標位置,然后按照題意將最大值x[p0]和數組的最后一個元素x[n-1]交換位置,再將最小值x[p1]和第一個元素(x[0]) 進行交換,所以空白處應該填入x[0]。

  (12)【14】 *(str+I)或str[I] 【解析】 str是指針變量,它指向字符型數據,在循環(huán)過程中,可以用 *(str+I)來訪問字符串中的第I個元素,判斷是否為結束標志,如果不是,I=I+1,繼續(xù)取下一個元素進行判斷,直到 *(str+I)的值為'\0'為止,也可以用下標的方式引用字符,如*(str+I)相當于str[I]。

  (13)【15】 30x 【解析】 本題的參數傳遞屬于值傳遞,所以被調用函數內不能改變調用函數中的數據。

 

 

 

 

 

【全國計算機等級考試二級C語言-筆試第一套】相關文章:

全國計算機等級考試二級C語言筆試試題06-29

計算機等級考試二級C語言筆試精選習題06-06

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

2016全國計算機等級考試二級C語言筆試試題03-15

全國計算機等級考試二級C語言06-27

3月全國計算機等級考試二級C語言筆試真題05-02

全國計算機等級考試二級C++筆試題02-06

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

全國計算機等級考試二級C++筆試真題05-01