2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.下面程序的輸出結果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

3.

4.下列程序的執行結果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

5.已知char**s,下面正確的語句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

6.設有定義“intx[10],*p=x,i;”,若要為數組x讀入數據,以下選項正確的是()。

A.for(i=0;i<10;i++)scanf(“%d”,p+i);

B.for(i=0;i<10;i++)scanf(“%d”,*p+i);

C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));

D.for(i=0;i<10;i++)scanf(“%d”,x[i]);

7.若變量已正確定義,下列正確的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

8.有以下程序(說明:字母A的ASCIl碼值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序運行后的輸出結果是()。A.BYB.BTC.YTD.YE

9.軟件調試的目的是A.發現錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

10.以下對結構體類型變量的定義中,不正確的是()。

A.typedefstruetaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm;}tdl;

11.對于下述程序,在方式串分別采用“wt”和“wb”運行時,兩次生成的文件TEST的長度是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fputc('\n',fp);fputc('C',fp);fclose(fp);}

A.7字節、7字節B.7字節、5字節C.5字節、7字節D.5字節、5字節

12.

13.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執行后輸出結果是

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

14.有以下程序#include<stdio.h>main(){charcl,c2;c1=A+8-4c2=A+8-5;printf("%C,%d\n",cl,c2);}已知字母A的ASCIl碼為65,程序運行后的輸出結果是()。A.E,69B.D,69C.E,DD.輸出無定值

15.下面敘述中錯誤的是()。

A.軟件測試的目的是發現錯誤并改正錯誤

B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟

C.程序調試通常也稱為Debug

D.軟件測試應嚴格執行測試計劃,排除測試的隨意性

16.有以下程序#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序的運行結果是

A.987654321B.4321098765C.5678901234D.987651234

17.下列定義數組的語句中,正確的是()。A.#defineN10?intx[N];

B.intN=10;int[N];

C.intx0..10];

D.Intx[];.

18.下面哪種排序的平均比較次數最少()

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

19.給定數列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用直接選擇大值開始排序時,第一趟掃描結果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

20.對線性表進行折半查找時,必須要求線性表()。

A.順序方式存儲B.鏈式方式存儲C.以順序方式存儲,且結點按關鍵字有序排列D.以鏈式方式存儲,且結點按關鍵字有序排列

二、2.填空題(20題)21.下面程序的功能是將一個字符串str的內容顛倒過來,請填空。

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

22.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為【】。

23.設x和y均為int型變量,且x=1,y=2,則表達式double(1+x/y)的值為【】。

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

25.棧和隊列通常采用的存儲結構是【】。

26.下面程序的運行結果是【】。

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

27.以下程序運行后的輸出結果是【】。

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

28.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

29.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

30.一般來說,數據庫的設計過程要經歷3個大的階段,即可行性分析與研究階段、系統設計階段、設計實施與系統運行階段。概念設計、邏輯結構設計、物理結構設計屬于數據庫設計的【】階段。

31.執行以下程序后,輸出‘#’號的個數是______。

#include<stdio.h>

main()

{

inti,j;

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

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

putchar('#');

}

32.若輸入字符串:abcde,則以下while循環體將執行【】次。

while((ch=getchar())=='e')printf("*");

33.表示條件;10<x<100或x<0的C語言表達式是【】。

34.下面程序的功能是求整數m、n的最大公約數,請填空。

main()

{intm,n,r;

scanf("%d,%d",&m,&n);

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

35.以下程序的功能是:從鍵盤上輸入若干個學生的成績,統計計算出平均成績,并輸出低于平均分的學生成績,用輸入負數結束輸入。

main()

{floatx[1000],sum=0,ave,a;

intn=0,i;

printf("Entermark:\n");scanf("%f",&a);

while(a>=0.0&&n<1000)

{sum+【】;x[n]=【】;

n++;scanf("%f",&a);

}

ave=【】;

printf("Output:\n");

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

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

if(【】)printf("%t\n",x[i]);

}

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

37.若輸入Ihaveatest.#,則以下程序的運行結果為【】。

#include<stdio.h>

main()

{FILE*fp;

charstr[100],filename[10];

inti=0;

if((fp=fopen("test","w"))==NULL)

{printf("cannotopenthefile!\n");

exit(0);

}

getchar();

gets(str);

while(str[i]!='#')

{if(str[i]>='a'&&str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

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

fclose(fp);

}

38.下列程序的循環次數是______。

x=2;

do

{x=x*x;}

while(!x);

39.軟件的【】設計又稱為總體結構設計,其主要任務是建立軟件系統的總體結構。

40.以下程序段用于構成一個簡單的單向鏈表。請填空。

struetSTRU

{intx,y;

floatrate;

【】p;

}a,b;

a.x=0;a.y=0;a.rate=0;a.p=&b;

b.x=0;b.y=0;b.rate=0;b.p=NULL;

三、1.選擇題(20題)41.在數據庫設計中,將E-R圖轉換成關系數據模型的過程屬于()。A.需求分析階段B.概念設計階段C.邏輯設計階段D.物理設計階段

42.有以下程序main(){intm=0256,n=256;printf("%o%o\n",m,n);}程序運行后的輸出結果是

A.02560400B.0256256C.256400D.400400

43.下列能正確進行字符數組賦初值的語句是______。

A.chart[5]={'a','b','c','d','e'};

B.char*t;t="abcde";

C.chart[5]="abcde";

D.chart[5];t="abcd";

44.下列關于switch語句和break語句的結論中,正確的是

A.break語句是switch語句中的一部分

B.在switch語句中可以根據需要使用或不使用break句

C.在switch語句中必須使用break語句

D.以上三個結論中有兩個是正確的

45.若函數調用時,參數為基本數據類型的變量,下列敘述中正確的是()。

A.實參與其對應的形參共占存儲單元

B.只有當實參與其對應的形參同名時才共占存儲單元

C.實參與其對應的形參分別占用不同的存儲單元

D.實參將數據傳遞給形參后,立即釋放原先占用的存儲單元

46.設p1和p2是指向一個int型一維數組的指針變量,k為int型變量,則不能正確執行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

47.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a十B)

48.某二叉樹中度為2的結點有10個,則該二叉樹中有()個葉子結點。

A.9B.10C.11D.12

49.運行下面的程序,輸入字符串MicrosoftVisualStudio,則程序的執行結果是()。#include<stdio.h>main(){charChr[20];scanf("%s",&Chr);printf("%s\n”,Chr);}

A.MicrosoftVisua1Studio

B.M

C.Microsoft

D.MicrosoflVisualStudio

50.下列程序(注意:ch[0]在低字節,ch[1]在高字節)的輸出結果是______。#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}

A.13B.14C.208D.209

51.假定w、x、y、m均為int型變量,則執行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

52.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0];下面選項中,表達式值為6的是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

53.以下數組定義中錯誤的是A.intx[][3]={0};

B.intx[2][3]={{l,2},{3,4},{5,6}};

C.intx[][3]={{l,2,3},{4,5,6}};

D.intx[2][3]={l,2,3,4,5,6};

54.設計數據庫的存儲結構屬于()。

A.需求分析B.概念設計C.邏輯設計D.物理設計

55.若有說明語句"inta;floatb;”,以下輸入語句正確的是()

A.scanf("%f%f",&a,&b);

B.scanf("%f%d",&a;&b);

C.scanf("%d,%f",&a,&b);

D.scanf("%6.2f%6.2f",&a,&b);

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

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和后件

D.線性表可以是空表

57.以下敘述中正確的是______。

A.調用printf函數時,必須要有輸出項

B.調用putchar函數時,必須在之前包含頭文件stdio.h

C.在C語言中,整數可以以十二進制、八進制或十六進制的形式輸出

D.調用getchar函數讀人字符時,可以從鍵盤上輸入字符所對應的ASCII碼

58.現有以下語句:i=1;for(;i<=100;i++)sum+=i;

A.for(i-1;;i++){sum+--i;if(i==100)break;}

B.for(i=1;i<=100;){sum+=i;i++;}

C.i=1;for(;i<=100;){sum+=-i;}

D.i=1;for(;;){sum+=i;if(i==100)break;i++;}

59.有以下函數:charfun(char*p){returnP;}該函數的返回值是()。

A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

60.有如下說明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

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

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

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

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

62.

63.有下列程序:

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++:

}

x++:

}

printf("x=%d\n"x);

}

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

A.x=4B.x=8C.x=6D.x=12

64.

65.(23)在深度為5的滿二叉樹中,葉子結點的個數為______。

A.32

B.31

C.16

D.15

66.以下程序段完全正確的是()。

A.int*P;scanf("%d",&p);

B.int*P;scanf("%d",p);

C.intk,*p=&k;scanf("%d",p);

D.intk,*p;*p=&k;scanf("%d¨,p);

67.有以下程序

68.

69.假定已建立以下鏈表結構,且指針P和q已指向如圖所示的結點:

則以下選項中可將q所指結點從鏈表中刪除并釋放該結點的語句組是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

70.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是()。A.A.無輸出B.結果是不確定C.-1D.1

71.下列程序中c的二進制值是()。chara=2,b=4,c;c=a^b>>2;A.00000011B.00010100C.00011100D.00011000

72.下面敘述中正確的是(

)。A.全局變量的作用域一定比局部變量的作用域范圍大B.靜態類型變量的生存期貫穿于整個程序的運行期間C.函數的形參都屬于全局變量D.未在定義語句中賦值的auto變量和static變量的初值都是隨機值

73.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運行結果是()。A.A.AfternoonB.fternoonC.MorningD.orning

74.支持子程序調用的數據結構是()。

A.棧B.樹C.隊列D.二叉樹

75.若有定義:“inta[2][3];”,則對a數組的第i行第j列元素的正確引用為()。

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

76.

77.有以下程序

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)

puts(ps);

}

程序的運行結果是

A.yzB.zC.zD.x

xyzyzyzxy

xyzxyz

78.

79.

80.一名工作人員可以使用多臺計算機,而一臺計算機可被多名工作人員使用,則實體工作人員與實體計算機之間的聯系是()。

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

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

六、程序設計題(1題)82.編程將文件read.txt中的字符讀出顯示到屏幕上。

參考答案

1.D

2.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第—個字符。在for循環中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。

3.D

4.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數組c共占用同一個存儲單元,且此存儲單元為2個字節,通常c[0]位于低字節,c[1]位于高字節,所以x.i的值為266。

5.C

6.AC語言中scanf函數的聲明為“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2個參數是地址。因此,從4個答案中可以判斷,只有選項A是p[i]的地址,其他的均是變量本身。故本題答案為A選項。

7.D解析:本題考查兩個知識點:①C語言用'\\n'這個字符常量表示換行;②函數getchar()的作用是從終端輸入一個字符,當遇到換行時結束輸入。

8.Dfun函數的意思是當*s%2==0的時候就輸出并且s自加l次,然后判斷。所以可知只有第2和第4個位置上的才符合要求,所以答案為D。

9.B本題考查軟件工程調試。調試與測試是兩個不同的過程,有著根本的區別:調試是一個隨機的、不可重復的過程,它用于隔離和確認問題發生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復的過程,它的目的是為了發現軟件中的問題。因此,軟件調試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。

10.C解析:定義結構體類型的變量有如下幾種方法:

①定義結構體類型的同時,定義結構體類型的變量,如:

stractaa

{…}tdl;

選項B)中將宏名AA用宏體structaa替換后,與該定義形式一樣,因此是正確的。在這一定義形式中,結構體類型名aa是可以省略的,因此,D)項也是正確的。

②先定義結構體類型,然后再定義結構體類型的變量,形式如下:

structaa

{…};

strnctaatdl;

這種定義形式也可演變為:先用類型定義語句typedef將該結構體類型定義成一個類型名AA,然后直接用該類型名AA定義一個結構體變量(這時不再需要使用關鍵字struct)。因此選項A)正確。

11.B解析:以“wt”方式寫入的是字符文件,轉義字符\'\\n\'被看作兩個字符來處理。而'wb'方式寫入的是二進制文件,轉義字符\'\\n\'是一個字符。故正確答案為選項B)。

12.B

13.A解析:在C語言中所謂函數的遞歸是在指在調用一個函數的過程中,又出現了直接或間接地調用該函數本身,直接調用該函數本身的稱為函數遞歸,而間接調用該函數稱為函數的間接遞歸調用.由程序可以看出函數f(a,i,j)為一遞歸函數,其功能是i

14.A本值輸出兩個值,%c為輸出一個字母,0/4d輸出一個數字?!癆”的ASCIl碼為65,再加4之后為69,也就是字母E,所以本題A正確。

15.A軟件測試的目的是為了發現錯誤而執行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調試的基本步驟有:錯誤定位、修改設計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應追溯到需求、嚴格執行測試計劃,排除測試的隨意性、充分注意測試中的群集現象、程序員應避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項。

16.C解析:函數fun(int*s,intn1,intn2)的功能是對數組s中的元素進行首尾互相調換。所以在主函數中,當fun(a,0,3)執行完后,數組a[12]={4,3,2,1,5.6,7,8,9,01;再執行fun(a,4,9),數組a[12]={4,3,2,1,0,9,8,7,6,5};再執行fun(a,0,9)后,數組a[12]={5,6,7,8,9,0,1,2,3,4}。

17.A數組說明的一般形式為:類型說明符數組名[常量表達式]。B)中N是變量,不能用變量定義數組長度。C)選項中數組長度是非法的一串數字。定義數組時必須為其指明長度,D)選項中數組長度為空,所以非法。

18.D

19.A

20.C

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

22.n(n-1)/2

23.11解析:本題考查兩個知識點:一是x/y的值為整型,即為0;二是數1是double類型。

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

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

26.1-21,-2解析:題中外層while循環的循環條件是y--!=-1,即y>=0;內層do…while循環的循環條件是y--即y-->0,y>=1。注意:break和continue語句在循體中的作用。

27.8181解析:將S(i+j)展開來有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

28.224682,2468解析:在主函數中根據整型數組x[]的定義可知,x[1]的初值等于2。在for循環語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1]=&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結果為2、4、6、8。

29.自然連接自然連接解析:在關系運算中,自然連接運算是對兩個具有公共屬性的關系所進行的運算。

30.系統設計系統設計解析:系統設計階段是系統的具體設計過程,主要包括概念設計、邏輯結構設計、物理結構設計3個步驟。這3個不同層次上的設計過程,是把實體以及相互之間的聯系轉換為“數據”并落實于計算機中。

31.66解析:本題中,i,j分別為外循環和內循環的循環控制變量,外層循環共執行了四次.當i=1時,由于內層循環判斷條件(2<=1)為假不執行內層循環.當i=2時,執行內層循環,輸出一個#當i=3時,內層循環循環兩次,輸出兩個#,當i=4時,內層循環循環三次,輸出三#。當i=5時,循環判斷條件不成立,退出外層循環。所以一共輸出6個#。

32.00解析:函數getchar()是從鍵盤得用戶輸入的一個字符。用戶輸入的第1個字符a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個循環不會被執行。

33.(x>10&&x<100)||x<0

34.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本題使用的是“輾轉相除”法求兩個數的最大公約數,即以兩個數中較大的除以較小的,如果余數不為0,則將較小的數和余數做同樣處理,直到被除斷為止,此時較小的數就是兩個數的最大公約數。本題第一空要求填寫一個if語句的判斷條件,如果滿足此條件則交換m和n的值,再看后面while循環的循環體,使用m%n求余,則此if語句的作用應該是保證m是兩個數中較大的那個,故第一空填m<n或n>m。接下來的while循環實現整個輾轉相除的過程,其結束條件應該是余數r為0,所以while的循環條件應該填r或r!=0。

35.=aasum/nx[i]<ave=a\r\na\r\nsum/n\r\nx[i]<ave解析:sum是用來存放學生成績總和的,a是輸入的成績,ave存放平均成績,n既是循環變量,又表示學生人數,x[n]保存第n個學生的成績。sum用來累加每個同學的成績,因此有sum+=a;把新輸入的學生成績保存在數組中,因此有x[n]=a;ave是所有同學的平均成績,因此有ave=sum/n;逐個把學生成績和平均成績比較,因此有if(x[i]<ave)。

36.1212解析:本題簽考查如何用指針引用數組元素。分析程序,首先定義了一個指向數組a的指針p,p指向數組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。

37.IHAVEATEST.

38.11解析:do…while語句的功能是:首先執行循環體語句,然后檢測循環控制條件表達式的值,若為真,則重復執行循環體語句,否則退出循環;do…while語句的特點是先執行后判斷,因此循環體至少執行1次.本程序中x=2不符合循環條件,所以只循環1次。

39.概要概要

40.structSTRU*

41.CE-R圖轉換成關系模型數據則是把圖形分析出來的聯系反映到數據庫中,即設計出表,所以屬于邏輯設計階段。

42.C解析:程序中定義了兩個整型變量,一個用八進制表示,一個用十進制表示,輸出語向中要求m,n都為八進制輸出,顯然m原樣輸出為256,n的值轉換為八進制輸出(256的八進制為400),故輸出400.所以,4個選項中選項C符合題意。

43.A解析:可以賦初值的字符串一定是用字符數組存儲的,選項B不對,它是將字符指針變量指向一個字符串常量;選項C中字符數組t需要6個字節的存儲空間:選項D是錯誤的形式,數組名是常量。

44.B解析:break語句可以用在switch和循環語句中,作用是跳出switch或循環結構,但并不要求switch結構和循環結構中必須有break語句,所以選項B)的說法是正確的。注意:break、continue語句在循環語句中的使用。

45.C解析:本題考查函數調用時的參數傳遞。函數的形參是函數定義時由用戶定義的形式上的變量,實參是函數調用時,主調函數為被調函數提供的原始數據。在函數調用時,實參和其所對應的形參分別占用不同的存儲單元,彼此之間不影響。

46.B解析:本題主要考查了一維數組指針的賦值和用指針引用數組元素進行運算。選項B)中p2為指向int型變量的指針。而k為int型變量,不能將int型變量直接賦值給指向int型變量的指針,所以選項B)錯誤。

47.B

48.CC)【解析】根據二叉樹的性質3:對任何一棵=叉樹,度為0的結點(即葉子結點)總是比度為2的結點多…+個。

49.C解析:當從鍵盤輸入MicrosoftVisualstudio時,由于scanf輸入函數的特點是遇到空格時結束讀入字符,因此,該程序只將Microsoft這9個字符送到了字符數組str中,并在其后自動加上結束符“\\0”。

50.A

51.A解析:條件表達式“a?b:c”的含義是:當a為真時,其值等于表達式b的值,當a為假時,其值等于表達式c的值。第一個表達式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個表達式:m=4<y=3為假,所以返回y的值,即m=y=3。

52.D

53.B(16)B)解析:二維數組的初始化有以下幾種形式:①分行進行初始化。②不分行的初始化。③部分數組元素初始化。④省略第一維的定義,不省略第二維的定義。選項B)等號右邊分了3行,大于等號左邊數組的行數2。

54.DD。【解析】物理設計階段主要解決選擇文件存儲結構和確定文件存取方法的問題。物理設計階段包括:選擇存儲結構、確定存取方法、選擇存取路徑、確定數據的存放位置。

55.C解析:說明語句中變量a為整型,變量b為實型。選項A、B和D的格式控制中變量a的格式描述符為f,與定義的變量類型不符,故選項A、B和D錯誤。

56.CC.【解析】線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前件,最后一個結點沒有后件,其他結點有且只有一個前件和后件,所以選項C.是錯誤的。

57.B解析:printf的輸出項指的是輸出的變量或表達式,但是printf可以只輸出字符串,這不屬輸出項。C語言中的整數不能按十二進制的形式輸出。對于getchar,雖然輸入的是字符所對應的ASCII碼,但是計算機會把這個ASCII碼當作字符來處理的。

58.D

59.B

60.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)來表示。

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

62.B

63.B\n在第1次外層for循環中,首先x++得到x=1。進入到內層for循環,只有循環j的值為奇數時,變量x的值才自加1,所以在內層for循環執行過程中,變量x的值自加兩次,當退出內層for循環時,x=3,然后執行x++,得到x=4。在進入執行第2次外層for循環中,首先x++得到x=5。進入到內層for循環,只有循環變量J的值為奇數時,變量X的值才自加1,所以在內層for循環執行過程中,變量X的值自加l兩次,當退出內層for循環時,x=7,然后執行x++,得到x=8,所以打印輸出變量x的值為8。

\n

64.D

65.C

66.C\nA中P是指針,沒有初始化,且取P的地址即類型為指向地址的地址,與輸出參數類型不符。B中指針P沒有初始化,且P所指變量值不明。D*p是整型變量,&k是整型變量的地址。所以選C。

\n

67.A外層循環i,值分別為l23,內層循環j分別為l23、23和3,所以答案為A)。

68.C

69.A本題考查刪除鏈表中的結點操作,其方法是將要刪除結點的上個結點的下個結點指向要刪除結點的下個結點,然后釋放該要刪除結點,所以選項A正確。

70.D因為在邏輯表達式中,兩邊的賦值表達式都成立,即值為1,故選擇D選項。

71.A本題主要者查右移運算和按位異或。把b化為二進制數為00000100,右移兩位后為00000001,a的二進制為00000010,兩者異或為00000011。

72.B

73.A執行fun(a)語句時,P指向的是字符串數組a的第一個字符串“Morning”,p自加1之后,p指向字符串數組a的第2個字符串“Afternoon”。

74.A棧支持子程序調用。棧是-種只能在-端進行插入或刪除的線性表,在主程序調用子函數時要首先保存主程序當前的狀態,然后轉去執行子程序,最終把子程序的執行結果返回到主程序中調用子程序的位置,繼續向下執行,這種調用符合棧的特點,因此本題的答案為A。

75.A解析:本題考查如何通過地址來引用數組元素。通過地址來引用數組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

76.B

77.B本題主要考查循環結構和字符串的存儲結構。在C語言中,為了方便確定字符串的長度,編譯系統在字符串后增加了一個結束標識‘\\0’,即ASCII碼的0。

在程序中,首先定義了一個字符型數組str,并賦初值,然后定義一個同類型的指針變量ps,并使ps指向字符數組str。

在while循環中,循環結束的條件是*ps的值為0,由于循環開始前,指針變量ps是指向數組的第一個元素,即*ps等價于str[0],值為x,其ASCII碼值不為0,循環繼續,使ps指向數組的第二個元素,很明顯,結果不為0,第三個元素也不為0,而第四個元素才為0,循環結束,此時ps指向數組中的結束標識符。

在for循環中,首先將指針變量ps做自減運算,即使指針變量ps執行數組的最后一個元素值,即第三個元素z,然后用輸出函數puts輸出,該輸出函數的功能是輸出字符串或字符數組到終端上,一次只能輸出一個字符串,輸出時,遇到字符串結束標志符結束,并自動換行。

第一次for循環時,由于ps指向z,輸出的結果為z,換行。

第二次for循環時,由于ps指向y,那么輸出的結果為yz,換行。

第二次for循環時,由于ps指向x,那么輸出的結果為xyz,換行。

因此,本題的正確答案是B。

\r\n\r\n\r\n

78.D

79.A

80.c因為一名工作人員可以操作多臺計算機,而一臺計算機又可以被多名工作人員使用,所以兩個實體之間是多對多的關系,選擇c)。

81.

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

82.\n#include'stdio.h'

\nmain

\n{intc;

\nFILE*fp;

\nfp=open('read.txt','r');

\nc=fgetc(fp);

\nwhile(c!=\\n)

\n{putchar(c);

\nc=fgetcr(fp);

\n}}

\nfclose;}\n2022年山東省菏澤市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.下面程序的輸出結果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

3.

4.下列程序的執行結果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

5.已知char**s,下面正確的語句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

6.設有定義“intx[10],*p=x,i;”,若要為數組x讀入數據,以下選項正確的是()。

A.for(i=0;i<10;i++)scanf(“%d”,p+i);

B.for(i=0;i<10;i++)scanf(“%d”,*p+i);

C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));

D.for(i=0;i<10;i++)scanf(“%d”,x[i]);

7.若變量已正確定義,下列正確的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

8.有以下程序(說明:字母A的ASCIl碼值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序運行后的輸出結果是()。A.BYB.BTC.YTD.YE

9.軟件調試的目的是A.發現錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

10.以下對結構體類型變量的定義中,不正確的是()。

A.typedefstruetaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm;}tdl;

11.對于下述程序,在方式串分別采用“wt”和“wb”運行時,兩次生成的文件TEST的長度是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fputc('\n',fp);fputc('C',fp);fclose(fp);}

A.7字節、7字節B.7字節、5字節C.5字節、7字節D.5字節、5字節

12.

13.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執行后輸出結果是

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

14.有以下程序#include<stdio.h>main(){charcl,c2;c1=A+8-4c2=A+8-5;printf("%C,%d\n",cl,c2);}已知字母A的ASCIl碼為65,程序運行后的輸出結果是()。A.E,69B.D,69C.E,DD.輸出無定值

15.下面敘述中錯誤的是()。

A.軟件測試的目的是發現錯誤并改正錯誤

B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟

C.程序調試通常也稱為Debug

D.軟件測試應嚴格執行測試計劃,排除測試的隨意性

16.有以下程序#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序的運行結果是

A.987654321B.4321098765C.5678901234D.987651234

17.下列定義數組的語句中,正確的是()。A.#defineN10?intx[N];

B.intN=10;int[N];

C.intx0..10];

D.Intx[];.

18.下面哪種排序的平均比較次數最少()

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

19.給定數列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用直接選擇大值開始排序時,第一趟掃描結果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

20.對線性表進行折半查找時,必須要求線性表()。

A.順序方式存儲B.鏈式方式存儲C.以順序方式存儲,且結點按關鍵字有序排列D.以鏈式方式存儲,且結點按關鍵字有序排列

二、2.填空題(20題)21.下面程序的功能是將一個字符串str的內容顛倒過來,請填空。

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

22.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為【】。

23.設x和y均為int型變量,且x=1,y=2,則表達式double(1+x/y)的值為【】。

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

25.棧和隊列通常采用的存儲結構是【】。

26.下面程序的運行結果是【】。

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

27.以下程序運行后的輸出結果是【】。

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

28.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

29.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

30.一般來說,數據庫的設計過程要經歷3個大的階段,即可行性分析與研究階段、系統設計階段、設計實施與系統運行階段。概念設計、邏輯結構設計、物理結構設計屬于數據庫設計的【】階段。

31.執行以下程序后,輸出‘#’號的個數是______。

#include<stdio.h>

main()

{

inti,j;

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

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

putchar('#');

}

32.若輸入字符串:abcde,則以下while循環體將執行【】次。

while((ch=getchar())=='e')printf("*");

33.表示條件;10<x<100或x<0的C語言表達式是【】。

34.下面程序的功能是求整數m、n的最大公約數,請填空。

main()

{intm,n,r;

scanf("%d,%d",&m,&n);

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

35.以下程序的功能是:從鍵盤上輸入若干個學生的成績,統計計算出平均成績,并輸出低于平均分的學生成績,用輸入負數結束輸入。

main()

{floatx[1000],sum=0,ave,a;

intn=0,i;

printf("Entermark:\n");scanf("%f",&a);

while(a>=0.0&&n<1000)

{sum+【】;x[n]=【】;

n++;scanf("%f",&a);

}

ave=【】;

printf("Output:\n");

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

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

if(【】)printf("%t\n",x[i]);

}

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

37.若輸入Ihaveatest.#,則以下程序的運行結果為【】。

#include<stdio.h>

main()

{FILE*fp;

charstr[100],filename[10];

inti=0;

if((fp=fopen("test","w"))==NULL)

{printf("cannotopenthefile!\n");

exit(0);

}

getchar();

gets(str);

while(str[i]!='#')

{if(str[i]>='a'&&str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

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

fclose(fp);

}

38.下列程序的循環次數是______。

x=2;

do

{x=x*x;}

while(!x);

39.軟件的【】設計又稱為總體結構設計,其主要任務是建立軟件系統的總體結構。

40.以下程序段用于構成一個簡單的單向鏈表。請填空。

struetSTRU

{intx,y;

floatrate;

【】p;

}a,b;

a.x=0;a.y=0;a.rate=0;a.p=&b;

b.x=0;b.y=0;b.rate=0;b.p=NULL;

三、1.選擇題(20題)41.在數據庫設計中,將E-R圖轉換成關系數據模型的過程屬于()。A.需求分析階段B.概念設計階段C.邏輯設計階段D.物理設計階段

42.有以下程序main(){intm=0256,n=256;printf("%o%o\n",m,n);}程序運行后的輸出結果是

A.02560400B.0256256C.256400D.400400

43.下列能正確進行字符數組賦初值的語句是______。

A.chart[5]={'a','b','c','d','e'};

B.char*t;t="abcde";

C.chart[5]="abcde";

D.chart[5];t="abcd";

44.下列關于switch語句和break語句的結論中,正確的是

A.break語句是switch語句中的一部分

B.在switch語句中可以根據需要使用或不使用break句

C.在switch語句中必須使用break語句

D.以上三個結論中有兩個是正確的

45.若函數調用時,參數為基本數據類型的變量,下列敘述中正確的是()。

A.實參與其對應的形參共占存儲單元

B.只有當實參與其對應的形參同名時才共占存儲單元

C.實參與其對應的形參分別占用不同的存儲單元

D.實參將數據傳遞給形參后,立即釋放原先占用的存儲單元

46.設p1和p2是指向一個int型一維數組的指針變量,k為int型變量,則不能正確執行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

47.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a十B)

48.某二叉樹中度為2的結點有10個,則該二叉樹中有()個葉子結點。

A.9B.10C.11D.12

49.運行下面的程序,輸入字符串MicrosoftVisualStudio,則程序的執行結果是()。#include<stdio.h>main(){charChr[20];scanf("%s",&Chr);printf("%s\n”,Chr);}

A.MicrosoftVisua1Studio

B.M

C.Microsoft

D.MicrosoflVisualStudio

50.下列程序(注意:ch[0]在低字節,ch[1]在高字節)的輸出結果是______。#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}

A.13B.14C.208D.209

51.假定w、x、y、m均為int型變量,則執行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

52.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0];下面選項中,表達式值為6的是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

53.以下數組定義中錯誤的是A.intx[][3]={0};

B.intx[2][3]={{l,2},{3,4},{5,6}};

C.intx[][3]={{l,2,3},{4,5,6}};

D.intx[2][3]={l,2,3,4,5,6};

54.設計數據庫的存儲結構屬于()。

A.需求分析B.概念設計C.邏輯設計D.物理設計

55.若有說明語句"inta;floatb;”,以下輸入語句正確的是()

A.scanf("%f%f",&a,&b);

B.scanf("%f%d",&a;&b);

C.scanf("%d,%f",&a,&b);

D.scanf("%6.2f%6.2f",&a,&b);

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

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和后件

D.線性表可以是空表

57.以下敘述中正確的是______。

A.調用printf函數時,必須要有輸出項

B.調用putchar函數時,必須在之前包含頭文件stdio.h

C.在C語言中,整數可以以十二進制、八進制或十六進制的形式輸出

D.調用getchar函數讀人字符時,可以從鍵盤上輸入字符所對應的ASCII碼

58.現有以下語句:i=1;for(;i<=100;i++)sum+=i;

A.for(i-1;;i++){sum+--i;if(i==100)break;}

B.for(i=1;i<=100;){sum+=i;i++;}

C.i=1;for(;i<=100;){sum+=-i;}

D.i=1;for(;;){sum+=i;if(i==100)break;i++;}

59.有以下函數:charfun(char*p){returnP;}該函數的返回值是()。

A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

60.有如下說明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

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

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

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

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

62.

63.有下列程序:

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++:

}

x++:

}

printf("x=%d\n"x);

}

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

A.x=4B.x=8C.x=6D.x=12

64.

65.(23)在深度為5的滿二叉樹中,葉子結點的個數為______。

A.32

B.31

C.16

D.15

66.以下程序段完全正確的是()。

A.int*P;scanf("%d",&p);

B.int*P;scanf("%d",p);

C.intk,*p=&k;scanf("%d",p);

D.intk,*p;*p=&k;scanf("%d¨,p);

67.有以下程序

68.

69.假定已建立以下鏈表結構,且指針P和q已指向如圖所示的結點:

則以下選項中可將q所指結點從鏈表中刪除并釋放該結點的語句組是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

70.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是()。A.A.無輸出B.結果是不確定C.-1D.1

71.下列程序中c的二進制值是()。chara=2,b=4,c;c=a^b>>2;A.00000011B.00010100C.00011100D.00011000

72.下面敘述中正確的是(

)。A.全局變量的作用域一定比局部變量的作用域范圍大B.靜態類型變量的生存期貫穿于整個程序的運行期間C.函數的形參都屬于全局變量D.未在定義語句中賦值的auto變量和static變量的初值都是隨機值

73.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運行結果是()。A.A.AfternoonB.fternoonC.MorningD.orning

74.支持子程序調用的數據結構是()。

A.棧B.樹C.隊列D.二叉樹

75.若有定義:“inta[2][3];”,則對a數組的第i行第j列元素的正確引用為()。

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

76.

77.有以下程序

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)

puts(ps);

}

程序的運行結果是

A.yzB.zC.zD.x

xyzyzyzxy

xyzxyz

78.

79.

80.一名工作人員可以使用多臺計算機,而一臺計算機可被多名工作人員使用,則實體工作人員與實體計算機之間的聯系是()。

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

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

溫馨提示

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

評論

0/150

提交評論