- 全國計算機(jī)等級考試《二級C語言程序設(shè)計》歷年真題與模擬試題詳解
- 圣才電子書
- 4803字
- 2021-06-24 18:06:07
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)右移”的算法。
- 全國計算機(jī)等級考試真題匯編與專用題庫:二級C語言
- 全國計算機(jī)等級考試一本通:二級Access
- 2014年全國計算機(jī)等級考試3年真題精解與過關(guān)全真訓(xùn)練題:二級公共基礎(chǔ)知識
- 汪博士解讀PMP考試
- 全國職稱計算機(jī)考試標(biāo)準(zhǔn)教材與專用題庫:PowerPoint 2007中文演示文稿
- 5天通過職稱計算機(jī)考試(考點(diǎn)視頻串講+全真模擬):PowerPoint 2003中文演示文稿(第2版) (全國專業(yè)技術(shù)人員計算機(jī)應(yīng)用能力考試指導(dǎo)叢書)
- 全國計算機(jī)等級考試《二級C語言程序設(shè)計》【教材精講+真題解析】講義與視頻課程【45小時高清視頻】
- 2014年全國計算機(jī)等級考試3年真題精解與過關(guān)全真訓(xùn)練題:二級Java語言程序設(shè)計
- 全國計算機(jī)等級考試上機(jī)專用題庫與筆試模擬考場:二級Visual Basic
- 2020年3月全國計算機(jī)等級考試《二級Visual Basic語言程序設(shè)計》歷年真題與模擬試題詳解
- 全國會計從業(yè)資格考試應(yīng)試指南·真題·預(yù)測三合一:財經(jīng)法規(guī)與會計職業(yè)道德
- 2020年3月全國計算機(jī)等級考試《四級計算機(jī)網(wǎng)絡(luò)》復(fù)習(xí)全書【核心講義+歷年真題詳解】
- 全國職稱計算機(jī)考試講義·真題·預(yù)測三合一:PowerPoint 2003中文演示文稿
- 2020年3月全國計算機(jī)等級考試《三級嵌入式系統(tǒng)開發(fā)技術(shù)》專用教材【考綱分析+考點(diǎn)精講+真題演練】
- 全國計算機(jī)等級考試(一級B)習(xí)題集