2022年山東省淄博市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2022年山東省淄博市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2022年山東省淄博市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2022年山東省淄博市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2022年山東省淄博市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年山東省淄博市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b='b';

C.noata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

2.

3.計算機算法必須具備輸入、輸出和()等5個特性。

A.可行性、可移植性和可擴充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性

4.以下對于C語言的描述中,正確的是:()

A.C語言調用函數(shù)時,值傳遞方式只能將實參的值傳給形參,形參的值不能傳遞給實參

B.C語言中函數(shù)既可以嵌套定義,也可以遞歸調用

C.函數(shù)必須有返回值

D.C程序中有調用關系的所有函數(shù)必須放在同一源程序文件中

5.x>0||y==5的相反表達式為()。

A.x<=0||y!=5B.x<=0&&y!=5C.x>0||y!=5D.x>0&&y==5

6.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運行后的輸出結果是()。A.7,4B.4,10C.8,8D.10,10

7.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當執(zhí)行程序時,輸出的結果是()。A.-1B.1C.4D.0

8.

9.下列敘述中正確的是()。

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內和switch語句體內

D.在循環(huán)體內使用break語句和continue語句的作用相同

10.如果以鏈表作為棧的存儲結構,則入棧操作時()。

A.必須判別棧是否滿B.必須判別棧是否為空C.必須判別棧元素類型D.可不做任何判斷

11.選出任何情況下都不引起二義性的宏定義()。

A.#definePOWER(x)x*x

B.#definePOWER(x)((x)*(x))

C.#definePOWER(x)(x*x)

D.#definePOWER(x)(x)*(x)

12.第

4

棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

二、2.填空題(12題)13.下列程序的輸出結果是【】。

main()

{

inta[]={2,4,6},*prt=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y<x)?*(ptr+y):x;

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

}

14.面向對象的程序設計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個______。

15.有以下程序:

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

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

}

程序運行后的輸出結果是【】。

16.按"先進后出"原則組織數(shù)據的數(shù)據結構是【】。

17.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式輸出數(shù)組右上半三角:

1234

678

1112

16

則在程序下劃線處應填入的是【】。

18.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

white(s[i]){d[j]=【】;j++;}

d[j]=0;

19.數(shù)據的物理結構在計算機存儲空間中的存放形式稱為數(shù)據的【】。

20.以下函數(shù)的功能是計算s=1+1/2!+1/3!+……+1/n!,請?zhí)羁铡?/p>

doublefun(intn)

{

doubles=0.0,fac=1.0;inti;

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

{

fac=fac______;

s=s+fac;

}

returns;

}

21.已知函數(shù)isaplha(ch)的功能是判斷變量ch是否是字母,若是,則該數(shù)值為1,否則為0。下面程序執(zhí)行后的輸出結果是()。

#include<ctype.h>

#include<string.h>

voidfun(chars[])

{inti,j;

for(i=0,j=0;s[i];i++)

s[j]='\0';

}

main()

{charss[80]="goodmorning";

fun(ss);

printf("%s",ss);

}

22.數(shù)據庫管理系統(tǒng)常見的數(shù)據模型有層次模型、網狀模型和【】3種。

23.以下程序中給指針p分配3個double型動態(tài)內存單元,請?zhí)羁铡?/p>

#include<stdllb.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

24.有以下程序:

#definef(x)x*x

main()

{inti;

i=f(4+4)/f(2+2);

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

}

執(zhí)行后的輸出結果是【】。

三、3.程序設計題(10題)25.請編寫函數(shù)fun(),它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat()),即把p2所指的字符串連接到p1所指的字符串后。

例如,分別輸入下面兩個字符串:

FirstString--

SecondString

則程序輸出:

FirstString--SecondString

[注意]部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

[試題源程序]

#include<stdio.h>

#include<conio.h>

voidfun(charp1[],charp2[])

{

}

main()

{

chars1[80],s2[40];

clrscr();

printf("Enters1ands2:\n");

scanf("%s%s",s1,s2);

printf("s1=%s\n",s1);

printf("s2=%s\n",s2);

printf("Invokefun(s1,s2):\n");

fun(s1,s2);

printf("Afterinvoking:\n");

printf("%s\n",s1);

}

26.編寫函數(shù)fun(),它的功能是:計算和輸出下列級數(shù)的和。

S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,當n=10時,函數(shù)值為0.909091。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序;

#include<conio.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

clrscr();

printf("%f\n",fun(10));

}

27.請編寫函數(shù)fun,其功能是:計算并輸出給定數(shù)組(長度為9)中每相鄰兩個元素之平均值的平方根之和。

例如,給定數(shù)組中的9個元素依次為12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,輸出應為:s=35.951014。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

28.請編寫一個函數(shù)fun,其功能是:將ss所指字符串中所有下標為奇數(shù)位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。

例如,若輸入“abc4EFg”,則應輸出“aBc4EFg”。

注意:部分源程序在文件PROGl.C文件中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

29.學生的記錄由學號和成績組成,N名學生的數(shù)據已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:函數(shù)返回指定成績的學生數(shù)據,指定的成績在主函數(shù)中輸入。若沒找到指定的成績,在結構體變量中給學號置空串,給成績置-1,作為函數(shù)值返回。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<stdlib.h>

#defineN16

typedefstruct

{charnum[l0];

ints;

}STREC;

STRECfun(STREC*a,intb)

{

}

main()

{

STRECs[N)={{“GA005”,76},{“GA003”,89},

{“GA002”,64},{“GA004”,75},{“GA001”,88},

{“GA007”,65},{“CA008”,96},{“GA006”,69},

{“GA015”,85},{“GA013”,78},{“GA012”,62},

{“GA014”,60},{“GA011”,73},{“GA017”,72},

{“GA018”,98},{“GA016”,94}};

STRECh;

intm;

inti,n;

FILE*out;

printf(“Theoriginaldata:\n”);

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

{if(i%4==0)

printf(“\n”);

/*每行輸出4個學生記錄*/

printf(“%s%3d”,s[i].num,s[i].s);

}

printf(“\n\nEnterthescore:”);

scanf(“%d”,&m);

h=fun(S,m);

printf(“Thedata:”);

printf(“\n%s%4d\n”,h.mum,h.S);

printf(“\n”);

ut=fopen(“out24.dat",“W”);

h=fun(s,85);

fprintf(out,“%S%4d\n”,h.num,h.S);

fclose(out);

}

30.請編寫一個函數(shù)fun(),它的功能是:將ss所指字符串中所有下標為奇數(shù)位置的字母轉換為大寫(若該位置上不是字母,則不轉換)。

例如,若輸入abc4Efg,則應輸出aBc4EFg。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*ss)

{

}

main()

{

chartt[81];

clrscr();

printf("\nPleaseenteranstringwithin80characters:\n");

gets(tt);

printf("\n\nAfterchanging,thestring\n\%s",tt);

fun(tt);

printf("\nbecomes\n\%s\n",tt);

}

31.編寫函數(shù)fun(),它的功能是求n以內(不包括n)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

例如:n為1000時,函數(shù)值應為s=96.979379。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<math.h>

#include

doublefun(intn)

{

}

main()

{

clrscr();

printf("s=%f\n",fun(1000));

}

32.請編寫函數(shù)fun,其功能是:計算并輸出給定10個數(shù)的方差:

例如,給定的10個數(shù)為95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,輸出為s=11.730729。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

33.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。

例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:****A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

注意:部分源程序在文件PROGl.C文件中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

34.請編寫函數(shù)fun,它的功能是:計算并輸出n(包括n)以內能被5或9整除的所有自然數(shù)的倒數(shù)之和。

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333。注意:要求n的值不大于100。

部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

四、單選題(0題)35.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序運行后的輸出結果是()。A.2B.1C.0D.3

五、單選題(0題)36.采用開放定址法處理散列表的沖突時,其平均查找長度()

A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突

六、單選題(0題)37.下列程序的輸出結果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

參考答案

1.B解析:本題考查變量的定義方法。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和D)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數(shù)據,不能指向指針變量b,故選項C)錯誤。

2.A

3.B

4.A

5.B

6.Bstrlen是求字符串的長度,結果為4,sizeof是求數(shù)組的長度,而數(shù)據在定義時已給出長度為10。

7.A本題考查do-while循環(huán)。當--y是0(即y是o)時結束循環(huán),輸出--y,先將y的值減1再輸出Y的值。

8.C

9.C解析:只能在循環(huán)體內和switch語句體內使用break語句。當break出現(xiàn)在循環(huán)體的switch語句體內時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設置break語句,滿足某種條件,則跳出本層循環(huán)體。

10.D

11.B解析:引起帶參數(shù)宏的二義性主要有兩個方面:一是,參數(shù)之間因運算符優(yōu)先級不確定而帶來的二義性。例如本題的選項A),若程序中使用POWER(a+b),會展開為a+b*a+b,這樣就會先計算b*a的值,然后再加一個a和一個b,產生二義性。杜絕這種二義性的方法是在宏定義的每個參數(shù)外加上圓括號以保證總是先計算每個參數(shù)的值,就好像本題的選項D)那樣。另一個是,整個宏所代表的表達式因運算符優(yōu)先級不確定而帶來的二義性。例如本題的選項D),若程序中使用a/POWER(b),會展開為a/(b)*(b),這樣就會先計算a/b的值,然后再乘以b,產生二義性。杜絕這種二義性的方法是對整個宏定義加一個圓括號,就好像本題的選項B)那樣。故選項B)在任何情況下都不會引起二義性,應該選B。

12.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。

13.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關系個表達式(*ptr+y)<x)?(ptr+y):x的值,再賦紿變量z,當y=O時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(pry)=2,所以z=2;當y=1時*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,*((ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結束。因此輸出z的結果為6。

14.實體實體

15.87788,7,7,8解析:本題中執(zhí)行語句p=&a和q=&b后,*p=7,*q=8;執(zhí)行完語句r=p,p=q,q=r后,*p=8,*q=7,故答案為8,7,7,8。

16.棧棧解析:考查考生對棧和隊列概念的掌握。按'先進后出'原則組織數(shù)據的數(shù)據結構是棧;按'先進先出'原則組織數(shù)據的數(shù)據結構是隊列。

17.ii解析:上三角的情況是對數(shù)組a[i][j],j≥j的時候,因此,在j≥i時應輸出所需要的元素,故橫線上應填i。

18.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其有元素。本題應使用i舶自增后置來實現(xiàn)。

19.內模式或物理模式或存儲模式內模式或物理模式或存儲模式解析:一個數(shù)據庫只有一個內模式,它是數(shù)據物理結構和存儲方式的描述,是數(shù)據庫內部的表示方法。例如,記錄的存儲方式是順序存儲、索引按照什么方式組織;數(shù)據是否壓縮存儲,是否加密等。

20./i或*1.0/i或*1/i或*(1.0/i)或/(double)i/i或*1.0/i或*1/i或*(1.0/i)或/(double)i解析:主函數(shù)中首先定義了兩個double型的變量s和fac,并給它們賦初值為0.0和1.0,在函數(shù)中s和fac的作用是存放和以及要加到的那一項的值。通過分析可知,第i項的值可以由第i-1項的值得到,即第i項是第i-1項的值除以i??梢姍M線處應添“/i”或與它等價的表達式。

21.goodmorninggoodmorning解析:子函數(shù)fun(chars[])的作用是將字符數(shù)組s中除去字母以外的所有其他字符都去掉,然后將字母仍按原來的順序存在數(shù)組s中。在主函數(shù)中調用fun(ss),是將“goodmorning”中所有的非字母去掉,在這里就是去掉空格,然后輸出ss。

22.關系模型關系模型解析:數(shù)據庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數(shù)據庫之間的一個標準接口。其總是基于某種數(shù)據模型,可以分為層次模型、網狀模型和關系模型。

23.3*sizeof(double)3*sizeof(double)解析:malloc(size)函數(shù)用于申請動態(tài)存儲空間,故應填3個double型變量在內存中所占的字節(jié)數(shù)。while循環(huán)的功能把字符從第二個元素開始左移一位,并將原第一個元素賦給最后一個元素。

24.2828解析:i=f(4+4)/f(2+2)=4+4×4+4/2+2×2+2=4+16+2+4+2=28。

25.voidfun(charp1[]charp2[]){inti=0n=0;char*p=p1*q=p2;while(*p){p++;n++;}i=n;while(*q){p1[i]=*q;q++;i++;}p1[i]='\0';}voidfun(charp1[],charp2[])\r\n{\r\ninti=0,n=0;\r\nchar*p=p1,*q=p2;\r\nwhile(*p)\r\n{\r\np++;\r\nn++;\r\n}\r\ni=n;\r\nwhile(*q)\r\n{\r\np1[i]=*q;\r\nq++;\r\ni++;\r\n}\r\np1[i]='\\0';\r\n}

26.doublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s=s+l.0/(i*(i+l));/*求級數(shù)的和*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=l;i<=n;i++)\r\ns=s+l.0/(i*(i+l));/*求級數(shù)的和*/\r\nreturns;\r\n}解析:解決數(shù)學序列的問題,我們的思路依然是“數(shù)學先行”,即先看清楚題目的數(shù)學邏輯,然后再根據C語言來“翻譯”出來。本題中,每一項的值都是n*(n+1)的倒數(shù)。當輸入n時,從1開始循環(huán),注意,此處for(i=1;i

27.

解析:該程序功能是計算并輸出給定數(shù)組(長度為9)中每相鄰兩個元素之平均值的平方根之和。在循環(huán)中,首先確定相鄰元素之間的關系,然后對其進行平均值平方根之和的操作。

28.

解析:該程序功能是將字符串中所有下標為奇數(shù)位置上的字母轉換為大寫。其中,同一英文字母的大寫和小寫的ASCII碼值相差32,因此,要將小寫字母轉換為大寫字母,只要將其對應的ASCII碼值減去32即可。

29.STRECfun(STREC*aintb){inti;STRECstr={“\0”-1);/*若沒找到指定的成績在結構體變量中給學號置空串給成績置-1*/for(i=0;i<N;i++)if(a[i].s==b)/*找到指定成績的學生記錄*/str=a[i];returnstr;/*返回學生記錄*/}STRECfun(STREC*a,intb)\r\n{\r\ninti;\r\nSTRECstr={“\\0”,-1);/*若沒找到指定的成績,在結構體變量中給學號置空串,給成績置-1*/\r\nfor(i=0;i<N;i++)\r\nif(a[i].s==b)/*找到指定成績的學生記錄*/\r\nstr=a[i];\r\nreturnstr;/*返回學生記錄*/\r\n}解析:本程序一開始先使結構休變量str的學號為空出,成績?yōu)?1。題中循環(huán)體的功能是搜索所有學生的成績并判斷是否有成績與b所指定的成績相同(即找到),若找到則給str重新賦值(str=a[i]),若沒找到則str成員的值還是原有值(即未找到時學號返回空串,成績返回-1)。

30.voidfun(char*ss){inti;for(i=0;ss[i]!='\0';i++)/*將ss所指字符串中所有下標為奇數(shù)位置的字母轉換為大寫*/if(i%2==1&&ss[i]>='a'&&SS[i]<='z')ss[i]=ss[i]-32;}voidfun(char*ss)\r\n{\r\ninti;\r\nfor(i=0;ss[i]!='\\0';i++)/*將ss所指字符串中所有下標為奇數(shù)位置的字母轉

溫馨提示

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

評論

0/150

提交評論