2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計_第1頁
2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計_第2頁
2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計_第3頁
2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計_第4頁
2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩105頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列敘述中錯誤的是()。

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和后件

D.線性表可以是空表

2.有下列程序:程序執行后的輸出結果是()。A.0,1,0B.0,1,1C.0,0,1D.0,0,0

3.在C++中,一個函數帶有參數說明時,則參數的默認值應該在()中給出。A.函數定義B.函數聲明C.函數定義或聲明D.函數調用

4.在非線性結構中,每個結點()。

A.無直接前趨

B.只有一個直接前趨和個數不受限制的直接后繼

C.只有一個直接前驅和后繼

D.有個數不受限制的直接前驅和后繼

5.有以下函數:charfun(char*p){returnP;}該函數的返回值是()。A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

6.在三級模式之間引入兩層映像,其主要功能之一是()。

A.使數據與程序具有較高的獨立性B.使系統具有較高的通道能力C.保持數據與程序的一致性D.提高存儲空間的利用率

7.在存儲數據時,通常不僅要存儲各數據元素的值,而且還要存儲()。

A.數據的處理方法B.數據元素的類型C.數據元素之間的關系D.數據的存儲方法

8.以下關于順序存儲結構的敘述中,()是不正確的。

A.存儲密度大

B.邏輯上相鄰的結點物理上不必鄰接

C.可以通過計算機直接確定第i個結點的存儲地址

D.插入、刪除運算操作不方便

9.檢查軟件產品是否符合需求定義的過程稱為()。

A.確認測試B.集成測試C.驗證測試D.驗收測試

10.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}該程序的輸出結果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

11.

12.

13.標準庫函數fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數組s中

B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數組s中

C.從文件file中讀取n個字符串存入字符數組s中

D.從文件file中讀取長度為n-1個字符的字符串存入字符數組s中

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

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

15.

16.

17.以下程序的輸出結果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

18.下列定義數組的語句中正確的是______。

A.#definesize10charstr1[size],str2[size+2];

B.charstr[];

C.intnum['10'];

D.intn=5;inta[n][n+2];

19.下面程序的輸出結果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

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

20.設有定義:

inta=1,b=2,C=3;

以下語句中執行效果與其他三個不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

二、2.填空題(20題)21.設有以下定義的語句:

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

則*(*(P+2)+1)值為【】。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

23.數據管理技術發展過程經過人工管理、文件系統和數據庫系統三個階段,其中數據獨立性最高的階段是______。

24.在結構化分析使用的數據流圖(DFD)中,利用【】對其中的圖形元素進行確切解釋。

25.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

printf("%d%d%dln",a,b,c);

}

執行后輸出結果為______。

26.數據結構分為線性結構和非線性結構,帶鏈的隊列屬于[]。

27.設x、y、z為整型變量,且x=2,y=3,z=4,當執行以下語句后,x的值是______。

x*=(y++)+(--z);

28.函數fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

29.在運算過程中,能夠使空表與非空表的運算統一的結構是【】。

30.下面程序的運行結果是:【】。

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

31.設有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執行上面的程序段后,*(ptr+5)的值為______。

32.在C語言中,while和do…while循環的主要區別是______的循環至少被執行一次。

33.數據庫系統中實現各種數據管理功能的核心軟件是______。

34.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

36.函數pi的功能是根據以下近似公式求π值:

請在下面的函數中填空,完成求π的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0;

longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*s));

}

37.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

執行后輸出結果是【】。

38.若變量x、y已定義為int類型且X的值為33,y的值為3,請將輸出語句printf((),x/y);補充完整,使其輸出的計算結果形式為:x/y=11。

39.()的目的是分析數據間內在語義關聯,在此基礎上建立一個數據的抽象模型。

40.以下函數的功能是計算s=1+1/2!+1/3!+…+1/n!,請填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k

s=s+fac;

}

}

三、1.選擇題(20題)41.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函數的功能是將a所指數組元素從大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

for(j=i+1;j<n;j++)

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

}

程序的運行結果是

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

42.若有說明:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

43.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\n",m,i);}執行后的輸出結果是

A.8,6B.8,3C.6,4D.7,4

44.變量a中的數據用二進制表示的形式是01011101,變量b中的數據用二進制表示的形式是11110000。若要求將a的高4位取反,低4位不變,所要執行的運算是()。

A.a^bB.a|bC.a&bD.a<<4

45.若有下列說明和語句,則對結構體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

46.根據下列定義,能打印出字母P的語句是()。

structstu{charname[10];

intage;

};

structstus[10]={"John",11,

"Pau1",12,

"Mary",11,

"adam",12

};

A.primf("%c",s[3].name};

B.primf("%c",s[3].name[1]);

C.printf("%c",s[2].name[1]);

D.printf("%c",s[1].name[0]);

47.在“文件包含”預處理語句的使用形式中,當#include后面的文件名用"",(雙撇號)括起時,尋找被包含文件的方式是()。

A.直接按系統設定的標準方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統設定的標準方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當前目錄

48.如果需要打開一個已經存在的非空文件“FILE”并進行修改,正確的語句是()。

A.fp=fopen("FILE","r");

B.fp=fopen("FILE","a+");

C.fp=fopen("FILE","w+");

D.fp=fopen("FILE","r+");

49.下列敘述中,正確的一條是______。

A.語句int*pt中的*pt是指針變量名

B.運算符*和&都是取變量地址的運算符

C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

D.語句“int*p=a;”等價于“int*p;p=&a[0];”

50.有以下程序:main(){intp[7]={11,13,14,15,16,17,18);i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執行后輸出結果是()。

A.58B.56C.45D.24

51.以下程序的輸出結果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

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

52.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,6,8,10,12,7,8,9,10,

C.1,2,3,4,10,12,14,16,9,10,

D.1,2,6,8,10,12,14,16,9,10,

53.以下正確的說法是

A.定義函數時,形參的類型說明可以放在函數體內

B.return后邊的值不能為表達式

C.如果函數值的類型與返回值類型不一致,以函數值類型為準

D.如果形參與實參類型不一致,以實參類型為準

54.為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替傳統的程序流程圖,通常也把這種圖稱為______。

A.PAD圖B.N-S圖C.結構圖D.數據流圖

55.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數C.算法程序所占的存儲空間D.算法執行過程中所需要的存儲空間

56.下列關于字符串的說法中錯誤的是

A.在C語言中,字符串是借助于字符型一維數組來存放的,并規定以字符′\0′作為字符串結束標志

B.′\0′作為標志占用存儲空間,計入串的實際長度

C.在表示字符串常量的時候不需要人為在其末尾加入′\0′

D.在C語言中,字符串常量隱含處理成以′\0′結尾

57.下列運算符中,不屬于關系運算符的是______。

A.+=B.!=C.<=D.==

58.有三個關系R、s和T如下:

由關系R和s通過運算得到關系T,則所使用的運算為()。

A.并B.自然連接C.笛卡爾積D.交

59.已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量

60.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}執行后輸出結果是

A.550550B.680680C.580550D.580680

四、選擇題(20題)61.若有定義“intb[8],*p=b;”,則p+6表示()。

A.數組元素b[6]的值B.數組元素b[6]的地址C.數組元素b[7]的地址D.數組元素b[o]的值加上6

62.設有定義:“char*c;”,以下選項中能夠使字符型指針c正確指向一個字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

63.下列關于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

64.

65.有3個關系R、S和T如下.

則由關系R和S得到關系T的操作是()。A.自然連接B.差C.交D.并

66.已知字母A的ASCII碼為十進制的65,下面程序的輸出為()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

printf("%d,%c\n",ch1,ch2);

}

A.67,DB.B,CC.C,DD.不確定的值

67.

68.

69.設j為Int型變量,則下面for循環語句的執行結果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

70.

71.

72.設inti=2,j=1,k=3,則表達式i&&(i+j)&k|i+j的值是_______。

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

73.若a為int類型,且其值為3,則執行完表達式a+=a-=a*a后,a的值是()。A.A.-3B.9C.-12D.6

74.

75.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

Drintf("%d\n"。v);

}

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

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

76.以下說法錯誤的是A.A.高級語言都是用接近人們習慣的自然語言和數學語言作為語言的表達形式

B.計算機只能處理由0和1的代碼構成的二進制指令或數據

C.C語言源程序經過C語言編譯程序編譯之后生成一個后綴為.EXE的二進制文件

D.每一種高級語言都有它對應的編譯程序

77.以下程序的輸出結果是()。main(){inti,a[4][4]={{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2][1],a[3][0]);}A.0650B.1470C.5430D.輸出值不定

78.下列排序方法中,最壞情況下比較次數最少的是()。

A.冒泡排序B.簡單選擇排序C.直接插入排序D.堆排序

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是計算并輸出h以內的素數之和。h由主函數傳給proc()函數。若h的值為80,則函數的值為791。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數其功能是移動一維數組中的內容,若數組中有n個整數,要求把下標為0~p(含p,p小于等于n-1)的數組元素平移到數組的最后。例如,一維數組中的原始內容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數組中的內容應為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

參考答案

1.CC.【解析】線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前件,最后一個結點沒有后件,其他結點有且只有一個前件和后件,所以選項C.是錯誤的。

2.Bif條件表達式“a--‖b--&&--c”使用了邏輯或運算符和邏輯與運算符。因為邏輯與運算符優先級比邏輯或運算符優先級高,所以條件表達式等價于“(a--)‖(b--&&--c)”,自左向右運算,執行“a”,因為a初值為1,所以a--的值為1,執行完后a的值為0;又因為邏輯或運算符的短路原則,當a--的值為1時,條件為真,后面的表達式b--&&--c不執行。程序執行if語句塊,輸出a、b、c的值為:0,1,1。本題答案為B選項。

3.CC程序中函數可以在說明或定義時給一個或多個參數指定默認值,但是不能在函數說明定義時同時指定默認參數,默認參數值應該在函數名第一次出現時指定。

4.D

5.B

6.AA.【解析】數據庫管理系統在數據庫的三級模式之間提供了兩層映像,保證了數據庫中數據的較高的邏輯獨立性和物理獨立性。使系統具有較高的通道能力和提高存儲空間的利用率是操作系統的職能,而不是數據庫管理系統的職能。在數據庫系統中沒有“數據和程序一致性”這一概念。

7.C

8.B

9.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統測試。

(1)單元測試是針對每個模塊進行的測試,它可從程序的內部結構出發設計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發現詳細設計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎上,根據模塊結構圖將各個模塊連接起來,必須精心計劃,應提交集成測試計劃、集成測試規格說明和集成測試分析報告。主要目標是發現與接口有關的問題。集成測試可以發現概要設計時犯的錯誤。

(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發現需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應該仔細設計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應參與設計測試用例,通常情況下,主要使用生產中的實際數據進行測試,測試數據通過用戶接口輸入。

(4)系統測試是將已經通過確認測試的軟件,作為整個計算機系統的元素與計算機硬件、外設和網絡等其他因素結合在一起,進行一系列的組裝測試和確認測試。系統測試的目的是通過與系統的需求定義做比較,發現軟件與系統的定義不符合的地方。系統測試可以發現問題定義時犯下的錯誤。

10.D解析:本題考查指向字符串指針的運算方法。執行p=s+1后,指針變量p就指向字符串中的第二個字符“B”,然后輸出字符串“BCD”并換行;下面繼續執行循環語句,指針變量p指向下一個字符“C”,輸出字符串“CD”,最后一次循環,p指向字符“D”,輸出字符串“D”。

11.B

12.B

13.B解析:字符串輸入函數fgets()的調用形式為:fgets(s,n,fp)。fgets函數參數說明:“s”可以是一個字符數組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數;“fp”是指向該文件的文件型指針。fgets函數的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數組s中;讀入字符串后會自動在字符串末尾加入“'\\0'”結束符,表示字符串結束。

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

15.D

16.A

17.D當k=1時,循環成立,輸出w[l]的數組即EFGH,接著執行k++后k為2;當k=2時,循環成立,輸出w[2]的數組即IJKL,接著執行k++后,k為3;當k=3時,循環不成立,退出。

18.A

19.B解析:指針變量p指向數組a的第5個元素,p[3]在原指向基礎上移3個單位,指針變量p將指向第8個元素(下標為7的元素),值為7。

20.C由于a小于b,所以所有選項中的條件都為假,c選項中實際執行了a=b;b=c;兩個操作。而A、B、D選項由于條件不成立,所以什么也沒有做,所以選擇c選項。

21.6060解析:p是指向整型數組的指針變量,p=a使得p指向數組a的第1行。p+2是數組a第3行的地址,*(p+2)是數組a第3行{50,60},其實*(p+2)為數組a第3行的首地址,*(p+2)+1為數組a第3行第2個元素的地址,那么*(*(P+2)+1)就是數組a第3行第2個元素,即60。

22.3535解析:函數swap(int*a,int*b)的功能是實現*a和*b中兩個數據的交換,在主函數中調用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發生變化,所以輸出結果為35。

23.數據庫系統或數據庫系統階段或數據庫或數據庫階段或數據庫管理技術階段數據庫系統或數據庫系統階段或數據庫或數據庫階段或數據庫管理技術階段解析:在數據庫系統管理階段,數據是結構化的,是面向系統的,數據的冗余度小,從而節省了數據的存儲空間,也減少了對數據的存取時間,提高了訪問效率,避免了數據的不一致性,同時提高了數據的可擴充性和數據應用的靈活性;數據具有獨立性,通過系統提供的映象功能,使數據具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性;保證了數據的完整性、安全性和并發性-綜上所述,數據獨立性最高的階段是數據庫系統管理階段。

24.數據字典或DD數據字典或DD解析:數據流圖用來對系統的功能需求進行建模,它可以用少數幾種符號綜合地反映出信息在系統中的流動、處理和存儲情況。數據詞典(DataDictionary,DD)用于對數據流圖中出現的所有成分給出定義,它使數據流圖上的數據流名字、加工名字和數據存儲名字具有確切的解釋。

25.503503解析:此處需注意的是:如果if后面的條件為真,只執行其后的一條語句或一條復合語句,如果if后面的條件為假,只執行else后面的一條語句或一條復合語句。先判斷表達式“a<b”為假,不執行“t=a”,但執行“a=b;b=t;”,s的值為3,b的值為0。在判斷表達式“a<c”,值為真,所以執行后面的3條語句“t=a;a=c;c=t”,結果a的值為5,c的值為3,所以最后輸出的結果為5、0和3。

26.線性結構線性結構解析:與棧類似,隊列也是線性表,也町以采用鏈式存儲結構。

27.12。12。解析:表達式x*=(y++)+(--z)相當于先進行z的自減運算,再執行x=x*(y+z),最后y自加。因此,變量x的值為12,y和z的值分別是4和3。

28.字符串a和b的長度之和字符串a和b的長度之和解析:本題首先通過第一個while循環計算字符串a的長度,再通過第二個循環,將字符串a和b相連,最后返回連接后的總長度。

29.循環鏈表循環鏈表解析:在鏈表的運算過程中,采用鏈接方式即循環鏈表的結構把空表與非空表的運算統一起來。循環鏈表具有兩個特點:①在循環鏈表中增加了一個表頭結點,其數據域為任意或根據需要來設置,指針域指向線性表的第一個元素的結點。循環鏈表的頭指針指向表頭結點。②循環鏈表中最后一個結點的指針不是空,而是指向表頭結點。

30.8080解析:數組a是共用體變量,共用體類型變量所占的內存長度為最大成員的長度,即單精度數組的長度,為4×4=16,因此,數組a所占的內存長度為5×16=80,所以最后輸出的s的值為80。

31.'\0''\\0'解析:本題涉及字符數組和指針的兩個知識點:①在c語言中,字符型數組在存放字符串時會自動在末尾加上字符串結束標識符'\\0',所以題中數組str有6個元素。②ptr指向數組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

32.do…whiledo…while解析:考查while和do…while循環的主要區別。while循環的控制出現在循環體之前,只有當while后面的表達式的值為非零時,才可能執行循環體;在do…while構成的循環體中,總是先執行一次循環體,然后再求表達式的值,因此無論表達式的值是否為零,循環體至少要被執行一次。

33.數據庫管理系統數據庫管理系統解析:數據庫管理系統是數據庫的管理機構,它是一種系統軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等。

34.存儲結構

35.3123,1,2解析:分析程序,第一個if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。

36.(double)1/(i*i)或10/(i*i)(double)1/(i*i)或1,0/(i*i)解析:本題考查數據類型的轉換。由題意s=1+1/(2*2)/1/(3*3)+…+1/(n*n),它的循環體為s=s+1/(i*i),由于s為double型數據,所以要將1/(i*i)的值轉換為double類型。

37.99解析:函數的嵌套調用是在主函數中函數f(f(3,4),f(3,5))的返回值賦給d。函數的第一個參數為f(3,4)的返回值,函數f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數f(f(3,4),f(3,5))等價于函數f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

38.x/y=%dx/y=%d解析:本題考查prinff語句的輸出格式。printf()函數是格式化輸出函數,一般用于向標準輸出設備按規定格式輸出信息。在編寫程序時經常會用到此函數。printf()函數的調用格式為:printf('<格式化字符串>”,<參最表>)其中,格式化字符串包括兩部分內容。一部分足正常字符,這些字符將按原樣輸出;另一部分是格式化規定字符,以“%”開始,后跟一個或幾個規定字符,用來確定輸出內容格式。參量表是需要輸出的一系列參數,其個數必須與格式化字符串所說明的輸出參數個數一樣多,各參數之間用“,”分開,且順序一一

39.數據庫概念設計數據庫概念設計解析:數據庫概念設計的目的是分析數據間內在語義關聯,在此基礎上建立一個數據的抽象模型。

40.k=k*ik=k*i解析:本題中通過for循環求s表達式中每一項的和,表達式“fac=fac/k;”求的是每一項的值,所以k的值應為n!,在求n!的時候,可以用上次循環階乘的值乘i,就可以直接得此次n!,故本題填k=k*i。

41.D解析:在本題中,主函數在調用fun()函數進行排序時,傳遞的參數是c+4和6,fun()函數實現的功能是將數組c的第5個元素開始的6個元素依次進行從大到小的順序排列。排序之后,數組c的內容變為{1,2,3,4,9,8,7,6,5,0}。

42.D解析:本題中首先定義了一整型變量n并賦初值為2,接著定義了一個整型指針變量p并讓它指向n,接著又定義了一指向指針的指針變量q。選項A中給指針變量p賦值q,故這個賦值語句正確。選項B中*p=*q就是將*q的值賦給指針變量p所指向的變量n,故這個賦值語句不是非法的賦值語句。選項C中是將*q的值賦給變量n,故這個表達式不是非法的賦值語句。選項D中p為一指針變量,應該將一地址賦給它,而在此選項的表達式中將變量n而不是n的地址賦給它,故這個表達式不合法。

43.C解析:本題考查的知識點是運算符的優先級.在復合賦值語句中,應該由右向左依次賦值,在表達式中,右端由i*=k得i=2*2為4,k=k+i,即k值為6,m=k故m=6.所以4個選項中C正確。

44.A解析:1與1異或結果為0,0與1異或結果為1,可見要使某位數翻轉,只要使其與1進行異或運算即可。0與0進行異或運算結果為0,1與0進行異或運算結果為1,可見要使某位的數不變,只要使其與0進行異或運算即可。

45.B解析:本題主要考查結構指針:p=&st,訪問結構體的成員,可以通過結構變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。

46.D解析:本題主要考查按結構數組元素方式引用結構成員。字母P為'Paul'的第一個字母,是結構體s[1]的name成員的第一個元素的值,即s[1].name[0]的值。

47.B解析:本題考查庫函數調用的知識點。格式1:#include<文件名>,預處理程序在標準目錄下查找指定的文件;格式2:#include'文件名',預處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統指定的標準目錄搜索。

48.D解析:本題考查打開文件函數fopen(),打開文件函數fopen()的調用形式為:fp=fopen(文件名,文件使用方式)。“文件使用方式”說明:方式“r”為以輸入方式打開一個文本文件;方式“a+”為以讀/寫方式打開一個文本文件,保留文件中原有的數據;方式“w+”為以讀/寫方式建立一個新的文本文件:方式“r+”為以讀/寫方式打開一個文本文件。

49.D

50.D解析:在主函數中首先定義了一個數組p并初始化,在while后面括號里的表達式中,i初值為0,當p[i]為偶數時,p[i]%2等于0;當i=2時,p[i]=14為偶數,此時while后面括號里的表達式的值為假,退出循環,此時k=p[0]+p[1],即k=11+13。所以最后輸出k為24。

51.A解析:該題考查的是遞歸函數的調用,題中讀fun函數進行了遞歸調用,第1次調用:fun(3)n=3s=3-fun(2);第二次調用時:fun(2)n=2s=2返回第一次調用后,s=3-2=1。

52.B解析:本題在調用函數時,實參是數組名也是把數組a的首地址傳遞給形參,由條件i=2且i<6得出函數將列以a[2]開始的4個元素(3、4、5、6)進行乘2操作,結果分別是a[2]=6、a[3]=8、a[4]=10、a[5]=12。a[0]、a[1]、a[6]、a[7]、a[8]、a[9]的值沒有發生變化。

53.C解析:選項A)中定義函數時,形參的類型說明應該放在形參表列內說明。老版本C語言中,對形參類型的聲明是放在函數定義的第2行,也就是不在第1行的括號內指定形參的類型,而在括號外單獨指定。選項B)中return后面的值可以是一個表達式。選項D)中實參與形參的類型應相同或賦值兼容。如果實參為整型而形參為實型,或者相反,則按不同類型數值的賦值規則進行轉換,以形參類型為準。

54.B解析:常見的過程設計工具有:程序流程圖、N-S圖、PAD圖和HIPO圖。其

中,為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替傳統的程序流

程圖,通常也把這種圖稱為N-S圖。

注意:其他常用算法描述工具的概念。

55.D【解析】算法的空間復雜度是指執行這個算法所需要的內存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數據所占的存儲空間以及算法執行中所需要的額外空間。其中額外空間包括算法程序執行過程中的工作單元以及某種數據結構所需要的附加存儲空間。如果額外空間量相對于問題規模來說是常數,則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術,以便盡量減少不必要的額外空間。

56.B解析:'\\0'作為標志占用存儲空間,但是不計入串的實際長度。當給一個字符型指針賦值時,賦給這個指針的是這個字符串的地址。

57.A解析:+=是算術賦值運算符。

58.D關系R與s經交運算后所得到的關系是由那些既在R內又在S內的共有元組組成的,記為RnS。

59.A本題考查的知識點是轉義字符。題目中的關鍵是八進制101的十進制是多少.八進制的101轉換為十進制為65,也就是字符A的ASCII。

60.C解析:本題中首先定義了結構體類型STU,該結構體由一個長度為10的字符數組、兩個整型變量num和Score組成。在主函數中,定義了一個長度為5的結構體數組s并賦初值,一個指針數組p和一個指針變量t,接著將數組s中各元素的地址依次賦給指針數組p中的各成員。然后通過兩個for循環將數組p按Score的值從小到大的順序排列。因此最后輸出的p[1]->Score的值為550,而數組s[1].Score的值為580。

61.B指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節。所以題中p+6指的是將指針向后移動了6個存儲單元,即指向b[6],存放的是b[6]的地址。

62.A選項B是從鍵盤上輸入字符串,選項C是接收字符,選項D不正確。

63.B棧是先進后出,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。

64.B

65.B關系之間的操作分為自然連接、投影、交、并、差等,由圖可知此操作為差操作。

66.A將字符進行運算時,進行運算的是ASCII值,所以ch1=65+2=67(‘5’與’3’的ASCII值差為2),ch2=65+6-3=68.

67.A

68.D\r\n

69.B當j=10時,for循環成立,j%3為1,if條件也為真,當執行完j--后,j為9,再執行“--j;--J;”后,j的值為7,因此輸出7,繼續循環執行j--后j為6,當j=6時for循環成立,j%3為0,if條件為假,此時執行“--j;--j;”后,j為4,輸出4,再繼續循環執行j--后j為3,當j=3時,for循環不成立,退出循環,故選擇8選項。

70.B

71.D

72.Ci+j=3,運算符的優先級為數學運算符,位運算符,邏輯運算符,因此,首先計算最右邊的i+j=3,然后計算(i+j)&k|3=9,最后計算i&&9=1

73.C在表達式中,其+=,-=的優先級相同,按從右到左的結合方向運算,而*的優先級最高,表達式寫成a=a+(a-(a*a)),代入3可得-12。

74.D

75.D\n因為x!=0,所以下列的循環不執行,只執行y++,最后結果為0。

\n

76.C本題主要考查我們對C語言一些基礎知識的掌握情況。下面分別分析本題的四個選項。

由于高級程序設計語言具有可讀寫、可理解性好等特點,這就要求高級程序設計語言用接近人們習慣的自然語言和數學語言作為語言的表達形式,選項A的說法正確。

在計算機中,機器可以接受和處理的只能是由0和1組成的二進制代碼,用高級語言編寫的程序都需要經過編譯和連接,使其轉化為二進制代碼才能被機器執行。因此,選項B的說法正確。

C語言源程序經過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進制文件(稱為目標文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數連接起來生成一個后綴為.EXE的可執行文件。因此,選項C的說法不正確。

由于高級語言編寫的程序都需要經過編譯和連接,才能被計算機執行,因此,每一種高級語言都有它對應的編譯程序,D選項的說法正確。

77.A當所賦的值不夠其列的寬度時,系統在其后自動補0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故選擇A選項。

78.D冒泡排序、簡單插入排序與簡單選擇排序法在最壞情況下均需要比較n(n-1)/2次,而堆排序在最壞情況下需要比較的次數是nlog2n。故答案為D選項。

79.B

80.D

81.(1)錯誤:ifh%j==0

正確:if(h%i==0)

(2)錯誤:if(yes==0)

正確:if(yes)

【解析】由C語言語法規則可知,if語句的條件必須用括號括起來,因此,“ifh%j==0”應改為“if(h%j==0)”;當變量yes=0時,說明整數h為非素數,不計入和當中,因此,“if(yes==0)”應改為“if(yes)”。

82.voidfun(int*w,intp,intn){ intX,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j /*通過for循環語句,將p+1~n-1(含n-1)之間的數組元素依次向前移動p+1個存儲單元*/ { w[j-1]=w[j]; } w[n-1]=ch; /*將下標為0~p的數組元素逐一賦給數組w[n-1]*/ }}本題要求把下標為0~p(含p,p小于等于n-1)的數組元素平移到數組的最后。可以根據輸入的p值,通過for循環語句,將p+1~n-1(含n-1)之間的數組元素依次向前移動p+1個存儲單元,即w[j-1]=w[j];。同時將下標為0~p的數組元素逐一賦給數組w[n-1],也就是通過語句w[n-1]=ch;來實現此操作。2021-2022年山東省煙臺市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列敘述中錯誤的是()。

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和后件

D.線性表可以是空表

2.有下列程序:程序執行后的輸出結果是()。A.0,1,0B.0,1,1C.0,0,1D.0,0,0

3.在C++中,一個函數帶有參數說明時,則參數的默認值應該在()中給出。A.函數定義B.函數聲明C.函數定義或聲明D.函數調用

4.在非線性結構中,每個結點()。

A.無直接前趨

B.只有一個直接前趨和個數不受限制的直接后繼

C.只有一個直接前驅和后繼

D.有個數不受限制的直接前驅和后繼

5.有以下函數:charfun(char*p){returnP;}該函數的返回值是()。A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

6.在三級模式之間引入兩層映像,其主要功能之一是()。

A.使數據與程序具有較高的獨立性B.使系統具有較高的通道能力C.保持數據與程序的一致性D.提高存儲空間的利用率

7.在存儲數據時,通常不僅要存儲各數據元素的值,而且還要存儲()。

A.數據的處理方法B.數據元素的類型C.數據元素之間的關系D.數據的存儲方法

8.以下關于順序存儲結構的敘述中,()是不正確的。

A.存儲密度大

B.邏輯上相鄰的結點物理上不必鄰接

C.可以通過計算機直接確定第i個結點的存儲地址

D.插入、刪除運算操作不方便

9.檢查軟件產品是否符合需求定義的過程稱為()。

A.確認測試B.集成測試C.驗證測試D.驗收測試

10.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}該程序的輸出結果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

11.

12.

13.標準庫函數fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數組s中

B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數組s中

C.從文件file中讀取n個字符串存入字符數組s中

D.從文件file中讀取長度為n-1個字符的字符串存入字符數組s中

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

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

15.

16.

17.以下程序的輸出結果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

18.下列定義數組的語句中正確的是______。

A.#definesize10charstr1[size],str2[size+2];

B.charstr[];

C.intnum['10'];

D.intn=5;inta[n][n+2];

19.下面程序的輸出結果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

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

20.設有定義:

inta=1,b=2,C=3;

以下語句中執行效果與其他三個不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

二、2.填空題(20題)21.設有以下定義的語句:

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

則*(*(P+2)+1)值為【】。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

23.數據管理技術發展過程經過人工管理、文件系統和數據庫系統三個階段,其中數據獨立性最高的階段是______。

24.在結構化分析使用的數據流圖(DFD)中,利用【】對其中的圖形元素進行確切解釋。

25.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

printf("%d%d%dln",a,b,c);

}

執行后輸出結果為______。

26.數據結構分為線性結構和非線性結構,帶鏈的隊列屬于[]。

27.設x、y、z為整型變量,且x=2,y=3,z=4,當執行以下語句后,x的值是______。

x*=(y++)+(--z);

28.函數fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

29.在運算過程中,能夠使空表與非空表的運算統一的結構是【】。

30.下面程序的運行結果是:【】。

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

31.設有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執行上面的程序段后,*(ptr+5)的值為______。

32.在C語言中,while和do…while循環的主要區別是______的循環至少被執行一次。

33.數據庫系統中實現各種數據管理功能的核心軟件是______。

34.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

36.函數pi的功能是根據以下近似公式求π值:

請在下面的函數中填空,完成求π的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0;

longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*s));

}

37.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

執行后輸出結果是【】。

38.若變量x、y已定義為int類型且X的值為33,y的值為3,請將輸出語句printf((),x/y);補充完整,使其輸出的計算結果形式為:x/y=11。

39.()的目的是分析數據間內在語義關聯,在此基礎上建立一個數據的抽象模型。

40.以下函數的功能是計算s=1+1/2!+1/3!+…+1/n!,請填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k

s=s+fac;

}

}

三、1.選擇題(20題)41.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函數的功能是將a所指數組元素從大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

for(j=i+1;j<n;j++)

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

}

程序的運行結果是

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

42.若有說明:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

43.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\n",m,i);}執行后的輸出結果是

A.8,6B.8,3C.6,4D.7,4

44.變量a中的數據用二進制表示的形式是01011101,變量b中的數據用二進制表示的形式是11110000。若要求將a的高4位取反,低4位不變,所要執行的運算是()。

A.a^bB.a|bC.a&bD.a<<4

45.若有下列說明和語句,則對結構體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

46.根據下列定義,能打印出字母P的語句是()。

structstu{charname[10];

intage;

};

structstus[10]={"John",11,

"Pau1",12,

"Mary",11,

"adam",12

};

A.primf("%c",s[3].name};

B.primf("%c",s[3].name[1]);

C.printf("%c",s[2].name[1]);

D.printf("%c",s[1].name[0]);

47.在“文件包含”預處理語句的使用形式中,當#include后面的文件名用"",(雙撇號)括起時,尋找被包含文件的方式是()。

A.直接按系統設定的標準方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統設定的標準方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當前目錄

48.如果需要打開一個已經存在的非空文件“FILE”并進行修改,正確的語句是()。

A.fp=fopen("FILE","r");

B.fp=fopen("FILE","a+");

C.fp=fopen("FILE","w+");

D.fp=fopen("FILE","r+");

49.下列敘述中,正確的一條是______。

A.語句int*pt中的*pt是指針變量名

B.運算符*和&都是取變量地址的運算符

C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

D.語句“int*p=a;”等價于“int*p;p=&a[0];”

50.有以下程序:main(){intp[7]={11,13,14,15,16,17,18);i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執行后輸出結果是()。

A.58B.56C.45D.24

51.以下程序的輸出結果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

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

52.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,6,8,10,12,7,8,9,10,

C.1,2,3,4,10,12,14,16,9,10,

D.1,2,6,8,10,12,14,16,9,10,

53.以下正確的說法是

A.定義函數時,形參的類型說明可以放在函數體內

B.return后邊的值不能為表達式

C.如果函數值的類型與返回值類型不一致,以函數值類型為準

D.如果形參與實參類型不一致,以實參類型為準

54.為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替傳統的程序流程圖,通常也把這種圖稱為______。

A.PAD圖B.N-S圖C.結構圖D.數據流圖

55.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數C.算法程序所占的存儲空間D.算法執行過程中所需要的存儲空間

56.下列關于字符串的說法中錯誤的是

A.在C語言中,字符串是借助于字符型一維數組來存放的,并規定以字符′\0′作為字符串結束標志

B.′\0′作為標志占用存儲空間,計入串的實際長度

C.在表示字符串常量的時候不需要人為在其末尾加入′\0′

D.在C語言中,字符串常量隱含處理成以′\0′結尾

57.下列運算符中,不屬于關系運算符的是______。

A.+=B.!=C.<=D.==

58.有三個關系R、s和T如下:

由關系R和s通過運算得到關系T,則所使用的運算為()。

A.并B.自然連接C.笛卡爾積D.交

59.已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量

60.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}執行后輸出結果是

A.550550B.680680C.580550D.580680

四、選擇題(20題)61.若有定義“intb[8],*p=b;”,則p+6表示()。

A.數組元素b[6]的值B.數組元素b[6]的地址C.數組元素b[7]的地址D.數組元素b[o]的值加上6

62.設有定義:“char*c;”,以下選項中能夠使字符型指針c正確指向一個字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

63.下列關于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

64.

65.有3個關系R、S和T如下.

則由關系R和S得到關系T的操作是()。A.自然連接B.差C.交D.并

66.已知字母A的ASCII碼為十進制的65,下面程序的輸出為()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

printf("%d,%c\n",ch1,ch2);

}

A.67,DB.B,CC.C,DD.不確定的值

67.

68.

69.設j為Int型變量,則下面for循環語句的執行結果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

70.

71.

72.設inti=2,j=1,k=3,則表達式i&&(i+j)&k|i+j的值是_______。

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

73.若a為int類型,且其值為3,則執行完表達式a+=a-=a*a后,a的值是()。A.A.-3B.9C.-12D.6

74.

75.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

Drintf("%d\n"。v);

}

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

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

76.以下說法錯誤的是A.A.高級語言都是用接近人們習慣的自然語言和數學語言作為語言的表達形式

B.計算機只能處理由0和1的代碼構成的二進制指令或數據

C.C語言源程序經過C語言編譯程序編譯之后生成一個后綴為.EXE的二進制文件

D.每一種高級語言都有它對應的編譯程序

77.以下程序的輸出結果是()。main(){inti,a[4][4]={{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2][1],a[3][0]);}A.0650B.1470C.5430D.輸出值不定

78.下列排序方法中,最壞情況下比較次數最少的是()。

A.冒泡排序B.簡單選擇排序C.直接插入排序D.堆排序

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是計算并輸出h以內的素數之和。h由主函數傳給proc()函數。若h的值為80,則函數的值為791。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數其功能是移動一維數組中的內容,若數組中有n個整數,要求把下標為0~p(含p,p小于等于n-1)的數組元素平移到數組的最后。例如,一維數組中的原始內容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數組中的內容應為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

參考答案

1.CC.【解析】線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前件,最后一個結點沒有后件,其他結點有且只有一個前件和后件,所以選項C.是錯誤的。

2.Bif條件表達式“a--‖b--&&--c”使用了邏輯或運算符和邏輯與運算符。因為邏輯與運算符優先級比邏輯或運算符優先級高,所以條件表達式等價于“(a--)‖(b--&&--c)”,自左向右運算,執行“a”,因為a初值為1,所以a--的值為1,執行完后a的值為0;又因為邏輯或運算符的短路原則,當a--的值為1時,條件為真,后面的表達式b--&&--c不執行。程序執行if語句塊,輸出a、b、c的值為:0,1,1。本題答案為B選項。

3.CC程序中函數可以在說明或定義時給一個或多個參數指定默認值,但是不能在函數說明定義時同時指定默認參數,默認參數值應該在函數名第一次出現時指定

溫馨提示

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

評論

0/150

提交評論