2021年福建省泉州市全國計算機等級考試C語言程序設計_第1頁
2021年福建省泉州市全國計算機等級考試C語言程序設計_第2頁
2021年福建省泉州市全國計算機等級考試C語言程序設計_第3頁
2021年福建省泉州市全國計算機等級考試C語言程序設計_第4頁
2021年福建省泉州市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2021年福建省泉州市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.C語言中標準庫函數(shù)fputs(str,fp)的功能是()。

A.從str指向的文件中讀一個字符串存入fp指向的內(nèi)存

B.把str所指的字符串輸出到fp所指的文件中

C.從fp指向的文件中讀一個字符串存入str指向的內(nèi)存

D.把fp指向的內(nèi)存中的一個字符串輸出到str指向的文件

2.下面程序的運行結果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.負數(shù)C.正數(shù)D.無確定值

3.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

4.請問對一個排好序的數(shù)組進行查找,時間復雜度為()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

5.如有inta=11;則表達式(a++*1/3)的值是()。

A.0B.3C.4D.12

6.判定一個順序棧st(最多元素為MaxSize)為滿的條件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

7.用不帶頭結點的單鏈表存儲隊列時,其隊頭指針指向隊頭結點,其隊尾指針指向隊尾結點,則在進行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

8.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

9.在一個長度為n(n>1)的單鏈表上,設有頭和尾兩個指針,執(zhí)行()操作與鏈表的長度有關。

A.刪除單鏈表中的第一個元素

B.刪除單鏈表中的最后一個元素

C.在單鏈表第一個元素前插入一個新元素

D.在單鏈表最后一個元素后插入一個新元素

10.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此處do-while循環(huán)的結束條件是

A.P的值不等于12345并且n的值小于3

B.P的值等于12345并且n的值大于等于3

C.P的值不等于12345或者n的值小于3

D.P的值等于12345或者n的值大于等于3

11.

12.以下選項中是非轉義字符的是()。

A.‘\d’B.‘\t’C.‘\b’D.‘\r’

13.下列程序段的輸出結果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

14.若有定義“intx[10],*pt=x;”,則對x數(shù)組元素的引用正確的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

15.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

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

A.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉換成二進制的機器指令

B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件

C.用C語言編寫的程序稱為源程序,它以ASCII形式存放在一個文本文件中

D.C語言源程序經(jīng)編譯后生成擴展名為.obj的目標文件

17.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。

A.先序遍歷B.中序遍歷C.后序遍歷D.按層遍歷

18.以下不屬于C語言整數(shù)的是()。

A.12fB.25uC.-32D.+20L

19.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

20.軟件生命周期是指()。

A.軟件的定義和開發(fā)階段

B.軟件的需求分析、設計與實現(xiàn)階段

C.軟件的開發(fā)階段

D.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

二、2.填空題(20題)21.若有定義:doubleW[10],則W數(shù)組元素下標的上限為【】,下限為【】。

22.設有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。

23.執(zhí)行以下程序后,輸出“#”的個數(shù)是【】。

#include<stdio.h>

main()

{inti,j;

for(i=1;i<5;i++)

for(j=2;j<=i;j++)putchar('#');

}

24.以下程序的輸出結果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

25.本程序用改進冒泡法對數(shù)組a[n]的元素從小到大排序,請在程序空白處填空。

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

for(j=0;j<jmax;j++)

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

26.以下程序段的輸出結果是【】。

inti=9;

printf("%o\n",i);

27.以下程序調(diào)用函數(shù)swap_p將指針s和t所指單元(a和b)中的內(nèi)容交換,請?zhí)羁铡?/p>

main()

{inta=10,b=20,*s,*t;

s=&a;t=&b;

swap_p(【】);

printf("%d%d,a,b");}

swap_p(int**ss,int**tt)

{intterm;

term=**ss;

**ss=**tt;

**tt=term;}

28.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

29.在計算機領域中,通常用英文單詞“Byte'’表示【】。

30.下列程序的運行結果是______。

#definePOW(r)(r)*?

main()

{intx=3,y=2,t;

t=POW(x+y);

printf("%d\n",t);

}

31.若采用直接插入法對字母序列(W,S,E,L,X,G,I)進行排序,使字母按升序排列,那么第一次排序的結果為【】。

32.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。

33.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

34.下列程序的輸出結果是______。

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

35.下列程序的運行結果為【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

36.軟件的【】設計又稱為總體結構設計,其主要任務是建立軟件系統(tǒng)的總體結構。

37.在關系運算中,【】運算是在給定關系的某些域上進行的運算。

38.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結構的改變,如存儲設備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結構,從而不引起應用程序的變化,稱為______。

39.請用位運算實現(xiàn)下述目標(設16位二進制數(shù)的最低位為零位):

(1)輸出無符號正整數(shù)m的第i個二進制位的數(shù)值。

(2)將m的第i個二進制位置1,其余的位不變,然后輸出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

scanf("%d%d",&m,&i);

k=【】;

printf("%d\n",k);

k=pow(2,i);

m=【】;

printf("%d\n",m);

}

40.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)

______;

for(i=0;i<9;i++)

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

三、1.選擇題(20題)41.執(zhí)行以下程序段后,m的值為______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));

A.15B.14C.13D.12

42.下列關于線性鏈表的描述中正確的是()。

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且各前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

43.下列敘述中正確的是______。

A.程序設計就是編制程序

B.程序測試必須由程序員自己去做

C.程序經(jīng)調(diào)試改錯后還應進行再測試

D.程序經(jīng)調(diào)度改錯后不必進行再測試

44.設已包含頭文件<string.h>,下列程序段的運行結果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

A.3B.4C.6D.5

45.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.++b;C.a=a++=5;D.a=double(b);

46.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做

A.軟件投機B.軟件危機C.軟件工程D.軟件產(chǎn)生

47.若有以下定義,則對a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

48.軟件工程的結構化生命周期方法,通常是將軟件生命周期劃分為計劃、開發(fā)和運行3個時期,下列選項中的______工作應屬于軟件開發(fā)期的內(nèi)容。

①需求分析

②可行性研究

③總體設計

④問題定義

A.①和②B.①和③C.①、②和④D.全部

49.以下選項中可作為C語言合法常量的是()。

A.-80B.-80C.-80.0D.-80.0e

50.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

B.C程序書寫格式嚴格,要求一行內(nèi)只能寫一個語句

C.C程序書寫格式自由,一個語句可以寫在多行上

D.用C語言編寫的程序只能放在一個程序文件中

51.下列敘述中正確的是A.線性表是線性結構B.棧與隊列是非線性結構C.線性鏈表是非線性結構D.二叉樹是線性結構

52.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

53.若有代數(shù)式

(其中P僅代表自然對數(shù)的底數(shù),不是變量),則下列能夠正確表示該代數(shù)式的C語言表達式是()。

A.sqrt(abs(n^x+e^x))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(fabs(pow(n,x)+exp(x)))

D.sqrt(fabs(pow(x,n)+exp(x)))

54.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

55.若有語句:char*line[5];以下敘述中正確的是()。

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的.號稱為求地址運算符

D.定義line是一個指向字符型函數(shù)的指針

56.以下不是面向對象思想中的主要特征的是

A.多態(tài)B.繼承C.封裝D.垃圾回收

57.分析下列程序:#include<stdio.h>main(){int*p1,*p2,*p;inta=6,b=9;p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("%d,%d",*p1,*p2);printf("%d,%d",a,b);}程序的輸出結果為()。

A.9,66,9B.6,99,6C.6,96,9D.9,69,6

58.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n",j);}

程序運行后的輸出結果是

A.4B.3C.2D.1

59.有以下程序:main(){inti=1,j=2,k=3;if(i++==l&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k):}程序運行后的輸出結果是()。

A.123B.234C.223D.233

60.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

四、選擇題(20題)61.一名教師可講授多門課程,一門課程可由多名教師講授。則實體教師和課程間的聯(lián)系是()。

A.1:l聯(lián)系B.1:m聯(lián)系C.m:l聯(lián)系D.m:n聯(lián)系

62.對如下二叉樹進行后序遍歷的結果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

63.

64.在面向對象方法中,不屬于“對象”基本特點的是A.一致性B.分類性C.多態(tài)性D.標識唯一性

65.

66.有以下程序:

程序運行后的輸出結果是()。

A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

67.有以下程序

68.有以下程序

prt(int*m,intn)

{

inti;

for(i=0;i<n;i++)

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

for(i=0;i<5;i++)

printf("%d,",a[i]);

}

程序運行后的輸出結果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

69.

則以下選項中錯誤的表達式是()。

A.

B.

C.

D.

70.排序的一個重要目的是為了對已排序數(shù)據(jù)進行

A.合并B.打印輸出C.查找D.分類

71.

72.有以下程序:

程序運行后的輸出結果是()。

A.02356B.0235C.235D.2356

73.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

74.

有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

程序執(zhí)行后的輸出結果是()。

A.7B.3C.2D.0

75.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達式a/b+C—k值的類型為:()。

A.intB.doubleC.floatD.char

76.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

printf("%d",a);printf("%d\n",b);

}

編譯時編譯器提示錯誤信息,你認為出錯的語句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

77.設文件指針fp已定義,執(zhí)行語句fp=fopen(”61e”,”W”);后,以下針對文本文件file操作敘述的選項中正確的是()。

A.只能寫不能讀B.寫操作結束后可以從頭開始讀C.可以在原有內(nèi)容后追加寫D.可以隨意讀和寫

78.有以下程序:

程序運行后的輸出結果是()。

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

79.以下能正確定義一維數(shù)組的選項是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

80.

五、程序改錯題(1題)81.下列給定程序的功能是:讀入一個整數(shù)n(2<;=n<;=5000),打印它的所有為素數(shù)的因子。例如,若輸入整數(shù)1234,則應輸出2,617。請修改程序中的錯誤,使程序能得出正確的結果。注意:不要改動main()函數(shù),不能增選或刪行,也不能更改程序的結構。試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和。號。請編寫函數(shù)fun,其功能是:將字符串尾部的。號全部刪除,前面和中間的*號不動。

參考答案

1.B函數(shù)fputs(str,fp)的功能是把str所指的字符串輸出到fp所指的文件中。故本題答案為B選項。

2.C

3.D解析:本題考查語句的基本構成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。

4.B

5.B

6.D

7.D

8.AB選項中運算符“%”的運算對象為整數(shù)。C選項中不能將變量賦給表達式“x+n”。D選項中不能將表達式“4+1”賦給常量5。故本題答案為A選項。

9.B

10.D解析:本題考查的知識點是do-while循環(huán)結構循環(huán)執(zhí)行條件的判斷.使用do-while語句必須注意以下幾點:

先執(zhí)行語句,后判斷表達式。所以,無論一開始表達式的值為“真”還是“假”,循環(huán)體中的語句至少執(zhí)行一次,這一點與while不同,

如果do-while語句循環(huán)體部分是由多個語句組成,則必須用花括號括起來,使其形成復合語句。

C語言中的do—while語句是在表達式“真”時重復執(zhí)行循環(huán)體。

在本題中,循環(huán)執(zhí)行判斷條件為while后面括號里的表達式即p!=12345&&n<3(意思為p不等于12345且n小于3)是否為“真”,由此可得循環(huán)結束的條件為:p大于12345或者p小于12345又或者n大于等于3。選項A的意思是:p的值不等于12345并且n的小于3和while后面括號里的表達式等價是循環(huán)執(zhí)行的條件而不是循環(huán)結束的條件,所以選項A不正確;選項B的意思是:p的值等于12345并且n的值大于3,不是循環(huán)結束的條件一個子集,所以選項B不正確;選項C的意思是:p的值不等于12345或者n的值小于3前一半是結束條件的子集,后一部分不是結束條件,所以選項C不正確;選項D描述的意思是:p的值等于12345或者你的大于等于3是結束條件的子集,所以選項D滿足題意。所以4個選項中D正確。

11.C

12.AC語言中,轉義字符又稱反斜線字符,這些字符常量總是以一個反斜線開頭后加一個特定的字符。題干中,‘\\t’表示橫向跳若干格,‘\\b’表示退格符,‘\\r’表示回車符,選項B、C、D正確,選項A錯誤。故本題答案為A選項。

13.C解析:將變量a按位求反,再與b按位與,最后左移1位。9的二進制表示為00001001,020的二進制表示為00010000。a按位求反為11110110,再與b按位與結果為00010000,左移1位結果為00100000。按八進制輸出為040。

14.D選項A中,“pt+3”使指針變量Pt移動3個單元,指向第4個元素,不能正確引用。運算符“*”與“&”放在一起,其作用相互抵消,且下標10超出了數(shù)組下標范圍,所以B選項錯誤?!?(pt+i)”表示引用指針pt所指元素后的第i個元素,引用數(shù)組第11個元素,C選項錯誤。故本題答案為D選項。

15.D

16.AC語言中的非執(zhí)行語句不會被編譯,不會被轉換成二進制的機器指令,所以A選項錯誤。由C語言構成的指令序列稱為C語言源程序,C語言源程序經(jīng)過C語言編譯程序編譯之后,生成一個擴展名為.obj的二進制文件(稱為目標文件);最后要由“連接程序”把此目標文件與C語言提供的各種庫函數(shù)連接起來生成一個擴展名為.exe的可執(zhí)行文件。故本題答案為A選項。

17.A

18.AC語言中整型常量,從表示形式來看,有十進制、八進制或十六進制;從符號位來看,有有符號整數(shù)和無符號整數(shù)兩類。選項A的“12f”是float類型的實數(shù),不是整數(shù);選項B的“25u”屬于無符號整數(shù);選項C的“-32”是十進制形式的有符號整數(shù);選項D的“+20L”是十進制形式的長整數(shù)。故本題答案為A選項。

19.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

20.D通常把軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用、退役的過程稱為軟件生命周期。選項A、B、C選項均為生命周期的一部分。故選D選項。

21.90

22.100100解析:本題考查帶參數(shù)的宏定義及相關運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。

23.66解析:本題考察的是一個嵌套的循環(huán),當滿足j<=i時,輸出一個“#”號,符合條件的有i=2,j=2;i=3,j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共輸出6個“#”。

24.JD

25.n-1jn-1\r\nj解析:此題采用了do…while循環(huán)內(nèi)嵌for循環(huán)的雙層循環(huán)結構來實現(xiàn)了數(shù)組元素的排序。數(shù)組元素通過首地址和數(shù)組下標的方式來引用的。

26.1111解析:本題考核的知識點是printf()函數(shù)的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,9的八進制數(shù)的表示為11。

27.&s&t&s,&t解析:指針做函數(shù)參數(shù)時,形參和實參指向同一個數(shù)據(jù),所以函數(shù)中對形參所指向的數(shù)據(jù)的改變也能影響到實參。本題中函數(shù)swap_p的形參為指向指針的指針,即雙重指針,原理跟普通的指針是一樣的。注意:通過指針來引用一個存儲單元。

28.x+=1x+=1解析:本題考查“++”,“--”運算符?!?+”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

29.字節(jié)字節(jié)

30.解析:本題考查帶參數(shù)的宏的定義及相關運算。運算過程為:t=POW(x+y)=(2+3)*(2+3)=25。

31.SWELXGI

32.log2n

33.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數(shù)組指定位置,并通過j++將下標加1,指向下一元素要存儲的位置。

34.考查ifelse語句,n=4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。\r\n\r\n

35.7467

36.概要概要

37.投影投影解析:在關系運算中,投影運算是在給定關系的某些域上進行的運算。

38.物理獨立性物理獨立性解析:數(shù)據(jù)的物理結構改變,不影響數(shù)據(jù)庫的邏輯結構,從而不引起應用程序的變化,這種性質(zhì)叫做物理獨立性。

39.#include"math.h"m>>i&1m|k

40.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。

41.A

42.A解析:線性表的鏈式存儲結構中的結點空間是動態(tài)生成的,它們在內(nèi)存中的地址可能是連續(xù)的,也可能是不連續(xù)的。

43.C解析:軟件測試包括需求分析、結構功能模塊設計、編制程序等階段。程序的測試可以由專門的測試人員來完成。程序經(jīng)調(diào)試改錯后還應進行再測試。

44.A解析:頭文件<string.h>是字符串處理函數(shù)對應的頭文件,要想調(diào)用C語言的庫函數(shù)時,都要在程序中嵌入該函數(shù)對應的頭文件,否則無法使用庫函數(shù)。

strcpy(s1,s2)把s2中的字符串復制到s1中,所以結果就為s2的長度。

45.B解析:要解答此題只要知道兩個知識點:①在C語言中規(guī)定進行強制類型轉換的格式是:(double)變量名;②在C語言中不允許給表達式賦值。

46.B解析:軟件工程概念的出現(xiàn)源自軟件危機。所謂軟件危機是泛指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題??傊梢詫④浖C歸結為成本、質(zhì)量、生產(chǎn)率等問題。

47.D本題考查如何引用數(shù)組元素的地址。選項A)中,p5引用的是af51的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤;選項B)中,*a1指的是將數(shù)組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數(shù)組的首地址。

48.B

49.A

50.C

51.A根據(jù)數(shù)據(jù)結構中各數(shù)據(jù)元素之間前后件關系的復雜程度,一般將數(shù)據(jù)結構分為兩大類型:線性結構與非線性結構。如果一個非空的數(shù)據(jù)結構滿足下列兩個條件:1,有且只有一根節(jié)結點,2,每一個結點最多有一個前件,也最多有一個后件,則稱該數(shù)據(jù)結構為線性結構,又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。

52.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達式是不能獨立成為語句的,答案B使用了C語言的自減運算符它就相當于D=D-1,所以答案B為一賦值語句。

53.C解析:n和e的x冪次方,要分別調(diào)用C語言的數(shù)學庫函數(shù)doublepow(n,x)和doubleexp(x),因為這兩個函數(shù)的返回值都為double型,對兩者的和計算絕對值,調(diào)用庫函數(shù)doublefabs(pow(n,x)+exp(x)),求出和的絕對值,再調(diào)用開平方函數(shù)doublesqrt(fabs(pow(n,x)+exp(x))),這樣計算出的結果就是題干中表達式的值。

54.C解析:主函數(shù)中定義了一個整型變量a,一個整型指針變量b和一個二級指針變量c,并讓c指向指針變量b,讓指針b指向整形變量a,所以**c為變量a的值,所以,4個選項中選項C符合題意。

55.A解析:由于運算符[]優(yōu)先級比*高,所以line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量。

56.D解析:面向對象思想中的三個主要特征是:封裝性、繼承性和多態(tài)性。

57.A解析:通過p1=&a,p2=&b分別將a、b的地址賦給指針p1、p2,接著執(zhí)行if語句,發(fā)現(xiàn)a<b成立,則通過交換p1、p2的值,即交換a、b所在存儲單元的地址,但是a、b的值并沒有發(fā)生變化。

58.B解析:在main函數(shù)中,對f(1)和f(2)的值進行了累加。

f(1)=1

f(2)=f(1)+1=2

最后,j的值為1+2=3

59.D解析:本題的考點是關于C語言的邏輯表達式的計算規(guī)則。對于邏輯表達式“i++==1&&(++j==3||k++==3)”,首先判斷“i++==1”,由于i初值為1,“i++==1”為真,同時i加1值為2。由于第一項為真,對于“&&”運算符,結果取決于后一項“(++j==3||k++==3)”。而邏輯表達式“(++j==3||k++==3)”計算時,首先判斷“++j==3”,由于j初值為2,++j后j值為3,“++j==3”為真,對于“||”運算符不需要判斷后一項表達式的結果就可以斷定此邏輯表達式結果為真,因此“k++==3”并沒有進行判斷,k++也未執(zhí)行,k仍是初值3,輸出結果應該是233。正確選項是D。

60.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達式,(p+9)來引用。因此,當指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

61.D因為一名教師可講授多門課程,而一門課程又能由多名教師講授,所以教師和課程之間是多對多的關系,可以表示為m:n,選擇D)。

62.D解析:后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。

63.B

64.A對象具有如下特性:標識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性。

65.C

66.DCou血ue的作用是跳出循環(huán)體中剩余的語句而進行下一次循環(huán)。第一次循環(huán)x的值為8,循環(huán)體中if條件成立,打印x的值8后將x減1,再執(zhí)行continue語句,跳出本次循環(huán)。第二次判斷循環(huán)條件時,x的值變?yōu)?,不滿足循環(huán)體內(nèi)if條件,執(zhí)行打印一一x的操作,即打印5后跳出循環(huán)。第三次判斷循環(huán)條件時x的值為4,滿足循環(huán)體中if條件,執(zhí)行打印x一一的操作,即打印4,后將x值減一,執(zhí)行continue語句,跳出本次循環(huán)。第四次判斷循環(huán)條件時x的為2,滿足循環(huán)體中if條件,打印x一一,即打印2后將x減一,執(zhí)行continue語句,跳出本次循環(huán)。在進行for條件表達式中第三個表達式x一一的操作后x的值為0,不滿足條件結束循環(huán)。所以打印結果為8,5,4,2,。

67.A外層循環(huán)i,值分別為l23,內(nèi)層循環(huán)j分別為l23、23和3,所以答案為A)。

68.C用數(shù)組名作為函數(shù)實參時,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共同占用同一段內(nèi)存單元。本題通過“prt(a,5);”將數(shù)組a的首地址傳遞給了指針變量m,使指針變量m指向數(shù)組a的首地址,那么,對指針變量所指向的存儲單元的內(nèi)容的改變就是對數(shù)組a中的元素的改變。題中函數(shù)prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數(shù)組a中的值也隨之變化,所以。輸出的數(shù)組元素的值為2,3,4,5,6,。

69.C選項c)中int(f)不正確,因為強制類型轉換表示為:(類型名)(表達式),正確表示為(int)f.

70.C排序是計算機程序中一種重要的操作,它的功能是將任意一個數(shù)據(jù)元素序列排成有序的數(shù)據(jù)元素序列;而查找是要在數(shù)據(jù)元素序列中找到一個與之相符的結果。不難看出,如果數(shù)據(jù)元素序列有序,則查找起來就方便很多。因此,排序的一個重要目的是為了對已排序數(shù)據(jù)進行查找。

71.D

72.Ck的值為5,逐個對caBe語句進行匹配,均不匹配,執(zhí)行default下的語句n=0;k一一。再執(zhí)行case2:ca804:后面的語句n+=2;k一一;。執(zhí)行break語句跳出switch判斷,打印n的值,即2。經(jīng)過第一次循環(huán)后,k的值為3,然后進行k>0&&ll<5條件判斷為真。第二次執(zhí)行循環(huán)體,執(zhí)行case3:后面的語句n+=1;k一一;。再執(zhí)行break語句跳出循環(huán),此時打印n的值3,此時k的值為2。第三次執(zhí)行循環(huán)體k的值為2,滿足條件,執(zhí)行case2:case4:后面的語句n+=2;k一一;。執(zhí)行break語句跳出循環(huán)體。打印n的值5。此時n不滿足條件k>0&&n<5,所以結束循環(huán)。整個程序的打印結果為235。

73.B本題考查按位異或的用法。按位異或運算的規(guī)則是:兩個運算數(shù)的相應二進制位相同,則結果為0,相異則結果為1。b=2的二進制為00000010,a=1的二進制為00000001,a=a^b=00000011,轉化為十進制后為3,b=b^a=00000010-00000011=00000001,即1。

74.C

\n在函數(shù)funlintx)中,有個if語句判斷,如果參數(shù)x等于0或1時,返回值,否則進入下面的p=x-fun(x-2)遞歸函數(shù)。當在主函勢中調(diào)用fun(7)時,其過程為:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的輸出結果為2。

\n

75.B雙目運算中兩邊運算量類型轉換規(guī)律:

運算數(shù)1\t\t\t\r\n\t\t\t\t\t運算數(shù)2\t\t\t\t\r\n\t\t\t\t\t轉換結果類型\t\t\t\t\r\n\t\t\t\t\t短整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t短整型一>長整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t整型一>長整型\t\t\t\t\r\n\t\t\t\t\t字符型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t字符型一>整型\t\t\t\t\r\n\t\t\t\t\t有符號整型\t\t\t\t\r\n\t\t\t\t\t無符號整型\t\t\t\t\r\n\t\t\t\t\t有符號整型一>無符號整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t浮點型\t\t\t\t\r\n\t\t\t\t\t整型一>浮點型\t\t\t\t\r\n\t在a/b的時候,a,b的類型不一致,根據(jù)類型轉換規(guī)則,把整型轉換成double類型,之后的加、減類似。轉化規(guī)則為char,short一>int->unsigned->long->double←float。

76.A\n本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進行賦值時沒有錯誤。a=/*p+m賦值,在c語言中'/*'表示的注釋,所以答案選擇A。

\n

77.A考查文件操作函數(shù)fopen的基礎知識,以”W”方式打開文件,只能寫不能讀。選項A正確。

78.A本題重點考察函數(shù)的調(diào)用,首先要了解字母對應的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(shù)形參和實參的問題,運行過程如下:在fun(&b,a)中,}c=.a(chǎn)-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);輸出b,B,因為指針c指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。

79.B解析:選項A定義數(shù)組時省略了長度,而C語言中規(guī)定,只有在定義并同時進行初始化時,數(shù)組的長度才可以省略,數(shù)組的長度為初始化時候的成員個數(shù),故選項A錯誤;在C語言中規(guī)定,數(shù)組的長度必須是一個整數(shù)或整型常量表達式,故選項C不正確:定義時數(shù)組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。

80.D

81.(1)錯誤:Prime(intm);

正確:Prime(intm)

(2)錯誤:if!(m%j)

正確:if(!(m%j))

【解析】(1)第一個標識下面的“Prime(intm);”在程序中顯然是一個函數(shù),因此應將后面的分號去掉。

(2)第二個標識下面的for語句最簡單的應用形式為:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語句。顯然if語句后面缺少括號,因此,“if!(m%j)”改為“if(!(m%j))”。

本題主要考查標點符號、運算符、基本定義。

82.

voidfun(char*a){

while(*a!=’、0。)

a++:

a一一;/*指針a指向字符串的尾部*/while(}a==’*。)

a一一;/·指針a指向最后一個字母*/

*(a+1)=’、0’;/*在字符串最后加上結束標志符·/

【考點分析】

本題考查:刪除字符串尾部*號;刪除的主要思想是把不刪除的字符保留起來。

【解題思路】

對于一個字符串要刪除其尾部的*號,只需要在最后一個不是*號的字符后面加上結束符號‘、0’。具體操作為:首先找到字符串的結尾,然后從最后一個字符開始往前逐個判斷是否為*號,直到找到非·號字符為止。最后在該字符后面加上結束符號’\0。2021年福建省泉州市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.C語言中標準庫函數(shù)fputs(str,fp)的功能是()。

A.從str指向的文件中讀一個字符串存入fp指向的內(nèi)存

B.把str所指的字符串輸出到fp所指的文件中

C.從fp指向的文件中讀一個字符串存入str指向的內(nèi)存

D.把fp指向的內(nèi)存中的一個字符串輸出到str指向的文件

2.下面程序的運行結果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.負數(shù)C.正數(shù)D.無確定值

3.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

4.請問對一個排好序的數(shù)組進行查找,時間復雜度為()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

5.如有inta=11;則表達式(a++*1/3)的值是()。

A.0B.3C.4D.12

6.判定一個順序棧st(最多元素為MaxSize)為滿的條件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

7.用不帶頭結點的單鏈表存儲隊列時,其隊頭指針指向隊頭結點,其隊尾指針指向隊尾結點,則在進行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

8.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

9.在一個長度為n(n>1)的單鏈表上,設有頭和尾兩個指針,執(zhí)行()操作與鏈表的長度有關。

A.刪除單鏈表中的第一個元素

B.刪除單鏈表中的最后一個元素

C.在單鏈表第一個元素前插入一個新元素

D.在單鏈表最后一個元素后插入一個新元素

10.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此處do-while循環(huán)的結束條件是

A.P的值不等于12345并且n的值小于3

B.P的值等于12345并且n的值大于等于3

C.P的值不等于12345或者n的值小于3

D.P的值等于12345或者n的值大于等于3

11.

12.以下選項中是非轉義字符的是()。

A.‘\d’B.‘\t’C.‘\b’D.‘\r’

13.下列程序段的輸出結果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

14.若有定義“intx[10],*pt=x;”,則對x數(shù)組元素的引用正確的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

15.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

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

A.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉換成二進制的機器指令

B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件

C.用C語言編寫的程序稱為源程序,它以ASCII形式存放在一個文本文件中

D.C語言源程序經(jīng)編譯后生成擴展名為.obj的目標文件

17.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。

A.先序遍歷B.中序遍歷C.后序遍歷D.按層遍歷

18.以下不屬于C語言整數(shù)的是()。

A.12fB.25uC.-32D.+20L

19.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

20.軟件生命周期是指()。

A.軟件的定義和開發(fā)階段

B.軟件的需求分析、設計與實現(xiàn)階段

C.軟件的開發(fā)階段

D.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

二、2.填空題(20題)21.若有定義:doubleW[10],則W數(shù)組元素下標的上限為【】,下限為【】。

22.設有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。

23.執(zhí)行以下程序后,輸出“#”的個數(shù)是【】。

#include<stdio.h>

main()

{inti,j;

for(i=1;i<5;i++)

for(j=2;j<=i;j++)putchar('#');

}

24.以下程序的輸出結果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

25.本程序用改進冒泡法對數(shù)組a[n]的元素從小到大排序,請在程序空白處填空。

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

for(j=0;j<jmax;j++)

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

26.以下程序段的輸出結果是【】。

inti=9;

printf("%o\n",i);

27.以下程序調(diào)用函數(shù)swap_p將指針s和t所指單元(a和b)中的內(nèi)容交換,請?zhí)羁铡?/p>

main()

{inta=10,b=20,*s,*t;

s=&a;t=&b;

swap_p(【】);

printf("%d%d,a,b");}

swap_p(int**ss,int**tt)

{intterm;

term=**ss;

**ss=**tt;

**tt=term;}

28.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

29.在計算機領域中,通常用英文單詞“Byte'’表示【】。

30.下列程序的運行結果是______。

#definePOW(r)(r)*?

main()

{intx=3,y=2,t;

t=POW(x+y);

printf("%d\n",t);

}

31.若采用直接插入法對字母序列(W,S,E,L,X,G,I)進行排序,使字母按升序排列,那么第一次排序的結果為【】。

32.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。

33.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

34.下列程序的輸出結果是______。

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

35.下列程序的運行結果為【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

36.軟件的【】設計又稱為總體結構設計,其主要任務是建立軟件系統(tǒng)的總體結構。

37.在關系運算中,【】運算是在給定關系的某些域上進行的運算。

38.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結構的改變,如存儲設備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結構,從而不引起應用程序的變化,稱為______。

39.請用位運算實現(xiàn)下述目標(設16位二進制數(shù)的最低位為零位):

(1)輸出無符號正整數(shù)m的第i個二進制位的數(shù)值。

(2)將m的第i個二進制位置1,其余的位不變,然后輸出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

scanf("%d%d",&m,&i);

k=【】;

printf("%d\n",k);

k=pow(2,i);

m=【】;

printf("%d\n",m);

}

40.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)

______;

for(i=0;i<9;i++)

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

三、1.選擇題(20題)41.執(zhí)行以下程序段后,m的值為______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));

A.15B.14C.13D.12

42.下列關于線性鏈表的描述中正確的是()。

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且各前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

43.下列敘述中正確的是______。

A.程序設計就是編制程序

B.程序測試必須由程序員自己去做

C.程序經(jīng)調(diào)試改錯后還應進行再測試

D.程序經(jīng)調(diào)度改錯后不必進行再測試

44.設已包含頭文件<string.h>,下列程序段的運行結果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

A.3B.4C.6D.5

45.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.++b;C.a=a++=5;D.a=double(b);

46.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做

A.軟件投機B.軟件危機C.軟件工程D.軟件產(chǎn)生

47.若有以下定義,則對a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

48.軟件工程的結構化生命周期方法,通常是將軟件生命周期劃分為計劃、開發(fā)和運行3個時期,下列選項中的______工作應屬于軟件開發(fā)期的內(nèi)容。

①需求分析

②可行性研究

③總體設計

④問題定義

A.①和②B.①和③C.①、②和④D.全部

49.以下選項中可作為C語言合法常量的是()。

A.-80B.-80C.-80.0D.-80.0e

50.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

B.C程序書寫格式嚴格,要求一行內(nèi)只能寫一個語句

C.C程序書寫格式自由,一個語句可以寫在多行上

D.用C語言編寫的程序只能放在一個程序文件中

51.下列敘述中正確的是A.線性表是線性結構B.棧與隊列是非線性結構C.線性鏈表是非線性結構D.二叉樹是線性結構

52.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

53.若有代數(shù)式

(其中P僅代表自然對數(shù)的底數(shù),不是變量),則下列能夠正確表示該代數(shù)式的C語言表達式是()。

A.sqrt(abs(n^x+e^x))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(fabs(pow(n,x)+exp(x)))

D.sqrt(fabs(pow(x,n)+exp(x)))

54.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

55.若有語句:char*line[5];以下敘述中正確的是()。

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的.號稱為求地址運算符

D.定義line是一個指向字符型函數(shù)的指針

56.以下不是面向對象思想中的主要特征的是

A.多態(tài)B.繼承C.封裝D.垃圾回收

57.分析下列程序:#include<stdio.h>main(){int*p1,*p2,*p;inta=6,b=9;p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("%d,%d",*p1,*p2);printf("%d,%d",a,b);}程序的輸出結果為()。

A.9,66,9B.6,99,6C.6,96,9D.9,69,6

58.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n",j);}

程序運行后的輸出結果是

A.4B.3C.2D.1

59.有以下程序:main(){inti=1,j=2,k=3;if(i++==l&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k):}程序運行后的輸出結果是()。

A.123B.234C.223D.233

60.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

四、選擇題(20題)61.一名教師可講授多門課程,一門課程可由多名教師講授。則實體教師和課程間的聯(lián)系是()。

A.1:l聯(lián)系B.1:m聯(lián)系C.m:l聯(lián)系D.m:n聯(lián)系

62.對如下二叉樹進行后序遍歷的結果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

63.

64.在面向對象方法中,不屬于“對象”基本特點的是A.一致性B.分類性C.多態(tài)性D.標識唯一性

65.

66.有以下程序:

程序運行后的輸出結果是()。

A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

67.有以下程序

68.有以下程序

prt(int*m,intn)

{

inti;

for(i=0;i<n;i++)

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

for(i=0;i<5;i++)

printf("%d,",a[i]);

}

程序運行后的輸出結果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

69.

則以下選項中錯誤的表達式是()。

A.

B.

C.

D.

70.排序的一個重要目的是為了對已排序數(shù)據(jù)進行

A.合并B.打印輸出C.查找D.分類

71.

72.有以下程序:

程序運行后的輸出結果是()。

A.02356B.0235C.235D.2356

73.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

74.

有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

程序執(zhí)行后的輸出結果是()。

A.7B.3C.2D.0

75.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達式a/b+C—k值的類型為:()。

A.intB.doubleC.floatD.char

76.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

printf("%d",a);printf("%d\n",b);

}

編譯時編譯器提示錯誤信息,你認為出錯的語句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

77.設文件指針fp已定義,執(zhí)行語句fp=fopen(”61e”,”W”);后,以下針對文本文件file操作敘述的選項中正確的是()。

A.只能寫不能讀B.寫操作結束后可以從頭開始讀C.可以在原有內(nèi)容后追加寫D.可以隨意讀和寫

78.有以下程序:

程序運行后的輸出結果是()。

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

79.以下能正確定義一維數(shù)組的選項是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

80.

五、程序改錯題(1題)81.下列給定程序的功能是:讀入一個整數(shù)n(2<;=n<;=5000),打印它的所有為素數(shù)的因子。例如,若輸入整數(shù)1234,則應輸出2,617。請修改程序中的錯誤,使程序能得出正確的結果。注意:不要改動main()函數(shù),不能增選或刪行,也不能更改程序的結構。試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和。號。請編寫函數(shù)fun,其功能是:將字符串尾部的。號全部刪除,前面和中間的*號不動。

參考答案

1.B函數(shù)fputs(str,fp)的功能是把str所指的字符串輸出到fp所指的文件中。故本題答案為B選項。

2.C

3.D解析:本題考查語句的基本構成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。

4.B

5.B

6.D

7.D

8.AB選項中運算符“%”的運算對象為整數(shù)。C選項中不能將變量賦給表達式“x+n”。D選項中不能將表達式“4+1”賦給常量5。故本題答案為A選項。

9.B

10.D解析:本題考查的知識點是do-while循環(huán)結構循環(huán)執(zhí)行條件的判斷.使用do-while語句必須注意以下幾點:

先執(zhí)行語句,后判斷表達式。所以,無論一開始表達式的值為“真”還是“假”,循環(huán)體中的語句至少執(zhí)行一次,這一點與while不同,

如果do-while語句循環(huán)體部分是由多個語句組成,則必須用花括號括起來,使其形成復合語句。

C語言中的do—while語句是在表達式“真”時重復執(zhí)行循環(huán)體。

在本題中,循環(huán)執(zhí)行判斷條件為while后面括號里的表達式即p!=12345&&n<3(意思為p不等于12345且n小于3)是否為“真”,由此可得循環(huán)結束的條件為:p大于12345或者p小于12345又或者n大于等于3。選項A的意思是:p的值不等于12345并且n的小于3和while后面括號里的表達式等價是循環(huán)執(zhí)行的條件而不是循環(huán)結束的條件,所以選項A不正確;選項B的意思是:p的值等于12345并且n的值大于3,不是循環(huán)結束的條件一個子集,所以選項B不正確;選項C的意思是:p的值不等于12345或者n的值小于3前一半是結束條件的子集,后一部分不是結束條件,所以選項C不正確;選項D描述的意思是:p的值等于12345或者你的大于等于3是結束條件的子集,所以選項D滿足題意。所以4個選項中D正確。

11.C

12.AC語言中,轉義字符又稱反斜線字符,這些字符常量總是以一個反斜線開頭后加一個特定的字符。題干中,‘\\t’表示橫向跳若干格,‘\\b’表示退格符,‘\\r’表示回車符,選項B、C、D正確,選項A錯誤。故本題答案為A選項。

13.C解析:將變量a按位求反,再與b按位與,最后左移1位。9的二進制表示為00001001,020的二進制表示為00010000。a按位求反為11110110,再與b按位與結果為00010000,左移1位結果為00100000。按八進制輸出為040。

14.D選項A中,“pt+3”使指針變量Pt移動3個單元,指向第4個元素,不能正確引用。運算符“*”與“&”放在一起,其作用相互抵消,且下標10超出了數(shù)組下標范圍,所以B選項錯誤?!?(pt+i)”表示引用指針pt所指元素后的第i個元素,引用數(shù)組第11個元素,C選項錯誤。故本題答案為D選項。

15.D

16.AC語言中的非執(zhí)行語句不會被編譯,不會被轉換成二進制的機器指令,所以A選項錯誤。由C語言構成的指令序列稱為C語言源程序,C語言源程序經(jīng)過C語言編譯程序編譯之后,生成一個擴展名為.obj的二進制文件(稱為目標文件);最后要由“連接程序”把此目標文件與C語言提供的各種庫函數(shù)連接起來生成一個擴展名為.exe的可執(zhí)行文件。故本題答案為A選項。

17.A

18.AC語言中整型常量,從表示形式來看,有十進制、八進制或十六進制;從符號位來看,有有符號整數(shù)和無符號整數(shù)兩類。選項A的“12f”是float類型的實數(shù),不是整數(shù);選項B的“25u”屬于無符號整數(shù);選項C的“-32”是十進制形式的有符號整數(shù);選項D的“+20L”是十進制形式的長整數(shù)。故本題答案為A選項。

19.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

20.D通常把軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用、退役的過程稱為軟件生命周期。選項A、B、C選項均為生命周期的一部分。故選D選項。

21.90

22.100100解析:本題考查帶參數(shù)的宏定義及相關運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。

23.66解析:本題考察的是一個嵌套的循環(huán),當滿足j<=i時,輸出一個“#”號,符合條件的有i=2,j=2;i=3,j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共輸出6個“#”。

24.JD

25.n-1jn-1\r\nj解析:此題采用了do…while循環(huán)內(nèi)嵌for循環(huán)的雙層循環(huán)結構來實現(xiàn)了數(shù)組元素的排序。數(shù)組元素通過首地址和數(shù)組下標的方式來引用的。

26.1111解析:本題考核的知識點是printf()函數(shù)的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,9的八進制數(shù)的表示為11。

27.&s&t&s,&t解析:指針做函數(shù)參數(shù)時,形參和實參指向同一個數(shù)據(jù),所以函數(shù)中對形參所指向的數(shù)據(jù)的改變也能影響到實參。本題中函數(shù)swap_p的形參為指向指針的指針,即雙重指針,原理跟普通的指針是一樣的。注意:通過指針來引用一個存儲單元。

28.x+=1x+=1解析:本題考查“++”,“--”運算符?!?+”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

29.字節(jié)字節(jié)

30.解析:本題考查帶參數(shù)的宏的定義及相關運算。運算過程為:t=POW(x+y)=(2+3)*(2+3)=25。

31.SWELXGI

32.log2n

33.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數(shù)組指定位置,并通過j++將下標加1,指向下一元素要存儲的位置。

34.考查ifelse語句,n=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論