2021年遼寧省丹東市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021年遼寧省丹東市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021年遼寧省丹東市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021年遼寧省丹東市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021年遼寧省丹東市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

2.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達式a/b+c-k值的類型為:

A.intB.doubleC.floatD.char

3.以下選項中,能用作用戶標識符的是()。

A._0_B.8_8C.voidD.unsigned

4.

5.定義下列結(jié)構體(聯(lián)合)數(shù)組:structst{charname[15];intage;}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結(jié)果為()。A.15,AB.16,HC.16,AD.17,H

6.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

7.

8.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結(jié)果是()。A.b,bB.b,cC.a,bD.a,c

9.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

10.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

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

}

程序運行后的輸出結(jié)果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

11.

12.若有說明語句:double*P,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%lf",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%lf",*p);

D.p=&a;scanf("%lf",p);

13.合法的常量是()。A.‘program’B.–e8C.03xD.0xfl

14.

15.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

16.對包含N個元素的散列表進行檢索,平均檢索長度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

17.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

18.以下選項中合法的實型常數(shù)是

A.5E2.0B.E-3C.2.00E+00D.1.3E

19.若某表最常用的操作是在最后一個結(jié)點之后插入一個結(jié)點或刪除最后一個結(jié)點,則采用()存儲方式最節(jié)省運算時間。

A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點的雙循環(huán)鏈表

20.若有定義intx,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==)

二、2.填空題(20題)21.將以下程序段寫成三目運算表達式:【】。

if(a>b)max=a;

elsemax=b;

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

23.以下程序中函數(shù)fun()的功能是構成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單向鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<atdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構*/

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立鏈表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

{printf("%s\n",p->suh);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);prinff("\n");

24.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."。空白處需要填入的內(nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

25.在計算機軟件系統(tǒng)的體系結(jié)構中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【】之間。

26.沒有char,a,b;,若要通過a&d運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

27.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,0,SEEK_END);f1=ftell(myf);

fclose(myf);

printf("%1d\n",f1);

28.結(jié)構化程序設計的3種基本結(jié)構分別是順序、選擇和______。

29.函數(shù)fun的功能是計算xn

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已正確定義m、a、b變量并賦值,并調(diào)用fun函數(shù)計算:m=a4+b4-(a+b)3。實現(xiàn)這一計算的函數(shù)調(diào)節(jié)器用語句為______。

30.按照邏輯結(jié)構分類,數(shù)據(jù)結(jié)構可分為線性結(jié)構和非線性結(jié)構,二叉樹屬于______。

31.下面程序的輸出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

32.Jackson方法是一種面向【】的結(jié)構化方法。

33.對于軟件測試,從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試。代碼檢查屬于______測試。

34.軟件是程序、數(shù)據(jù)和【】的集合。

35.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是______。

36.表達式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

37.下面的語句要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>

p=【】malloc(sizeof(double));

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

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

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

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

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

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

printf("%d,%d,%d\n",a,b,C);

}

三、1.選擇題(20題)41.運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}

A.123B.1,2,3C.321D.3,2,1

42.當運行以下程序時,從鍵盤輸入AhaMA(空格)Aha

#include

main()

{chars[80],c='a';

inti=0;

scanf("%s",s);

while(s[i]!='\n')

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

43.下列語句段中,正確的是()。

A.street{intx;floaty;inta[2];unsignedb[3];charname[10];};

B.structstu{unsigneda[3];unsignedb[4];}x;int*p=&x.a;

C.stmctstu{inta;floatx[4];}y={1,1.0};floatdata=y.x;

D.structnd{inta,b;unsignedc[2]=5;};

44.下面程序的運行結(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

45.下面關于數(shù)據(jù)庫三級模式結(jié)構的敘述中,正確的是()

A.內(nèi)模式可以有多個,外模式和模式只有一個

B.外模式可以有多個,內(nèi)模式和模式只有一個

C.內(nèi)模式只有一個,模式和外模式可以有多個

D.模式只有一個,外模式和內(nèi)模式可以有多個

46.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

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

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

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

49.一棵二叉樹中共有70個葉子結(jié)點與80個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為()。

A.221B.219C.231D.229

50.函數(shù)rewind的作用是

A.使文件位置指針重新返回文件的開始位置

B.將文件位置指針指向文件中所要求的特定位置

C.使文件位置指針指向文件的末尾

D.使文件位置指針自動移至下一個字符位置

51.若有如下程序段;intx=3,y=4,z;floata=2.0;z=y%x/a;則執(zhí)行后,z中的值是()

A.4B.3C.0D.0.5

52.下列關于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

53.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

54.以下敘述中錯誤的是A.C語言是一種結(jié)構化程序設計語言

B.結(jié)構化程序由順序、分支、循環(huán)三種基本結(jié)構組成

C.使用三種基本結(jié)構構成的程序只能解決簡單問題

D.結(jié)構化程序設計提倡模塊化的設計方法

55.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

A.0,1,2B.1,2,3C.1,1,3D.1,2,2

56.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==3‖i==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n",s);程序運行后的輸出結(jié)果是()。

A.10B.13C.21D.程序進入列循環(huán)

57.下列程序的運行結(jié)果是()。#inClude<stdio.h>main(){staticchara[]="Languagef",b[]="programe";Char*p1,*p2;intk;p1=a;p2=b;for(0;k<=8;k++)if(*p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.angC.programD.有語法錯

58.定義如下變量和數(shù)組:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};則下面語句的輸出結(jié)果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

59.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

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

D.p=&n;*p=m;

60.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

四、選擇題(20題)61.設有以下語句:typedefstructTY{charC;inta{41;}CIN;

則下面敘述中正確的是()。

A.CIN是structTr類型的變量

B.TT是struct類型的變量

C.可以用,lr定義結(jié)構體變量

D.可以用CIN定義結(jié)構體變量

62.設變量a是int型,f是float型,i是double型,則表達式10+′a′+i*f值的數(shù)據(jù)類型為

A.intB.floatC.doubleD.不確定

63.有以下程序

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

A.3040B.2050C.3344D.0304

64.

有下列程序:

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;}

}

main

{intaa[10]:{1,2,3,4,5,6,7,8,9,10),i;

sort(aa+2,5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

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

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

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

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

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

65.

66.

67.

68.

69.

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

#include<stdio.h>

voidfun(int*S,int*p)

{staticintt=3:

*p=s[t];

t--;

}

voidmain

{inta[]={2,3,4,5),k;

intx;

for(k=0,k<4,k++)

{fun(a,&x);

printf("%d,",x);

}

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

71.有以下程序:

main()

{

chara[7]="a0\OaO\0";inti,j;

i=sizeof(a);j=strlen(a);

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

}

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

A)22B)76

C)75D)62

72.若變量x,y已正確定義并賦值,以下符號C語言語法的表達式是()。

A)++x,y=x--B)x+1=y

C)x=x+10=x+yD)double(x)/10

73.有以下程序

main(intargc,char*argv[])

{intn,i=0;

while(argv[1][i]!=’\0’)

{n=fun();i++;}

printf("%d\n",n*argc);

}

intfun()

{staticints=0;

s+=1;

returns;

}

假設程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若輸入以下命令行

exam123<回車>

則程序的運行結(jié)果是

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

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

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

75.已知大寫字母A的ASCII碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉(zhuǎn)換為對應小寫字母的語句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

76.

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

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

78.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:應用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:

x1=(xO+a/xO)/2

例如,3的平方根為1.732051。

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

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

試題程序:

六、程序設計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為132333431424344415253545則一維數(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.AB)選項中打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進行追加操作等。c)選項中在一個程序中當對文件進行了寫操作后,不用先關閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進行重新定位即可。D)選項中,C語言中的文件可以進行隨機讀寫。故本題答案為A)。

2.B解析:雙目運算中兩邊運算量類型轉(zhuǎn)換規(guī)律:

運算數(shù)1運算數(shù)2轉(zhuǎn)換結(jié)果類型

短整型長整型短整型->長整型

整型長整型整型->長整型

字符型整型字符型->整型

有符號整型無符號整型有符號整型->無符號整型

整型浮點型整型->浮點型

在a/b的時候,a、b的類型不一致,根據(jù)類型轉(zhuǎn)換規(guī)則,把整型轉(zhuǎn)換成double類型,之后的加、減類似。轉(zhuǎn)化規(guī)則為char,short->int->unsigned->long->double←float。

3.AC語言的標識符由字母、數(shù)字、下劃線組成,且第1個字符必須是字母或下劃線。另外,關鍵字不能作為標識符。B選項中以數(shù)字8開頭,所以錯誤。C選項與D選項中用的是關鍵字“void”與“unsigned”,所以錯誤。故本題答案為A選項。

4.D

5.C本題考查結(jié)構體數(shù)組。a[2].a(chǎn)ge為結(jié)構體aEZ]的age成員,即a[3].name為指向結(jié)構體a[3]的name成員的第一個元素的指針,即指向“2”,(a[3].name+2)將指針后移兩位指向第三個元素“A”,*(a[3].name+2)是取指針所指向地址的內(nèi)容。

6.AB選項中運算符“%”的運算對象為整數(shù)。C選項中不能將變量賦給表達式“x+n”。D選項中不能將表達式“4+1”賦給常量5。故本題答案為A選項。

7.C

8.A++a與a++的區(qū)別是前者先自加再運算,后者是先運算后自加。

9.C當循環(huán)結(jié)束時,w的值應為-1,而其他選項中w的值為0,故選擇c選項。

10.C用數(shù)組名作為函數(shù)實參時,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共同占用同一段內(nèi)存單元。本題通過“prt(a,5);”將數(shù)組a的首地址傳遞給了指針變量m,使指針變量m指向數(shù)組a的首地址,那么,對指針變量所指向的存儲單元的內(nèi)容的改變就是對數(shù)組a中的元素的改變。題中函數(shù)prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數(shù)組a中的值也隨之變化,所以。輸出的數(shù)組元素的值為2,3,4,5,6,。

11.C

12.D解析:*p間接引用指針指向的變量,因此“(*p)=&a”不對。scanf()的輸入變量必須為地址,因此C是錯誤的。

13.D

14.C

15.C

\ngetchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=a,判斷if條件,發(fā)現(xiàn)a>=a&&a<=g成立,則執(zhí)行下列語句:C=C+4,C得到的字符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。

16.C

17.B當用指數(shù)形式表示浮點數(shù)據(jù)時,E的前后都要有數(shù)據(jù),并且E的后面數(shù)要為整數(shù)。

18.C解析:在C語言中,實數(shù)有兩種表示形式:十進制數(shù)形式與指數(shù)形式。

1)一般形式的實數(shù):小數(shù)形式的實數(shù)由整數(shù)部分、小數(shù)點和小數(shù)部分組成(必須要有小數(shù)點)。

2)指數(shù)形式的小數(shù):指數(shù)形式的實數(shù)由尾數(shù)部分、e(E)和指數(shù)部分組成(字母e或E的前后必須要有數(shù)字,且其后面的指數(shù)必須為整數(shù))。選項A中,5E2.0中E后面的2.0不是整數(shù);選項B中,E前面沒有數(shù)字;選項D中,E后面沒有數(shù)字。

19.D

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

21.max=(a>b)?a:bmax=(a>b)?a:b解析:本題考查三目運算符的用法,條件表達式的一般形式為:

表達式1?表達式2:表達式3

所以,本題可以寫成(a>b)?a:b,它是一個條件表達式,執(zhí)行順序是:如果條件(a>b)為真,則條件表達式取值a,否則取值b。

22.log2n

23.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定義了一個結(jié)構體類型名Node,其中定義了一個指向結(jié)點類型的指針next。接下來用Node定義了頭結(jié)點指針變量h和指向第一個結(jié)點的指針變量p,在滿足p未指向最后一個結(jié)點的空指針時(即為NULL),輸出p所指向結(jié)點的字符串,所以第一處應填p!=NULL,然后將p指向下一個非空結(jié)點,所以第二處應填P->next或與其等效的形式,反復執(zhí)行直到所有的結(jié)點都輸出。

24.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實現(xiàn)的。

25.操作系統(tǒng)或OS操作系統(tǒng)或OS解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務。位于用戶和操作系統(tǒng)之間。

26.1000001010000010解析:運算“&”的規(guī)則是只有當兩個相應的二進制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進制數(shù)10000010相與。

27.fopen

28.重復(循環(huán))重復(循環(huán))解析:結(jié)構化程序設計包括3種基本的結(jié)構:順序結(jié)構、選擇結(jié)構和重復結(jié)構(循環(huán)結(jié)構),利用這3種結(jié)構就足以表達出各種其他形式結(jié)構的程序設計方法。其中利用循環(huán)結(jié)構,可以簡化大量的程序執(zhí)行。

29.m=fun(a4)+fun(b4)-fun(a+b3);m=fun(a,4)+fun(b,4)-fun(a+b,3);解析:本題考核的知識點是C程序的簡單應用。函數(shù)fua(x,n)的作用是求x的n次方,因此a的4次方應該調(diào)用函數(shù)tim(a,4),b的4次方應該調(diào)用函數(shù)fun(b,4),a+b的3次方應該調(diào)用函數(shù)fun(a+b,3),所以題目中的數(shù)學表達式,寫成C程序中的語句為m=fun(a,4)+fun(b,4)-fun(a+b,3)。

30.非線性結(jié)構非線性結(jié)構解析:對于一個非空的數(shù)據(jù)結(jié)構,如果同時滿足下列兩個條件,即1)有且只有一個根結(jié)點;2)每一個結(jié)點最多有一個前件,也最多有一個后件;即為線性結(jié)構,而二叉樹的結(jié)點可能存在兩個后件,所以是非線性結(jié)構。

31.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上—個元素存在并有明確值的情況下,這個牧舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=cm2+1=1+1=2,進而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應當為'DDBBCC'。

32.數(shù)據(jù)結(jié)構數(shù)據(jù)結(jié)構解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構的結(jié)構化方法。

33.靜態(tài)靜態(tài)解析:靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構分析,代碼質(zhì)量度量等。靜態(tài)測試不實際運行軟件。

34.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關文檔的完整集合。

35.1010解析:本題程序中定義了一個函數(shù)sub(),用來計算一個整數(shù)整除10的商和余數(shù)的和。在主函數(shù)中,首先用scanf()函數(shù)讀入一個十進制整數(shù)1234,然后對1234三次嵌套調(diào)用函數(shù)svb()。首先看最里層的調(diào)用,應該返回的值是123+4=127;然后中間一層調(diào)用應該返回的是12+7=19;所以最外層調(diào)用返回1+9=10。故最后輸出10。

36.floatfloat解析:在此表達式中x是float類型的變量,經(jīng)過開方所得到的結(jié)果仍是float類型,再和2.8進行運算時,應該先將2.8轉(zhuǎn)換成float類型再運算,最后結(jié)果仍是float型。

37.(double*)(double*)解析:本題考查強制類型轉(zhuǎn)換。函數(shù)malloc的默認返回是void*,若要使指針指向double類型,必須進行類型轉(zhuǎn)換,類型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。

38.100010100010解析:首先將程序中的宏替換掉,兩處的宏替換后分別為i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后輸出的i1和i2的值分別為1000和10。

39.gaegae解析:本題定義了兩個字符串數(shù)組a[],b[],字符型指針變量p1和p2,且分別指向字符串數(shù)組a和b,抽打for循環(huán),當if(*(p1+k)==*(p2+k))條件為真,執(zhí)行輸出*(p1+k)對應的字符。即當k=0時,*(p1+k)對應的字符串數(shù)組a中的字符L,*(p2+k)對應的字符串數(shù)組b中字符P,因此if(*(p1+k)==*(p2+k))條件為假,不執(zhí)行printf語句,依此類推,將字符串數(shù)組a和b中對應位置上的字符——比較,如果對應位置上的字符相同,則輸出該字符。

40.3123,1,2解析:分析程序,第一個if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。

41.A解析:本題考查if-else語句和switch語句。scan函數(shù)通過鍵盤讀入nUm的值。因為num=321>99,所以s=3,i=3,i=2k=1。因為s=3,所以執(zhí)行case3,輸出k,j,i的值,然后通過breed結(jié)束程序。

42.A解析:本題主要考查的知識點是大寫字母比它對應的小寫字母ASCII碼值小32,并且字符可以看作整數(shù)進行算術運算等操作。

43.A解析:本題主要考查的知識點是結(jié)構類型的概念和定義,結(jié)構定義的一般形式是:

struct結(jié)構類型名稱

{數(shù)據(jù)類型成員名1;

數(shù)據(jù)類型成員名2;

數(shù)據(jù)類型成員名n;

};

struct為關鍵字,是結(jié)構的標識符:{}中包圍的是組成該結(jié)構的成員項;每個成員的數(shù)據(jù)類型既可以是簡單的數(shù)據(jù)類型,也可以是復雜的數(shù)據(jù)類型。整個定義作為一個完整的語句,用分號結(jié)束。結(jié)構類型名稱是可以省略的,此時定義的結(jié)構稱為無名結(jié)構。

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

45.BB)【解析】數(shù)據(jù)庫的三級模式結(jié)構是指數(shù)據(jù)庫系統(tǒng)

\n的外模式、模式和內(nèi)模式。一個數(shù)據(jù)庫可以有多個外模式,但只有一個模式和一個內(nèi)模式。

46.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達式是不能獨立成為語句的,答案B使用了C語言的自減運算符它就相當于D=D-1,所以答案B為一賦值語句。

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

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

49.B解析:二叉樹有一個性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個,由于本題中的二叉樹有70個葉子結(jié)點,因此有69個度為2的結(jié)點。

該二叉樹中總的結(jié)點數(shù)為

度為2的結(jié)點數(shù)+度為1的結(jié)點數(shù)+葉子結(jié)點數(shù)=69+80+70=219

50.A解析:函數(shù)rewind的功能是將文件指針重新指向一個流的開頭。用法如下:

intrewind(FILE*stream);并且無返值。

51.C

52.B解析:在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。即棧是按照先進后出(FILO,F(xiàn)irstInLastOut)或后進先出(LIFO,LastInFirstOut)的原則組織數(shù)據(jù)的,因此,棧也被稱為先進后出表或后進先出表。由此可以看出,棧具有記憶作用。答案B錯在帶鏈的棧的結(jié)點存儲順序與其邏輯順序是可以不一致的。

53.A解析:條件表達式的形式如下:表達式1?表達式2:表達式3,所以本題條件表達式a<b?a:c<d?c:d應該理解為a<b?a:(c<d?c:d),首先求出條件表達式c<d?c:d的值等于2,再求條件表達式a<b?a:2的值,由于a-1<b-4成立,所以上述條件表達式的值等于1。

54.C解析:結(jié)構化程序設計是指在程序的構成上只使用順序、選擇(即分支)和循環(huán)3種結(jié)構組成的編程方式。它強調(diào)程序設計風格和程序結(jié)構的規(guī)范化,提倡清晰的結(jié)構。結(jié)構化程序設計方法的基本思路,是把一個復雜問題的求解過程分階段進行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。結(jié)構化程序設計提倡模塊化的設計方法。

55.C解析:本題考查if語句。先判斷if語句的條件是否成立,++a=1>0,此條件成立,又因為是進行邏輯或運算,在已知其中一個運算對象為真的情況下,不必判斷另外一個運算符的真假,即不進行++b操作,就可以直接得出整個表達式的值為邏輯1,執(zhí)行下列的++c。

56.D解析:程序第1次執(zhí)行for循環(huán)時,i=0,兩條if語句中的表達式都不成立,執(zhí)行i++;s+=i;此時i為1,s為1第2次循環(huán),兩條if語句中的表達式也不成立,執(zhí)行i++,s+=i,此時i為2,s為3;……;當i=3時,執(zhí)行continue,結(jié)束本輪循環(huán),不執(zhí)行i++;繼續(xù)執(zhí)行下一輪循環(huán),這樣一來i值始終為3,繼續(xù)continue,無終止條件,進入死循環(huán)。

57.A解析:本題考查指針的用法,if(*(p1+k)==*(p2+k))語句的功能是判斷兩個數(shù)組中的字符是否相同,如果相同則輸出。

58.B解析:本題中的二維數(shù)組的每個元素就是一個由3個元素構成的一維數(shù)組,根據(jù)條件for(k=0;k<3;++)和要求的a[k][k]可以得出本題的答案應該是951。

59.D解析:“&”是求址運算符,“*”是指變量說明符。選項A)、B)應改為scanf('%d',p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險,建議不使用。

60.D本題主要考查指針變量對數(shù)值的引用。在題目中,首先定義了整型指針變量point和一個整型變量a,變量a的初值為4,然后是指針變量指向a,或者說將變量a所在存儲單元的地址值賦給指針變量。

在選項A中,很顯然,不全是地址,只有point表示地址,而*&a等價于*(&a),表示取一個數(shù)值。

在選項B中,也不都表示地址,其中*point表示數(shù)值,其他兩個表示地址。

在選項C中,與選項B類似,其中的*point表示數(shù)值。

在選項D中,都表示地址,是題目的選擇答案。

61.D本題考查typcdef重新聲明一種結(jié)構體類型,其中CIN為結(jié)構體類型名,而不是結(jié)構體變量,所以D選項正確。

62.C解析:根據(jù)混合運算規(guī)則,如果有一個數(shù)據(jù)是float型或double型,則其他數(shù)據(jù)類型先轉(zhuǎn)化為double型,運算的結(jié)果最終也是double型。

63.A第一次循環(huán)i為0,i%2為0,執(zhí)行switch(a[0]%2)中的case0語句后內(nèi)容即a[0]++,a[o]的值變成3;第二次循環(huán)i的值為I,i%2為l,執(zhí)行casel:a[i]=0;因此a[l]的值變成0;第三次循環(huán)i的值為2,1%2為0,執(zhí)行switch(a[2]%2)中的casel語句后的內(nèi)容a[2]一,a[21的值變成4;第四次循環(huán)i的值為3,1%2為l,執(zhí)行case1:a[i]=0;因此a[3]的值變成O。故本題答案為A)。

64.C

\n本題考查排序的使用由sort函數(shù)的兩層for循環(huán)語句可知,其二々能是把數(shù)組a口中的元素按照從大到小的順序進行排列。在main函數(shù)中首先定義了一維整型數(shù)組aa[10],然后調(diào)用sort(aa+2,5)實現(xiàn)從數(shù)組aa中下標為2的元素“3”開始.其后連續(xù)的5個元素從大到小進行排列,其余元素不變。

\n

65.B

66.C

67.B

68.C

69.D

70.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。

71.C數(shù)組a中有5個元素a,0,0,a,0占7個字節(jié)的內(nèi)容。最后一個\\0為結(jié)束符。

72.A賦值號的左邊不能為常量或表達式,所以B,C錯誤,D項不能進行這樣的操作。

73.A通常,main函數(shù)都是寫成main()的形式,實際上,main函數(shù)是可以有形參的,格式為main(argc,argv),其中argc是命令行中參數(shù)的個數(shù),argv是一個指向字符串的指針數(shù)組。命令行的所有參數(shù)都要是字符串。題目中輸入exam和123,則argc的值為2,argv[0]存放字符串exam,argv[1]存放字符串123。while語句的判別式為argv[1][i]!=’\\0’,而argv[1]存放的是字符串123,故i的值最大為2,while語句能夠循環(huán)3次。由題中可以知道,語句n=fun()也執(zhí)行了3次。對fun函數(shù)進行分析,fun函數(shù)用static語句定義了一個局部變量,該變量的值不會在調(diào)用函數(shù)結(jié)束后消失,而是能夠保存下來。下次函數(shù)調(diào)用時,該變量已有值,為上一次函數(shù)結(jié)束時的值。初始時局部變量s的值為0,經(jīng)過第1次fun函數(shù)被調(diào)用后,s的值變?yōu)?,當?shù)?次調(diào)用fun函數(shù)時,s的初始值為2,而不是0。經(jīng)過3次調(diào)用,s的值變?yōu)?,即main函數(shù)中變量n的值為3,又因為argc的值為2,則輸出結(jié)果為3*2=6。

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

75.B根據(jù)ASCII碼可知大寫字符A與小寫字符a的ASCIl碼相差32,而D中應該是加上'a',選項A和C左側(cè)的表達式都是大寫字符C與大寫字符A的差與'a'的ASCIl代碼的和就是小寫字符c的ASCII代碼。

76.C

77.BB?!窘馕觥拷M合框和列表框都沒有selected屬性。

78.B在C語名中規(guī)定進行強制類型轉(zhuǎn)換的格式是:(類型名)變量名;并且給表達式賦值。

79.A

80.D

81.(1)錯誤:proc(doublea,doublexO)

正確:doubleproc(doublea,doublexO)

(2)錯誤:if(1abs(xl-xO)>0.00001)

正確:if(fabs(x1-xO)>=0.00001)

【解析】由主函數(shù)中的proc函數(shù)調(diào)用可知。函數(shù)proc應該有一個double型的返回值。因此,“proc(doublea,doublexO)”應改為“doubleproc(doublea,doublexO)”;由double型數(shù)據(jù)的精確值可知,“if(fabs(xl-xO)>0.00001)”應改為“if(1abs(xl-xO)>=0.00001)”。

82.voidproc(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年遼寧省丹東市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

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

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

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

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

2.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達式a/b+c-k值的類型為:

A.intB.doubleC.floatD.char

3.以下選項中,能用作用戶標識符的是()。

A._0_B.8_8C.voidD.unsigned

4.

5.定義下列結(jié)構體(聯(lián)合)數(shù)組:structst{charname[15];intage;}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結(jié)果為()。A.15,AB.16,HC.16,AD.17,H

6.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

7.

8.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結(jié)果是()。A.b,bB.b,cC.a,bD.a,c

9.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

10.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

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

}

程序運行后的輸出結(jié)果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

11.

12.若有說明語句:double*P,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%lf",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%lf",*p);

D.p=&a;scanf("%lf",p);

13.合法的常量是()。A.‘program’B.–e8C.03xD.0xfl

14.

15.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

16.對包含N個元素的散列表進行檢索,平均檢索長度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

17.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

18.以下選項中合法的實型常數(shù)是

A.5E2.0B.E-3C.2.00E+00D.1.3E

19.若某表最常用的操作是在最后一個結(jié)點之后插入一個結(jié)點或刪除最后一個結(jié)點,則采用()存儲方式最節(jié)省運算時間。

A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點的雙循環(huán)鏈表

20.若有定義intx,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==)

二、2.填空題(20題)21.將以下程序段寫成三目運算表達式:【】。

if(a>b)max=a;

elsemax=b;

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

23.以下程序中函數(shù)fun()的功能是構成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單向鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<atdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構*/

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立鏈表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

{printf("%s\n",p->suh);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);prinff("\n");

24.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

25.在計算機軟件系統(tǒng)的體系結(jié)構中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【】之間。

26.沒有char,a,b;,若要通過a&d運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

27.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,0,SEEK_END);f1=ftell(myf);

fclose(myf);

printf("%1d\n",f1);

28.結(jié)構化程序設計的3種基本結(jié)構分別是順序、選擇和______。

29.函數(shù)fun的功能是計算xn

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已正確定義m、a、b變量并賦值,并調(diào)用fun函數(shù)計算:m=a4+b4-(a+b)3。實現(xiàn)這一計算的函數(shù)調(diào)節(jié)器用語句為______。

30.按照邏輯結(jié)構分類,數(shù)據(jù)結(jié)構可分為線性結(jié)構和非線性結(jié)構,二叉樹屬于______。

31.下面程序的輸出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

32.Jackson方法是一種面向【】的結(jié)構化方法。

33.對于軟件測試,從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試。代碼檢查屬于______測試。

34.軟件是程序、數(shù)據(jù)和【】的集合。

35.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是______。

36.表達式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

37.下面的語句要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>

p=【】malloc(sizeof(double));

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

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

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

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

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

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

printf("%d,%d,%d\n",a,b,C);

}

三、1.選擇題(20題)41.運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}

A.123B.1,2,3C.321D.3,2,1

42.當運行以下程序時,從鍵盤輸入AhaMA(空格)Aha

#include

main()

{chars[80],c='a';

inti=0;

scanf("%s",s);

while(s[i]!='\n')

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

43.下列語句段中,正確的是()。

A.street{intx;floaty;inta[2];unsignedb[3];charname[10];};

B.structstu{unsigneda[3];unsignedb[4];}x;int*p=&x.a;

C.stmctstu{inta;floatx[4];}y={1,1.0};floatdata=y.x;

D.structnd{inta,b;unsignedc[2]=5;};

44.下面程序的運行結(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

45.下面關于數(shù)據(jù)庫三級模式結(jié)構的敘述中,正確的是()

A.內(nèi)模式可以有多個,外模式和模式只有一個

B.外模式可以有多個,內(nèi)模式和模式只有一個

C.內(nèi)模式只有一個,模式和外模式可以有多個

D.模式只有一個,外模式和內(nèi)模式可以有多個

46.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

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

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

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

49.一棵二叉樹中共有70個葉子結(jié)點與80個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為()。

A.221B.219C.231D.229

50.函數(shù)rewind的作用是

A.使文件位置指針重新返回文件的開始位置

B.將文件位置指針指向文件中所要求的特定位置

C.使文件位置指針指向文件的末尾

D.使文件位置指針自動移至下一個字符位置

51.若有如下程序段;intx=3,y=4,z;floata=2.0;z=y%x/a;則執(zhí)行后,z中的值是()

A.4B.3C.0D.0.5

52.下列關于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

53.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

54.以下敘述中錯誤的是A.C語言是一種結(jié)構化程序設計語言

B.結(jié)構化程序由順序、分支、循環(huán)三種基本結(jié)構組成

C.使用三種基本結(jié)構構成的程序只能解決簡單問題

D.結(jié)構化程序設計提倡模塊化的設計方法

55.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

A.0,1,2B.1,2,3C.1,1,3D.1,2,2

56.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==3‖i==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n",s);程序運行后的輸出結(jié)果是()。

A.10B.13C.21D.程序進入列循環(huán)

57.下列程序的運行結(jié)果是()。#inClude<stdio.h>main(){staticchara[]="Languagef",b[]="programe";Char*p1,*p2;intk;p1=a;p2=b;for(0;k<=8;k++)if(*p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.angC.programD.有語法錯

58.定義如下變量和數(shù)組:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};則下面語句的輸出結(jié)果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

59.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

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

D.p=&n;*p=m;

60.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

四、選擇題(20題)61.設有以下語句:typedefstructTY{charC;inta{41;}CIN;

則下面敘述中正確的是()。

A.CIN是structTr類型的變量

B.TT是struct類型的變量

C.可以用,lr定義結(jié)構體變量

D.可以用CIN定義結(jié)構體變量

62.設變量a是int型,f是float型,i是double型,則表達式10+′a′+i*f值的數(shù)據(jù)類型為

A.intB.floatC.doubleD.不確定

63.有以下程序

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

A.3040B.2050C.3344D.0304

64.

有下列程序:

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;}

}

main

{intaa[10]:{1,2,3,4,5,6,7,8,9,10),i;

sort(aa+2,5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

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

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

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

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

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

65.

66.

67.

68.

69.

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

#include<stdio.h>

voidfun(int*S,int*p)

{staticintt=3:

*p=s[t];

t--;

}

voidmain

{inta[]={2,3,4,5),k;

intx;

for(k=0,k<4,k++)

{fun(a,&x);

printf("%d,",x);

}

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

71.有以下程序:

main()

{

chara[7]="a0\OaO\0";inti,j;

i=sizeof(a);j=strlen(a);

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

}

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

A)22B)76

C)75D)62

72.若變量x,y已正確定義并賦值,以下符號C語言語法的表達式是()。

A)++x,y=x--B)x+1=y

C)x=x+10=x+yD)double(x)/10

73.有以下程序

main(intargc,char*argv[])

{in

溫馨提示

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

評論

0/150

提交評論