- 相關推薦
2024二級c語言上機題庫
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。全國計算機等級考試有二級c語言這個考試的項目。以下是小編整理的2024二級c語言上機題庫,歡迎閱讀。
二級c語言上機題庫 1
一、選擇題(每小題1分,共40小題,共40分)
1.算法的空間復雜度是指( )。
A.算法程序的長度
B.算法程序中=的指令條數(shù)
C.算法程序所占的存儲空間
D.算法執(zhí)行過程中所需要的存儲空間
2.下列敘述中正確的是( )。
A.一個邏輯數(shù)據結構只能有一種存儲結構
B.邏輯結構屬于線性結構,存儲結構屬于非線性結構
C.一個邏輯數(shù)據結構可以有多種存儲結構,且各種存儲結構不影響數(shù)據處理的效率
D.一個邏輯數(shù)據結構可以有多種存儲結構,且各種存儲結構影響數(shù)據處理的效率
3.簡單的交換排序方法是( )。
A.快速排序
B.選擇排序
C.堆排序
D.冒泡排序
4.關于結構化程序設計原則和方法的描述錯誤的是( )。
A.選用的結構只準許有一個入口和一個出口
B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現(xiàn)
C.不允許使用GOT0語句
D.語言中若沒有控制結構,應該采用前后一致的方法來模擬
5.相對于數(shù)據庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據關聯(lián)差、數(shù)據不一致性和( )。
A.可重用性差
B.安全性差
C.非持久性
D.冗余性
6.面向對象的設計方法與傳統(tǒng)的面向過程的方法有本質不同,它的基本原理是( )。
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調模擬現(xiàn)實世界中的算法而不強調概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D.不強調模擬現(xiàn)實世界中的算法而強調概念
7.對如下二叉樹進行后序遍歷的結果為( )。
A.ABCDEF
B.DBEAFC
C.ABDECF
D.DEBFCA
8.軟件設計包括軟件的結構、數(shù)據接口和過程設計,其中軟件的過程設計是指( )。
A.模塊間的關系
B.系統(tǒng)結構部件轉換成軟件的過程描述
C.軟件層次結構
D.軟件開發(fā)過程
9.兩個或兩個以上模塊之間關聯(lián)的緊密程度稱為( )。
A.耦合度
B.內聚度
C.復雜度
D.數(shù)據傳輸特性
10.下列描述錯誤的是( )。
A.繼承分為多重繼承和單繼承
B.對象之間的通信靠傳遞消息來實現(xiàn)
C.在外面看不到對象的內部特征是基于對象的“模塊獨立性好”這個特征
D.類是具有共同屬性、共同方法的對象的集合
11.數(shù)據庫DB、數(shù)據庫系統(tǒng)DBS、數(shù)據庫管理系統(tǒng)DBMS之間的關系是( )。
A.DB包含DBS和DBMS
B.DBMS包含DB和DBS
C.DBS包含DB和DBMS
D.沒有任何關系
12.下列合法的聲明語句是( )。
A.int_abc=50;
B.double int=3+5e2.5;
C.long do=1L:
D.float 3_asd=3e-3;
13.設x、Y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是( )。
A.x&&Y
B.x<=Y
C.x‖y+z&&y-z
D.!((x 14.若ch為char型變量,k為int型變量(已知字符a的ASCIl碼是97),則執(zhí)行下列語句后輸出的結果為( )。
ch=’b’;
k=10:
printf("%X,%o,",ch,ch,k);
printf("k=%%d\n",k);
A.因變量類型與格式描述符的類型不匹配,輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為0值或不定值
C.62,142,k一%d
D.62,142,k一%l0
15.有下列程序: 、
fun(int X,int y){return(x+y);)
main()
{ int a=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
執(zhí)行后的輸出結果是( )。
A.6
B.7
C.8
D.9
16.假定x和Y為double型,則表達式x=2,y—x+3/2的值是( )。
A.3.500000
B.3
C.2.000000
D.3.000000
17.有如下程序:
main()
{int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case l:a++;
case 2:a++;b++;
)
printf("a=%d,b=%d\n",a,b);
)
該程序的輸出結果是( )。
A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=2
18.下列程序的輸出結果是( )。
main()
{int i=1,j=2,k=3;
if(i++= =1&&(++j= =3= =‖k++= =3))
printf("%d%d%d\n",i,J,k);
)
A.1 2 3
B.2 3 4
C.2 2 3
D.2 3 3
19.下列程序的輸出結果是( )。
#include
main()
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=1;
case l:
case 2:a+=2;
default:a+=3;
)
printf("%d",i);
)
A.19 B.1 C.6 D.8
20.有以下程序:
main()
{int X,i;
for(i=1;i<=50;i++)
{x=i;
if(X%2=O)
if(x%3=O)
if(X%7=0) .
printf("%d,i)";
)
)
輸出結果是( )。
A.28
B.27
C.42
D.41
21.以下程序的輸出結果是( )。
main()
{int a[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%d\n",s);
}
A.18
B.19
C.20
D.21
22.有下列程序:
main()
{ int k=5;
while(--k) printf("%d",k=1);
printf("/n");
)
執(zhí)行后的輸出結果是( )。
A.1
B.2
C.4
D.死循環(huán)
23.若有定義:“int a[2][3];”,則對a數(shù)組的第i行第J列元素的正確引用為( )。
A.*(*(a+i)+j)
B.(a+i)[j]
C.*(a+i+j)
D.*(a+i)+j
24.下列能正確進行字符串賦值的是( )。
A.char s[5]={"ABCDE"};
B.char s[5]={’A’,’B’,’C’,’D’,’E’}; 、
C.char*S;S="ABCDE";
D.char*s;printf("%《",s);
25.在“文件包含,預處理語句的使用形式中,當#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是( )。
A.直接按系統(tǒng)設定的標準方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設定的標準方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當前目錄
26.有下列程序:
main()
{int i,j,x=0;
for(i=0,i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++:
)
x++:
}
printf("x=%d\n"x);
}
程序執(zhí)行后的輸出結果是( )。
A.x=4
B.x=8
C.x=6
D.x=12
27.有下列程序:
int funl(double a){return a*=a;} 、
int fun2(double x,double y)
{double a=0,b=0;
a=funl(x);b=funl(y);return(int)(a+b);
)
main()
{double w;w=fun2(1.1,2.0),……}
程序執(zhí)行后變量w中的值是( )。 、
A.5.21 B.5 C.5.0 D.0.0
28.有下列程序:
main()
{int i,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序執(zhí)行后的輸出結果是( )。
A.45
B.20
C.25
D.36
29.有下列程序:
int fun(int n)
{if(n= =1))return l;
else
return(n+fun(n-1)):
}
main()
{ int x;
seanf("%d",&x);x=fun(x);printf("%d\n",x);
}
執(zhí)行程序時,給變量x輸入l0,程序的輸出結果是( )。
A.55
B.54
C.65
D.45
30.有下列程序:
int fun(int x[],int n)
{ static int sum=0,i;
for(i=0;i return sum;
}
main()
{int a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
程序執(zhí)行后的輸出結果是( )。 、
A.45
B.50
C.60
D.55
31.有下列程序:
main()
f char*P[]={"3697","2584");
int i,j;long num=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!=’\0’)
{if((p[i][j]-t\0’)%2)num=10*num+p[j][j]-’0’;
j+=2;
)
)
printf("%d\n",num);
)
程序執(zhí)行后的輸出結果是( )。
A.35 B.37 C.39 D.3975
32.以下程序的輸出結果是( )。
main()
{ char st[20]="hell0\O\t\\\”;
printf("%d%d\n",strlen(st),sizeof(st));
}
A.9 9
B.5 20
C.13 20
D.20 20
33.若有下的定義:"int t[3][2];",能正確表示t數(shù)組元素地址的表達式是( )。
A.&t[3][2]
B.t[3]
C.t[l]
D.t[2][2]
34.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END 代表的起始點是( )。
A.文件開始
B.文件末尾
C.文件當前位置
D.以上都不對
35.下述程序的輸出結果是( )。
#include
main()
{int i;
for(i=1;i<=10;i++)
{if(i*i>=20)&&(i*i<=lOO))
break;
}
printf("%d\n",i*i);
)
A.49
B.36
C.25
D.64
36.若有定義“int b[8],*p=b;”,則p+6表示( )。
A.數(shù)組元素b[6]的值
B.數(shù)組元素b[6]的地址
C.數(shù)組元素b[7]的地址
D.數(shù)組元素b[0]的值加上6
37.設變量已正確定義,則以下能正確計算f=n!的程序是( )。
A.f=0; for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
38.下述程序執(zhí)行的輸出結果是( )。
#include
main()
{char a[2][4]; ,strcpy(a。"are");strcpy(a[1],"you");
a[o][3]=’&’;
printf("%s\n",a);
)
A.are&you
B.you
C.are
D.&
39.設x=011050,則x=x&01252的值是( )。
A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
二、基本操作題(共18分)
請補充函數(shù)proc(),該函數(shù)的功能是計算下面公式SN的值:
SN=1+1/3十4/5+...+2N-1/SN-1
例如,當N=20時,SN=29.031674。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#include
#include
double proc(int n)
{
double s=1.0,sl=0.0;
int k;
for(【1】;k<=n;k++)
{
sl=S;
【2】
}
return 【3】 ;
)
void main()
{
int k=0:
double sum;
system("CLS");
printf("\nPlease input N=");
scanf("%d",&k);
sum=proc(k);
printf("\nS=%If",sum);
)
三、程序改錯題(共24分)
下列給定程序中,函數(shù)proc()的功能是根據整型形參n,計算如下公式的值:
Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)
例如,n中的值為l0,則應輸出0.817962。
請修改程序中的錯誤,使它能得到正確結果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include
#include
#include
double proc(int n)
{
double y=1.0;
f|****found****
int J=1; .
int i;
for(i=2;i<=n;i++)
{
j=-l*j;//****found****
y+=1/(i*i);
)
return(y);
)
void main()
{
int n=10:
system("CLS"):
printf("\nThe result is%lf\n",proc(n));
)
四、程序設計題(共18分)
編寫一個函數(shù),從傳人的M個字符中找出最長的一個字符串,并通過形參指針max傳回該串地址(用****作為結束輸入的標志)。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。
試題程序:
#include
#include
#include
char*proc(*a)[81],int num)
{
)
void main()
{
char ss[l0][81],*max;
int n,i=0;
printf("輸入若干個字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")= =0)
{
i++:
gets(ssEi]);
puts(ss[i]);
)
n=i:
max=proe(SS,n);
printf("\nmax=%s\n",max);
}
參考答案及專家詳解
一、選擇題
1.D!窘馕觥克惴ǖ目臻g復雜度,是指執(zhí)行這個算法所需的存儲空間。算法所占用的存儲空間包括算法程序所占用的空間、輸入的初始數(shù)據所占用的存儲空間、算法執(zhí)行過程中所需要的額外空間。
2.D!窘馕觥繑(shù)據的存儲結構是指數(shù)據的邏輯結構在計算機存儲空間中的存放形式,一種數(shù)據結構可以根據需要采用不同的存儲結構,用的存儲結構有順序和鏈式結構。用不同的存儲結構,其處理的效率是不同的。
3.D!窘馕觥克^的交換排序方法是指借助數(shù)據元素之間的互相交進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序通過相鄰元素的交換,逐步將線性表變成有序是一種最簡單的交換排序方法。
4.C。【解析】結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用G0T0語句。其他三項為結構化程序設計的原則。
5.D!窘馕觥课募到y(tǒng)所管理的數(shù)據文件基本上是分散、相互獨立的。相對于數(shù)據庫系統(tǒng),以此為基礎的數(shù)據處理存在3個缺點:數(shù)據冗余大、數(shù)據的不一致性、程序與數(shù)據的依賴性強。
6.C!窘馕觥棵嫦驅ο蟮脑O計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調模擬現(xiàn)實世界中的概念而不強調算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應用領域的概念角度去思考。
7.D!窘馕觥克^的后序遍歷是指,首先遍歷左子樹,然后遍歷右子樹,最后訪問根結點,并且在遍歷左、右樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根點。因此,后序遍歷二叉樹的過程也是一個遞歸過程。
8.B。【解析】軟件的過程設計是指系統(tǒng)結構部件轉換成軟件的過程描述。
9.A。【解析】模塊的.獨立性是指每個模塊保證完成系統(tǒng)要求的獨立功能,并且與其他模塊的聯(lián)系少且接口簡單。衡量軟件的模塊獨立性有內聚性和耦合性兩個定性度量標準。耦合性是模塊間互相連接緊密程度的度量。一般較優(yōu)秀的軟件設計,應盡量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,以利于提高模塊的獨立性。
10.C!窘馕觥繉ο蟮姆庋b性是指從外面看只能看到對象的外部特性,而對象的內部,其處理能力的實行和內部狀態(tài)對外是不可見的,是隱蔽的。
11.C!窘馕觥繑(shù)據庫系統(tǒng)由如下5個部分組成:數(shù)據庫(DB)、數(shù)據庫管理系統(tǒng)(DBMS)、數(shù)據庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。其中DB(DataBase)即數(shù)據庫,是統(tǒng)一管理的相關數(shù)據的集合DBMS即數(shù)據庫管理系統(tǒng),是位于用戶與操作系統(tǒng)之間的一層數(shù)據管理軟件,為用戶或應用完程序提供訪問DB的方法。由以上可知,選C為正確答案。
12.A。【解析】標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。B選項int不是表達變量類型的標識符,它不能再用做變量名和函數(shù)名。C選項d0是C語言的一個關鍵字。D選項標識符只能以字母或下劃線開始。
13.D!窘馕觥勘绢}考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯l時,表達式返回值才是1;“‖”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是l,x 14.C!窘馕觥康趌個printf函數(shù),格式說明的個數(shù)是2,而輸出項的個數(shù)是3,所以對于多余的輸出項k不予輸出;第2個printf函數(shù),有兩個%說明,第1個%后面的字符要原樣輸出。本題考查printf函數(shù)的格式。①“%x”和“%o”分別表示以十六進制和八進制無符合型輸出整型數(shù)據(不帶前導ox或o);②printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出;③格式說明與輸出項的個數(shù)也要相等,如果格式說明的個數(shù)少于輸出項的個數(shù),則對于多余的輸出項不予輸出。
15.C。【解析】函數(shù)fun(int x,int y)的功能是返回x+Y的值。在主函數(shù)中,變量a,b,c的初始值分別為 1,2,3。因此逗號表達式“a++,b++,a+b”的值等于5,表達式c++的值為3,調用于函數(shù)的表達式為“fun(5,3);”,其返回值等于8。
16.D。【解析】在x=2,y=x+3/2中,3/2=1,2+1=3,因此表達式的值為3,因為X,y為double型變量,故選擇D選項。
17.A!窘馕觥慨擷為1時,執(zhí)行case l,a自加等于l,因為case l后沒有break,接著執(zhí)行case 2,此時a的值為2,b自加為1,故選擇A選項。
18.D!窘馕觥勘绢}考查自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“‖”。自增運算符“++”出現(xiàn)在變量之前,表示先使用變量的值加1,再使用變量的值進行運算;出現(xiàn)在變量之后,表示先使用變量的值進行運算,再使用變量的值加l。當邏輯與運算符“&&”兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“‖”只要一個值為1,值就為l。根據運算符的優(yōu)先級,題中應先計算內層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達式++j=3成立,即表達式的值為l;1與任何數(shù)都為進行或(1 1)運算,結果都為1,因此k一3的表達式i++是先運算后自加,因此運算時i為 1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。
19.A!窘馕觥勘绢}考查switch語句。當i=1時,執(zhí)行case l,因為沒有遇到break語句,所以依次往下運行,“a=a+2=2,a=a+3=5”;當i=2時,執(zhí)行case 2,因為沒有遇到break語句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當i=3時,執(zhí)行case 3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a=a+2=13,a=a+3=16;當i=4時,執(zhí)行的default,a=a+3=l9,結束循環(huán)。
20.C!窘馕觥恐挥挟3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇c選鞏。
21.A!窘馕觥垦h(huán)的作用是求行下標從l到2列下標從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。
22.A!窘馕觥吭诔绦蛘Z句中,k的初始值為5,進行第l次while循環(huán)后,k自減l為4,非0,執(zhí)行循環(huán)體里的printf語句,輸出k,此時k的值變?yōu)閘。程序執(zhí)行第2次循環(huán)時,k自減l變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結果為l。
23.A!窘馕觥客ㄟ^地址來引用數(shù)組元素的方法有下列5種:
(1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+j);(4)*(a[i][j]);(5)(&a[o][0]+3*i+j)。故A正確。
24.C!窘馕觥窟x項A、B的空間不夠;字符串存儲要有結束符’\0’,且要占用一個空間,printf用來輸出 字符,不能輸入字符串。
25.D。【解析】由題目中線性鏈表的定義可知,要將q和r所指的結點交換前后位置,只要使q指向r的后一個結點,P指向r結點,r指向q結點即可。而在選項D中,r->next=q,這時r指向的節(jié)點為q;p->next=r,這時P指向的節(jié)點為r;q->next:r->next,因為r節(jié)點已經指向q,所以執(zhí)行這個語句后q又指向q,所以選項D不正確。
26.B!窘馕觥吭诘1次外層for循環(huán)中,首先x++得到x=1。進入到內層for循環(huán),只有循環(huán)j的值為奇數(shù)時,變量x的值才自加1,所以在內層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當退出內層for循環(huán)時,x=3,然后執(zhí)行x++,得到x=4。在進入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進入到內層for循環(huán),只有循環(huán)變量J的值為奇數(shù)時,變量X的值才自加1,所以在內層for循環(huán)執(zhí)行過程中,變量X的值自加l兩次,當退出內層for循環(huán)時,x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。
27.C!窘馕觥孔雍瘮(shù)funl(double a)的功能是返回a的平方值的整數(shù)部分。子函數(shù)fun2(double X, double y)的功能是返回X的平方值的整數(shù)部分與Y的平方值的整數(shù)部分的和。又因為題中變量W的定義為double型,函數(shù)fun(2)的定義為int型,按照各類數(shù)值型數(shù)據間的混合運算,整型數(shù)據被轉換為實型數(shù)據。所以雙精度型變量w的值為5.0。
28.c。【解析】在for循環(huán)語句中自變量i從0開始,每次自加2,執(zhí)行s+=*(t+i)語句,因為C語言規(guī)定數(shù)組名做表達式相當于數(shù)組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數(shù)組的第i+1個元素。所以程序運行的結果是l+3+5+7+9=25,即變量S的值等于25。
29.A!窘馕觥勘绢}在函數(shù)int fun(int n)的定義中又出現(xiàn)了對函數(shù)fun的調用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調用x=fun(x)時,當輸入10賦給變量X時,遞歸調用的過程為
fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)
=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)
=10+9++8+7+6+5+fun(4)
=10+9++8+7+6+5+4+fun(3)
=10+9++8+7+6+5+4+3+fun(2)
=10+9++8+7+6+5+4+3+2+fun(1)
=10+9++8+7+6+5+4+3+2=55
30.C!窘馕觥吭诤瘮(shù)int fun(int x[],int n)的定義中,變量sum為一個靜態(tài)局部變量。由于在整個程序運行期間,靜態(tài)局部變量在內存中的靜態(tài)存儲中占據著永久的存儲單元。函數(shù)int fun(int x[],int n)的功能是求出數(shù)組x[]各個元素的和,所以在主函數(shù)中,調用函數(shù)fun(a,5)后,變量sum=1+2+3+4+5=15,當再次調用fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。
31.D。【解析】執(zhí)行第一次for循環(huán)時,用表達式p[i][J]!=’\o’來判斷字符串數(shù)組指針P是否到達字符串的結尾,如果沒有到達,繼續(xù)執(zhí)行while中的語句。if語句表示(p[i][j]-’\o’)除2的余數(shù)不為0時,即字符串所有奇數(shù),執(zhí)行后面的語句。所以退出第1次for的循環(huán)體時,輸出為397,執(zhí)行第2次循環(huán)體。對字符串“2584”進行處理,輸出結果為5,因而最后輸出結果為3975。
32.B!窘馕觥繌念}目中可知,’\O’、’\t’、’\\’分別為一個字符,而sizeof是求字節(jié)個數(shù)的函數(shù),其中包括’\O’占的字節(jié),strlen函數(shù)是求數(shù)組長度的函數(shù);其以’\0’結束,因此strlen的值為5,sizeof的值為20。
33.C。【解析】數(shù)組的下標是從0開始的,A中越界,行下標和列下標都不能越界;B中,雖然是個地址,但是也同樣越界了;選項c中表示的是第一個的首地址;選項D表示的為其元素的值,并不是地址。
34.B!窘馕鯹SEEK_SET代表文件的開始,SEEK_END 代表文件末尾,SEEK_CUR代表文件當前位置。
35.C。【解析】當if執(zhí)行到第一個滿足(i*i>=20)&&(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下面的prinlf語句。
36.B!窘馕觥恐羔樦写娣诺氖亲兞康牡刂,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中p+6指的是將指針向后移動了6個存儲單元,即指向b[6],存放的是b[6]的地址。
37.D!窘馕觥坑蒼!的數(shù)字定義可知n!=n*(n-1)*(n-2)*…*1。在選項A中,由于f的初值為0,在for循環(huán)語句中,f依次乘以l,2,3,…,n,最后計算得到f=n!=0,所以選項A不正確。在選項B中,f的初值為l,在for循環(huán)語句中,f依次乘以l,2,3,…,(n-1),最后計算得到f=(n-1)!,所以選項B不正確。在選項C中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項C不正確。在選項D中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n-1,n-2,…,2,最后計算得到f=n!,所以選項D正確。
38.A!窘馕鯹strcpy實現(xiàn)的功能是復制,該操作把are復制到a中,aE03 E33一’&’,且strcpy(aEl], "you")把you復制到a[l]中,故輸出a為“are&you”。
39.A!窘馕觥勘绢}主要考查按位與運算,x=Oll050的二進制形式為00010010000101000,Ol252的二進制形式為0000001010101010,兩者相與得0000001000101000。
40.B!窘馕觥#include”文件名”,預處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標準目錄搜索。
二、基本操作題程序填空題
【1】k=2【2】s+=(2*k一1)/sl【3】s
【解析】由題目中所給公式可知,多項武的第一項為1。變量s中存放多項式的和,其初始值為l。因此,循環(huán)從第二項開始,因此,【1】處填“k=2”;變量sl中存放各項表達武的值,由公式可知,【2】處填“s+=(2*k-1)/sl”;題目中要求將多項式的和返回到主函數(shù)當中,因此,【3】處填“s”。
三、程序改錯題
(1)錯誤:int j=1;正確:double j=1.0;
(2)錯誤:y+=1/(i*i); 正確:y+=j/(i*i);
【解析】由函數(shù)proc()可知,變量j的作用是控制每一項符號的變化,并且作為運算的分子,應改為double型變量。因此,“int j=1;”應改為“double j=1.0;”。變量y中存放多項式的值,多項式中的每一項符號由變量j決定。因此,“y+=1/(i*i);”應改為“y+=j/(i*i);”。
四、程序設計題
char*proc(*a)[81],int M)
{
char*max;
int i=0:
max=a[O]:
for(i=0;i if(strlen(max) max=a[i];
return max; //返回最長字符串的地址
}
【解析】本題首先要定義一個字符指針用于保存最長的字符串,并使其初始值指向第一個字符串;再循環(huán)遍歷字符串數(shù)組,通過if語句比較字符串的長度,并把最長的字符串地址賦給字符指針;最后返回最長字符串的地址。
二級c語言上機題庫 2
(1)算法的時間復雜度是指_______。
A)執(zhí)行算法程序所需要的時間
B)算法程序的長度
C)算法執(zhí)行過程中所需要的基本運算次數(shù)
D)算法程序中的指令條數(shù)
答案:C
評析:所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。
(2)下列敘述中正確的是________。
A)線性表是線性結構B)棧與隊列是非線性結構
C)線性鏈表是非線性結構D)二叉樹是線性結構
答案:A
評析:一般將數(shù)據結構分為兩大類型:線性結構與非線性結構。線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
(3)下面關于完全二叉樹的敘述中,錯誤的是_________。
A)除了最后一層外,每一層上的結點數(shù)均達到最大值
B)可能缺少若干個左右葉子結點
C)完全二叉樹一般不是滿二叉樹
D)具有結點的完全二叉樹的深度為[log2n]+1
答案:B
評析:滿二叉樹指除最后一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最后一層外,每一層上的結點數(shù)均達到最大值,在最后一層上只缺少右邊的若干子結點(葉子結點)的二叉樹。
C語言筆試題答案篇
(1)結構化程序設計主要強調的是_________。
A)程序的規(guī)模B)程序的易讀性
C)程序的執(zhí)行效率D)程序的可移植性
答案:B
評析:結構化程序設計主要強調的是結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以保證程序的正確性。
(2)在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是________。
A)概要設計B)詳細設計C)可行性分析D)需求分析
答案:D
評析:需求分析是對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。
(3)數(shù)據流圖用于抽象描述一個軟件的邏輯模型,數(shù)據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數(shù)據流圖合法圖符的是_________。
A)控制流B)加工C)數(shù)據存儲D)源和潭
答案:A
評析:數(shù)據流圖從數(shù)據傳遞和加工的角度,來刻畫數(shù)據流從輸入到輸出的移動變換過程。數(shù)據流圖中的主要圖形元素有:加工(轉換)、數(shù)據流、存儲文件(數(shù)據源)、源和潭。
(4)軟件需求分析一般應確定的是用戶對軟件的__________。
A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求
答案:D
評析:軟件需求分析中需要構造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,是用戶明確自己的任務。因此,需求分析應確定用戶對軟件的`功能需求和非功能需求。
C語言筆試題答案篇
(1)下述關于數(shù)據庫系統(tǒng)的敘述中正確的是________。
A)數(shù)據庫系統(tǒng)減少了數(shù)據冗余
B)數(shù)據庫系統(tǒng)避免了一切冗余
C)數(shù)據庫系統(tǒng)中數(shù)據的一致性是指數(shù)據類型的一致
D)數(shù)據庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據
答案:A
評析:由數(shù)據的共享自身又可極大地減少數(shù)據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據的不一致性。所謂數(shù)據的一致性是指在系統(tǒng)中同一數(shù)據的不同出現(xiàn)應保持相同的值。
(2)關系表中的每一橫行稱為一個________。
A)元組B)字段C)屬性D)碼
答案:A
評析:在關系數(shù)據庫中,關系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數(shù)據,每行數(shù)據稱為元組。
(3)數(shù)據庫設計包括兩個方面的設計內容,它們是________。
A)概念設計和邏輯設計B)模式設計和內模式設計
C)內模式設計和物理設計D)結構特性設計和行為特性設計
答案:A
評析:數(shù)據庫設計可分為概念設計與邏輯設計。概念設計的目的是分析數(shù)據間內在語義關聯(lián),在此基礎上建立一個數(shù)據的抽象模型。邏輯設計的主要工作是將ER圖轉換為指定的RDBMS中的關系模型。
(4)請讀程序:
#include
main
{
int a;float b,c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(” a=%d,b=%ec。%f ”,a,b,C);
}
若運行時從鍵盤上輸入9876543210l,則上面程序的輸出結果是________。
A)a=98,b=765,c=432 1
B)a=1 0,b=432,c=8765
C)a=98,b=765.000000,c=432 1.000000
D)a=98,b=765.0,c=432 1.0
答案:C
評析:scanf把用戶從鍵盤錄入的數(shù)字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。
(5)一個良好的算法由下面的基本結構組成,但不包括__________。
A)順序結構B)選擇結構C)循環(huán)結構D)跳轉結構
答案:D
評析:1966年,Bohra和Jacopini提出了以下三種基本結構,用這三種基本結構作為表示一個良好算法的基本單元:1、順序結構;2、選擇結構;3、循環(huán)結構。
(6)請選出以下程序的輸出結果________。
#include
sub(x,y,z)
int x,y,星符號z:
{星符號z變化,所以此次函數(shù)被調用后,a的值為y-x=-5,同理可知,在sub(7,a,&b)后,b的值發(fā)生變化,其值為-5-7=-12,在sub(a,b,&C)后,c的值發(fā)生變化,其值為-12-(-5)=-7。
(7)下面程序在屏幕上的輸出是________。
main
{
printf(”ab c”);
}
A)ab c B)a c C)abc D)ab c
答案:B
評析:c語言中允許使用一種特殊形式的字符常量,、就是以一個“”開頭的字符序列,這樣的字符稱為“轉義字符”。常用的轉義字符有:,換行;,水平制表;,退格;,回車。
(8)若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是_______。
A)pb=&x; B)pb=x; C)星符號pb=星符號、/)還包括自增自減運算符(++、–),在c語言解析表達式時,它總是進行貪婪咀嚼,這樣,該表達式就被解析為i++ ++ +i,顯然該表達式不合c語言語法。
(10)若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元
int星符號int) D)(int星符號)
答案:D
評析:不論p是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格式為(數(shù)據類型+)。
(11)下面程序輸出的結果是__________。
main
{
int i=5,J=9,x;
x=(I==j?i:(j=7));
printf(” %d,%d”,I,J);
}
A)5,7 B)5,5 C)語法錯誤D)7,5
答案:A
評析:條件表達式的一般形式為:表達式I?表達式2:表達式3;先求解表達式1,若為真則求解表達式2;若表達式l的值為假,則求解表達式3。本題中先判斷i==j,不等,執(zhí)行j=7;然后執(zhí)行x=7。故本題為A。
【二級c語言上機題庫】相關文章:
2017計算機二級C語言上機最終預測題12-11
計算機二級VF上機題庫及答案03-19
計算機二級《C語言》選擇題題庫及答案11-16
計算機二級C語言上機編程題詳細分析11-08
2017計算機二級C語言上機測試題附答案03-30
2016年計算機二級C語言上機考試技巧03-13