2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計_第1頁
2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計_第2頁
2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計_第3頁
2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計_第4頁
2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩99頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#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;}若程序經運行后形成下圖所示的數據結構。則以下可以刪除中間節(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);

2.順序結構的本質特點是()。

A.數據元素存儲在地址連續(xù)的內存空間

B.數據元素緊鄰

C.數據元素在內存中的相對位置表示數據之間的邏輯關系

D.不使用指針

3.棧和隊列的共同點是()。

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

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

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

5.以下程序運行后的輸出結果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

6.以下選項中錯誤的是()。A.printf(“%s\n”,‘s’);

B.printf“%d%c\n”,‘s’,‘s’);

C.printf(“%c\n”,‘s’-32);

D.printf(“%c\n”,65);

7.以下程序的輸出結果是()。A.1010B.99C.910D.109

8.要聲明一個有10個int型元素的數組,正確的語句是()。

A.inta[10];B.inta[2,5];C.inta[];D.int*a[10];

9.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數值為9的表達式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

10.下列敘述中錯誤的是()。

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

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

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

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

11.若有定義int?x,y;并已正確給變量賦值,則以下選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。A.(x-y<0|x-y>0)B.(x-y<0)C.(x-y>0).D.(x-y==0)

12.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序運行后的輸出結果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

13.下面程序段的時間復雜度為()。

A.O(n)B.O(n2)C.O(1)D.O(nlog2n)

14.若以下變量均是整型,且num=sum=7;則執(zhí)行表達式sum=num++,sum++,++num后sum的值為()。

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

15.以下能正確定義一維數組的選項是

A.inta[5]={0,1,2,3,4,5}

B.chara[]={'0','1','2','3','4','5','\0'};

C.chara={'A','B','C'};

D.inta[5]="0123";

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

A.在一個函數內的復合語句中定義的變量在本函數范圍內有效

B.在一個函數內定義的變量只在本函數范圍內有效

C.在不同的函數中可以定義相同名字的變量

D.函數的形參是局部變量

17.第

24

下面程序段的運行結果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

18.以下符號中不能作為標識符的是()。

A._256B.r32C.intD.e231

19.

20.設q1和q2是指向一個float型一維數組的指針變量,k為float型變量,則不能正確執(zhí)行的語句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

二、2.填空題(20題)21.若由以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

22.注釋一般分為序言性注釋和______注釋。

23.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

24.在鏈表的運算過程中,能夠使空表與非空表的運算統一的結構是______。

25.將代數式轉換成程序設計中的表達式為【】。

26.以下程序的輸出結果是【】。

main()

{inta=5,b=4,c=3,d;

d=(a>b>C);

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

}

27.下列軟件系統結構圖的寬度為[]。

28.下面程序的運行結果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

printf("%d\n",sizeof(A));

}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

30.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。

31.下列程序中的數組a包括10個整數元素,分別將前項和后項之和存入數組b,并按每行4個元素輸出數組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

32.在關系模型中,把數據看成一個二維表,每一個二維表稱為一個______。

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

34.以下程序的功能是建立一個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

35.以下函數的功能是計算請?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

{fac=fac【】;

s=s+fac;

}

returns;

}

36.有以下程序:

#include<stdio.h>

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

執(zhí)行后的輸出結果【】。

37.函數pi的功能是根據以下近似公式求π值:

請在下面的函數中填空,完成求π的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0;

longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*s));

}

38.以下程序的輸出結果是【】。

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

39.下面程序執(zhí)行后輸出的結果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

40.下列程序的運行結果為【】。

main()

{inti;

chara[]="Ilovechina!",b[20],*p1,*p2;

p1=a;

p2=b;

while(*p1)

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

printf("stringbis:%s\n",b);

}

三、1.選擇題(20題)41.以下選項中不屬于字符常量的是

A.′C′B.′′C′′C.′\xCC′D.′\072′

42.下面程序的輸出是______。main(){inta=6,b=3;printf("%d\n",b=(a/b,a%b));}

A.0B.1C.2D.不確定的值

43.若有定義:inta[2][3];則才a數組的第i行第j列(假調i,j已正確說明并賦值)元素值的正確引用為

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

44.下列選項中正確的語句組是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

45.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

46.下列描述中,不是線性表順序存儲結構特征的是

A.不便于插入和刪除B.需要連續(xù)的存儲空間C.可隨機訪問D.需另外開辟空間來保存元素之間的關系

47.在結構化方法中,用數據流圖(DFD)作為描述工具的軟件開發(fā)階段是()。

A.可行性分析B.需求分析C.詳細設計D.程序編碼

48.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

49.下列特征中不是面向對象方法的主要特征的是()。

A.多態(tài)性B.繼承C.封裝性D.模塊化

50.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關系

51.關于線性表的描述,錯誤的一條是______。

A.線性表是線性結構

B.線性表就是單鏈表

C.線性表的順序存儲結構,必須占用一片連續(xù)的存儲單元

D.線性表的鏈式存儲結構,不必占用連續(xù)的存儲單元

52.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

53.主程序調用findmax函數求出數組中最大元素在數組中的下標,括號中需填寫的內容是#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])();}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("

A.k=pB.*k=pC.k=p-sD.*k=p-s

54.下面程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

55.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

56.設有定義:floata=2,B=4,h=3;,以下C語言表達式中與代數式計算結果不相符的是______。

A.(a十B)*h/2B.(1/2)*(a+B)*hC.(a+B)*h*1/2D.h/2*(a+B)

57.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2為真的是______。

A.8B.23C.17D.6

58.以下程序的運行結果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

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

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

60.如下程序的輸出結果是

#include<stdio.h>

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

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

A.69825B.63825C.6385D.693825

四、選擇題(20題)61.已有定義:chara[]="xyz",b[]={′x′,′y′,′z′};,以下敘述中正確的是()。

A)數組a和b的長度相同B)a數組長度小于b數組長度

C)a數組長度大于b數組長度D)上述說法都不對

62.以下程序運行后的輸出結果是()。

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inta=2,i;

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

printf("%4d",f(a));

A.789B.678C.567D.876

63.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

程序運行后的輸出結果是

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

64.有以下程序:

main

{

unsignedchara=2,b=4,c=5,d;

d=a|b;d&=c;printf("%d\n",d);

}

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

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

65.

66.

對下述程序的判斷中,正確的是()。

#include<stdio.h>

main()

{char*p,s[256];

p=s;

while(strcmp(s,"theend"))

{printf("Inputthestrin9:");

gets(s);

while(*p)

putchar(*p++);

}}

A.此程序循環(huán)接收字符串并輸出,直到接收到字符串“theend”為止

B.此程序循環(huán)接收字符串,接收到字符串“theend”則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串“theend”為止,但因為代碼有錯誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串“theend”為止,輸出連接在一起的字符串

67.下列關于棧敘述正確的是()。

A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.棧底元素最先被刪除

68.

69.

70.以下敘述中正確的是()。A.A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失

B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數據必定被覆蓋

C.在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數據

D.c語言中的文件是流式文件,因此只能順序存取數據

71.

以下程序的輸出結果是()。

voidfun(int*a,inti,inti)

{intt;

if(i<i)

{t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;fun(a,i,j);

}

}

main

{intK[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf("\n");

}

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

72.

73.

74.下列詞語中,不屬于面向對象方法的是

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

75.以下程序段中的變量已正確定義。

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

for(k=1;k<;3;k++);prinff(”*”);該程序段的輸出結果是()。

A.*B.****C.**D.********

76.下列程序的輸出結果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

77.

78.

79.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a>>3:

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

}

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

A.32B.16C.1D.0

80.設變量均已正確定義,若要通過

scaIIf(”%d%c%d%c”,&;al,&;el,&;a2,&;c2);

語句為變量al和a2賦數值l0和20,為變量cl和c2賦字符x和Y。以下所示的輸入形式中正確的是()。(注:口代表空格字符)

五、程序改錯題(1題)81.下列給定的程序中,函數proc()的功能是:判斷字符ch是否與sir所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:除了字符串前導的。號之外,將串中其他*號全部刪除。在編寫函數時.不得使用C語言提供的字符串函數.

參考答案

1.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選項。

2.C

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

4.C

5.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦韌值一次,在程序運行時它已有初值。以后每次調用時不再重新賦初值而只是保留上次函數調用結束時的值,而對自動變量賦初值,不是在編譯時進行的,而在函數調用時進行,每調用一次函數重新給一次初值,相當于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調函數fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調用函數fun時,d初值為5,p由主函數傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數調用結束后,它仍保留d=6。再次調用fun函數,d的初值為6,而由主函數傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數。

6.A%d表示以字符和整型類型的格式輸出,%c表示以字符類型的格式輸出,%s表示以字符串類型的格式輸出。選項A中,‘s’是字符,不能用%s格式來輸出。故本題答案為A選項。

7.D

8.A

9.B解析:在C語言的數組元素的引用方法,我們在前面已經講過了,比如數組元素a[0],可以用表達式*(p+0),即*p來引用,對于數組元素a[1],可以用表達式*(p+1)來引用,在這里,p+1的值就是數組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數組元素a[2],則可以用表達式。(p+2)來引用…,對于數組元素a[9],可以用表達式,(p+9)來引用。因此,當指針變量p指向a數組的起始地址時,若0≤i<10,則數組元素a[i]可以用*(p+i)來表示。

10.Btypedef并不是增加一種新的類型,而是對已存在的類型用一個新的名字來代表,所以B選項錯誤。故本題答案為B選項。

11.A條件表達式:x=表達式1:表達式2:表達式3的含義是:先求解表達式1.若為非0(真),則求解表達式2.將表達式2的值賦給x。若表達式1的值為0(假),則求解表達式3.將表達式3的值賦給x。在本題中與表達式1:(x-y)等價的是(x-y<0|x-y>0)。

12.C程序定義一個字符數組b,并使用字符串“happynewyeai”進行初始化。然后通過for循環(huán),遍歷字符數組b中的每個字符,再將b中的字符元素修改為大寫字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項。

13.A

14.A

15.B解析:選項A)中,定義的初值個數大于數組的長度;選項C)中,數組名后少了中括號;選項D)中,整型數組不能賦予字符串。

16.A在一個函數內的復合語句中定義的變量在本復合語句塊范圍內有效,選項A錯誤,其他選項正確。本題答案為A選項。

17.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數的整型數值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數和strcpy函數的作用。

strcpy的調用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復制到目的地址中,這種復制將覆蓋原來的字符串。strcat函數的功能是將源地址的字符串復制到目的地址字符串的后面。

strlen的調用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數為4,那么執(zhí)行strlen后,程序最終輸出的結果是4。因此本題正確的答案是C。

18.C

19.A

20.B解析:選項A)是將指針q1和q2所指向的變量值相加,然后賦給k;選項B)中,float型數據和指針型數據之間不能進行賦值運算:選項C)中,是兩個指針變量之間的賦值:選項D)中,是兩個指針型變量所指向的兩個float型數據相乘。

21.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點是通過指針引用數組元素。98是數組w的第5個元素(最開始的為第0個),而通過*p=w已經將p指向了數組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。

22.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

23.88解析:fabs函數功能是求x的絕對值,計算結果為double型。pow功能是計算x的y次方的值,計算結果同樣為double型。所以本題表達式相當于2.0的3.0次方,結果為8.000000。

24.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設置了一個頭結點,因此在任何情況下,循環(huán)鏈表中至少有一個結點存在,從而使空表與非空表的運算統一。

25.SQRT(x2+y2)/(a+b)

26.00解析:關系運算符“>”的結合方式是從左向右的,所以在本題中的表達式a>b=c;從左向右開始計算,a>b的結果為“1”,接著1和c比較假,該空格處應該填0。

27.33解析:軟件系統結構圖的寬度:整體控制跨度(最大模塊數的層)的表示。

28.8080解析:本題考查的知識點是共用體數組變量所占內存的長度。數組a是共用體變量,共用體類型變量所占的內存長度為最大成員的長度,即單精度數組的長度,為4×4=16,因此,數組a所占的內存長度為5×16=80,所以最后輸出的s的值為80。

29.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。

30.軟件工具軟件工具

31.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數組a中元素a[i]與a[j+1]值相加后的值賦予數組b中元素b[i],即可實現將一個數組的前項和后項之和存入另一數組。

32.關系關系解析:關系模型用;維表表示,則每個;維表代表一種關系。

33.11解析:ifelse語句的功能是:若表達式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

34.p->dataqp->data,q解析:本題考查的是鏈表這一數據結構對結構體變量中數據的引用。鏈表的特點是結構體變量中有兩個域,一個是數據,另一個是指向該結構體變量類型的指針,用以指明鏈表的下一個結點。

35./i或*(1.O/i)或/(double)i/i或*(1.O/i)或/(double)i解析:主函數中首先定義了兩個double型的變量s和fac,并給它們賦初值為0.0和1.0,在函數中s和fac的作用是存放和以及要加到的那一項的值。通過分析可知,第i項的值可以由第i-1項的值得到,即第i項是第i-1項的值除以i。可見橫線處應添“/i”或與它等價的表達式。

36.8484解析:f函數中變量x傳的是變量的地址,而變量y是傳的值,調用函數f后,雖然f函數中的。x變?yōu)?,y值也變了,但main函數中的y未變,仍然為4。

37.(double)1/(i*i)或10/(i*i)(double)1/(i*i)或1,0/(i*i)解析:本題考查數據類型的轉換。由題意s=1+1/(2*2)/1/(3*3)+…+1/(n*n),它的循環(huán)體為s=s+1/(i*i),由于s為double型數據,所以要將1/(i*i)的值轉換為double類型。

38.SOSO解析:考查用指針引用字符串數組中元素的方法。題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次'i--'操作;二是*p[i]是對某個字符的引用。

39.22解析:本題變量m既是外部變量(值是13),又是fun函數的局部變量(值為3)。函數fun(x*y-m)的值為7*5-3=32,在main函數中,fun(a,b)/m中的m應取外部變量的值13,因此輸出2。

40.stringbis:Ilovechina!

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

42.A解析:逗號表達式的值為最后一個表達式的值,本題將a%b的值0賦給變量b。

43.A解析:本題考查了二維數組元素的引用方法。選項A中a引指向了數組a的第i+1行,*(a+i)則是第i+1行第0列的地址值,*(a+i)+j指向了數組a第i+1行,j+1列,*(*(a+i)+j)取到的是數組a的a[i][j]的元素。

44.D解析:C語言規(guī)定可以對字符指針變量直接賦字符串常量,但不能給字符數組直接賦字符串常量,對字符數組賦字符串常量應使用的是strcpy函數。正確答案為選項D。

45.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側表達式的值賦給:左側的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數,而選項A中26.8不為整數,故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。

46.D解析:線性表的順序存儲是用一片連續(xù)的空間來存放數據元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數據元素之間邏輯上的先后關系自動隱含在物理位置的相鄰元素之中,因此,不需要另外開辟空間來保存元素之間的關系。

47.B解析:軟件開發(fā)階段包括需求分析、總體設計、詳細設計、編碼和測試五個階段。其中需求分析階段常用的工具是數據流圖和數據字典。

48.D解析:本題考查邏輯運算符的使用。當“&&”的兩個運算對象都足邏輯1時,表達式才返回值是1;當“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值是1。選項A)中,x和y都是邏輯1,所以返回值是1;選項B)中,x=4<=y=6為邏輯1,所以返回值是1;選項C)中,y+z的值等于14,非0,y-z的值為-2,非0,所以邏輯表達式4||14&&-2的值不為0;選項D)中,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

49.DD?!窘馕觥棵嫦驅ο笤O計方法與面向過程設計方法有本質的不同,其基本原理是:使用現實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結構化程序設計的特點。

50.CC?!窘馕觥繑祿煜到y(DBS)由數據庫(DBS)、數據庫管理系統(DBMS)、數據庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。

51.A解析:線性表是一種最簡單,最常用的數據結構。線性表操作的實現依賴于線性表中數據元素及元素之間的關系在存儲器中如何存儲。采用順序存儲方式存儲的線性表稱為順序表,用鏈式存儲方式存儲的線性表稱為線性鏈表,用散列方法存儲的線性表稱為散列表。

52.D

53.B

54.B解析:先定義了一個指向字符型數組str的指針P,指針P指向數組str的首地址,p+3將指針指向str[3],又因為字符型數組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

55.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

56.B解析:選項B錯誤,不符合題意。

57.B

58.C解析:宏替換不像函數調用要進行參數值的計算、傳遞等,而只是簡單按照原格式進行字符串的替換。注意:宏定義的命令格式。

59.A解析:本題考查默認函數的函數值的類型。在函數定義時,由于函數沒有說明其類型,系統默認一律自動按整型處理,因此,函數的類型為int類型。

60.C解析:考查通過指針引用字符串數組中的元素。通過行指針p來實現數組元素的引用。用格式說明符%s進行整串輸入與輸出。

61.C數組a占4個字節(jié),數組b占3個字節(jié)。所以數組a長度大于b長度。

62.Ai=0,f(a)=2+1+4=7,i=1,f(a)=2+1+5=8,i=3,f(a)=2+1+5=9;(c為靜態(tài)變量);

63.B解析:在main函數中,對f(1)和f(2)的值進行了累加。

f(1)=1

f(2)=f(1)+1=2

最后,j的值為1+2=3

64.B本題考查的是邏輯運算。本題中主要是進行位的邏輯運算。將a的值轉換成二進制為:00000010,b的值轉換成二進制為:00000100,將a、b進行按位或運算(參加計算的兩個位只要有一個為1,那么運算結果為l),因此此時d的二進制為:00000110,C的值轉換成二進制為:00000101,接下來將d和C進行按位與運算(參加計算的兩個位都為1,則結果為1,否則為0),結果為:00000100,轉換成十進制數結果為4。

65.A

66.C

\n外部變量在編譯時由系統分配永久的內存空間,所以外部變量的類型不是自動存儲類別。

\n

67.A棧是先進后出的數據結構,所以棧頂元素最后入棧卻最先被刪除。棧底元素最先入棧卻最后被刪除。所以選擇A。

68.A

69.B

70.AB)選項中打開一個已存在的文件并進行了寫操作后,原有文件中的全部數據不一定被覆蓋,也可以對源文件進行追加操作等。c)選項中在一個程序中當對文件進行了寫操作后,不用先關閉該文件然后再打開,才能讀到第1個數據,可以用fseek()函數進行重新定位即可。D)選項中,C語言中的文件可以進行隨機讀寫。故本題答案為A)。

71.C

\n本題用了函數調用,fun中if語句成立則進行i,j的交換,用到主函勢中則為把下標為0、3,1、2互換,因此,當執(zhí)行完后X的數組為8,1,6,2,故選擇C選項。

\n

72.C

73.B

74.D面向對象方法是一種運用對象、類、封裝、繼承、多態(tài)和消息等概念來構造、測試、重構軟件的方法。面向對象方法從對象出發(fā),發(fā)展出對象、類、消息、繼承等概念。

75.Ac語言約定分號為一條語句的結束。因此for(i=0;i<4;i++,i++)for(k=1;k<3;k++);是完整的語句,對研nd();沒有任何影響,最后一nff(”·’),執(zhí)行一次。因此答案為A選項。

76.C當執(zhí)行fun函數時,因為參數傳遞時是地址傳遞,因此形參值的改變會影響實參中的數,在執(zhí)行fun函數時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數中,輸出的值為34。

77.C

78.D

79.C\n題中定義了無符號數,c=a>>3;是指右移3位,然后輸出。結果為C。

\n

80.C輸入數據的格式必須與scanf()的格式控制串完全匹配,如果A、B、Cc選項中在數字l0后面均輸入了空格,則會將空格賦給變量cl,而不是把x賦給cl,所以選擇C選項。

81.

【解析】形參的個數和類型由調用該函數的實參的個數和類型決定,由main()函數中調用的函數proc()可知,“voidproc(charstr,charch)”應改為“voidproc(char*str,charch)”;將字符串中的每一個字符與給定字符相比較,當字符串結束或者字符串中有與給定字符相同的字符時結束。如果到字符串的最后一個字符仍沒找到與給定字符相同的字符,將給定字符插在字符串的最后,因此,“if(*str==ch)”應改為“if(*str==ˊ\0ˊ)”;最后還要為字符串添加一個結束符,因此“str[1]=ˊ0ˊ;”應改為“str[1]=ˊ\0ˊ”。

82.

程序設計題解析:

【考點分析】

本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件

表達式;字符串結束標識‘\0’。

【解題思路】

函數fun的功能:除了字符串前導的*號之外,將串中其他+號全部刪除。

【解答本題】

(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結束字符‘、O’。

【解題寶典】

要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠磳⑿枰A舻淖址麖脑钠鹗嘉恢弥匦沦x值;也可以保留到新串,即新建一個字符串,存放要保留的字符。2021-2022年安徽省銅陵市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#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;}若程序經運行后形成下圖所示的數據結構。則以下可以刪除中間節(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);

2.順序結構的本質特點是()。

A.數據元素存儲在地址連續(xù)的內存空間

B.數據元素緊鄰

C.數據元素在內存中的相對位置表示數據之間的邏輯關系

D.不使用指針

3.棧和隊列的共同點是()。

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

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

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

5.以下程序運行后的輸出結果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

6.以下選項中錯誤的是()。A.printf(“%s\n”,‘s’);

B.printf“%d%c\n”,‘s’,‘s’);

C.printf(“%c\n”,‘s’-32);

D.printf(“%c\n”,65);

7.以下程序的輸出結果是()。A.1010B.99C.910D.109

8.要聲明一個有10個int型元素的數組,正確的語句是()。

A.inta[10];B.inta[2,5];C.inta[];D.int*a[10];

9.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數值為9的表達式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

10.下列敘述中錯誤的是()。

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

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

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

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

11.若有定義int?x,y;并已正確給變量賦值,則以下選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。A.(x-y<0|x-y>0)B.(x-y<0)C.(x-y>0).D.(x-y==0)

12.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序運行后的輸出結果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

13.下面程序段的時間復雜度為()。

A.O(n)B.O(n2)C.O(1)D.O(nlog2n)

14.若以下變量均是整型,且num=sum=7;則執(zhí)行表達式sum=num++,sum++,++num后sum的值為()。

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

15.以下能正確定義一維數組的選項是

A.inta[5]={0,1,2,3,4,5}

B.chara[]={'0','1','2','3','4','5','\0'};

C.chara={'A','B','C'};

D.inta[5]="0123";

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

A.在一個函數內的復合語句中定義的變量在本函數范圍內有效

B.在一個函數內定義的變量只在本函數范圍內有效

C.在不同的函數中可以定義相同名字的變量

D.函數的形參是局部變量

17.第

24

下面程序段的運行結果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

18.以下符號中不能作為標識符的是()。

A._256B.r32C.intD.e231

19.

20.設q1和q2是指向一個float型一維數組的指針變量,k為float型變量,則不能正確執(zhí)行的語句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

二、2.填空題(20題)21.若由以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

22.注釋一般分為序言性注釋和______注釋。

23.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

24.在鏈表的運算過程中,能夠使空表與非空表的運算統一的結構是______。

25.將代數式轉換成程序設計中的表達式為【】。

26.以下程序的輸出結果是【】。

main()

{inta=5,b=4,c=3,d;

d=(a>b>C);

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

}

27.下列軟件系統結構圖的寬度為[]。

28.下面程序的運行結果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

printf("%d\n",sizeof(A));

}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

30.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。

31.下列程序中的數組a包括10個整數元素,分別將前項和后項之和存入數組b,并按每行4個元素輸出數組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

32.在關系模型中,把數據看成一個二維表,每一個二維表稱為一個______。

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

34.以下程序的功能是建立一個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

35.以下函數的功能是計算請?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

{fac=fac【】;

s=s+fac;

}

returns;

}

36.有以下程序:

#include<stdio.h>

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

執(zhí)行后的輸出結果【】。

37.函數pi的功能是根據以下近似公式求π值:

請在下面的函數中填空,完成求π的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0;

longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*s));

}

38.以下程序的輸出結果是【】。

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

39.下面程序執(zhí)行后輸出的結果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

40.下列程序的運行結果為【】。

main()

{inti;

chara[]="Ilovechina!",b[20],*p1,*p2;

p1=a;

p2=b;

while(*p1)

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

printf("stringbis:%s\n",b);

}

三、1.選擇題(20題)41.以下選項中不屬于字符常量的是

A.′C′B.′′C′′C.′\xCC′D.′\072′

42.下面程序的輸出是______。main(){inta=6,b=3;printf("%d\n",b=(a/b,a%b));}

A.0B.1C.2D.不確定的值

43.若有定義:inta[2][3];則才a數組的第i行第j列(假調i,j已正確說明并賦值)元素值的正確引用為

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

44.下列選項中正確的語句組是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

45.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

46.下列描述中,不是線性表順序存儲結構特征的是

A.不便于插入和刪除B.需要連續(xù)的存儲空間C.可隨機訪問D.需另外開辟空間來保存元素之間的關系

47.在結構化方法中,用數據流圖(DFD)作為描述工具的軟件開發(fā)階段是()。

A.可行性分析B.需求分析C.詳細設計D.程序編碼

48.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

49.下列特征中不是面向對象方法的主要特征的是()。

A.多態(tài)性B.繼承C.封裝性D.模塊化

50.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關系

51.關于線性表的描述,錯誤的一條是______。

A.線性表是線性結構

B.線性表就是單鏈表

C.線性表的順序存儲結構,必須占用一片連續(xù)的存儲單元

D.線性表的鏈式存儲結構,不必占用連續(xù)的存儲單元

52.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

53.主程序調用findmax函數求出數組中最大元素在數組中的下標,括號中需填寫的內容是#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])();}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("

A.k=pB.*k=pC.k=p-sD.*k=p-s

54.下面程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

55.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

56.設有定義:floata=2,B=4,h=3;,以下C語言表達式中與代數式計算結果不相符的是______。

A.(a十B)*h/2B.(1/2)*(a+B)*hC.(a+B)*h*1/2D.h/2*(a+B)

57.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2為真的是______。

A.8B.23C.17D.6

58.以下程序的運行結果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

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

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

60.如下程序的輸出結果是

#include<stdio.h>

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

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

A.69825B.63825C.6385D.693825

四、選擇題(20題)61.已有定義:chara[]="xyz",b[]={′x′,′y′,′z′};,以下敘述中正確的是()。

A)數組a和b的長度相同B)a數組長度小于b數組長度

C)a數組長度大于b數組長度D)上述說法都不對

62.以下程序運行后的輸出結果是()。

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inta=2,i;

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

printf("%4d",f(a));

A.789B.678C.567D.876

63.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

程序運行后的輸出結果是

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

64.有以下程序:

main

{

unsignedchara=2,b=4,c=5,d;

d=a|b;d&=c;printf("%d\n",d);

}

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

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

65.

66.

對下述程序的判斷中,正確的是()。

#include<stdio.h>

main()

{char*p,s[256];

p=s;

while(strcmp(s,"theend"))

{printf("Inputthestrin9:");

gets(s);

while(*p)

putchar(*p++);

}}

A.此程序循環(huán)接收字符串并輸出,直到接收到字符串“theend”為止

B.此程序循環(huán)接收字符串,接收到字符串“theend”則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串“theend”為止,但因為代碼有錯誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串“theend”為止,輸出連接在一起的字符串

67.下列關于棧敘述正確的是()。

A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.棧底元素最先被刪除

68.

69.

70.以下敘述中正確的是()。A.A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失

B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數據必定被覆蓋

C.在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數據

D.c語言中的文件是流式文件,因此只能順序存取數據

71.

以下程序的輸出結果是()。

voidfun(int*a,inti,inti)

{intt;

if(i<i)

{t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;fun(a,i,j);

}

}

main

{intK[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf("\n");

}

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

72.

73.

74.下列詞語中,不屬于面向對象方法的是

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

75.以下程序段中的變量已正確定義。

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

for(k=1;k<;3;k++);prinff(”*”);該程序段的輸出結果是()。

A.*B.****C.**D.********

76.下列程序的輸出結果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

77.

78.

79.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a>>3:

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

}

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

A.32B.16C.1D.0

80.設變量均已正確定義,若要通過

scaIIf(”%d%c%d%c”,&;al,&;el,&;a2,&;c2);

語句為變量al和a2賦數值l0和20,為變量cl和c2賦字符x和Y。以下所示的輸入形式中正確的是()。(注:口代表空格字符)

五、程序改錯題(1題)81.下列給定的程序中,函數proc()的功能是:判斷字符ch是否與sir所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:除了字符串前導的。號之外,將串中其他*號全部刪除。在編寫函數時.不得使用C語言提供的字符串函數.

參考答案

1.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選項。

2.C

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

4.C

5.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦韌值一次,在程序運行時它已有初值。以后每次調用時不再重新賦初值而只是保留上次函數調用結束時的值,而對自動變量賦初值,不是在編譯時進行的,而在函數調用時進行,每調用一次函數重新給一次初值,相當于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調函數fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調用函數fun時,d初值為5,p由主函數傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數調用結束后,它仍保留d=6。再次調用fun函數,d的初值為6,而由主函數傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數。

6.A%d表示以字符和整型類型的格式輸出,%c表示以字符類型的格式輸出,%s表示以字符串類型的格式輸出。選項A中,‘s’是字符,不能用%s格式來輸出。故本題答案為A選項。

7.D

8.A

9.B解析:在C語言的數組元素的引用方法,我們在前面已經講過了,比如數組元素a[0],可以用表達式*(p+0),即*p來引用,對于數組元

溫馨提示

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

評論

0/150

提交評論