2021年廣東省茂名市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第1頁
2021年廣東省茂名市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第2頁
2021年廣東省茂名市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第3頁
2021年廣東省茂名市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第4頁
2021年廣東省茂名市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年廣東省茂名市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱______。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

2.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運行后的輸出結(jié)果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

3.以下敘述中正確的是()。

A.循環(huán)隊列是隊列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列中的隊尾指針一定大于隊頭指針

D.循環(huán)隊列中的隊尾指針一定小于隊頭指針

4.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.11B.43C.57D.53

5.若有以下定義和語句:#include<stdio.h>charsl[10]=“abcd!”,*s2=“\nl23\\”;printf(“%d%d\n”,strlen(s1),strlen(s2));程序的運行結(jié)果是()。

A.107B.105C.55D.58

6.以下程序的輸出結(jié)果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

7.有以下程序

#include<stdio.h>

main()

{charch[3][5]={“AAAA”,”BBB”,”CC”};

printf(“%s\n”,ch[1];)

}

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

B.CC

C.BBBCC

D.BBB

8.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

9.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

10.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

11.將10階對稱矩陣壓縮存儲到一維數(shù)組A中,則數(shù)組A的長度最少為()

A.100B.40C.55D.80

12.堆是一種有用的數(shù)據(jù)結(jié)構(gòu)。下列關(guān)鍵碼序列()是一個堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

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

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

14.下列語句組中正確的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

15.結(jié)構(gòu)化程序設(shè)計方法的3種基本控制結(jié)構(gòu)中不包括

A.循環(huán)結(jié)構(gòu)B.遞歸結(jié)構(gòu)C.順序結(jié)構(gòu)D.選擇結(jié)構(gòu)

16.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類型說明是()。

A.auto和static

B.auto和register

C.register和static

D.extern和register

17.下述哪一條是順序存儲結(jié)構(gòu)的優(yōu)點()。

A.插入運算方便B.可方便地用于各種邏輯結(jié)構(gòu)的存儲表示C.存儲密度大D.刪除運算方便

18.帶有頭節(jié)點的單向鏈表head,其3個數(shù)據(jù)節(jié)點A、B、C的連接關(guān)系如下圖所示:節(jié)點類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點,在不改變P指向的前提下,以下選項中不能訪問C節(jié)點數(shù)據(jù)成員dt的表達式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

19.

20.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

二、2.填空題(20題)21.單元測試又稱模塊測試,一般采用【】測試。

22.以下程序運行后的輸出結(jié)果是【】。

main()

{charCl,c2;

for(c1='0''c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

23.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

printf("%s\n",str);}

24.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。

25.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

26.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

27.下面定義的結(jié)構(gòu)體類型包含3個成員,其中成員變量x用來存入整型數(shù)據(jù),成員變量y用來存入實型數(shù)據(jù),成員變量next是指向自身結(jié)構(gòu)體的指針。請將定義補充完整。

structstu

{intx;

【】

【】next;}

28.由25人圍坐成圓圈,先從任意一人出發(fā)用1到25順時針依次編號,然后從1號開始順時針報數(shù)(1、2、3…),凡報5的倍數(shù)者出圈,剩下者繼續(xù)報數(shù),求出最后出圈者的編號。

#include<stdio.h>

【】

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j(luò);

j=1;count=0;n=【】;

do

{if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

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

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

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

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

30.存儲300個16×16點陣的漢字信息需要【】字節(jié)。

31.有定義chara,b;若想通過&運算符保留a對應(yīng)的二進制數(shù)的第3位和第6位的值,其余位置0,則b的二進制數(shù)應(yīng)是【】。

32.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達式【】。

33.在最壞情況下,堆排序需要比較的次數(shù)為()。

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

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

35.strcmp函數(shù)的功能是【】。

36.一個項目有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于【】的聯(lián)系。

37.執(zhí)行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

38.已知字母A的ASCII碼為65。以下程序運行后的輸出結(jié)果是______。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

39.以下程序的輸出結(jié)果是______。

main()

{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;

p=a+2;printf("%d\n',(p+2)[3]);

}

40.下列程序的輸出結(jié)果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

三、1.選擇題(20題)41.棧和隊列的共同點是()。

A.都是先進后出B.都是先進先出C.只允許在端點處插入和刪除元素D.沒有共同點

42.下面程序的運行結(jié)果是()。#include<stdio.h>voiddelch(char*s){inti,j;char*a;a=s;for(i=0,j=0;a[i]!='\0';i++)if(a[i]>='0'&&a[i]<='9'){s[j]=a[i];j++;}s[j]='\0';}main(){char*item="a34bc";delch(item);printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

43.有定義語句:intx,y;若要通過scanf("%d,%do,&x,&y);語句使變量x得到數(shù)值11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是

A.1112<回車>B.11,12<回車>C.11,12<回車>D.11,<回車>12<回車>

44.已知intt=0;while(t=1){…}則以下敘述正確的是()。

A.循環(huán)控制表達式的值為0B.循環(huán)控制表達式的值為1C.循環(huán)控制表達式不合法D.以上說法都不對

45.要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時結(jié)束循環(huán),若變量已正確定義,下列正確的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch);

46.下列司用于C語言用戶標(biāo)識符的—組是______。

A.voiddefineWORD

B.a3_b3_123Car

C.For-abcIFCase

D.2aDOsizeof

47.下面程序運行后的輸出結(jié)果是______。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

48.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

49.下列程序執(zhí)行后的輸出結(jié)果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

A.6B.7C.8D.9

50.閱讀下列程序,則運行結(jié)果為

#include"stdio.h"

fun()

{staticintx=5;

x++;

returnx;}

main()

{inti,x;

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

x=fun();

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

A.5B.6C.7D.8

51.以下概念中,不屬于面向?qū)ο蠓椒ǖ氖莀______。

A.對象、消息B.繼承、多態(tài)C.類、封裝D.過程調(diào)用

52.有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>,則輸出結(jié)果是______。

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

53.(50)

A.p->nextB.pC.sD.s->next

54.執(zhí)行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];

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

55.以下選項中不屬于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

56.下列說法正確的是()。

A.一個C程序可以有多個主函數(shù)

B.一個C語言的函數(shù)中只允許有一對花括號

C.C程序的書寫格式是自由的,一個語句可以寫在一行上,也可以寫在多行內(nèi)

D.在對C程序進行編譯時,可以發(fā)現(xiàn)注釋行中的拼寫錯誤

57.已定義c為字符型變量,則下列語句中正確是______。

A.c='97';B.c="97";C.c=97;D.c="a";

58.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值

fun(int*a,intn)

{inti,j=0,p;

p=j;

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

if(a[i]<a[p]);________;

return(p);}

在橫線處應(yīng)填入的是

A.i=pB.a[p]=a[i]C.p=jD.p=i

59.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

A.2B.3C.5D.4

60.判斷字符型變量chr為小寫字母的表達式是______。

A.'a'<=chr<='z'

B.(chr>='a')||(chr<='z')

C.(chr>=A)&&(chr<=z)

D.(chr>='a')&&(chr<='z')

四、選擇題(20題)61.設(shè)變量已正確定義并賦值,以下正確的表達式是()。

A.x=y*5=x+z

B.int(15.8%5.

C.x=y+z+5,++y

D.x=25%5.0

62.下列描述中不正確的是()。

A.字符型數(shù)組中可能存放字符串。

B.可以對字符型數(shù)組進行整體輸入、輸出。

C.可以對整型數(shù)組進行整體輸入、輸出。

D.不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進行整體賦值。

63..C語言運算對象必須是整型的運算符是

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

64.下列標(biāo)識符不是關(guān)鍵字的是()。

A.breakB.charC.SwithchD.return

65.以下語句的執(zhí)行結(jié)果是()。

intm=0,s=1;

do{

s+=m++;

}while(m<6);

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

A.17B.16C.15D.18

66.

67.

有下列程序:

#include<stdio.h>

main

{intx=0;

inty=0;

while(x<7&&++v)

{y--;

x++;}

printf("%d,%d",y,x);

}

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

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

68.閱讀下列程序段,程序的輸出結(jié)果為()。

A.3B.5C.6D.8

69.下列描述中正確的是()。

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數(shù)據(jù)和相關(guān)文檔的集合

70.設(shè)變量已正確定義并賦值,以下正確的表達式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

71.有下列函數(shù)定義:fun(floath){printf("%f,%f\n",h,h*h);)該函數(shù)的類型是()。

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

72.

73.有以下程序:

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

74.

75.設(shè)有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

76.已定義c為字符型常量,則下列語句中正確的是()。

A)c=′97′B)c="97"

C)c=97D)c="a"

77.

78.

79.

80.有以下程序:

#include<stdio.h>

main()

{chara[5][10]={"one","tw0","three","four","five"};

inti,j;

chart:、

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

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

if(a[i][O]>a[j][0])

{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)

puts(a[1]);

}

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

A.fwo

B.fix

C.two

D.owo

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

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

if(a[[i]<a[p])

p=i;

t=a[p];

a[p]=aEj3;

//****found****

a[p]=t;

}

}

voidmain

{

intarr[M]={11,32,-5,2,14},i,m=5;

printf("排序前的數(shù)據(jù):");

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

printf("%d",arr[i]);

printf("\n");

proc(arr,m);

printf("排序后的順序:");

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

printf("%d",arr[i]);

printf("\n");

}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。程序中將m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.A解析:希爾排序法的基本思想是:將整個無序列分割成若干小的子序列分別進行插入排序。

2.C本題輸出兩個結(jié)果,第一個是求字符串的長度。第二個是輸出的字符串,數(shù)組的下標(biāo)是從0開始的,所以當(dāng)str取1的時候,應(yīng)為“One*Dream!”。

3.B在實際應(yīng)用中,隊列的順序存儲結(jié)構(gòu)一般采用循環(huán)隊列的形式。當(dāng)循環(huán)隊列為滿或者為空時,隊尾指針=隊頭指針。本題答案為B選項。

4.D函數(shù)f是一個遞歸函數(shù)。當(dāng)x>=2時,遞歸調(diào)用自身,返回值為x*f(x-l)+(x-l)*f(x-2);3x<2時,返回值為1。main函數(shù)中,調(diào)用函數(shù)f傳入4,所以y的值是f(4)。f(4)等價于4*f(3)+3*f(2);f(3)等價于3*f(2)+2*f(1);f(2)等價于2*f(1)+1*f(0);f(0)、f(1)等價于1。綜上:f(2)等于3,f(3)等于11,f(4)等于53。本題答案為D選項。

5.Cstrlen函數(shù)返回字符串的長度。求字符串長度時,遇到結(jié)束標(biāo)識‘\\0’為止,但是長度不包括結(jié)束標(biāo)識。字符數(shù)組s1的后5個元素沒有賦值,都為‘\\0’,即“abcd!”后為‘\\0’,所以“strlen(s1)”的值為5。字符指針s2所指向的字符串中,“\\n”為轉(zhuǎn)義字符,代表換行符,是1個字符,“\\\\”也為轉(zhuǎn)義字符,代表“\\”,也是1個字符,其后為字符串結(jié)束標(biāo)識‘\\0’,所以“strlen(s2)”的值也為5。故本題答案為C選項。

6.D本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。

7.Dch[1]即輸出的為第二個字符串,即BBB。

8.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

9.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

10.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>

分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

11.C

12.D

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

14.A字符型指針變量可以用A選項的賦值方法“Char*s;s=“OlymPiC”;”。C選項的寫法“char*s;s={“Olympic”};”是錯誤的。字符數(shù)組可以在定義的時候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數(shù)組后對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址),所以B選項和D選項都是錯誤的。對于本例,B、D選項中字符數(shù)組s的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標(biāo)識‘\\0’),同時,此時S為字符數(shù)組的地址,是常量,不能為其賦值。故本題答案為A選項。

15.B解析:本題考查了程序的基本結(jié)構(gòu)。程序由一些基本結(jié)構(gòu)組成。任何一個大型的程序都由3種基本結(jié)構(gòu)組成,由這些基本結(jié)構(gòu)順序的構(gòu)成了一個結(jié)構(gòu)化的程序。這3種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

16.B在用靜態(tài)static與外部extern定義變量時,系統(tǒng)立刻給其分配內(nèi)存,而定義自動類auto與強制放入寄存器register類型變量時,只有當(dāng)使用時才分配內(nèi)存。

17.C

18.Alink結(jié)構(gòu)體中的next是鏈表中下一個節(jié)點的地址。由于p當(dāng)前指向節(jié)點A,因此p->next是B的地址。p->next->next是C的地址,訪問C的節(jié)點數(shù)據(jù)成員dt可以使用C的地址訪問,即p->next->next->dt,選項B正確。或者使用解引用“*”運算符:(*p)表示節(jié)點A,(*p).next表示B的地址,*((*p).next)表示節(jié)點B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因為“.”運算符優(yōu)先級高于“*”運算符,所以也可以寫為(*(*(*p).next).next).dt,選項C正確。同理,也可以既使用指針運算符,又使用解引用運算符來訪問C的節(jié)點數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項D正確。選項A中,*p表示A節(jié)點,(*p).next表示節(jié)點B的地址,由于“->”運算符的優(yōu)先級高于“*”運算符,因此先執(zhí)行“->”,即表達式(*p).next->next->dt引用了C節(jié)點的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運算“*”,這是錯誤的。故本題答案為A選項。

19.C

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

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。

21.白盒法白盒法

22.9.18274e+0089.18274e+008解析:本題考查的循環(huán)條件是c1<c2,當(dāng)c1>=c2時,退出循環(huán)。所以,第一次循環(huán)輸出09,第二次循環(huán)輸出18,如此循環(huán)直到輸出45,之后c1=5,c2=4,不滿足循環(huán)條件,退出循環(huán)。

23.顛倒一個字符串中的字符,就是首尾對應(yīng)的元素兩兩交換。簡單地可用兩個游標(biāo)變量i和j,i是前端元素的下標(biāo),j是后端元素的下標(biāo),交換以這兩個變量值為下標(biāo)的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(biāo)(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j字符串末元素的下標(biāo)是它的長度減1,所以在第二個空框處應(yīng)填入-1。程序為了交換str[i]和str[j],使用了變量k,該變量應(yīng)在程序的變量定義部分中—起定義,所以在第—個空\r\n\r\n

24.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。

25.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當(dāng)n=4時,判斷條件不滿足,退出循環(huán)。

26.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個數(shù)。

27.floaty;structstu*floaty;\r\nstructstu*解析:float定義變量y為實型變量。要求變量next是指向自身結(jié)構(gòu)體的指針,因此變量next應(yīng)該是結(jié)構(gòu)體stu的指針型變量。

28.main()0a[j]=0count<25

29.doublemax或externdoublemaxdoublemax或externdoublemax解析:函數(shù)聲明是對所用到的函數(shù)的特征進行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對調(diào)用表達式進行檢測,以保證調(diào)用表達式與函數(shù)之間的參數(shù)正確傳遞.函數(shù)聲明的一般格式為:類型標(biāo)識符函數(shù)名(類型標(biāo)識符形參,…);這些信息就是函數(shù)定義中的第一行的內(nèi)容。本題中main()函數(shù)需要調(diào)用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。

30.800800解析:一個16x16點陣的字形碼需要16x16/8=32字節(jié)的存儲空間,所以300個漢字信息需要9600個字節(jié)。

31.100100100100解析:“&”運算符的運算規(guī)則是:兩個二進制數(shù)的對應(yīng)二進制位只要有一個為0,則結(jié)果為0;二者都為1時,結(jié)果為1。因此,要想保留某位可用1,屏蔽某位用0。

32.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。

33.O(nlog2n)

34.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當(dāng)其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應(yīng)的大寫字母,結(jié)果為ACE。

35.字符串的比較strcmp函數(shù)的原型是intstrcmp(char*s1,char*s2);功能是對s1和s2所指字符串進行比較,若s1<s2返回負數(shù),若s1==s2返回0,若s1>s2返回正數(shù)。

36.一對多或1:N一對多或1:N解析:兩個實體集間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有三種,即一對一(1:1)的聯(lián)系、一對多(1:N)或多對一(N:1)的聯(lián)系和多對多(N:N)的聯(lián)系。

37.3636解析:本題循環(huán)體共執(zhí)行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。

38.67G67G解析:字符型變量中保存的是某個字符的ASCII碼值,是一個整數(shù),因此字符型變量的算術(shù)運算和整型變量并無區(qū)別。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分別按十進制整數(shù)和字符形式輸出a和b的值為:67G。

39.80。80。解析:p=a+2使指針p指向數(shù)組a的第三個元素,即a[2],(p+2)[3]使p再移動5個單位,則指向了數(shù)組元素a[7],它的值為80。

40.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

41.C棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種“后進先出”的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種“先進先出”的線性表:本題答案為C)。

42.B解析:指針a通過數(shù)組元素下標(biāo)來從頭逐個的引用字符串item中的字符,判斷不是0~9之間的數(shù)字時,就去掉這個字符,所以程序結(jié)束后,字符串item中就只剩下34兩個字符了。注意:形參為指針變量時,實參和形參之間的數(shù)據(jù)傳遞。

43.A解析:scanf()函數(shù)有兩個參數(shù),第一個參數(shù)為輸入格式字符申;第二個參數(shù)為輸入變量地址列表,在scanf()語句中非格式字符可以作為輸入時數(shù)據(jù)的間隔,輸入時必須原樣輸入,在本題中輸入格式串為%d,%d其中“,”為非格式字符,所以輸入時必須原樣輸入。

44.B解析:t=1是將t賦值為1,所以循環(huán)控制表達式的值為1。判斷t是否等于1時,應(yīng)用t==1,注意“=”與“==”的用法。

45.A解析:while循環(huán)的執(zhí)行過程如下:(1)計算while后面圓括號中表達式的值.當(dāng)值為非0時,執(zhí)行步驟(2);當(dāng)值為0時,執(zhí)行步驟(4)。(2)執(zhí)行循環(huán)體一次。(3)轉(zhuǎn)去執(zhí)行步驟(1)。(4)退出循環(huán)。在選項A)中,表達式(ch=getchar())!='N'表示輸入的字符不等于N,如果這個條件表達式成立,則執(zhí)行循環(huán)體,打印輸出輸入的字符。如果這個條件表達式不成立,即輸入的字符等于N,則退出循環(huán).所以選項A)為正確答案。

46.B解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線,所以排除C和D。C語言還規(guī)定標(biāo)識符不能為C語言的關(guān)鍵字,從而選項A(void是關(guān)鍵字)是錯誤的。

47.C解析:本題a[2][3]定義為一個具有兩行三列的元素的數(shù)組,malloc()函數(shù)的作用是開辟了一個長度為sizeof(int)的內(nèi)存區(qū),p為指向整型數(shù)據(jù)的指針變量,程序調(diào)用fut()函數(shù),將第一行第一列對應(yīng)的元素值賦給**s,由于數(shù)組中第一行第一列對應(yīng)的元素為9,所以本題輸出值9。

48.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

49.A解析:函數(shù)的參數(shù)不僅可以是整型、實型、字符型等數(shù)據(jù),還可以是指針型。它的作用是將一個變量的地址傳遞到另一個函數(shù)中。當(dāng)數(shù)組名作參數(shù)時,如果形參數(shù)組中的各元素的值發(fā)生變化,實參數(shù)組元素的值也將隨之發(fā)生變化。

50.D解析:在整個程序運行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)著永久的存儲單元,即使退出函數(shù)以后,下次再進入該函數(shù)時,靜態(tài)局部變量仍使用原來的存儲單元,靜態(tài)局部變量的初值是在編譯的時候賦予的,在程序執(zhí)行期間不再賦予初值。本題由于連續(xù)三次調(diào)用函數(shù)fun(),三次對靜態(tài)變量x進行操作,x的值應(yīng)依次為6,7,8。

51.D解析:面向?qū)ο蠓椒ㄊ且环N運用對象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。面向?qū)ο蠓椒◤膶ο蟪霭l(fā),發(fā)展出對象、類、消息、繼承等概念。

52.A解析:char型數(shù)據(jù)類型以%d的形式輸入時,輸入的是ASCII值。65是字符A的ASCII碼值,66是字符B的ASCII值。

53.B解析:在主函數(shù)中,定義了一個結(jié)構(gòu)體型指針變量head,然后將函數(shù)CreatList()的返回值賦給指針變量head,從這里可知函數(shù)CreatList()的返回值為structnode*類型,所以第48處的空白應(yīng)該填structnode*,故48題選項C正確;在函數(shù)CreatList()中首先定義3個結(jié)構(gòu)體型指針變量h,p和q。然后調(diào)用malloc()函數(shù)分配了一個結(jié)點空間,并讓指針h指向它,開始指針p、q和h都指向它,然后調(diào)用一個while循環(huán)語句,當(dāng)?shù)竭_字符串?dāng)?shù)組s的末尾結(jié)束循環(huán),在每次循環(huán)中,分配一個結(jié)點空間,并讓p指向它,然后讓該結(jié)點的data域的值等于字符串指針s所指的值,因此第49題的正確答案為選項A:接下來讓指針q所指結(jié)點的next指針指向結(jié)點p,然后讓指針q指向該指針的所指結(jié)點的下一個結(jié)點即p,所以第50個空白處應(yīng)該填p,選擇B。故第48題4個選項中選項C符合題意;第49題4個選項中選項A符合題意;第50題4個選項中選項B符合題意。

54.B解析:程序中定義了一個指向整型變量的指針變量,并對其賦值為二維整型數(shù)組a的首元素的地址。P[4]等價于*(p+4),即二維數(shù)組a中第四個元素的值,而a是一個2*3的二維數(shù)組,其第四個元素為a[1][1],即5。

55.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。

56.C解析:本題涉及C語言基本的3個知識點:①C語言規(guī)定一個程序只允許有一個主函數(shù),一個函數(shù)內(nèi)可以允許有多個花括號;②C語言的標(biāo)識符是由字母、數(shù)字、下劃線組成的,可以是大寫字母,而且標(biāo)識符區(qū)分字母的大小寫;③C程序的注釋部分僅僅是方便程序員閱讀,提高程序的可讀性和可移植性,它并不參與程序的編譯,所以編譯器也就不會發(fā)現(xiàn)注釋行中的錯誤。

57.C解析:\'97\'不是字符變量,選項A錯誤;'97'是字符串,選項B錯誤;'a'是字符串,選項D錯誤;正確答案是選項C。

58.D解析:該程序先判斷a[i]<a[p],如果條件為真,則a[i]比當(dāng)前設(shè)定的最小值小(p保留的當(dāng)前最小元素的下標(biāo)),那么將i賦給p,即將比較過的最小元素下標(biāo)保留在p中,作為下面判斷的標(biāo)準(zhǔn)。

59.A解析:條件表達式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達式b的值;當(dāng)a為假時,其值等于表達式c的值。

表達式運算過程:第1個表達式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達式:w=2<y=4為真,所以返回m的值,即m=2。

60.B解析:程序段中定義x值為1,!x值為0,因此循環(huán)執(zhí)行的條件永遠成立,該循環(huán)是死循環(huán)。

61.C解析:求余運算符'%'兩邊的運算對象必須是整型,而選項B)和D)中'%'兩邊的運算對象有浮點整數(shù)據(jù),所以選項B)和D)是錯誤的表達式。在選項A)中賦值表達式的兩邊出現(xiàn)相同的變量x,也是錯誤的。選項C)是一個逗號表達式,所以正確答案為C)。

62.C

63.A本題主要考查C語言中一些常見運算符的基本知識。在題目中,給出了四種不同的運算符,分別如下:

“/”是除法運算符。在C語言中,該運算符的作用是將兩操作

溫馨提示

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

評論

0/150

提交評論