- 相關(guān)推薦
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言-筆試第一套
考試頻道小編收集整理計(jì)算機(jī)等級(jí)考試資料,免費(fèi)提供給大家交流參考!
一、選擇題
在下列各題的A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確的選項(xiàng)涂寫(xiě)在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)軟件生命周期中花費(fèi)費(fèi)用最多的階段是
A)詳細(xì)設(shè)計(jì) B)軟件編碼 C)軟件測(cè)試 D)軟件維護(hù)
(2)為了提高測(cè)試的效率,應(yīng)該
A)隨機(jī)選取測(cè)試數(shù)據(jù) B)取一切可能的輸入數(shù)據(jù)作為測(cè)試數(shù)據(jù) C)在完成編碼以后制定軟件的測(cè)試計(jì)劃 D)集中對(duì)付那些錯(cuò)誤群集的程序
(3)以下不是面向?qū)ο笏枷胫械闹饕卣鞯氖?/p>
A)多態(tài) B)繼承 C)封裝 D)垃圾回收
(4)下列敘述中,不符合良好程序設(shè)計(jì)風(fēng)格要求的是
A)程序的效率第一,清晰第二 B)程序的可讀性好 C)程序中要有必要的注釋 D)輸入數(shù)據(jù)前要有提示信息
(5)軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過(guò)程設(shè)計(jì),其中軟件的過(guò)程設(shè)計(jì)是指
A)模塊間的關(guān)系 B)系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過(guò)程描述 C)軟件層次結(jié)構(gòu) D)軟件開(kāi)發(fā)過(guò)程
(6)數(shù)據(jù)處理的最小單位是
A)數(shù)據(jù) B)數(shù)據(jù)元素 C)數(shù)據(jù)項(xiàng) D)數(shù)據(jù)結(jié)構(gòu)
(7)假設(shè)線性表的長(zhǎng)度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
A)log2n B)n2 C)O(n1..5) D)n(n-1)/2
(8)在深度為5的滿(mǎn)二叉樹(shù)中,葉子結(jié)點(diǎn)的個(gè)數(shù)為
A)32 B)31 C)16 D)15
(9)數(shù)據(jù)庫(kù)系統(tǒng)的核心是
A)數(shù)據(jù)庫(kù) B)數(shù)據(jù)庫(kù)管理系統(tǒng) C)模擬模型 D)軟件工程
(10)一個(gè)關(guān)系中屬性個(gè)數(shù)為1時(shí),稱(chēng)此關(guān)系為
A)對(duì)應(yīng)關(guān)系 B)單一關(guān)系 C)一元關(guān)系 D)二元關(guān)系
(11)下面各選項(xiàng)中,均是C語(yǔ)言合法標(biāo)識(shí)符的選項(xiàng)組是
A)33 we auto B)_23 me _3ew C)_43 3e_ else D)ER -DF 32
(12)可在C程序中用作用戶(hù)標(biāo)識(shí)符的一組標(biāo)識(shí)符是
A)and B)Date C)Hi D)case
_2007 y-m-d Dr.Tom Bigl
(13)以下對(duì)C語(yǔ)言函數(shù)的有關(guān)描述中,正確的是
A)在C語(yǔ)言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳給形參,形參的值不能傳送給實(shí)參
B)C函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C)函數(shù)必須有返回值,否則不能使用函數(shù)
D)函數(shù)必須有返回值,返回值類(lèi)型不定
(14)若函數(shù)調(diào)用時(shí)的實(shí)參為變量時(shí),以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是
A)函數(shù)的實(shí)參和其對(duì)應(yīng)的形參共占同一存儲(chǔ)單元 B)形參只是形式上的存在,不占用具體存儲(chǔ)單元
C)同名的實(shí)參和形參占同一存儲(chǔ)單元 D)函數(shù)的形參和實(shí)參分別占用不同的存儲(chǔ)單元
(15)現(xiàn)有定義int a;double b;float c;char k;,則表達(dá)式a/b+c-k值的類(lèi)型為:
A)int B)double C)float D)char
(16)以下關(guān)于long、int和short類(lèi)型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是
A)均占4個(gè)字節(jié) B)根據(jù)數(shù)據(jù)的大小來(lái)決定所占內(nèi)存的字節(jié)數(shù)
C)由用戶(hù)自己定義 D)由C語(yǔ)言編譯系統(tǒng)決定
(17)有以下程序段
int j;float y;char name[50];
scanf("%2d%f%s",&j,&y,name);
當(dāng)執(zhí)行上述程序段,從鍵盤(pán)上輸入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);
其輸出結(jié)果是
A)0,0 B)0,1 C)1,1 D)程序進(jìn)入無(wú)限循環(huán)
(19)下列程序的運(yùn)行結(jié)果是
#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í)行時(shí)的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是
#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)以下程序的輸出結(jié)果是
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);}
則程序段的輸出結(jié)果為
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]);}
上面程序的輸出結(jié)果是
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);
}
程序的運(yùn)行結(jié)果是
A)0 B)1 C)2 D)3
(25)已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2 的值是′D′。執(zhí)行語(yǔ)句printf("%d,%d",c1,c2-2);后,輸出結(jié)果是
A)A,B B)A,68 C)65,66 D)65,68
(26)下列程序是用來(lái)判斷數(shù)組中特定元素的位置所在的。
#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]);}
如果輸入如下整數(shù):876 675 896 101 301 401 980 431 451 777
則輸出結(jié)果為
A)7,431 B)6 C)980 D)6,980
(27)下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)為:t to meet me<回車(chē)>
則程序輸出的結(jié)果是
#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)以下敘述中錯(cuò)誤的是
A)改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值 B)函數(shù)可以返回地址值
C)可以給指針變量賦一個(gè)整數(shù)作為地址值 D)當(dāng)在程序的開(kāi)頭包含頭文件stdio.h時(shí),可以給指針變量賦NULL
(30)下面程序的輸出結(jié)果是
#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);}
則程序段的輸出結(jié)果是
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));
}
程序的運(yùn)行結(jié)果是
A)9 B)61490 C)61 D)5
(34)設(shè)有定義:char p[]={′1′,′2′,′3′},*q=p;,以下不能計(jì)算出一個(gè)char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是
A)sizeof(p) B)sizeof(char) C)sizeof(*q) D)sizeof(p[0])
(35)有以下函數(shù)
int aaa(char *s)
{ char *t=s;
while(*t++);
t--;
return(t-s);
}
以下關(guān)于aaa函數(shù)的功能的敘述正確的是
A)求字符串s的長(zhǎng)度 B)比較兩個(gè)串的大小 C)將串s復(fù)制到串t D)求字符串s所占字節(jié)數(shù)
(36)當(dāng)用戶(hù)要求輸入的字符串中含有空格時(shí),應(yīng)使用的輸入函數(shù)是
A)scanf() B)getchar() C)gets() D)getc()
(37)下列選項(xiàng)中錯(cuò)誤的說(shuō)明語(yǔ)句是
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)以下程序的輸出結(jié)果是
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)下列程序的輸出結(jié)果是
#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)假定當(dāng)前盤(pán)符下有兩個(gè)如下文本文件:
文件名 a1.txt a2.txt
內(nèi)容 123# 321#
則下面程序段執(zhí)行后的結(jié)果為
#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)以上答案都不正確
二、填空題
請(qǐng)將每一個(gè)空的正確答案寫(xiě)在答題卡序號(hào)的橫線上,答在試卷上不給分。
(1)軟件定義時(shí)期主要包括 【1】 和需求分析兩個(gè)階段。
(2)軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、 【2】 維護(hù)和預(yù)防性維護(hù)。
(3)數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和 【3】 兩大類(lèi)。
(4)某二叉樹(shù)中度為2的結(jié)點(diǎn)有n個(gè),則該二叉樹(shù)中有 【4】 個(gè)葉子結(jié)點(diǎn)。
(5)在ER圖中,矩形表示? 【5】 。
(6)閱讀下面程序,則執(zhí)行后的輸出結(jié)果是 【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)以下程序的輸出結(jié)果是 【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);
請(qǐng)?zhí)羁?使下面程序段的功能與之完全相同
s=1.0;k=1;
while(? 【8】 ?){s=s+1.0/(k*(k+1));? 【9】 ?;}
printf("s=%f\n\n",s);
(9)設(shè)有以下定義和語(yǔ)句,則*(*(p+2)+1)的值為 【10】 。
int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2];
p=a;
(10)以下程序的輸出結(jié)果是? 【11】 ?。
#include
main()
{ int i;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
(11)以下程序中函數(shù)f的功能是在數(shù)組x的n個(gè)數(shù)(假定n個(gè)數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個(gè)數(shù)對(duì)換,把最大的數(shù)與最后一個(gè)數(shù)對(duì)換。請(qǐng)?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函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>
int mystrlen(char *str)
{ int I;
for(I=0; 【14】 != '\n';I++);
return(I); }
(13)閱讀下列程序,則程序的輸出結(jié)果為 【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 【解析】 軟件生命周期分為軟件定義、軟件開(kāi)發(fā)及軟件運(yùn)行維護(hù)3個(gè)階段。本題中,詳細(xì)設(shè)計(jì)、軟件編碼和軟件測(cè)試都屬于軟件開(kāi)發(fā)階段;維護(hù)是軟件生命周期的最后一個(gè)階段,也是持續(xù)時(shí)間最長(zhǎng),花費(fèi)代價(jià)最大的一個(gè)階段,軟件工程學(xué)的一個(gè)目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價(jià)。
(2)D 【解析】 測(cè)試的目的是發(fā)現(xiàn)軟件中的錯(cuò)誤。經(jīng)驗(yàn)表明,程序中存在錯(cuò)誤的概率與該程序中已發(fā)現(xiàn)的錯(cuò)誤成正比。這一現(xiàn)象說(shuō)明,為了提高測(cè)試效率,測(cè)試人員應(yīng)該集中對(duì)待那些錯(cuò)誤群集的程序。
(3)D 【解析】 面向?qū)ο笏枷胫械娜齻(gè)主要特征是:封裝性、繼承性和多態(tài)性。
(4)A 【解析】 當(dāng)今主導(dǎo)的程序設(shè)計(jì)風(fēng)格是"清晰第一,效率第二"的觀點(diǎn)。結(jié)構(gòu)化程序設(shè)計(jì)思想提出之前,在程序設(shè)計(jì)中曾強(qiáng)調(diào)程序的效率,而在實(shí)際應(yīng)用中,人們更注重程序的可理解性。
(5)B 【解析】 軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)。其中,結(jié)構(gòu)設(shè)計(jì)是定義軟件系統(tǒng)各主要部件之間的關(guān)系;數(shù)據(jù)設(shè)計(jì)是將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義;接口設(shè)計(jì)是描述軟件內(nèi)部、軟件和操作系統(tǒng)之間及軟件與人之間如何通信;過(guò)程設(shè)計(jì)則是把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過(guò)程性描述。
(6)C 【解析】 數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;數(shù)據(jù)是指能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。
(7)D 【解析】 假設(shè)線性表的長(zhǎng)度為n,則在最壞情況下,冒泡排序要經(jīng)過(guò)n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。
(8)C 【解析】 滿(mǎn)二叉樹(shù)是指除最后一層外,每一層上的所有結(jié)點(diǎn)都有兩個(gè)葉子結(jié)點(diǎn)。在滿(mǎn)二叉樹(shù)中,層上的結(jié)點(diǎn)數(shù)都達(dá)到最大值,即在滿(mǎn)二叉樹(shù)的第k層上有2k-1個(gè)結(jié)點(diǎn),且深度為m的滿(mǎn)二叉樹(shù)有2m-1個(gè)結(jié)點(diǎn)。
(9)B 【解析】 數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,簡(jiǎn)稱(chēng)DBMS)是數(shù)據(jù)庫(kù)的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫(kù)中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,數(shù)據(jù)庫(kù)管理系統(tǒng)是數(shù)據(jù)庫(kù)系統(tǒng)的核心。
(10)C 【解析】 在關(guān)系模型數(shù)據(jù)庫(kù)中,基本結(jié)構(gòu)是二維表,這種二維表稱(chēng)為關(guān)系。關(guān)系的列稱(chēng)為屬性,一個(gè)具有N個(gè)屬性的關(guān)系稱(chēng)為N元關(guān)系。
(11)B 【解析】 合法的標(biāo)識(shí)符是由字母、數(shù)字和下劃線組成,并且第一個(gè)字符必須為字母或下劃線,用戶(hù)定義的標(biāo)識(shí)符不能與關(guān)鍵字相同。選項(xiàng)A),數(shù)字不能為第一個(gè)字母,auto為關(guān)鍵字;選項(xiàng)C)中,也是數(shù)字不能為第一個(gè)字母,else為關(guān)鍵字;選項(xiàng)D)中負(fù)號(hào)不合法。
(12)A 【解析】 在C語(yǔ)言中,合法標(biāo)識(shí)符的命名規(guī)則是:標(biāo)識(shí)符可以由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言的標(biāo)識(shí)符可以分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶(hù)標(biāo)識(shí)符。選項(xiàng)B)和C)中的橫線以及點(diǎn)都不合法,選項(xiàng)D)中的case為C語(yǔ)言關(guān)鍵字。
(13)A 【解析】 C語(yǔ)言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但是不能在函數(shù)中定義函數(shù),函數(shù)不用有返回值,若有返回值,則返回值類(lèi)型必確定。
(14)D 【解析】 在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。在C語(yǔ)言中,僅在調(diào)用函數(shù)時(shí),給形參分配存儲(chǔ)單元,并將實(shí)參對(duì)應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留并維持原值。
(15)B 【解析】 雙目運(yùn)算中兩邊運(yùn)算量類(lèi)型轉(zhuǎn)換規(guī)律:
運(yùn)算數(shù)1運(yùn)算數(shù)2轉(zhuǎn)換結(jié)果類(lèi)型
短整型 長(zhǎng)整型 短整型->長(zhǎng)整型
整型 長(zhǎng)整型 整型->長(zhǎng)整型
字符型 整型 字符型->整型
有符號(hào)整型 無(wú)符號(hào)整型 有符號(hào)整型->無(wú)符號(hào)整型
整型 浮點(diǎn)型 整型->浮點(diǎn)型
在a/b的時(shí)候,a、b的類(lèi)型不一致,根據(jù)類(lèi)型轉(zhuǎn)換規(guī)則,把整型轉(zhuǎn)換成double類(lèi)型,之后的加、減類(lèi)似。轉(zhuǎn)化規(guī)則為char,short->int->unsigned->long->double←float。
(16)D 【解析】 在ANSI標(biāo)準(zhǔn)中,long、int和short分別占用4、2和2個(gè)字節(jié)。但實(shí)際上對(duì)于某些C編譯系統(tǒng),int和short都占用4個(gè)字節(jié),所以說(shuō)各種類(lèi)型數(shù)據(jù)占用內(nèi)存大小是由選擇何種C編譯系統(tǒng)決定的。
(17)B 【解析】 本題考查通過(guò)scanf函數(shù)輸入數(shù)據(jù)時(shí)的格式控制問(wèn)題。變量j的格式控制為"%2d",即只接收輸入數(shù)據(jù)的前兩位,從第三位開(kāi)始直到空格之間的輸入都會(huì)被保存到變量y中,因?yàn)閥為浮點(diǎn)型數(shù)據(jù),所以輸出結(jié)果為選項(xiàng)B)。
(18)B 【解析】 對(duì)于do…while循環(huán),程序先執(zhí)行一次循環(huán)體,再判斷循環(huán)是否繼續(xù)。本題先輸出一次i的值"0,",再接著判斷表達(dá)式i++的值,其值為0,所以循環(huán)結(jié)束。此時(shí)變量i的值經(jīng)過(guò)自加已經(jīng)變?yōu)?,程序再次輸出i的值"1"。
(19)D 【解析】 if…else語(yǔ)句的執(zhí)行過(guò)程如下,首先計(jì)算if后面一對(duì)圓括號(hào)內(nèi)表達(dá)式的值,若表達(dá)式的值為非0,執(zhí)行if子句,然后跳過(guò)else子句,去執(zhí)行if語(yǔ)句后的下一條語(yǔ)句;若表達(dá)式的值為0,跳過(guò)if子句,去執(zhí)行else子句,接著去執(zhí)行if語(yǔ)句后的下一條語(yǔ)句。C語(yǔ)言的語(yǔ)法規(guī)定,else子句總是與前面最近的不帶else的if匹配,與書(shū)寫(xiě)格式無(wú)關(guān),本題目的后一個(gè)if-else相當(dāng)于嵌套在第一個(gè)if子句里,相當(dāng)于x
(20)A 【解析】 本題主要考查switch語(yǔ)句的使用方法。switch語(yǔ)句的執(zhí)行過(guò)程為:進(jìn)入switch結(jié)構(gòu)后,對(duì)條件表達(dá)式進(jìn)行運(yùn)算,然后從上至下去找與條件表達(dá)式值相匹配的case,以此作為入口,執(zhí)行switch結(jié)構(gòu)中后面的各語(yǔ)句,直到遇到break語(yǔ)句,則跳出switch語(yǔ)句,如果各case都不匹配時(shí),則執(zhí)行default后面的語(yǔ)句。
(21)A 【解析】 本題考查用于多分支選擇的switch語(yǔ)句, 其一般形式為:
switch(表達(dá)式)
{
case常量表達(dá)式1: 語(yǔ)句1;
case常量表達(dá)式2: 語(yǔ)句2;
…
case常量表達(dá)式n: 語(yǔ)句n;
default : 語(yǔ)句n+1;
}
其語(yǔ)義是:計(jì)算表達(dá)式的值,并逐個(gè)與其后的常量表達(dá)式值進(jìn)行比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語(yǔ)句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有 case后的語(yǔ)句;如表達(dá)式的值與所有case后的常量表達(dá)式均不相等時(shí),則執(zhí)行default后的語(yǔ)句。
(22)D 【解析】 在C語(yǔ)言中,定義一維數(shù)組的語(yǔ)句一般形式如下:
類(lèi)型名 數(shù)組名[常量表達(dá)式];
一維數(shù)組的引用形式為:數(shù)組名[下標(biāo)表達(dá)式]。count表示能被2整除或被5整除的個(gè)數(shù),i則計(jì)算有多少個(gè)數(shù)組元素。
(23)D 【解析】 在C語(yǔ)言中,數(shù)組元素下標(biāo)是從0開(kāi)始的;指針變量p指向數(shù)組的首地址。for循環(huán)語(yǔ)句中,指針變量p始終指向數(shù)組的首地址,因而執(zhí)行循環(huán)賦值語(yǔ)句后數(shù)組各元素的值均變?yōu)?。
(24)B 【解析】 本題考查循環(huán)語(yǔ)句的嵌套以及條件的判斷問(wèn)題。在程序中,內(nèi)層循環(huán)判斷條件為"?j<=i?",而j的初值為3,故當(dāng)i的值為1和2時(shí),內(nèi)層循環(huán)體都不會(huì)被執(zhí)行。只有當(dāng)i和j都等于3時(shí)才會(huì)執(zhí)行一次。m的值為55對(duì)3取模,計(jì)算結(jié)果為1。
(25)C 【解析】 在C語(yǔ)言中,字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是ASCII碼值。當(dāng)需要以整型格式輸出字符時(shí),輸出的也是ASCII碼值。字符'A'和'D'的ASCII碼值分別為65和68。
(26)D 【解析】 本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算。此外,一開(kāi)始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。
(27)B 【解析】 argc中存入的是命令行中字符串的個(gè)數(shù)。argv是一個(gè)指向字符型的指針數(shù)組的指針。
(28)C 【解析】 p=&a[3]將指針指向數(shù)組a的第4個(gè)元素,p[5]指向數(shù)組a的第9個(gè)元素,而a[8]=9,所以b=9。
29)C 【解析】 函數(shù)形參和實(shí)參分別占用不同的內(nèi)存單元,改變形參的值不會(huì)影響對(duì)應(yīng)實(shí)參的值,選項(xiàng)A)正確。指針類(lèi)型的函數(shù)可以返回地址值,選項(xiàng)B)正確。在文件stdio.h中,NULL被定義為void 型的指針,選項(xiàng)D)也正確。指針變量的值只能是存儲(chǔ)單元地址,而不能是一個(gè)整數(shù),選項(xiàng)C)錯(cuò)誤。
(30)C 【解析】 此題考查了指針引用一維數(shù)組元素的方法。*p+9因?yàn)檫\(yùn)算符"*"的優(yōu)先級(jí)高于"+",所以輸出結(jié)果為p指向的元素1,然后加9,值為10。
(31)B 【解析】 字符串連接函數(shù)strcat的調(diào)用形式如下:strcat(s1,s2)。此函數(shù)將s2所指字符串的內(nèi)容連接到s1所指的字符串后面,并自動(dòng)覆蓋s1串末尾的尾標(biāo),函數(shù)返回s1的地址值。
(32)A 【解析】 本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語(yǔ)言不允許用賦值表達(dá)式對(duì)字符數(shù)組賦值,如下面的語(yǔ)句就是非法的:str1=?"China",?如果想把"China"這5個(gè)字符放到數(shù)組str1中,除了逐個(gè)輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個(gè)字符串復(fù)制到一字符數(shù)組中。例如:strcpy(str1,"China")或strcpy(str1,str2);注意,不能企圖用以下語(yǔ)句來(lái)實(shí)行賦值(將str2的值傳給str1):str1=str2;不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。
strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)
其中,需要注意的是,字符數(shù)組1的長(zhǎng)度不應(yīng)小于字符串2的長(zhǎng)度,"字符數(shù)組1"必須寫(xiě)成數(shù)組名形式,如(str1),"字符串2"可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。
(33)C 【解析】 在fun函數(shù)中,while循環(huán)的功能是:逐個(gè)取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將其作為個(gè)位數(shù)字保存到變量n中,n的原數(shù)據(jù)的各個(gè)數(shù)位將相應(yīng)左移一個(gè)10進(jìn)制位。當(dāng)指針s指向數(shù)組的第3位時(shí),循環(huán)條件不成立,循環(huán)結(jié)束,返回n 的值,輸出n的值為61。
(34)A 【解析】 在本題中,p和q同為指向字符類(lèi)型數(shù)據(jù)的指針。*q 和p[0]同為字符型數(shù)據(jù)。選項(xiàng)B)、C)和D)都符合題目的要求;選項(xiàng)A)計(jì)算得出的是指針類(lèi)型數(shù)據(jù)所占的內(nèi)存字節(jié)數(shù)。
(35)A 【解析】 循環(huán)開(kāi)始前,指針t和s都指向字符串的起始位置,然后通過(guò)while循環(huán)判斷t指向的位置是否為空,同時(shí)讓t向右移動(dòng)一位。while循環(huán)結(jié)束時(shí),t自減1,此時(shí)t指向的位置是字符串的結(jié)束標(biāo)志'\0'處,故t-s的值是字符串的長(zhǎng)度,并不包括結(jié)束標(biāo)志。
(36)C 【解析】 本題綜合考查了輸入函數(shù)的使用。scanf函數(shù)會(huì)將空格視為分隔符,getchar函數(shù)只能輸入單個(gè)字符,getc函數(shù)是文件操作函數(shù),顯然都不符合題意。通過(guò)gets函數(shù)輸入字符串時(shí),輸入的空格被認(rèn)為是字符串的一個(gè)字符。
(37)D 【解析】 通過(guò)賦初值的方式給一維數(shù)組賦字符串,可以用給一般數(shù)組賦初值的相同方式給一維字符數(shù)組賦字符串,也可以在賦值時(shí)直接賦字符串常量。選項(xiàng)B)和C)后面的'\0'是多余的,在C語(yǔ)言中,系統(tǒng)會(huì)自動(dòng)在字符串的結(jié)尾處加上一個(gè)字符'\0'作為串的結(jié)束標(biāo)記。
(38)D 【解析】 函數(shù)的靜態(tài)局部變量在編譯時(shí)就賦初值,即只賦初值一次,在程序運(yùn)行時(shí)它已有初值,以后每次調(diào)用函數(shù)時(shí)不再重新賦值,而只是保留上次函數(shù)調(diào)用結(jié)束時(shí)的值。
(39)C 【解析】 帶參數(shù)的宏定義命令行形式如下: #define 宏名(形參表) 替換文本
在編譯的時(shí)候編譯預(yù)處理程序用"替換文本"來(lái)替換宏,即M(n,m)被替換為n%m,之后計(jì)算,將計(jì)算的結(jié)果賦給a。注意,宏替換是在編譯時(shí)由預(yù)處理程序完成的,宏替換不占用運(yùn)行的時(shí)間,而函數(shù)調(diào)用是在程序運(yùn)行時(shí)進(jìn)行的,在函數(shù)的調(diào)用過(guò)程中需要占用一系列的處理時(shí)間。
(40)A 【解析】 本題的功能是順序的讀兩個(gè)文本文件,依次輸出。當(dāng)打開(kāi)文件時(shí)出現(xiàn)錯(cuò)誤,fopen函數(shù)將返回NULL。
二、填空題
(1)【1】 可行性研究 【解析】 軟件生命周期一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、交付使用以及維護(hù)等,還可以將軟件生命周期分為三個(gè)階段:①軟件定義階段:可行性研究和需求分析;②軟件開(kāi)發(fā)階段:設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試;③軟件運(yùn)行維護(hù)階段:交付使用和維護(hù)。
(2)【2】 完善性 【解析】 軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。改正性維護(hù)是指在軟件交付使用后,為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程;適應(yīng)性維護(hù)是指為了使軟件適應(yīng)變化,而去修改軟件的過(guò)程;完善性維護(hù)是指為了滿(mǎn)足用戶(hù)對(duì)軟件提出的新功能與性能要求,需要修改或再次開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性;預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后的進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。
(3)【3】 非線性結(jié)構(gòu) 【解析】 數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和非線性結(jié)構(gòu)兩大類(lèi)。
(4)【4】 n+1 【解析】 在任意一棵二叉樹(shù)中,度為O多結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2多結(jié)點(diǎn)多一個(gè)。
(5)【5】 實(shí)體 【解析】 在E-R圖中用矩形表示實(shí)體;橢圓形表示屬性;菱形表示聯(lián)系。
(6)【6】 3 【解析】 C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf("%d\n",z);語(yǔ)句。
(7)【7】 852 【解析】 循環(huán)前,變量y的值為9,其中,循環(huán)語(yǔ)句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當(dāng)y能被3整除時(shí)輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán),所以程序輸出852。
(8)【8】 k<=n 【9】 k++ 【解析】 本題要求將一個(gè)for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會(huì)加1,而while循環(huán)則沒(méi)有,故需在循環(huán)體中增加改變k數(shù)值的語(yǔ)句"k++;"?。
9)【10】 60 【解析】 本題中,代碼定義3行2列的二維數(shù)組a,定義指向兩個(gè)元素的一維數(shù)組指針p,并讓p指向兩維數(shù)組a的首行,則代碼*(*(p+2)+1)中的p+2指向兩維數(shù)組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',當(dāng)其變?yōu)?#39;g'時(shí),循環(huán)條件若不滿(mǎn)足,循環(huán)終止,故本題共輸出3個(gè)字符。表達(dá)式"i-'a'+?'A'?"即表示輸出i對(duì)應(yīng)的大寫(xiě)字母,結(jié)果為ACE。
(11)【12】 x[0] 【13】 x[0] 【解析】 函數(shù)f( )通過(guò)for循環(huán)逐個(gè)比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標(biāo)位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個(gè)元素x[n-1]交換位置,再將最小值x[p1]和第一個(gè)元素(x[0]) 進(jìn)行交換,所以空白處應(yīng)該填入x[0]。
(12)【14】 *(str+I)或str[I] 【解析】 str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過(guò)程中,可以用 *(str+I)來(lái)訪問(wèn)字符串中的第I個(gè)元素,判斷是否為結(jié)束標(biāo)志,如果不是,I=I+1,繼續(xù)取下一個(gè)元素進(jìn)行判斷,直到 *(str+I)的值為'\0'為止,也可以用下標(biāo)的方式引用字符,如*(str+I)相當(dāng)于str[I]。
(13)【15】 30x 【解析】 本題的參數(shù)傳遞屬于值傳遞,所以被調(diào)用函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。
【全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言-筆試第一套】相關(guān)文章:
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言筆試試題06-29
計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言筆試精選習(xí)題06-06
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言筆試第二套03-06
2016全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言筆試試題03-15
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言06-27
3月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言筆試真題05-02
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試題02-06