官术网_书友最值得收藏!

2016年3月全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題及詳解

(考試時間120分鐘 滿分100分)

一、選擇題(每題1分,共40分)

1有以下定義:

struct data

{int i;char c;double d;}x;

以下敘述中錯誤的是( ?。?/p>

A.x的內(nèi)存地址與x.i的內(nèi)存地址相同

B.struct data是一個類型名

C.初始化時,可以對x的所有成員同時賦初值

D.成員i、c和d占用的是同一個存儲空間

【答案】D

【解析】變量i、c、d是結(jié)構(gòu)體變量x中三個不同的成員,占用不同的存儲空間。答案選擇D選項(xiàng)。補(bǔ)充:區(qū)分struct和union,union的各個數(shù)據(jù)成員共享一塊存儲空間,struct不同的成員,占用不同的存儲空間。

2以下函數(shù)的功能是:計算a的n次方作為函數(shù)值返回。

double fun(double a,int n)
{
  int i;
  double s=1.0;
  for(i=1;i<=n;i++)s=______;
  return s;
}

為實(shí)現(xiàn)上述功能,函數(shù)中下劃線處應(yīng)填入的是(  )。

A.s*i

B.s*a

C.s+i*i

D.s+a*a

【答案】B

【解析】s為a的i-1次方的結(jié)果,所以令s=s*a即可得到a的i次方。答案選擇B選項(xiàng)。

3有以下程序:

#include<stdio.h>
#include<string.h>
main()
{
  char str[]={"Hello,Beijing"};
  printf("%d,%d\n",strlen(str),sizeof(str));
}

程序的運(yùn)行結(jié)果是(  )。

A.13,13

B.13,14

C.13,15

D.14,15

【答案】B

【解析】strlen返回字符串的長度,不包含字符串末尾的結(jié)束字符'\0',結(jié)果為13;sizeof返回字符串所占存儲空間的大小,由于字符串最后要加上一個'\0',所以結(jié)果為13+1=14。答案選擇B選項(xiàng)。

4若有說明:typedef struct{int a;char c;}w;,則以下敘述正確的是(  )。

A.編譯后系統(tǒng)為w分配5個字節(jié)

B.編譯后系統(tǒng)為w分配6個字節(jié)

C.編譯后系統(tǒng)為w分配8個字節(jié)

D.編譯后系統(tǒng)不為w分配存儲空間

【答案】D

【解析】w是一個自定義類型,不是變量,故編譯后系統(tǒng)不為w分配存儲空間。當(dāng)w定義為結(jié)構(gòu)體變量時才會為其分配存儲空間。答案選擇D選項(xiàng)。

5以下敘述中錯誤的是(  )。

A.同一個數(shù)組中所有元素的類型相同

B.不可以跳過前面的數(shù)組元素,給后面的元素賦初值0

C.定義語句:int a[10]={0};,給a數(shù)組中所有元素賦初值0

D.若有定義語句:int a[4]={1,2,3,4,5};,編譯時將忽略多余的初值

【答案】D

【解析】數(shù)組初始化時,若賦初值的個數(shù)多于所定義數(shù)組的元素個數(shù)時,編譯器會報錯。答案選擇D選項(xiàng)。

6若有以下定義:

struct tt{char name[10];char sex;}aa={"aaaa",'F'},*p=&aa;

則錯誤的語句是(  )。

A.scanf("%c",aa.sex);

B.a(chǎn)a.sex=getchar();

C.printf("%c\n",(*p).sex);

D.printf("%c\n",p->sex);

【答案】A

【解析】sex是一個char類型變量,不是地址,A項(xiàng)應(yīng)為scanf("%c",&aa.sex);。答案選擇A選項(xiàng)。

7C語言編譯程序的功能是(  )。

A.執(zhí)行一個C語言編寫的源程序

B.把C源程序翻譯成ASCII碼

C.把C源程序翻譯成機(jī)器代碼

D.把C源程序與系統(tǒng)提供的庫函數(shù)組合成一個二進(jìn)制執(zhí)行文件

【答案】C

【解析】編譯程序的功能是將“高級語言”翻譯為“機(jī)器語言”。每條C語言語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進(jìn)制的機(jī)器指令。答案選擇C選項(xiàng)。

8有以下程序:

#include<stdio.h>
int fun(int n)
{
  if(n) return fun(n-1)+n;
  else return 0;
}
main()
{
  printf("%d\n",fun(3));
}

程序的運(yùn)行結(jié)果是( ?。?/p>

A.4

B.5

C.6

D.7

【答案】C

【解析】fun函數(shù)是一個遞歸函數(shù),調(diào)用f(3),參數(shù)n=3,返回f(3-1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。答案選擇C選項(xiàng)。

9有以下程序:

#include<stdio.h>
main()
{
  int sum=0,x=5;
  do{sum+=x;}while(!--x);
  printf("%d\n",sum);
}

程序的運(yùn)行結(jié)果是(  )。

A.0

B.5

C.14

D.15

【答案】B

【解析】do-while循環(huán),先執(zhí)行循環(huán)體sum+=x,則sum=sum+x=0+5=5,再執(zhí)行while中的表達(dá)式,結(jié)果為0,退出循環(huán),所以運(yùn)行結(jié)果是5。答案選擇B選項(xiàng)。

10下面不屬于軟件設(shè)計階段任務(wù)的是( ?。?/p>

A.軟件的功能確定

B.軟件的總體結(jié)構(gòu)設(shè)計

C.軟件的數(shù)據(jù)設(shè)計

D.軟件的過程設(shè)計

【答案】A

【解析】軟件設(shè)計階段的任務(wù)包括:結(jié)構(gòu)設(shè)計;數(shù)據(jù)設(shè)計;接口設(shè)計;過程設(shè)計。軟件的功能確定是在需求分析階段完成的。答案選擇A選項(xiàng)。

11有以下程序:

#include<stdio.h>
#include<string.h>
typedef struct{char name[9];char sex;float score[2];}STU;
void f(STU*a)
{
  strcpy(a->name,"Zhao");
  a->sex='m';
  a->score[1]=90.0;
}
main()
{
  STU c={"Qian",'f',95.0,92.0},*d=&c;
  f(d);
  printf("%s,%c,%2.0f,%2.0f\n",d->name,c.sex,c.score[0],c.score[1]);
}

程序的運(yùn)行結(jié)果是( ?。?。

A.Qian,f,95,92

B.Zhao,f,95,90

C.Zhao,m,95,90

D.Zhao,f,95,92

【答案】C

【解析】f函數(shù)調(diào)用時,結(jié)構(gòu)體數(shù)組名作為實(shí)參傳給形參指針,結(jié)構(gòu)體指針a指向數(shù)組c的首地址。因此,f可以對數(shù)組c中的元素賦值,故返回主函數(shù)之后,數(shù)組c中的成員值已被更新。main函數(shù)中有賦值語句“*d=&c;”,指針d指向結(jié)構(gòu)體數(shù)組c的首地址,故d->name=c.name,輸出結(jié)果為Zhao,m,95,90。答案選擇C選項(xiàng)。

12在C語言程序中,下列說法正確的是(  )。

A.函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套

B.函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套

C.函數(shù)的定義和調(diào)用均不可以嵌套

D.函數(shù)的定義和調(diào)用均可以嵌套

【答案】B

【解析】函數(shù)定義都是在函數(shù)外部進(jìn)行的,函數(shù)調(diào)用是在函數(shù)內(nèi)部進(jìn)行的,所以函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套(如遞歸函數(shù))。答案選擇B選項(xiàng)。

13執(zhí)行以下程序段后,s的值為( ?。?。

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

for(k=0;k<8;k+=2)s+=*(a+k);

A.13

B.16

C.17

D.45

【答案】B

【解析】獲取數(shù)組a中第i個元素時,有兩種形式:一是a[i],二是*(a+i)數(shù)組a中的元素為:a[0]=1,a[1]=2,…,a[8]=9。k=0時,s=s+*(a+0)=0+1=1;k=2時,s=1+*(a+2)=1+3=4;k=4時,s=4+5=9;k=6時,s=9+7=16。答案選擇B選項(xiàng)。

14有以下程序:

#include<stdio.h>
#define M 5
#define f(x,y) x*y+M
main()
{
  int k;
  k=f(2,3)*f(2,3);
  printf("%d\n",k);
}

程序的運(yùn)行結(jié)果是(  )。

A.22

B.41

C.100

D.121

【答案】B

【解析】宏定義中的函數(shù)在調(diào)用時只做簡單的替換,不能進(jìn)行任何修改。所以k=2*3+5*2*3+5=41。答案選擇B選項(xiàng)。

15有以下程序:

#include<stdio.h>
main()
{
  char ch='Z';
  ch=(ch-'A'+1)%26+'A';
  putchar(ch);
}

程序的運(yùn)行結(jié)果是( ?。?。

A.Z

B.Y

C.B

D.A

【答案】D

【解析】'Z'的ASCII碼是90,'A'的ASCII碼是65,所以ch=(ch-'A'+1)%26+'A'=26%26+65=65,輸出65對應(yīng)的字符'A'。答案選擇D選項(xiàng)。

16下面屬于黑盒測試方法的是(  )。

A.基本路徑測試

B.等價類劃分

C.判定覆蓋測試

D.語句覆蓋測試

【答案】B

【解析】常用的黑盒測試方法有:等價類劃分法;邊界值分析法;錯誤推測法;因果圖等。常用的白盒測方法有:邏輯覆蓋測試,包括語句覆蓋、路徑覆蓋、判斷覆蓋、條件覆蓋;基本路徑測試等,ACD三項(xiàng)屬于白盒測試。答案選擇B選項(xiàng)。

17有以下程序:

#include<stdio.h>
main()
{
  int i,j,k,a=5,b=6;
  i=(a==b)?++a:--b;
  j=a++;
  k=b;
  printf("%d,%d,%d\n",i,j,k);
}

程序的運(yùn)行結(jié)果是(  )。

A.7,6,5

B.5,5,5

C.7,5,5

D.5,6,5

【答案】B

【解析】條件表達(dá)式i=(a==b)?++a:--b;中先執(zhí)行a==b,值為假,根據(jù)三元運(yùn)算符語法規(guī)則,執(zhí)行--b,此時b為5,賦給i,i=5。j=a++,將a=5先賦給j,再進(jìn)行a++,j=5,a=6,k=b=5,故最后輸出的是5,5,5。答案選擇B選項(xiàng)。

18C語言程序中,若函數(shù)無返回值,則應(yīng)該對函數(shù)說明的類型是( ?。?。

A.int

B.double

C.char

D.void

【答案】D

【解析】A項(xiàng),int表示返回值是整型;B項(xiàng),double表示返回值是雙精度型;C項(xiàng),char表示返回值是字符型;D項(xiàng),void表示無返回值。答案選擇D選項(xiàng)。

19有以下程序:

#include <stdio.h>
main()
{
  int k,n=0;char c,str[]="teach";
  for(k=0;str[k];k++)
  {
    c=str[k];
    switch(k)
    {
      case 1:case 3:case 5:putchar(c);printf("%d",++n);break;
      default:putchar('N');
    }
  }
}

程序的運(yùn)行結(jié)果是(  )。

A.Ne1NN

B.e1a2e3

C.Ne1Nc2N

D.Na1NNNN

【答案】C

【解析】程序執(zhí)行過程:k=0時,c=str[0]='t',執(zhí)行default分支,輸出N;k=1時,c='e',執(zhí)行case 1分支,沒有break語句,繼續(xù)執(zhí)行case 3分支,沒有break語句,繼續(xù)執(zhí)行case 5分支,輸出e1;k=2時,c='a',輸出N;k=3,c='c',輸出c2;k=4,c='h',輸出N。故程序的輸出結(jié)果為Ne1Nc2N。答案選擇C選項(xiàng)。

20有以下程序:

#include<stdio.h>
void fun(char(*p)[6])
{
  int i;
  for(i=0;i<4;i++)printf("%c",p[i][i]);
  printf("\n");
}
main( )
{
  char s[6][6]={"ABCDE","abcde","12345","FGHIJ","fghij","54321"};
  fun(s);
}

程序的運(yùn)行結(jié)果是( ?。?。

A.Aa1F

B.Ab3I

C.ABCD

D.fghij

【答案】B

【解析】函數(shù)fun的功能是輸出s[i][i],二維數(shù)組的對角線元素,所以程序會輸出s[0][0]、s[1][1]、s[2][2]、s[3][3],即Ab3I。答案選擇B選項(xiàng)。

21設(shè)變量x為long int型并已正確賦值,以下表達(dá)式中能將x的百位上的數(shù)字提取出的是( ?。?。

A.x/10%100

B.x%10/100

C.x%100/10

D.x/100%10

【答案】D

【解析】x/100的個位數(shù)是x的百位數(shù)上的數(shù)字,所以再進(jìn)行除10取余運(yùn)算即可得到該數(shù)字。答案選擇D選項(xiàng)。

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

A.橢圓形

B.矩形

C.菱形

D.三角形

【答案】B

【解析】E-R圖是實(shí)體聯(lián)系模式圖,E-R圖的三要素:實(shí)體,用矩形框表示,框內(nèi)為實(shí)體名稱;屬性,用橢圓形表示,并用線與實(shí)體連接;實(shí)體間的聯(lián)系,用菱形框表示,用線將菱形框與實(shí)體相連,并在線上標(biāo)注聯(lián)系的類型。答案選擇B選項(xiàng)。

23下面對軟件特點(diǎn)描述不正確的是(  )。

A.軟件是一種邏輯實(shí)體,具有抽象性

B.軟件開發(fā)、運(yùn)行對計算機(jī)系統(tǒng)具有依賴性

C.軟件開發(fā)涉及軟件知識產(chǎn)權(quán)、法律及心理等社會因素

D.軟件運(yùn)行存在磨損和老化問題

【答案】D

【解析】軟件具有以下特點(diǎn):軟件具有抽象性,是一種邏輯實(shí)體;軟件沒有明顯的制作過程;軟件在使用期間不存在磨損、老化問題;對硬件和環(huán)境具有依賴性;軟件復(fù)雜性高,成本昂貴;軟件開發(fā)涉及諸多的社會因素。D項(xiàng)描述是硬件存在的問題。答案選擇D選項(xiàng)。

24.設(shè)x,y,z均為實(shí)型變量,代數(shù)式在C語言中的正確寫法是( ?。?。

A.x/y*z

B.x%y%z

C.x/y/z

D.x*z/y

【答案】C

【解析】%是取余運(yùn)算符,不符合。運(yùn)算符*、/的結(jié)合順序是從左到右,所以x先除以y,再除以z。答案選擇C選項(xiàng)。

25有以下程序:

#include<stdio.h>
#define N 4
void fun(int a[ ][N],int b[ ])
{
  int i;
  for(i=0;i<N;i++)b[i]=a[i][N-1-i];
}
main()
{
  int x[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},y[N],i;
  fun(x,y);
  for(i=0;i<N;i++)printf("%d,",y[i]);
  printf("\n");
}

程序的運(yùn)行結(jié)果是(  )。

A.1,2,3,4,

B.3,6,9,12,

C.4,7,10,13,

D.1,5,9,13,

【答案】C

【解析】函數(shù)fun的功能是將參數(shù)a的二維數(shù)組中反斜對角對應(yīng)的數(shù)依次賦值給參數(shù)b的一維數(shù)組。調(diào)用fun函數(shù),y[i]=x[i][N-1-i],N=4,x是4行4列的二維數(shù)組。i=0時,y[0]=x[0][4-1]=x[0][3]=4;i=1時,y[1]=x[1][4-1-1]=x[1][2]=7;i=2時,y[2]=x[2][4-1-2]=x[2][1]=10;i=3時,y[3]=x[3][0]=13。答案選擇C選項(xiàng)。

26在下列鏈表中,能夠從任意一個結(jié)點(diǎn)出發(fā)直接訪問到所有結(jié)點(diǎn)的是( ?。?/p>

A.單鏈表

B.循環(huán)鏈表

C.雙向鏈表

D.二叉鏈表

【答案】B

【解析】對于線性單鏈表來說,每個結(jié)點(diǎn)只有一個指針域,這個指針只能找到其后繼結(jié)點(diǎn),但不能找到其前驅(qū)結(jié)點(diǎn),因此必須從頭指針開始,才能訪問到所有的結(jié)點(diǎn);循環(huán)鏈表的最后一個結(jié)點(diǎn)的指針域指向表頭結(jié)點(diǎn),所有結(jié)點(diǎn)的指針構(gòu)成了一個環(huán)狀鏈,只要指出表中任何一個結(jié)點(diǎn)的位置就可以從它出發(fā)訪問到表中其他所有的結(jié)點(diǎn);題目要求是“直接”,如果是雙向鏈表的話,從中間一個點(diǎn)開始,必須先往左一次再掉頭往右一次才能遍歷。而循環(huán)鏈表只要沿一個方向一直走下去就可以遍歷;二叉鏈表是二叉樹的一種鏈?zhǔn)酱鎯Y(jié)構(gòu),每個結(jié)點(diǎn)有兩個指針域,分別指向左右子結(jié)點(diǎn),可見,二叉鏈表只能由根結(jié)點(diǎn)向葉子結(jié)點(diǎn)的方向遍歷,其他部分的結(jié)點(diǎn)無法訪問。答案選擇B選項(xiàng)。

27有以下程序:

#include<stdio.h>
main()
{
  int i,j,x=0;
  for(i=0;i<2;i++)
  {
    x++;
    for(j=0;j<=3;j++)
    {
      if(j%2==0)continue;
      x++;
    }
    x++;
  }
  printf("x=%d\n",x);
}

程序的運(yùn)行結(jié)果是( ?。?。

A.x=4

B.x=6

C.x=8

D.x=12

【答案】C

【解析】第一次循環(huán):i=0,執(zhí)行x++后x=1,執(zhí)行內(nèi)層循環(huán)j=0,由于j%2!=0時才執(zhí)行x++,即只有j取1和3時,執(zhí)行x++,此時x=1+1+1=3,跳出內(nèi)層循環(huán),執(zhí)行下一條x++,x=4,第二次循環(huán):x=1時,重復(fù)上述循環(huán),共執(zhí)行兩次循環(huán),故x最終結(jié)果是4*2=8。答案選擇C選項(xiàng)。注意,在循環(huán)體中遇到continue,則跳過continue后的語句直接進(jìn)入下一次循環(huán)的判斷。

28對圖書進(jìn)行編目時,圖書有如下屬性:ISBN書號,書名,作者,出版社,出版日期。能作為關(guān)鍵字的是(  )。

A.ISBN書號

B.書名

C.作者,出版社

D.出版社,出版日期

【答案】A

【解析】關(guān)鍵字是指能惟一標(biāo)識元組的屬性或?qū)傩约?。書號可以惟一?biāo)識一本圖書,本題中,書名、作者、出版社、出版日期等字段都不能惟一標(biāo)識一本圖書。答案選擇A選項(xiàng)。

29若主函數(shù)中有定義語句:int a[10],b[10],c;,在主函數(shù)前定義的fun函數(shù)首部為:void fun(int x[]),則以下選項(xiàng)中錯誤的調(diào)用語句是( ?。?/p>

A.fun(b);

B.fun(&c);

C.fun(&a[3]);

D.fun(b[11]);

【答案】D

【解析】fun函數(shù)的形式參數(shù)為一個數(shù)組,需要實(shí)參為一個地址,而b[11]是一個整型元素,參數(shù)類型不一致,且b[11]已經(jīng)溢出,所以D項(xiàng)錯誤。

30構(gòu)成C語言程序的三種基本結(jié)構(gòu)是(  )。

A.順序結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)、遞歸結(jié)構(gòu)

B.順序結(jié)構(gòu)、嵌套結(jié)構(gòu)、遞歸結(jié)構(gòu)

C.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

D.選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、嵌套結(jié)構(gòu)

【答案】C

【解析】C語言程序是結(jié)構(gòu)化程序,由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu);選擇結(jié)構(gòu);循環(huán)結(jié)構(gòu)。答案選擇C選項(xiàng)。

31下列形式中不合法的常量是( ?。?。

A.2.E8

B.-.28

C.-028

D.2e-8

【答案】C

【解析】-028表示的是八進(jìn)制的整型常量,但八進(jìn)制的數(shù)字只能用0~7表示。AD兩項(xiàng)為指數(shù)形式的實(shí)數(shù)表示,在e或E的前面必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù);B項(xiàng),為整數(shù)常量。答案選擇C選項(xiàng)。

32下列與棧結(jié)構(gòu)有關(guān)聯(lián)的是( ?。?。

A.?dāng)?shù)組的定義域使用

B.操作系統(tǒng)的進(jìn)程調(diào)度

C.函數(shù)的遞歸調(diào)用

D.選擇結(jié)構(gòu)的執(zhí)行

【答案】C

【解析】函數(shù)的遞歸調(diào)用是指函數(shù)調(diào)用函數(shù)本身,直到滿足特定條件時終止,然后從最后被遞歸調(diào)用處返回。遞歸函數(shù)是通過棧來實(shí)現(xiàn)的,所以調(diào)用原則和棧的實(shí)現(xiàn)相一致。所以遞歸函數(shù)是通過棧來實(shí)現(xiàn)的。答案選擇C選項(xiàng)。

33以下不是C語言字符型或字符串常量的是( ?。?。

A."It’s"

B."0"

C.'a=0'

D.'\010'

【答案】C

【解析】字符常量是用單引號把一個字符括起來,轉(zhuǎn)義字符常量以一個反斜線開頭后跟一個特定的字符或者對應(yīng)的ASCII值表示。字符串常量是由雙引號括起來的一串字符。C項(xiàng)既不是字符型常量,也不是字符串常量。AB兩項(xiàng),均是字符串常量;D項(xiàng),是字符型常量。答案選擇C選項(xiàng)。

34下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是(  )。

A.雙向鏈表

B.循環(huán)鏈表

C.二叉鏈表

D.循環(huán)隊列

【答案】C

【解析】線性結(jié)構(gòu)要滿足兩個條件:有且僅有一個根結(jié)點(diǎn);每個結(jié)點(diǎn)最多有一個前驅(qū),也最多有一個后繼。線性表、棧、隊列都是線性結(jié)構(gòu),循環(huán)鏈表和雙向鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),屬于線性結(jié)構(gòu),只是存儲結(jié)構(gòu)不連續(xù);循環(huán)隊列是一個頭結(jié)點(diǎn)和尾結(jié)點(diǎn)互為前驅(qū)結(jié)點(diǎn)和后繼結(jié)點(diǎn)的特殊的隊列,屬于線性結(jié)構(gòu);二叉鏈表是二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu),因?yàn)槎鏄溆行┙Y(jié)點(diǎn)有兩個后繼結(jié)點(diǎn),不符合線性結(jié)構(gòu)的定義,所以二叉鏈表是非線性結(jié)構(gòu)。答案選擇C選項(xiàng)。

35有以下程序:

#include<stdio.h>
main()
{
  int k=10;
  printf("%4d,%o,%x\n",k,k,k);
}

程序的運(yùn)行結(jié)果是( ?。?。(u代表一個空格)

A.10,12,a

B.uu10,012,a

C.010,12,a

D.uu10,12,a

【答案】D

【解析】%4d表示輸出占4個字符的十進(jìn)制,故先輸出2個空格,然后輸出10;%o表示輸出八進(jìn)制,所以輸出10的八進(jìn)制為12;%x表示輸出十六進(jìn)制,即a。答案選擇D選項(xiàng)。

36數(shù)據(jù)庫管理系統(tǒng)是( ?。?/p>

A.操作系統(tǒng)的一部分

B.系統(tǒng)軟件

C.一種編譯系統(tǒng)

D.一種通信軟件系統(tǒng)

【答案】B

【解析】系統(tǒng)軟件主要包括:操作系統(tǒng)軟件;各種語言的解釋程序和編譯程序;各種服務(wù)性程序;各種數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)組操縱、數(shù)據(jù)維護(hù)、控制和保護(hù)以及數(shù)據(jù)服務(wù)等。答案選擇B選項(xiàng)。

37若有定義:int a=1,b=2,c=3;,則執(zhí)行表達(dá)式(a=b+c)||(++b)后,a、b、c的值依次為( ?。?。

A.1,2,3

B.5,3,2

C.5,2,3

D.5,3,3

【答案】C

【解析】||表示或運(yùn)算,當(dāng)?shù)谝粋€表達(dá)式為真時,第二個表達(dá)式不執(zhí)行。根據(jù)運(yùn)算符的優(yōu)先級規(guī)則,先計算(a=b+c),將b+c的值賦值給a,則a=5,而||右邊的括號不會被執(zhí)行,所以b=2,c=3。答案選擇C選項(xiàng)。

38有兩個關(guān)系R和T如下:

則由關(guān)系R得到關(guān)系T的操作是(  )。

A.選擇

B.交

C.投影

D.并

【答案】C

【解析】關(guān)系T是由關(guān)系R的第1、3列的元組組成,這是對關(guān)系R進(jìn)行投影運(yùn)算的結(jié)果??梢院唵卫斫鉃椋哼x擇運(yùn)算是對行(元組)的操作,投影運(yùn)算是對列的操作。投影是從表中選出指定的屬性值組成新表,是單目運(yùn)算,C項(xiàng)正確。

39設(shè)有:char s[5],c;,則調(diào)用函數(shù)scanf能正確給s和c讀入數(shù)據(jù)的是(  )。

A.scanf("%s%c",s,c);

B.scanf("%d%c",&s,&c);

C.scanf("%d%c",s,&c);

D.scanf("%s%c",s,&c);

【答案】D

【解析】s[5]是一個字符數(shù)組,也可以理解為字符串,格式控制為%s,c為字符,格式控制為%c。scanf輸入時參數(shù)是地址,數(shù)組名就是地址,所以給s讀入數(shù)據(jù)參數(shù)就是s首地址,而字符c的參數(shù)需要取c的地址,即&c。答案選擇D選項(xiàng)。

40若變量已正確定義并賦值,則錯誤的賦值語句是(  )。

A.a(chǎn)+=a+1;

B.a(chǎn)=sizeof(double);

C.a(chǎn)=d||c;

D.a(chǎn)+1=a;

【答案】D

【解析】賦值號的左邊必須是一個代表某個存儲單元的變量名,賦值號的右邊必須是C語言中合法的表達(dá)式。賦值運(yùn)算的功能是先求出右邊表達(dá)式的值,然后把此值賦給賦值號左邊的變量。答案選擇D選項(xiàng)。

二、程序填空題(共18分)

下列給定的程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)和。2/1,3/2,5/3,8/5,13/8,21/13,……和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。

注意:

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。

【試題源程序】

#include<stdio.h>
#include<conio.h>
double fun(int n)
{
  int a=2,b=1,c,k;
  double ______;
  for(k=1;k<=n;k++)
  {
    s=s+1.0*a/b;
    c=a;a+=______;b=c;
  }
  return(s);
}
main()
{
  int n=5;
  printf("\nThe value of function is:%1f\n",______);
}

答:

s=0.0

b

fun(n)

【解析】

填空1:此處要對變量s進(jìn)行聲明,因?yàn)楹竺嬗袑的累加操作,所以s一定要進(jìn)行初始化,即s=0.0。

填空2:此處是循環(huán)求和,由數(shù)列可以看出后一項(xiàng)分?jǐn)?shù)的分子是前一項(xiàng)分母與分子之和,即a=a+b或者a+=b。

填空3:此處進(jìn)行子函數(shù)調(diào)用。

三、程序修改題(共18分)

給定程序中函數(shù)fun的功能是:根據(jù)整型形參m,計算如下公式的值。

例如,若m中的值為:5,則應(yīng)輸出:1.463611。請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:

不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

【試題源程序】

#include<stdio.h>
double fun(int m)
{
  double y=1.0;
  int i;
  /**********found**********/
  for(i=2;i<m;i++)
    /**********found**********/
    y+=1/(i*i);
  return(y);
}
main()
{
  int n=5;
  printf("\nThe result is %1f\n",fun(n));
}

答:

(1)錯誤:for(i=2;i<m;i++)

正確:for(i=2;i<=m;i++)

(2)錯誤:y+=1/(i*i)

正確:y+=1.0/(i*i)

【解析】

錯誤1:使用for循環(huán)計算公式取到m時,最后一次循環(huán)應(yīng)該等于m,所以i小于m應(yīng)改為i小于等于m。

錯誤2:在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),那么所除結(jié)果也是整數(shù),因此需要對結(jié)果進(jìn)行強(qiáng)制轉(zhuǎn)換或者將除數(shù)或被除數(shù)其中一個整型常量變?yōu)楦↑c(diǎn)型常量。

四、程序設(shè)計題(共24分)

請編寫函數(shù)fun(),該函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。

例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

注意:

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

【試題源程序】

#include<stdio.h>
#define N 80
void fun(int *w,int p,int n)
{
 
 
}
main()
{
  int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  int i,p,n=15;
  printf("The original data:\n");
  for(i=0;i<n;i++)
    printf("%3d",a[i]);
  printf("\n\nEnter p:");
  scanf("%d",&p);
  fun(a,p,n);
  printf("\nThe data after moving:\n");
  for(i=0;i<n;i++)
    printf("%3d",a[i]);
  printf("\n\n");
}

答:

void fun(int*w,int p,int n)
{
  int i,j,t;
  for(i=p;i<=n-1;i++)
  {
    t=w[n-1];
    for(j=n-2;j>=0;j--)
      w[j+1]=w[j];
    w[0]=t;
  }
}

【解析】本題采用“循環(huán)右移”的算法。

推薦閱讀
  1. 全國計算機(jī)等級考試真題匯編與專用題庫:二級C語言
  2. 全國計算機(jī)等級考試一本通:二級Access
  3. 2014年全國計算機(jī)等級考試3年真題精解與過關(guān)全真訓(xùn)練題:二級公共基礎(chǔ)知識
  4. 汪博士解讀PMP考試
  5. 全國職稱計算機(jī)考試標(biāo)準(zhǔn)教材與專用題庫:PowerPoint 2007中文演示文稿
  6. 5天通過職稱計算機(jī)考試(考點(diǎn)視頻串講+全真模擬):PowerPoint 2003中文演示文稿(第2版) (全國專業(yè)技術(shù)人員計算機(jī)應(yīng)用能力考試指導(dǎo)叢書)
  7. 全國計算機(jī)等級考試《二級C語言程序設(shè)計》【教材精講+真題解析】講義與視頻課程【45小時高清視頻】
  8. 2014年全國計算機(jī)等級考試3年真題精解與過關(guān)全真訓(xùn)練題:二級Java語言程序設(shè)計
  9. 全國計算機(jī)等級考試上機(jī)專用題庫與筆試模擬考場:二級Visual Basic
  10. 2020年3月全國計算機(jī)等級考試《二級Visual Basic語言程序設(shè)計》歷年真題與模擬試題詳解
  11. 全國會計從業(yè)資格考試應(yīng)試指南·真題·預(yù)測三合一:財經(jīng)法規(guī)與會計職業(yè)道德
  12. 2020年3月全國計算機(jī)等級考試《四級計算機(jī)網(wǎng)絡(luò)》復(fù)習(xí)全書【核心講義+歷年真題詳解】
  13. 全國職稱計算機(jī)考試講義·真題·預(yù)測三合一:PowerPoint 2003中文演示文稿
  14. 2020年3月全國計算機(jī)等級考試《三級嵌入式系統(tǒng)開發(fā)技術(shù)》專用教材【考綱分析+考點(diǎn)精講+真題演練】
  15. 全國計算機(jī)等級考試(一級B)習(xí)題集
主站蜘蛛池模板: 靖江市| 环江| 松潘县| 通辽市| 东方市| 宿迁市| 阿坝县| 乐亭县| 叙永县| 水城县| 布尔津县| 浦北县| 通化市| 江都市| 昌乐县| 昂仁县| 天长市| 博乐市| 湖南省| 清远市| 云霄县| 利津县| 江津市| 新沂市| 林甸县| 邵阳市| 城步| 咸阳市| 北碚区| 宜君县| 中阳县| 浦县| 枣阳市| 湟源县| 瑞金市| 上犹县| 鹤岗市| 宿松县| 张家口市| 如皋市| 怀仁县|