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