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

下載本文檔

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

文檔簡介

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

一、單選題(12題)1.下列關于線性鏈表的敘述中,正確的是()A.各數(shù)據(jù)結點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進行出入與刪除時,不需要移動表中的元素

D.以上三種說法都不催

2.在inta=3,int*p=&a;中,*p的值是()

A.變量a的地址值B.無意義C.變量p的地址值D.3

3.有以下程序:#include<stdio.h>structnode{charid;structnode*next;}a={‘A’},b={‘B’},c={‘C’},*p=&a,*pt;main(){p->next=&b;p=p->next;p->next=&c;p=p->next;p->next=NULL;p=&a;}若程序經(jīng)運行后形成下圖所示的數(shù)據(jù)結構。則以下可以刪除中間節(jié)點b的正確選項是()。

A.pt=p->next;p->next=p->next->next;free(pt);

B.pt=p->next;p->next=p->next->next->next;free(pt);

C.pt=&b;free(pt);

D.pt=&b;p->next=p->next->next->next;free(pt);

4.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

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

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

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

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

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

6.有以下程序:

若運行時輸入:246<;回車>;,則輸出結果為()。

A.204B.200C.240D.246

7.若有如下程序:main(){inta=0,t=0;while(!a!=0)t+=a++;printf("%d,%d\n",t,A);}則程序運行后的輸出結果是()

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

8.若在線性表中采用折半查找法查找元素,該線性表應該()A.元素按值有序B.構采用順序存儲結C.元素按值有序且采用順序存儲結構D.元素按值有序且采用鏈式存儲結構

9.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個整數(shù)分別賦給變量a、b、c的語句是______。

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

10.C語言中函數(shù)返回值的類型是由()決定的。

A.return語句中的表達式類型B.調用該函數(shù)的主調函數(shù)類型C.定義函數(shù)時所指定的函數(shù)類型D.以上說法都不正確

11.

12.在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

二、2.填空題(12題)13.關系模型的完整性規(guī)則是對關系的某種約束條件,包括實體完整性、______和自定義完整性。

14.按照“先進先出”的原則組織數(shù)據(jù)的結構是______。

15.下面程序段的輸出結果是【】。

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

print("%d\n",sum);

16.以下程序用于判斷a、b、c能否構成三角形,若能,輸出YES,否則輸出NO。當給a、b、c輸入三角形三條邊長時,確定a、b、c能構成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。

請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*a、b、c能構成三角形*/

elseprintf("NO\n");/*a、b、c不能構成三角形*/

}

17.在面向對象的設計中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【】。

18.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為______。

19.函數(shù)fun的功能是計算xn

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已正確定義m、a、b變量并賦值,并調用fun函數(shù)計算:m=a4+b4-(a+b)3。實現(xiàn)這一計算的函數(shù)調節(jié)器用語句為______。

20.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數(shù)為______。

21.下面的程序用來統(tǒng)計文件中字符的個數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fP;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenfile!\n");sxit(0);}

while【】

{fgetc(fp);num++;}

printr("num=%d\n",num);

fclose(fp);

}

22.數(shù)據(jù)結構包括數(shù)據(jù)的邏輯結構、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。

23.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

24.以下條件表達式可計算:1+|a|的值,請?zhí)羁铡?/p>

a>=0?【】:【】

三、3.程序設計題(10題)25.請編寫一個函數(shù)fun(),它的功能是:求出一個2×M整型二維數(shù)組中最大元素的值,并將此值返回調用函數(shù)。

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

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

試題程序:

#defineM4

#include<stdio.h>

fun(inta[][M])

{

}

main()

{

intarr[2][M]={5,8,3,45,76,-4,12,82};

printf("max=%d\n",fun(arr));

}

26.請編寫函數(shù)fun,函數(shù)的功能是:移動字符串中的內(nèi)容,移動的規(guī)則如下:把第1到第m個字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

例如,字符串中原有的內(nèi)容為:ABCDEFGHIJK,m的值為3,則移動后,字符串中的內(nèi)容應該是:DEFGHIJKABC。

注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

27.請編寫一個函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個字符申中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標。

例如,輸入一個字符串world,然后輸入3,則調用該函數(shù)后的結果為word。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

{

}

main()

{

charstr1[LEN],str2[LEN];

intn;

clrscr();

printf("Enterthestring:\n");

gets(str1);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:%s\n",

str2);

}

28.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構件數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把分數(shù)最高的學生數(shù)據(jù)放在h所指的數(shù)組中。注意:分數(shù)高的學生可能不只一個,函數(shù)返回分數(shù)最高學生的人數(shù)。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85),("GA013",91},{"GA012",64},

{"GA014",91),{"GA011",66},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh[N];

inti,n;

FILE*out;

n=fun(s,h);

printf("The%dhighestscore:\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

/*輸出最高分學生的學號和成績*/

printf("\n");

ut=fopen("out45.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

29.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。

例如,當a=45,b=12。調用該函數(shù)后,c=5241。

注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

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

30.請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:二維數(shù)組中的值為:

13579

29994

69998

13570

則函數(shù)值為61。

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

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

31.編寫函數(shù)fun,函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,函數(shù)返回所求出的素數(shù)的個數(shù)。

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

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

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

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

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

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

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

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

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

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

試題程序:

#include<conio.h>

#include<math.h>

#include

doublefun(intn)

{

}

main()

{

clrscr();

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

}

34.請編寫一個函數(shù)fun(),它的功能是:求出一個4×M整型二維數(shù)組中最小元素的值,并將此值返回調用函數(shù)。

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

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

試題程序:

#defineM4

#include<stdio.h>

fun(inta[])[M])

{

}

main()

{

intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7);

printf(“min=%d\n”,fun(arr));

}

四、單選題(0題)35.對于一個正常運行的C程序,下列敘述中正確的是()。A.A.程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結束

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結束

D.程序的執(zhí)行總是從程序中的第一個函數(shù)開始,在程序的最后一個函數(shù)中結束

五、單選題(0題)36.C語言中最簡單的數(shù)據(jù)類型包括()。

A.整型、實型、邏輯型B.整型、實型、字符型C.整型、字符型、邏輯型D.字符型、實型、邏輯型

六、單選題(0題)37.

參考答案

1.C

試題2分析

結點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續(xù)。插入和刪除元素的時候,不需要移動表中的元素。

試題2答案

C

2.D

3.A題干中,a、b、c3個節(jié)點都是node類型,它們都有兩個成員:字符成員id,node類型指針成員next。由于a的next指向b,b的next指向c,因此a、b、c構成了鏈表。要想刪除b節(jié)點,只需要將a節(jié)點的next(p->next)指向c(p->next->next),然后將節(jié)點b的存儲空間釋放即可。所以刪除b節(jié)點的語句為“pt=p->next;p->next=p->next->next;free(pt);”。故本題答案為A選項。

4.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標識符(*指針變量名)()?!邦愋蜆俗R符”為函數(shù)返回值的類型。

5.Bcontinue語句的作用是跳過循環(huán)體中剩余的語句而進行下一次循環(huán),所以A選項錯誤。break語句的作用是終止正在執(zhí)行的switch語句體,跳出switch語句體或者強制終止當前循環(huán),從當前執(zhí)行的循環(huán)中跳出,所以C、D選項錯誤。故本題答案為B選項。

6.A本題中輸入的3個數(shù)據(jù)2,4,6分別賦值給了x[0[0],x[1][0],x[2][0]。x[o][1]仍為初始時的0,所以打印輸出時的結果為A選項。

7.A

8.C

9.A解析:選項B中d已經(jīng)為地址,不應在加上求地址符號“&”,故選項B不正確;選項C中,a和b都為變量不是地址,應該在a和b之前加上求地址符號“&”,故選項C不正確:選項D中指針d所指向的存儲空間的位置為變量c的值,不為地址,故選項D不正確,所以,4個選項中A為所選。

10.C

11.A

12.D解析:在關系數(shù)據(jù)表中,行稱為元組,對應存儲文件中的記錄,列稱為屬性,對應存儲文件中的字段,所以本題答案為D。

13.參照完整性參照完整性

14.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。

15.16

16.a+b>c&&a+c>b&&b+c>aa+b>c&&a+c>b&&b+c>a解析:在邏輯表達式中,如果要同時滿足幾個條件可以使用邏輯與運算符“&&”,故本題的答案應該為:a+b>c&&a+c>b&&b+c>a或其他等價形式。

17.消息消息解析:在面向對象技術中,主要用到對象(object)、類(class)、方法(method)、消息(message)、繼承(inheritance)、封裝(encapsulation)等基本概念。其中消息是用來請求對象執(zhí)行某一處理或回答某些信息的要求。

18.1616解析:函數(shù)運算不改變數(shù)據(jù)類型,所以結果也是double型,fabs(x)是對x取絕對值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結果為double型)。

19.m=fun(a4)+fun(b4)-fun(a+b3);m=fun(a,4)+fun(b,4)-fun(a+b,3);解析:本題考核的知識點是C程序的簡單應用。函數(shù)fua(x,n)的作用是求x的n次方,因此a的4次方應該調用函數(shù)tim(a,4),b的4次方應該調用函數(shù)fun(b,4),a+b的3次方應該調用函數(shù)fun(a+b,3),所以題目中的數(shù)學表達式,寫成C程序中的語句為m=fun(a,4)+fun(b,4)-fun(a+b,3)。

20.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。

21.(!feof(fp))或feof(fp):=0(!feof(fp))或feof(fp):=0

22.存儲結構數(shù)據(jù)結構包括3個方面,即數(shù)據(jù)的邏輯結構、數(shù)據(jù)的存儲結構及對數(shù)據(jù)的操作運算。

23.00解析:函數(shù)getchar()是從鍵盤得到用戶輸入的一個字符。用戶輸入的第1個字符是a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個循環(huán)不會被執(zhí)行。

24.1+a1-a1+a\r\n1-a解析:因為題目中求的是1+|a|的值,即1和a的絕對值之和。所以根據(jù)數(shù)學中求絕對值的規(guī)則,當a>=0時,絕對值取本身,當a<0時,絕對值取相反數(shù),再結合條件運算符的計算規(guī)則可得到本題的答案為a>=0。注意:逗號表達式的求值規(guī)則。

25.fun(inta[][M]){intijmax=a[0][0];for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])max=a[i][j];/*求出二維數(shù)組的最大值*/returnmax;}fun(inta[][M])\r\n{\r\ninti,j,max=a[0][0];\r\nfor(i=0;i<2;i++)\r\nfor(j=0;j<M;j++)\r\nif(max<a[i][j])\r\nmax=a[i][j];/*求出二維數(shù)組的最大值*/\r\nreturnmax;\r\n}解析:此類求最大值或最小值的C語言問題,我們可以采用逐個比較的方式。要求數(shù)組中的所有元素走動一遍,并從中找出最大、最小值,要注意一開始應使max存放數(shù)組中的第一個元素的值。可按逐行查找也可按逐列查找的方式,本題采用的是逐行查找的方式。即行下標在外層循環(huán)列下標在內(nèi)層循環(huán),因為在循環(huán)的嵌套中越在內(nèi)層循環(huán),循環(huán)變化就越快。

26.

解析:該程序功能是移動字符串中的內(nèi)容,第一個字符移動到最后,后面的字符往前移動一位,形成循環(huán)左移。移動m個字符的就是循環(huán)左移m次。

27.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結束標記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結束標記*/\r\n}解析:本題要求刪除字符串中指定下標的字符,即相當于把不是指定下標的字符留下。所以要用if(i!=n),注意不能寫成“=”運算。

28.intfun(STREC*aSTREC*b){intij=0max=a[0].s;for(i=0;i<N;i++)if(max<a[i].s)max=a[i].s;/*找出最大值*/for(i=0;i<N;i++)if(max==a[i].s)b[j++]=a[i];/*找出成績與max相等的學生的記錄存入結構體b中*/returnj;/*返回最高成績的學生人數(shù)*/}intfun(STREC*a,STREC*b)\r\n{\r\ninti,j=0,max=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(max<a[i].s)max=a[i].s;/*找出最大值*/\r\nfor(i=0;i<N;i++)\r\nif(max==a[i].s)b[j++]=a[i];/*找出成績與max相等的學生的記錄,存入結構體b中*/\r\nreturnj;/*返回最高成績的學生人數(shù)*/\r\n}解析:該程序使用循環(huán)嵌套,第1個for語句的作用是找出最大值。第2個循環(huán)的作用是找出與max相等的成績,也即最高成績的學生記錄,并存入b中。

29.

解析:該程序功能是將兩個正整數(shù)合并形成一個整數(shù)的題型。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。

30.

解析:該程序功能是求出二維數(shù)組周邊元素之和。其中周邊元素是指數(shù)組的最上和最下的兩行,最左和最右的兩列。數(shù)組第一行元素的行下標為0,最后一行元素的行下標為M-1,第一列的列下標為0,最后一列的列下標為N-1。

31.

解析:該程序功能是求一定范圍內(nèi)的素數(shù)。素數(shù)是只能被1和自身除盡的數(shù)。判斷i是不是素數(shù)最簡單的方法就是用2~(i/2)去除i,只要能除盡就不是素數(shù)。

32.

解析:該程序功能是計算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。解題過程首先求出能被5或9整除的所有自然數(shù),然后在此基礎上求得這些數(shù)的倒數(shù)之和。

33.doublefun(intn){doubles=0.0;inti;for(i=0;i<n;i++)/*從0~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

提交評論