2021-2022學年山西省晉中市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2021-2022學年山西省晉中市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2021-2022學年山西省晉中市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2021-2022學年山西省晉中市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2021-2022學年山西省晉中市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022學年山西省晉中市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.有以下程序:

程序運行后的輸出結果是()。A.1B.11C.7D.9

2.線性結構是數(shù)據(jù)元素之間存在一種()。

A.一對多關系B.多對多關系C.多對一關系D.一對一關系

3.

4.任何一棵二叉樹的葉子結點在前序、中序和后序遍歷序列中的相對次序()。

A.不發(fā)生改變B.發(fā)生改變C.不能確定D.以上都不對

5.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

6.

7.有以下程序:#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

8.

9.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0:elsey=-1;

10.微型計算機的運算器、控制器及內(nèi)存儲器組合在一起,稱之為()

A.ALUB.CPUC.MPUD.主機

11.數(shù)據(jù)結構在計算機內(nèi)存中的表示是指()。A.數(shù)據(jù)的存儲結構B.數(shù)據(jù)結構C.數(shù)據(jù)的邏輯結構D.數(shù)據(jù)元素之間的關系

12.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

二、2.填空題(12題)13.設有以下結構體類型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且結構體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補充完整:

fwrite(student,【】,1,fp);

14.冒泡排序算法在最好的情況下的元素交換次數(shù)為【】。

15.數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,所以,基于邏輯結構的應用程序不必修改,稱為【】。

16.以下scanf函數(shù)調用語句中對結構體變量成員的引用不正確的是{charname[20];}pup[5],*p;

17.在結構化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為【】。

18.以下程序的運行結果是【】。

main()

{char*k="aeiou";

for(;*k;k++)printf("%c",*k);

}

19.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結果。

20.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

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

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);

}

22.設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

23.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

24.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正常運行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

三、3.程序設計題(10題)25.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結果由函數(shù)值帶回。m與n為兩個正整數(shù)且要求m>n。

例如:m=12,n=8時,運行結果為495.000000。

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

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

26.編寫函數(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));

}

27.請編寫一個函數(shù)fun(),它的功能是:比較兩個字符串的長度,(不得調用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較短的字符串。若兩個字符串長度相等,則返回第1個字符串。

例如,輸入nanjing<CR>nanchang<CR>(<CR>為回車鍵),函數(shù)將返回nanjing。

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

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

試題程序:

#include<stdio.h>

char*fun(char*S,char*t)

{

}

main()

{

chara[20],b[10],*p,*q;

inti;

printf("Inputlthstring:");

gets(a);

printf("Input2thstring:");

gets(b);

printf(“%s”,fun(a,b));

}

28.已知學生的記錄由學號和學習成績構成,N名學生的數(shù)據(jù)已存入a結構體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。

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

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

29.N名學生的成績己在主函數(shù)中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun(),它的功能是:求出平均分,由函數(shù)值返回。

例如,若學生的成績是85,76,69,91,72,64,87,則平均分應當是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創(chuàng)建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

printf("ave=%6.3f\n",ave);

}

30.編寫函數(shù)fun,它的功能是:求小于形參n同時能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。

例如若n為1000時,程序輸出應為:s=153.909064。

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

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

31.請編寫一個函數(shù)fun(),它的功能是將一個數(shù)字字符串轉換為一個整數(shù)(不得調用C語言提供的將字符串轉為整數(shù)的函數(shù))。

例如,若輸入字符串“-1234”,則函數(shù)把它轉換為整數(shù)值-1234。

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

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

試題程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

{

}

main()

{

chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

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

}

32.編寫函數(shù)fun,它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。

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

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

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

33.請編寫函數(shù)fun(),該函數(shù)的功能是:統(tǒng)計一行字符串中單詞的個數(shù),作為函數(shù)值返回。一行字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間有若干個空格隔開,一行的開始沒有空格。

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

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

試題程序:

#include<string.h>

#include<stdio,h>

#defineN80

intfun(char*s)

{

}

main()

{

charline[N];

intnum=0;

printf("Enterastring:\n");

gets(line);

num=fun(line);

printf("Thenumberofwordis:%d\n\n",

num);

}

34.請編寫函數(shù)fun,其功能是:計算并輸出3到n之間(含3和n)所有素數(shù)的平方根之和。

例如,在主函數(shù)中從鍵盤給n輸入100后,輸出為:sum=148.874270。

注意:要求n的值大于2但不大于100。部分源程序給出如下。清勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

[試題源程序]

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doublesum;

printf("\n\nInputn:");

scanf("%d",&n);

sum=fun(n);

printf("\n\nsum=%f\n\n",sum);

}

四、單選題(0題)35.有以下程序#include<stdio.h>voidfun(char**p){++p;printf("%s",*p);}main{char*a[]={"Morning","Afternoon","Evening","Night");fun(a);}程序的運行結果是()。A.AfternoonB.fternoonC.MorningD.orning

五、單選題(0題)36.

六、單選題(0題)37.若一個棧以向量V[1..n]存儲,初始棧頂指針top為n+1,則下面x進棧的正確操作是()。

A.top=top+1;V[top]=x

B.V[top]=x;top=top+1

C.top=top-1;V[top]=x

D.V[top]=x;top=top-1

參考答案

1.D題干中,函數(shù)fun的功能是將二維數(shù)組p的行下標為1、列下標為1的元素(p[1][1])的值賦給二維地址s指向的*s所指向的存儲單元。main函數(shù)中定義了整型指針p,動態(tài)分配了整型長度的內(nèi)存空間,調用函數(shù)fun將數(shù)組元素a[1][1],即9賦給p所指向的空間。本題答案為D選項。

2.D

3.A

4.A

5.C當循環(huán)結束時,w的值應為-1,而其他選項中w的值為0,故選擇c選項。

6.D

7.C在ifelse語句中else,總是與離它最近的配對。本題目中x勸1所以!x為0,所以執(zhí)行else齬句中的內(nèi)容,判斷(x==0)是否成立,因為x為1所以條件不成立,所以else部分的近.else語句不再執(zhí)行,所以y的值還是初始值0。

8.C

9.C解析:選項A的意思是:在x>O情況下,y為1,否則,在x=O時,y為0,剩下x<O時,y為-1,滿足本題中函數(shù)的要求。選項B描述的意思是:初始化y的值為0,在x>O時,給y重新賦值為1,否則,在x<O時,給y重新賦值為-1,滿足本題中函數(shù)的要求。選項C描述的意思是:在x>=0情況下,如果x>O,則y為1,否則,即x==0時,y為-1;剩下的x<O時,y為0。可見答案C實現(xiàn)的結果不是給定的表達式。選項D中描述的意思是:在x>=0的情況下,如果x>O,就給y賦值為1,否則即x==0時給y賦值為0,在不是x>=0的其他情況下,就給y賦值為-1,滿足本題中函數(shù)的要求。所以4個選項中C為所選。

10.D

11.A數(shù)據(jù)結構在計算機內(nèi)存中的表示指的是數(shù)據(jù)的存儲結構。數(shù)據(jù)的存儲結構是指數(shù)據(jù)的邏輯結構在計算機中的表示。數(shù)據(jù)元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。

12.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關鍵碼值的大小排好序,而不是按關鍵碼的檢索頻率排序。

13.sizeof(structst)*50sizeof(structst)*50解析:fwrite函數(shù)的一般調用形式為:fwrite(buffer,size,count,fp);其中:buffer是一個指針變量,是要輸出數(shù)據(jù)的起始地址;size是要寫的字節(jié)數(shù);count是要寫多少個size字節(jié)的數(shù)據(jù)項;fp是文件指針。

14.0

15.物理獨立性物理獨立性解析:邏輯獨立性是指,由于數(shù)據(jù)的局部邏輯結構與總體邏輯結構之間也由系統(tǒng)提供映像,使得當總體邏輯結構改變時,其局部邏輯結構叮以不變,從而根據(jù)局部邏輯結構編寫的應用程序也可以不必修改。物理獨立性是指,由于數(shù)據(jù)的存儲結構與邏輯結構之間山系統(tǒng)提供映像,使得當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,所以,基于邏輯結構的應用程序不必修改。

16.D

17.數(shù)據(jù)字典數(shù)據(jù)字典解析:在結構化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為數(shù)據(jù)字典。

18.aeiou

19.驅動模塊驅動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調用或驅動,同時被測試模塊還要去調用其他模塊,前者稱為驅動模塊,后者稱為承接模塊。其中驅動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結果;承接模塊的作用是代替被測模塊,調用其他模塊。

20.調試調試

21.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。

22.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲分類的概念。如果沒有特別說明,函數(shù)的存儲范圍是從定義函數(shù)的位置到文件的結尾,如果其他文件想使用這個函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進來。

23.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達式中,也只有賦值表達式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應該為3。

24.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數(shù)中調用了一個max函數(shù),而max函數(shù)是在調用之后定義的,所以要求填空的內(nèi)容應該是對函數(shù)進行聲明的語句。由max函數(shù)的定義可知此函數(shù)是double型的,因此空格處應該填doublemax或externdoublemax。

25.

解析:(1)該程序功能是對組合數(shù)公式求值。它的解題思路,可以分解為以下幾步:求m!→求n!→求(m-n)!→求組合數(shù)的值。

(2)從已給部分源程序的main主函數(shù)開始入手,主函數(shù)中的“printf(“P=%f\n”,fun(12,8));”語句中“fun(12,8)”將12、8傳遞給fun中的m與n,fun函數(shù)實現(xiàn)對組合數(shù)的求佰。

26.doublefun(intn){doubles=0.0;inti;for(i=0;i<n;i++)/*從0~n中找到既能被5整除同時又能被11整除的數(shù)并將這些數(shù)求和*/if(i%5==0&&i%11==0)s=s+i;s=sqrt(s);/*對s求平方根*/returns;doublefun(intn)\r\n{doubles=0.0;\r\ninti;\r\nfor(i=0;i<n;i++)/*從0~n中找到既能被5整除同時又能被11整除的數(shù),并將這些數(shù)求和*/\r\nif(i%5==0&&i%11==0)\r\ns=s+i;\r\ns=sqrt(s);/*對s求平方根*/\r\nreturns;解析:本題的解題思路是逐個取得從。0-n之間的所有數(shù),對每次取得的數(shù)進行條件判斷,條件是既能被5整除同時又能被11整除,注意:這兩個條件要求同時成立,因此用到了“&&”運算符。滿足條件,該數(shù)就被累加到s中去,求出所有符合條件的數(shù)后,用sqrt()函數(shù)(包含于頭文件<math.h>中)對s求平方根。

27.char*fun(char*Schar*t){intij;for(i=0s[i]!=‘\0’;i++);/*求字符串的長度*/for(j=0;t[j]!=‘\0’;j++);/*比較兩個字符串的長度*/returns;/*函數(shù)返回較短的字符串若兩個字符串長度相等則返回第1個字符串*/elsereturnt;}char*fun(char*S,char*t)\r\n{\r\ninti,j;\r\nfor(i=0,s[i]!=‘\\0’;i++);/*求字符串的長度*/\r\nfor(j=0;t[j]!=‘\\0’;j++);/*比較兩個字符串的長度*/\r\nreturns;/*函數(shù)返回較短的字符串,若兩個字符串長度相等,則返回第1個字符串*/\r\nelse\r\nreturnt;\r\n}解析:本題中,第1個for循環(huán)的作用是求出s的字符個數(shù)i,第2個for循環(huán)的作用是求出t的字符個數(shù)j,因為任何循環(huán)都要控制—條語句,所以在每—個for循環(huán)條件后面必須要有—個分號。

本題也可用如下技巧:

#include<string.h>/*一定要注意在最前面加#include<string.h>*/

char*fun(char*s,char*t)

{

if(strlen(S)>=strten(t)

returns;

elsereturnt;

}

28.

解析:該程序功能是求最低分數(shù)的學生。本題是關于求解結構體中某些成員的最小值,首先將第一個值設定為最小值,并在循環(huán)中將其他所有值與該值進行比較,求得最小值。

29.doublefun(STREC*h){doubleav=0.0;STREC*p-h->next;/*p直接指向“頭結點”的下一個結點即第—個成績*/while(p!=NULL){aY=ay+p->s;/*求總分數(shù)*/p=p->next;}returnay/N;/*返回平均值*/}doublefun(STREC*h)\r\n{\r\ndoubleav=0.0;\r\nSTREC*p-h->next;/*p直接指向“頭結點”的下一個結點,即第—個成績*/\r\nwhile(p!=NULL)\r\n{aY=ay+p->s;/*求總分數(shù)*/\r\np=p->next;\r\n}\r\nreturnay/N;/*返回平均值*/\r\n}解析:本題是關于鏈表問題,所以,一定要弄清表示出使指針變量p指向下一個“結點”的方法及表示結束的判斷,本題中,因為“頭結點”中沒有數(shù)值,所以程序中讓p直接指向“頭結點”的下一個結點,使用語句STREC*p=h->next,當然也可將p一開始就指向“頭結點”。

30.

解析:該程序功能是求解同時能被3與7整除的所有自然數(shù)之和的平方根。解題過程,首先利用if條件表達式“if(i%3==0&&i%7==0)”求能同時被3與7整除的數(shù),然后在此基礎上利用C語言中的sqrt語句求平方根。

31.longfun(char*p){longn=0;intflag=1;if(*p=='-')/*負數(shù)時置flag為-1*/{p++;flag=-1;}elseif(*p=='+')/*正數(shù)時置flag為1*/p++;while(*p!='\0'){n=n*10+*p-'0';/*將字符串轉成相應的整數(shù)*/p++;}returnn*flag;}longfun(char*p)\r\n{\r\nlongn=0;\r\nintflag=1;\r\nif(*p=='-')/*負數(shù)時置flag為-1*/\r\n{p++;flag=-1;}\r\nelseif(*p=='+')/*正數(shù)時置flag為1*/\r\np++;\r\nwhile(*p!='\\0')\r\n{n=n*10+*p-'0';/*將字符串轉成相應的整數(shù)*/\r\np++;\r\n}\r\nreturnn*flag;\r\n}解析:if()的作用是

溫馨提示

  • 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

提交評論