2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序的輸出結(jié)果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

2.在循環(huán)雙鏈表的p所指的結(jié)點之前插入s所指結(jié)點的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

3.下列程序的輸出結(jié)果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

4.數(shù)組A中,每個元素的長度為3個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放的存儲器內(nèi),該數(shù)組按行存放,元素A[5][8]的起始地址為()。

A.SA+141B.SA+180C.SA+222D.SA+225

5.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結(jié)果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

6.設(shè)有100個元素,用折半查找法進行查找時,最大比較次數(shù)是_____。

A.25B.50C.10D.7

7.

8.以下正確的字符串常量是()。

A.\\\B.'abc'C.OlympicGames

9.下面關(guān)于B樹和B+樹的敘述中,不正確的結(jié)論是()。

A.B樹和B+樹都能有效的支持順序查找

B.B樹和B+樹都能有效的支持隨機查找

C.B樹和B+樹都是平衡的多叉樹

D.B樹和B+樹都可用于文件索引結(jié)構(gòu)

10.若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

11.下列不屬于過程設(shè)計工具中圖形工具的是()。

A.N—SB.PADC.程序流程圖D.PDL

12.設(shè)有遞歸算法如下試問計算x(x(8))時需要計算()次x函數(shù)。A.8B.9C.16D.18

13.若函數(shù)中有定義語句:inta;,則()。

A.系統(tǒng)將自動給a賦初值0B.這時a中的值是和隨機數(shù)C.系統(tǒng)將自動給a賦初值-1D.這a中無任何值

14.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

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

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

16.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

17.若有語句“typedefstructS{intg;charh;}T;”,則下列敘述中正確的是()。

A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

18.下列關(guān)于效率的說法不正確的是()

A.效率是一個性能要求,其目標應該在需求分析時給出

B.提高程序效率的根本途徑在于選擇良好的設(shè)計方法,數(shù)據(jù)結(jié)構(gòu)與算法

C.效率主要指處理機時間和存儲器容量兩個方面

D.程序的效率與程序的簡單性無關(guān)

19.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。

A.定義語句中的*號是一個間址運算符

B.定義語句中的*號只是一個說明符

C.定義語句中的P只能存放double類型變量的地址

D.定義語句中,*p=&n把變量a的地址作為初值賦給指針變量P

20.若變量已正確定義,有以下程序段“i=0;do{printf(“%d,”,i);}while(i++);printf(“%d\n”,i);”,程序段的運行結(jié)果是()。A.0,1B.0,0C.1,1D.程序進入無限循環(huán)

二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是______。

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

22.若輸入12、3、2、5、7,則以下程序的運行結(jié)果為【】。

intmax,min;

voidmax_min_value();

main()

{inti,number[5];

printf("輸入5個整數(shù);\n");

for(i=0;i<5;i++)scanf("%d",&number[i]);

maxminvalue(number,5);

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

getch();

}

voidmax_min_value(array,n)

intarray[],n;

{int*p;

max=min=*array;

for(p=array+1;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

23.以下程序的輸出結(jié)果是【】。

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

24.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

則程序運行后的輸出結(jié)果是【】。

25.若有定義intm=5,y=2,則執(zhí)行表達式y(tǒng)+=y-=m*=y后,y的值為【】。

26.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

27.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。

28.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

29.棧和隊列通常采用的存儲結(jié)構(gòu)是【】。

30.算法的基本特征是可行性、確定性、【】和擁有足夠的情報。

31.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

32.以下和程序中,主函數(shù)調(diào)用了lineMax函數(shù),實現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值,請?zhí)羁铡?/p>

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]【】;

printf("Themaxvalueinlineis%d\n",【】);

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

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

34.棧滿時,再作入棧操作會產(chǎn)生【】,??諘r,刪除操作會產(chǎn)生【】。

35.下列程序的輸出結(jié)果是【】。

voidfun(int*n)

{

while((*n)--);

printf("%d",++(*n));

}

main()

{inta=100;

fun(&a);

}

36.面向?qū)ο蟮哪P椭?,最基本的概念是對象和______。

37.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\",p+9);

}

38.在Windows環(huán)境下,可以將窗口最小化為【】。

39.下面程序的運行結(jié)果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

]

main()

{intaa[3]={1,2,3),s;

s=f(&aa[0],3);printf("%d\n",s);

}

40.設(shè)有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

三、1.選擇題(20題)41.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}

A.-8B.14C.0D.-24

42.已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4下列正確的輸入語句是()。

A.scanf(“%3d,%3d,%3d”,&i,&j,&k);

B.scanf(“%d,%d,%d”,&i,&j,&k);

C.scanf(“%d%do/od”,&i,&j,&k);

D.scaaf(“i=%d,j=%d,k=%d”,&i,&j,&k);

43.在軟件測試設(shè)計中,軟件測試的主要目的是()

A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.發(fā)現(xiàn)軟件錯誤而執(zhí)行程序

44.若有以下程序段:intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后的輸出結(jié)果是______。

A.0X0B.0x0C.0D.0XABC

45.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

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

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

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

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

46.下列程序的輸出結(jié)果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}

A.0B.3C.OKD.沒有任何輸出

47.下列敘述中正確的是A.軟件測試的主要目的是發(fā)現(xiàn)程序中的錯誤

B.軟件測試的主要目的是確定程序中錯誤的位置

C.為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作

D.軟件測試是證明軟件沒有錯誤

48.在下列給出的表達式中,與while(E)中的(E)不等價的表達式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

49.若要打開A盤中user子目錄下名為aaa.txt的文本文件進行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是()。

A.fopen("A:\user\aaa.txt","r")

B.fopen("A:\\user\\aaa.txt","r=")

C.fopen("A:\user\aaa.txt","rb")

D.fopen("A:\\user\\aaa.txt","w")

50.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

51.實體一聯(lián)系模型中,實體與實體之間的聯(lián)系不可能是

A.一對一B.多對多C.一對多D.一對零

52.以下合法的C語言賦值語句是()。

A.a=b=58B.k=int(a-b):C.a=58,b=20D.++i;

53.下列關(guān)于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進先出的線性表D.隊列是先進后出的線性表

54.在C語言系統(tǒng)中,假設(shè)int類型數(shù)據(jù)占兩個字節(jié),則double、long、unsignedint、char類型數(shù)據(jù)所占字節(jié)數(shù)分別為()。

A.8,2,4,1B.2,8,4,1C.4,2,8,1D.8,4,2,1

55.下列運算符中,不屬于關(guān)系運算符的是()

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

56.下列函數(shù)的運行結(jié)果是

main()

{inti=2,p;

intj,k;

j=i;k=++i;p=f(j,k);

printf("%d",p);}

intf(inta,intb)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

return(c);}

A.-1B.1C.2D.編譯出錯,無法運行

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

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

58.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

59.設(shè)intx=7,則~x的值是()。

A.-8B.-7C.-1D.1

60.運行下面程序,若從鍵盤輸入字母“b”,則輸出結(jié)果是charc;c=getchar();if(c>='a'&&c<='u')c=c+4;elseif(c>='v'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);

A.gB.wC.fD.d

四、選擇題(20題)61.

下列程序執(zhí)行后的輸出結(jié)果是()。

main

{inta[3][3],*p,i};

p=&a[0][0];

for(i=p;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A.3B.6C.9D.隨機數(shù)

62.以下選項中合法的表達式是()。

A.a(chǎn)=a+7=c+b

B.(3+x)++

C.3+x++

D.x+1=x+1

63.以下敘述中錯誤的是()。

A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

64.

65.

66.下列選項中,能正確定義數(shù)組的語句是()。

A.intnum[0..2008];

B.intlllllll[];

C.intN:2008:

D.#defineN2008intnum[N1;intnum[N];

67.

已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=c&&c<=Z

D.c<=(z-32)&&(a-32)<=c

68.以下對C語言函數(shù)的有關(guān)描述中,正確的是()。

A.C函數(shù)可以遞歸調(diào)用也可以嵌套調(diào)用

B.在C中,調(diào)用函數(shù)時,只能把實參值傳給形參,形參值不能返回給實參

C.沒有返回值的函數(shù)不能被使用.

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

69.有以下程序程序的運行結(jié)果是()。

A.a=2,b=lB.a=2,b=2C.a=1,b=lD.a=1.b=0

70.

71.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。

A.3B.4C.5D.不定

72.有以下程序

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[j]=t;

}

printf("%d%d\n",s[1].Score,p[1]->Score);

}

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

A.550550B.580550

C.680680D.580680

73.以下敘述中錯誤的是()。A.可以通過typedef增加新的類型

B.可以用typedef已存在的類型用一個新的名字來代表

C.用pypedef義新的類型名后,原有類型名仍有效

D.用pypedef以為各種類型起別名,但不能為變量起別名

74.在執(zhí)行下述程序時,若從鍵盤輸入6和8,則結(jié)果為()。

A.36B.64C.48D.以上都不對

75.有以下程序:

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

A.4B.10C.14D.6

76.若有以下定義:

chara;intb;

floatc;doubled;

則表達式a*b+d-c值的類型為()。A.A.floatB.intC.charD.double

77.有以下程序程序運行后的輸出結(jié)果是()。

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

78.下面的程序段運行后,輸出結(jié)果是()。

A.9B.0C.不確定值D.18

79.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為()。

A.log2nB.n2

C.n/2D.n(n-1)/2

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:將s所指字符串的正序和反序進行連接,形成的新串放在t所指的數(shù)組中。例如,當S所指字符串為“ABCD”時,t所指字符串中的內(nèi)容應為“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為

13233343

14243444

15253545

則一維數(shù)組中的內(nèi)容應該是132333431424344415253545。

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

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

試題程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

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

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

}

參考答案

1.B

2.D

3.D本題考夢自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現(xiàn)在變量之前,表示先使用變量的值加l,再使用變量的值進行運算;出現(xiàn)在變量之后,表示先使用變量的值進行運算,再使用變量的值加l。當邏輯與運算符“&&’’兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“||”只要一個值為1,值就為1。根據(jù)運算符的優(yōu)先級,題中應先計算內(nèi)層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達式++j=3成立,即表達式的值為1;1與任何數(shù)都為進行或(||)運算,結(jié)果都為1,因此k=3的表達式i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

4.C

5.A本題考查了函數(shù)的調(diào)用。首先主函數(shù)定義了兩個字符型數(shù)據(jù)b和a,給b賦值為字母a.a(chǎn)賦值為字母A,調(diào)用fun(&.b,a)函數(shù),*C=*c十1,a的ASCIl碼值加1后為b,A的ASCIl碼值加1后為B。輸出第一組值,排除C、D選項。B選項的值此時為小b,排除B選項,所以本題答案為A。

6.D

7.D

8.D解析:在C語言中,字符串常量是以雙引號括起來的字符序列。故選項B和C不正確。字符序列中可包含一些轉(zhuǎn)義字符,轉(zhuǎn)義字符都是以“\\”開頭的。選項A中包含了三個“\\”,前兩個(\\\\)代表了一個“\\”字符,后面一個和“'”一起(\\”)被看作一個……,所以該字符串缺少一個結(jié)束的“'”,故不正確。選項D的兩個……之間沒有任何字符,代表的是一個空串,是合法的字符串常量,故應該選擇D。

9.A

10.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

11.D\n常用的過程設(shè)計工具有圖形工具(程序流程圖、N-S圖、PAD圖、HIPO)、表格工具(判定表)、語言工具(PDL)。

\n

12.D

13.B本題考查變量賦值基本概念。在聲明一個變量后,如果未顯式的對其進行賦值,則它的值是一個隨機值。

14.B從題目中可知,\O、\t、\\分別為一個字符,而sizeof是求字節(jié)個數(shù)的函數(shù),其中包括\O占的字節(jié),strlen函數(shù)是求數(shù)組長度的函數(shù);其以\0結(jié)束,因此strlen的值為5,sizeof的值為20。

15.B

16.C解析:解答本題,首先要明白在對指針進行加、減運算的時候,數(shù)字“1”不是十進制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標)4)H=352H。

17.BT為結(jié)構(gòu)體類型名,可以用來定義結(jié)構(gòu)體變量。故本題答案為B選項。

18.D

19.Cdoublea,*p=&a語句的意思是將a的值存放到指針變量P中,P是指針可以隨意指向任何地址,所以答案C錯誤。

20.A第1次首先執(zhí)行循環(huán)體,輸出i的值為0,然后判斷while的條件“i++”,因為“i++”是后綴自增運算,先使用后自增,所以判斷時條件為假,跳出循環(huán),但是仍執(zhí)行了i的自增操作,i的值為1,在接下來的printf語句中進行輸出。故本題答案為A選項。

21.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實現(xiàn)的功能簡單來說就是將字符串s下標為p+2~k范圍的字符整體復制到字符串s下標為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。

22.max=12min=2

23.77解析:在主函數(shù)中定義了一個變量x并賦初值0,然后執(zhí)行函數(shù)調(diào)用語句,該語句的執(zhí)行過程為sub(&x,8,1)調(diào)用sub(&a,4,2),sub(&a,4,2)調(diào)用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括號里的判斷為假,遞歸結(jié)束,執(zhí)行其后的*a+=k;語句此時x=x+k=0+4=4,回退到上一層調(diào)用函數(shù)sub(&x,4,2)中,執(zhí)行后面的語句,x=x+k=4+2=6,再回推到最上一層調(diào)用函數(shù)sub(&x,8,1)執(zhí)行后面的語句,x=x+k=6+1=7,所以最后輸出7。

24.310

25.-16-16解析:將賦值運算符右側(cè)的“表達式”的值賦給左側(cè)的變量,并且賦值運算符按照“自右而左”的結(jié)合順序,本題表達式應先算m的值為10,再運算y的值為8,最后計算y=y+(-8)=-8+(-8)=-16。

26.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

27.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標記形式有abe.a和p_abc->a。

28.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

29.鏈式存儲和順序存儲鏈式存儲和順序存儲

30.有窮性有窮性解析:算法有四個基本特征:可行性、確定性、有窮性和擁有足夠的情報。

31.模塊化模塊化

32.p=jx[i][p]lineMax(x)

33.驅(qū)動模塊驅(qū)動模塊解析:由于模塊不是一個獨立的程序;不能單獨運行,因此,在進行模塊測試時,還應為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是模擬被測試模塊的下層模塊。通常,承接模塊有多個。

34.上溢下溢上溢\r\n下溢

35.00解析:在函數(shù)fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環(huán)結(jié)束時*n的值為0,再做(*n)--運算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。

36.類類

37.1a61a6解析:對于指針變量的運算,就是對地址的運算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節(jié)。注意,本題是以十六進制輸出的。

38.圖標或按鈕圖標或按鈕

39.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學表達式如下:

f(&a,n)=a[0]+f(&a[1],n-1)n>1

f(&a,n)=a[0]n=1

本題中定義了一個長度為3的數(shù)組aa并初始化。接著調(diào)用遞歸函數(shù)f(),由上面的數(shù)學表達式以計算其返回值s=1+2+3=6,所以空白處應該填6。

40.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續(xù)寫內(nèi)容,需要使用方式“a”(追加)打開文件。

41.D解析:表達式a+=a-=a*a看起來復雜,其實將它分成兩個表達式來計算就簡單了:①第一個表達式(a-=a*a)=(a=a-a*a=-12);②第二個表達式(a+=a-=a*a)=(a=a+a=-24)。

42.B解析:函數(shù)scanf()的調(diào)用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。若在格式符中插入了其他字符,則在輸入時要求按一一對應的位置原樣輸入這些字符,其中的逗號也必須輸入。

43.D解析:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結(jié)果與實際結(jié)果之間的差別。軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。

44.C解析:“%X”以十六進制無符號形式輸出整數(shù),變量m和n的初始值都是十六進制數(shù),m=m-n=0xabc-oxabc=0x0,所以輸出結(jié)果為0。

45.D解析:函數(shù)f()的功能是對兩個數(shù)據(jù)互換。在主函數(shù)中指針變量p和q分別指向數(shù)組a[8)的首和尾,在while循環(huán)中實現(xiàn)從首尾開始數(shù)組元素的互換操作。

46.D解析:在題中,i的值為3,由于“case3:”后面沒有break語句,所以繼續(xù)向下執(zhí)行“case4:”后面的語句,由于“case4:”后面的語句為break強行退出switch語句,所以,本題沒有任何輸出。

47.A解析:本題考查軟件工程中測試的目的和方法。僅就軟件測試而言,它的目的是發(fā)現(xiàn)軟件的中的錯誤,但是,發(fā)現(xiàn)錯誤并不是最終目的,最終目的是通過測試發(fā)現(xiàn)錯誤之后還必須診斷并改正錯誤,這就是調(diào)試的目的。

由于測試的目標是暴露程序中的錯誤,從心理學角度看,由程序的編寫者自己進行測試是不恰當?shù)?。因此,在軟件測試階段通常由其他人員組成測試小組來完成測試工作。因此,經(jīng)過上述分析可知選項A的說法是正確的,而選項B、C、D的說法是錯誤的。

48.B在while(E)中,表達式E可以是C語言中任意合法的條件表達式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項8中表達式E>0||E<0是一個邏輯表達式。

49.B解析:選項A和C在字符串中用到特殊字符'\\',該字符在字符串中用作轉(zhuǎn)義字符的開始,所以不能單獨使用,若要在字符串常量顯示該字符可使用轉(zhuǎn)義字符'\\\\',故選項A和C不正確。選項D中fopen()函數(shù)的第二個參數(shù)w表示以只寫的方式打開文件,不符合題意,故應該選擇B。

50.A解析:數(shù)據(jù)庫是一個通用化的、綜合性的數(shù)據(jù)集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數(shù)據(jù)與程序的獨立性,而且能并發(fā)地為多個應用服務(wù),同時具有安全性和完整性。即數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數(shù)據(jù)庫管理階段中,數(shù)據(jù)是結(jié)構(gòu)化的,面向系統(tǒng),數(shù)據(jù)冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性。數(shù)據(jù)的不一致性,是指對數(shù)據(jù)的存取方式,選項C錯誤。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù),并非是數(shù)據(jù)庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。

51.D解析:實體聯(lián)系模型中實體與實體之間的聯(lián)系有一對一(1:1),一對多或多對一(1:m或m:1),多對多(m:n)其中一對一是最常用的關(guān)系。

52.D解析:選項A和選項C中都沒有以“;”結(jié)束,故選項A和選項C都不是正確的賦值語句;選項B中強制轉(zhuǎn)換類型符int應用括號括起來,故選項B不正確,只有選項D是合法的C語言賦值語句。

53.C隊列是指允許在一端進行插入、而在另一端進行刪除的線性表,選項A和選項B錯誤。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。所以,隊列又稱為“先進先出”或“后進后出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則,選項C正確,選項D錯誤。

54.D解析:在C語言中,double類型數(shù)據(jù)占8個字節(jié)、long型占4個、unsignedint和int型一樣占2個、char型占1個。所以本題應該選擇D。

55.D

56.A解析:函數(shù)調(diào)用相當于f(2,3),程序運算應得結(jié)果為'-1'。

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

58.D解析:當用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)的末尾按下回車鍵(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(c1)(Enter鍵)之后,scanf函數(shù)即接受了這一行數(shù)據(jù),不能再回去修改。所以本題中,當輸入123<CR>時,變量c1、c2、c3的值分別為1、2、3,當輸入45678<CR>時,變量c5、c6的值4和5。所以用輸出函數(shù)putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。所以選項D)為正確答案。

59.A解析:本題主要考查按位求反運算和C語言中正負數(shù)的表示,“0”代表正數(shù),“1”代表負數(shù);x=7的二進制為00111,第一個0代表正數(shù),~x為11000,第一個1代表負數(shù),值為8。

60.C解析:本題考查了對字符的輸入、輸出操作及算術(shù)和關(guān)系運算。因為b>='a'并且b<='u',所以執(zhí)行第一個if語句,c=c+4,c的值為字符'f'。

61.D

\n程序執(zhí)行在for循環(huán),當i=p時,i中放的是P的地址,類型不符合,因此輸出隨機數(shù),故選擇D進項.

\n

62.C賦值號和自增符左邊的數(shù)據(jù)對象不能為表達式或常量,只能為變量。

63.A解析:typedef用來聲明新的類型名來代替已有的類型名,typedef只是對已經(jīng)存在的類型增加了一個類型名,原有類型名仍有效。typedef不能用來定義變量。

64.A

65.C

66.DC語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達式。A選項錯誤,C語言中數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應指明數(shù)組大小,如果不指明數(shù)組大小,需要給定初值的個數(shù);c選項錯誤,N為變量,不能用來定義數(shù)組大小。因此D選項正確。

67.B

\n選項B先計算關(guān)系表達式“A<=c”的值是0還是l,再比較該值與字符z之間的大小關(guān)系,不能實現(xiàn)題目所要求的功能。

\n

68.A選項B),形參值的改變不會影響實參,但形參值可以作為返回值返回給實參。選項c),函數(shù)可以沒有返回值,即返回值類型為void。選項D),函數(shù)可以定義在不同的文件中,只要調(diào)用前包含被調(diào)用函數(shù)所在的文件即可。

69.Acase常量表達式只是起語句標號作用,并不是該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達式,找到與之匹配的case語句,就從該case-子句執(zhí)行下去,不再進行判斷。直到碰到break競語句結(jié)束為止。因此執(zhí)行內(nèi)層switch(y)時只執(zhí)行了a++,此時a的值為l。然后執(zhí)行外層case2語句的a++;b++.a(chǎn)為2,b為l。所以結(jié)果為A)。

70.B

71.Cfor循環(huán)結(jié)束時,i++的值應為4,i自加后此時應為5,故選擇C選項。

72.B本題實際上是按成員變量Score的值進行由小到大的排序,程序執(zhí)行后,數(shù)組p[5]中各元素分別為:

{{'Penghua',20045,537},

{'SunDan',20044,550},

{'LiSiGuo',20042,580},

{'WangYin',20043,680},

{'YangSan',20041,703}}

所以,p[1]->Score=550,s[1].Score=580。故本題答案為B。

73.A

74.B本題中a的值為6,b的值為8,最后s的值為8,s*=s等價于s=s*s。

75.B函數(shù)的功能是求數(shù)組所有元素的和。遞歸表示為a[3]+a[2]+a[1]+a[0]+f(t,0)=10。

76.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉(zhuǎn)換,所以最后的結(jié)果一定是double型。

77.Af函數(shù)功能使第二個指針指向的元素增1,第一個指針指向的元素不變,所以答案選擇A)。

78.B本題主要考查的是用二維數(shù)組首地址和下標來引用二維數(shù)組元素的方法。通過分析可知,程序中的雙重循環(huán)定義了一個如下的二維數(shù)組:

01200000

23400000

45600000

00000000

00000000

由于數(shù)組的下標是從0開始的,所以二維數(shù)組元素a[i][j]表示的是二維數(shù)組a的第i+1行、第j+1列對應位置的元素。從第二次的嵌套循環(huán)結(jié)束后j的值為3,所以

計算的是數(shù)組中所有第四列的元素的和,即0。

79.D冒泡排序;依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列中是第二大的數(shù))。如此下去,重復以上過程,直至最終完成排序。

80.D

81.

82.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)

{

inti,j,k=0;

for(i=0;i<mm;i++)//i是表示其行的下標

for(j=0;j<nn;j++)//j是表示其列的下標

b[k++]=s[i][j];//把其放到b的一維數(shù)組中

*n=k;//把b數(shù)組的長度通過形參n傳回到主函數(shù)中

}

【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,可以通過首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長度通過形參返回到主函數(shù)當中。2021-2022年江蘇省鎮(zhèn)江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序的輸出結(jié)果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

2.在循環(huán)雙鏈表的p所指的結(jié)點之前插入s所指結(jié)點的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

3.下列程序的輸出結(jié)果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

4.數(shù)組A中,每個元素的長度為3個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放的存儲器內(nèi),該數(shù)組按行存放,元素A[5][8]的起始地址為()。

A.SA+141B.SA+180C.SA+222D.SA+225

5.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結(jié)果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

6.設(shè)有100個元素,用折半查找法進行查找時,最大比較次數(shù)是_____。

A.25B.50C.10D.7

7.

8.以下正確的字符串常量是()。

A.\\\B.'abc'C.OlympicGames

9.下面關(guān)于B樹和B+樹的敘述中,不正確的結(jié)論是()。

A.B樹和B+樹都能有效的支持順序查找

B.B樹和B+樹都能有效的支持隨機查找

C.B樹和B+樹都是平衡的多叉樹

D.B樹和B+樹都可用于文件索引結(jié)構(gòu)

10.若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

11.下列不屬于過程設(shè)計工具中圖形工具的是()。

A.N—SB.PADC.程序流程圖D.PDL

12.設(shè)有遞歸算法如下試問計算x(x(8))時需要計算()次x函數(shù)。A.8B.9C.16D.18

13.若函數(shù)中有定義語句:inta;,則()。

A.系統(tǒng)將自動給a賦初值0B.這時a中的值是和隨機數(shù)C.系統(tǒng)將自動給a賦初值-1D.這a中無任何值

14.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

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

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

16.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

17.若有語句“typedefstructS{intg;charh;}T;”,則下列敘述中正確的是()。

A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

18.下列關(guān)于效率的說法不正確的是()

A.效率是一個性能要求,其目標應該在需求分析時給出

B.提高程序效率的根本途徑在于選擇良好的設(shè)計方法,數(shù)據(jù)結(jié)構(gòu)與算法

C.效率主要指處理機時間和存儲器容量兩個方面

D.程序的效率與程序的簡單性無關(guān)

19.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。

A.定義語句中的*號是一個間址運算符

B.定義語句中的*號只是一個說明符

C.定義語句中的P只能存放double類型變量的地址

D.定義語句中,*p=&n把變量a的地址作為初值賦給指針變量P

20.若變量已正確定義,有以下程序段“i=0;do{printf(“%d,”,i);}while(i++);printf(“%d\n”,i);”,程序段的運行結(jié)果是()。A.0,1B.0,0C.1,1D.程序進入無限循環(huán)

二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是______。

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

22.若輸入12、3、2、5、7,則以下程序的運行結(jié)果為【】。

intmax,min;

voidmax_min_value();

main()

{inti,number[5];

printf("輸入5個整數(shù);\n");

for(i=0;i<5;i++)scanf("%d",&number[i]);

maxminvalue(number,5);

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

getch();

}

voidmax_min_value(array,n)

intarray[],n;

{int*p;

max=min=*array;

for(p=array+1;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

23.以下程序的輸出結(jié)果是【】。

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

24.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

則程序運行后的輸出結(jié)果是【】。

25.若有定義intm=5,y=2,則執(zhí)行表達式y(tǒng)+=y-=m*=y后,y的值為【】。

26.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

27.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。

28.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

29.棧和隊列通常采用的存儲結(jié)構(gòu)是【】。

30.算法的基本特征是可行性、確定性、【】和擁有足夠的情報。

31.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

32.以下和程序中,主函數(shù)調(diào)用了lineMax函數(shù),實現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值,請?zhí)羁铡?/p>

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]【】;

printf("Themaxvalueinlineis%d\n",【】);

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

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

34.棧滿時,再作入棧操作會產(chǎn)生【】,??諘r,刪除操作會產(chǎn)生【】。

35.下列程序的輸出結(jié)果是【】。

voidfun(int*n)

{

while((*n)--);

printf("%d",++(*n));

}

main()

{inta=100;

fun(&a);

}

36.面向?qū)ο蟮哪P椭校罨镜母拍钍菍ο蠛蚠_____。

37.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\",p+9);

}

38.在Windows環(huán)境下,可以將窗口最小化為【】。

39.下面程序的運行結(jié)果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

]

main()

{intaa[3]={1,2,3),s;

s=f(&aa[0],3);printf("%d\n",s);

}

40.設(shè)有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

三、1.選擇題(20題)41.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}

A.-8B.14C.0D.-24

42.已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4下列正確的輸入語句是()。

A.scanf(“%3d,%3d,%3d”,&i,&j,&k);

B.scanf(“%d,%d,%d”,&i,&j,&k);

C.scanf(“%d%do/od”,&i,&j,&k);

D.scaaf(“i=%d,j=%d,k=%d”,&i,&j,&k);

43.在軟件測試設(shè)計中,軟件測試的主要目的是()

A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.發(fā)現(xiàn)軟件錯誤而執(zhí)行程序

44.若有以下程序段:intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后的輸出結(jié)果是______。

A.0X0B.0x0C.0D.0XABC

45.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

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

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

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

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

46.下列程序的輸出結(jié)果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}

A.0B.3C.OKD.沒有任何輸出

47.下列敘述中正確的是A.軟件測試的主要目的是發(fā)現(xiàn)程序中的錯誤

B.軟件測試的主要目的是確定程序中錯誤的位置

C.為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作

D.軟件測試是證明軟件沒有錯誤

48.在下列給出的表達式中,與while(E)中的(E)不等價的表達式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

49.若要打開A盤中user子目錄下名為aaa.txt的文本文件進行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是()。

A.fopen("A:\user\aaa.txt","r")

B.fopen("A:\\user\\aaa.txt","r=")

C.fopen("A:\user\aaa.txt","rb")

D.fopen("A:\\user\\aaa.txt","w")

50.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

51.實體一聯(lián)系模型中,實體與實體之間的聯(lián)系不可能是

A.一對一B.多對多C.一對多D.一對零

52.以下合法的C語言賦值語句是()。

A.a=b=58B.k=int(a-b):C.a=58,b=20D.++i;

53.下列關(guān)于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進先出的線性表D.隊列是先進后出的線性表

54.在C語言系統(tǒng)中,假設(shè)int類型數(shù)據(jù)占兩個字節(jié),則double、long、unsignedint、char類型數(shù)據(jù)所占字節(jié)數(shù)分別為()。

A.8,2,4,1B.2,8,4,1C.4,2,8,1D.8,4,2,1

55.下列運算符中,不屬于關(guān)系運算符的是()

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

56.下列函數(shù)的運行結(jié)果是

main()

{inti=2,p;

intj,k;

j=i;k=++i;p=f(j,k);

printf("%d",p);}

intf(inta,intb)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

return(c);}

A.-1B.1C.2D.編譯出錯,無法運行

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

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

58.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

59.設(shè)intx=7,則~x的值是()。

A.-8B.-7C.-1D.1

60.運行下面程序,若從鍵盤輸入字母“b”,則輸出結(jié)果是charc;c=getchar();if(c>='a'&&c<='u')c=c+4;elseif(c>='v'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);

A.gB.wC.fD.d

四、選擇題(20題)61.

下列程序執(zhí)行后的輸出結(jié)果是()。

main

{inta[3][3],*p,i};

p=&a[0][0];

for(i=p;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A.3B.6C.9D.隨機數(shù)

62.以下選項中合法的表達式是()。

A.a(chǎn)=a+7=c+b

B.(3+x)++

C.3+x++

D.x+1=x+1

63.以下敘述中錯誤的是()。

A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

64.

65.

66.下列選項中,能正確定義數(shù)組的語句是()。

A.intnum[0..2008];

B.intlllllll[];

C.intN:2008:

D.#defineN2008intnum[N1;intnum[N];

67.

已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=c&&c<=Z

D.c<=(z-32)&&(a-32)<=c

68.以下對C語言函數(shù)的有關(guān)描述中,正確的是()。

A.C函數(shù)可以遞歸調(diào)用也可以嵌套調(diào)用

B.在C中,調(diào)用函數(shù)時,只能把實參值傳給形參,形參值不能返回給實參

C.沒有返回值的函數(shù)不能被使用.

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

69.有以下程序程序的運行結(jié)果是()。

A.a=2,b=lB.a=2,b=2C.a=1,b=lD.a=1.b=0

70.

71.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。

A.3B.4C.5D.不定

72.有以下程序

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[j]=t;

}

printf("%d%d\n",s[1].Score,p[1]->Score);

}

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

A.550550B.580550

C.680680D.580680

73.以下敘述中錯誤的是()。A.可以通過typedef增加新的類型

B.可以用typedef已存在的類型用一個新的名字來代表

C.用pypedef義新的類型名后,原有類型名仍有效

D.用pypedef以為各種類型起別名,但不能為變量起別名

74.在執(zhí)行下述程序時,若從鍵盤輸入6和8,則結(jié)果為()。

A.36B.64C.48D.以上都不對

75.有以下程序:

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

A.4B.10C.14D.6

76.若有以下定義:

chara;intb;

floatc;doubled;

則表達式a*b+d-c值的類型為()。A.A.floatB.intC.charD.double

77.有以下程序程序運行后的輸出結(jié)果是()。

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

78.下面的程序段運行后,輸出結(jié)果是()。

A.9B.0C.不確定值D.18

79.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為()。

A.log2nB.n2

C.n/2D.n(n-1)/2

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:將s所指字符串的正序和反序進行連接,形成的新串放在t所指的數(shù)組中。例如,當S所指字符串為“ABCD”時,t所指字符串中的內(nèi)容應為“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為

13233343

14243444

15253545

則一維數(shù)組中的內(nèi)容應該是132333431424344415253545。

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

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

試題程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

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

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

}

參考答案

1.B

2.D

3.D本題考夢自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現(xiàn)在變量之前,表示先使用變量的值加l,再使用變量的值進行

溫馨提示

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

最新文檔

評論

0/150

提交評論