2021-2022學年陜西省商洛市全國計算機等級考試C語言程序設計預測試題(含答案)_第1頁
2021-2022學年陜西省商洛市全國計算機等級考試C語言程序設計預測試題(含答案)_第2頁
2021-2022學年陜西省商洛市全國計算機等級考試C語言程序設計預測試題(含答案)_第3頁
2021-2022學年陜西省商洛市全國計算機等級考試C語言程序設計預測試題(含答案)_第4頁
2021-2022學年陜西省商洛市全國計算機等級考試C語言程序設計預測試題(含答案)_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

一、單選題(12題)1.用樹形結構來表示實體之間聯系的模型稱為()。

A.關系模型B.層次模型C.網狀模型D.數據模型

2.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運行結果是

A.A.331

B.41

C.2

D.1

3.面向對象的設計方法與傳統的面向過程的方法有本質不同,它的基本原理是()。

A.模擬現實世界中不同事物之間的聯系

B.強調模擬現實世界中的算法而不強調概念

C.使用現實世界的概念抽象地思考問題從而自然地解決問題

D.不強調模擬現實世界中的算法而強調概念

4.

5.

6.設以下變量均為int類型,表達式的值不為7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

7.有以下程序:#includeMain(){charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結果是()。A.E,68.B.D.69C.E,DD.輸出無定值

8.有以下程序:#include<stdio.h>voidf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf(“%d,%d”,m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序的運行結果是()。A.2,3B.1,3C.1,4D.1,2

9.相對于數據庫系統,文件系統的主要缺陷有數據關聯差、數據不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

10.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內存字節數相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

11.

12.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

二、2.填空題(12題)13.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

14.軟件開發環境是全面支持軟件開發全過程的【】集合。

15.以下程序的功能是計算:s=1+12+123+1234+12345。請填空。

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

16.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

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

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

18.在面向對象方法中,信息隱蔽是通過對象的______性來實現的。

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

20.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

21.下面函數用來求出兩個整數之和,并通過形參傳回兩數相加之和值。請填空。

intadd(intx,inty,【】,)

{【】=x+y;}

22.若i、j為int類型,則以下程序段內循環體的總執行次數是【】。

for(i=5;i;i--)

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

{

}

23.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。

24.實現算法所需的存儲單元多少和算法的工作量大小分別稱為為算法的【】。

三、3.程序設計題(10題)25.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是按分數的高低排列學生的記錄,低分在前。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charmum[10);

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={{“GA005”,88},{“GA003”,64},

{“CA002”,77},{“GA004”,89},{“GA001”,54},

{“GA007”,72},{“GA008”,72},{“GA006”,65},

{“GA015”,83},{“GA013”,95},{“GA012”,55},

{“GA014”,68},{“GA01l”,78},{“GA017”,53},

{“GA018”,92},{“GA016”,82}};

inti;

FILE*out;

fun(s);

printf(“Thedataaftersorted:\n”);

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

{

if((i)%4==0)

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

printf(“\n”);

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

}

printf(“\n”);

ut=fopen(“out21.dat”,“w”);

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

{

if((i)%4==0&&i)

fprintf(out,“\n”);

fPrintf(out,“%4d”,s[i].s);

}

fprintf(out,“\n”);

fClose(out);

}

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

例如,輸入beijingshah曲aj(為回車鍵),函數將返回shanghai。

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

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

27.請編寫函數fun,其功能是:計算并輸出

例如,在主函數中從鍵盤給n輸入20后,輸出為:s=534.188884。

注意:要求n的值大于1但不大于100。

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

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

28.程序定義了NxN的二維數組,并在主函數中自動賦值。請編寫函數fun,函數的功能是:使數組右上三角元素中的值乘以m。

例如:若m的值為2,a數組中的值為:

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

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

例如,給定的10個數為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中。

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

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

例如,當a=45,b=12。調用該函數后,c=4251。

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

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

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

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

請勿改動主函數main和其他函數中的任何內容,僅在函數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);

}

32.請編寫函數fun(),它的功能是:求出ss所指字符串中指定字符的個數,并返回此值。

例如,若輸入字符串123412132,輸入字符1,則輸出3。

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

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

試題程序:

#include<coio.h>

#include<stdio.h>

#defineM81

intfun(char*ss,charc)

{

}

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastring:");

gets(a);

printf("\nPleaseenterachar:");

ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));

}

33.請編寫一個函數fun(),它的功能是:求出1到m(含m)之內能被7或11整除的所有整數放在數組a中,通過n返回這些數的個數。

例如,若傳給m的值為50,則程序輸出:

7111421X283335424449

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{

}

main()

{

intaa[M],n,k;

clrscr();

fun(50,aa,&n);

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

if((k+1)%20==0)/*每行輸出20個數*/

{printf("%4d",aa[k]);

printf("\n");

}

else

printf("%4d",aa[k]);

printf("\n");

}

34.假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的長度,形參h給出了字符串中前導*號的個數,形參e給出了字符串中最后*號的個數。在編寫函數時,不得使用C語言提供的字符串函數。

例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:A*BC*DEF*G。

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

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

四、單選題(0題)35.C語言中運算對象必須是整型的運算符是()。

A.%=B./C.=D.<=

五、單選題(0題)36.以下程序運行后,輸出結果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

六、單選題(0題)37.下面程序的輸出結果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

參考答案

1.B解析:在數據庫系統中,由于采用的數據模型不同,相應的數據庫管理系統(DBMS)也不同。目前常用的數據模型有3種:層次模型、網狀模型和關系模型。在層次模型中,實體之間的聯系是用樹結構來表示的,其中實體集(記錄型)是樹中的結點,而樹中各結點之間的連線表示它們之間的關系。所以,本題的正確答案是B。

2.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或為“假”時執行指定的動作,由if引導條件為“真”時執行的操作;由else引導條件為“假”時執行的操作。else語句要與上面最近的if語句進行匹配,如果要嵌套調用if-else語句,需要將嵌套部分用{}括起來,避免程序報錯。題目中給出了一個if語句和一個if-else語句,if-else語句為第一個if語句的子語句。首先執行外層if語句,執行條件為x>y,由于x=1,y=2,故該條件為假,不執行if的子語句,直接執行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進行x++操作。x的初始值為1,輸出結果為1。

3.C\n面向對象的設計方法的基本原理是:使用現實世界的概念抽象地思考問題從而自然地解決問題。它雖強調模擬現實世界中的概念而不強調算法,但是它鼓勵開發者在軟件開發的過程中從應用領域的概念角度去思考。

\n

4.A

5.A

6.B本題考查逗號表達式的用法。C語言中逗號“,”也是一種運算符,稱為逗號運算符,其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式。其一般形式為:表達式1,表達式2。其求值過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。逗號表達式的一般形式可以擴展為:表達式1,表達式2,表達式3,…,表達式n。它的值為表達式n的值。

7.A本題目中字符變量c1是字符'A'的ASCII碼加上4,即69所對應的字符E'。字符變量c2是字符'A'的ASCII碼加上3,即68所對應的字符D'。但是打印輸出時,c1以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68。

8.B在f(int*p,int*q)函數中,執行“p=p+1;”是將p所對應的地址加1,而“*q=*q+1;”是將q所指向n的地址所對應的值加1,所以m的值沒有變,而n的值則變為3。故本題答案為B選項。

9.D解析:文件系統所管理的數據文件基本上是分散的、相互獨立的,因此相對于數據庫系統,以此為基礎的數據處理存在3個缺點,數據冗余大、數據的不一致性、程序與數據的相互依賴(簡稱為數據依賴)。注意:文件系統和數據庫系統各自的特點,人工管理階段及數據庫系統三代的特點。

10.D共用體變量中的所有成員共享一段公共存儲區,所有成員的首地址相同。在每一個時刻所有的成員中只有一個有效,即只有最后一個被賦值的成員有效,其余的成員無效。

11.B

12.C

13.存儲結構

14.軟件工具軟件工具

15.t*10或10*tt*10或10*t解析:本題要求累加一系列有規律的數,從輸出結果來看,s保存的是最終結果,而s在循環體中,每次累加一個t,則說明t在5次循環中分別等于1.12、123、1234、12345;而t每次循環等于“填空內容”加上循環變量i,又因為i在5次循環中分別等于1、2、3、4,5,所以t每次循環要加的“填空內容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內容”應是t*10。

16.可重用性繼承的優點:相似的對象可以共享程序代碼和數據結構,從而大大減少了程序中的冗余,提高軟件的可重用性。

17.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達式a<b不成立,不再往下判斷,直接退出if語句,執行后面的輸出語句,程序結束。在這個程序中a、b、c的值沒做任何改變。

18.封裝封裝

19.log2n

20.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

21.int*p*p或p[0]int*p\r\n*p或p[0]

22.1515解析:執行二重循環時,外循環每執行一次,內循環將循環一遍。本題的程序段中外循環執行了5次,內循環執行了3次,所以程序段內循環體的總執行次數是15。

23.線性結構線性結構解析:數據的邏輯結構是指數據元素之間的邏輯關系,分為線性結構和非線性結構。常見的線性結構有線性表、棧和隊列等,常見的非線性結構有樹、二叉樹等。

24.空間復雜度和時間復雜度空間復雜度和時間復雜度解析:算法的復雜性是指對—個在有限步驟內終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復雜性,算法的計算量是算法的時間復雜性。

25.intfun(STRECa[]){intij;STRECt;for(i=l;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每—次比較中要進行N-1次兩兩比較*/if(a[j].s>a[j+1].s)/*按分數的高低排列學生的記錄低分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每—次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s>a[j+1].s)/*按分數的高低排列學生的記錄,低分在前*/\r\n{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N個數,則要進行N-1次比較,在每—次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數進行比較并將其中大的數放在前或在后(若要求從小到大排序,則大的數要放在后。反之則對調),即兩兩比較后這兩個數要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數肯定在最后,第2次比較結束后,次最大(或次最小)數肯定在倒數的第2個數,依次類推,所以進行第一次比較時必須比較到最后一個數,而進行第2次比較時只要比較到倒數的第2個數即可,所以進行第i次比較I時只需比較N-i次即可(這種算法較難理解,但它是最好的)。

26.

解析:該程序功能是比較兩個字符串的長度。解題過程是首先分別求得兩個字符串的長度,然后對這兩個值進行判斷,實現兩個字符串長度的比較。

27.

解析:該程序功能是對題干中給出的多項式的求解。根據題干中給出的數列,首先推出每一項的表達式,然后再對多項式進行累加求和。

28.

解析:該程序功能是使數組右上半三角元素中的值乘以m。本題中首先要確定右上角半角元素的特點,然后對元素逐個進行乘以m的操作。其中,右上角的元素是行下標小于等于列下標的元素。

29.

解析:該程序功能是計算并輸出給定10個數的方差。解題思路是,根據題干中給出的方差公式首先計算出x’的值,然后計算根號里面的值,最后求其平方根。

30.*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);解析:該程序功能是將正整數a、b合并形成一個新整數。本題類型首先要考慮整數的位數分離,然后要進行位數合成。也就是先將數字的各位數拆開,改變排列順序后,再組合成新的數字。

31.intfun(char*s){intij=0;for(i=0;s[i]!='\0';i++)if(s[i]!=''&&(s[i+l]==''||s[i+1]=='\O'))/*如果一個字母的下一個字符為空格或者結束標記則表示一個單詞結束*/j++;returnj;/*返回單詞個數*/}intfun(char*s)\r\n{\r\ninti,j=0;\r\nfor(i=0;s[i]!=\'\\0\';i++)\r\nif(s[i]!=\'\'&&(s[i+l]==\'\'||s[i+1]==\'\\O\'))/*如果一個字母的下一個字符為空格或者結束標記,則表示一個單詞結束*/\r\nj++;\r\nreturnj;/*返回單詞個數*/\r\n}解析:判斷單詞的個數,我們首先想到的是程序怎樣識別是一個單詞,也即循環語句中的fir(i=0;s[i]!='\\0';i++),本題重點是if句中的條件表達方式。

32.intfun(char*sscharc){inti=0;for(;*ss!='\0';ss++)if(*ss==c)i++;/*求出ss所指字符串中指定字符的個數*/return

溫馨提示

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

評論

0/150

提交評論