2022-2023年遼寧省撫順市全國計算機等級考試C語言程序設計預測試題(含答案)_第1頁
2022-2023年遼寧省撫順市全國計算機等級考試C語言程序設計預測試題(含答案)_第2頁
2022-2023年遼寧省撫順市全國計算機等級考試C語言程序設計預測試題(含答案)_第3頁
2022-2023年遼寧省撫順市全國計算機等級考試C語言程序設計預測試題(含答案)_第4頁
2022-2023年遼寧省撫順市全國計算機等級考試C語言程序設計預測試題(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

2022-2023年遼寧省撫順市全國計算機等級考試C語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義int(*pt)[3];,則下列說法正確的是A.定義了基類型為int的三個指針變量

B.定義了基類型為int的具有三個元素的指針數(shù)組pt

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

2.若有定義“intx[10],*pt=x;”,則對x數(shù)組元素的引用正確的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

3.以下關于算法的敘述中錯誤的是()。

A.算法可以用偽代碼、流程圖等多種形式來描述

B.一個正確的算法必須有輸入

C.一個正確的算法必須有輸出

D.用流程圖描述的算法可以用任何一種計算機高級語言編寫成程序代碼

4.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

5.設有以下語句:intx=10;x+=3+x%(3),則x的值是()。

A.14B.15C.11D.12

6.下列能正確進行字符串賦值的是()。A.B.C.D.

7.以下不能輸出字符A的語句是(注:字符A的ASCII值為65,字符a的ASCII值為97)()。

A.printf(“%c\n”,‘a(chǎn)’-32);

B.printf(“%d\n”,‘A’);

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

D.printf(“%c\n”,‘B’-1);

8.有以下程序:#include<string.h>main(intargc,char*argv[]){inti=1,n=0;while(i<argC){n=n+strlen(argv[i]);i++}printf("%d\n",n);}該程序生成的可執(zhí)行文件名為:proc.exe,若在運行時輸入命令行:proc1234567則該程序的輸出結果是()。

A.3B.5C.7D.11

9.下面判斷正確的是

A.char*a="china";等價于char*a;*a="china";

B.charstr[5]={"china"};等價于charstr[]={"china"};

C.char*s="china";等價于char*s;s="china";

D.charc[4]="abc",d[4]="abc";等價于charc[4]=d[4]="abc";

10.

11.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序運行后的輸出結果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

12.線性表是具有n個()的有限序列。

A.表元素B.字符C.數(shù)據(jù)元素D.數(shù)據(jù)項

13.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是()。

A.無輸出B.結果是不確定C.-1D.1

14.算法能正確地實現(xiàn)預定功能的特性稱為算法的()。

A.正確性B.易讀性C.健壯性D.高效率

15.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結果是A.A.1267B.1256C.1278D.1245

16.

17.循環(huán)隊列存儲在數(shù)組A[0..m]中,則入隊時的操作為()。

A.rear=rear+1

B.rear=(rear+1)mod(m-1)

C.rear=(rear+1)modm

D.rear=(rear+1)mod(m+1)

18.若執(zhí)行下述程序時,若從鍵盤輸入6和8,結果為()。main(){inta,b,s;scanf("%d%dt",&a,&B);s=a:if(s=B)s*=s;printf("%d",s);}

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

19.設有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項中,表達式的值為6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

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

A.C語言函數(shù)可以嵌套調(diào)用,例如:fim(fun(X))

B.C語言程序是由過程和函數(shù)組成的

C.C語言函數(shù)不可以單獨編譯

D.C語言中除了main函數(shù)外,其他函數(shù)不可作為單獨文件形式存在

二、2.填空題(20題)21.以下程序的輸出結果是【】。

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

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

}

22.以下函數(shù)fun的功能是返回str所指字符串中以形參c中字符開頭的后續(xù)字符串的首地址,例如;str所指字符串為:Hello!,c中的字符為e,則函數(shù)返回字符串:ello!的首地址。若str所指字符串為空串或不包含c中的字符,則函數(shù)返回NULL。請?zhí)羁铡?/p>

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(p[n]!=c&&p[n]!='\O')n++;

if(p[n]='\0')returnNULL;

return(【】);

}

23.以下程序的功能是建立一個帶有頭結點的單向鏈表,鏈表結點中的數(shù)據(jù)通過鍵盤輸入,當輸入數(shù)據(jù)為-1時,表示輸入結束(鏈表頭結點的data域不放數(shù)據(jù),表空的條件是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));

[14]=a;q->next=p;[15]=p;scanf("%d",&a);}

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

main()

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

24.執(zhí)行下列程序的輸出結果是【】。

main()

{

floata=1,b;

b=++a*++a;

printf("%f\n",b);

}

25.已知“inta=2,b=2,c=3;”,則執(zhí)行完語句“a*=18+(b++)-(++C);”后,a的值是()。

26.以下程序運行后輸入:3,abcde<回車>,則輸出結果是【】。

#include<string.h>

move(char*str,intn)

{chartempinti;

temp=str[n-1);

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp

}

main()

{chars[50];ihtn,i,z;

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

z=strlen(s);

for(i=1;i<=n;i++)move(s,z);

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

}

27.下列程序段的運行結果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

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

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

#include<stdio.h>

main()

{inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("\n%2d,%2.1f,%2.11f",a,b,C);

}

29.下面程序把從終端讀入的文本(用@作為文本結束標志)輸出到一個名為bi.dat的新文件中,請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

main()

{charch;

if((fp=fopen(【】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

30.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

31.設a、b、c為整數(shù),且a=2、b=3、c=4,則執(zhí)行完以下語句后,a的值是【】。

a*=18+(b++)-(++c);

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

33.strcat函數(shù)的作用是【】。

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X--,y);

}

35.在一棵二叉樹上第6層的結點個數(shù)最多是______個。

36.以下程序的運行結果是【】。

main()

{inta=2,b=7,c=5;

switch(a>0)

{

case1:

switch(b<0)

{case1:printf("@");break;

case2:pnntf("!");break;

}

case0:

switch(c==5)

{case0:pnntf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

37.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

38.下面程序是指從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(*p++);}

39.棧中允許進行插入和刪除的一端叫做______。

40.設有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序運行后,如果從鍵盤上輸入1298,貝愉出結果為【】。

三、1.選擇題(20題)41.在執(zhí)行以下程序時,為了使輸出結果為:t=4,則給a和b輸入的值應滿足的條件是______。main(){ints,t,a,b;scanf("%d,%d",&a,&b);s=1,t=1;if(a>0)s=s+1;if(a>b)t=s+1;elseif(a==b)t=5;elset=2*s;printf("%d\n",t);}

A.a>bB.a<b<0C.0<a<bD.0>a>b

42.有以下程序

main()

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

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

程序運行后的輸出結果是

43.在下列敘述中,正確的一條是______。A.if(表達式)語句中,表達式的類型只限于邏輯表達式

B.語句“goto12;”是合法的

C.for(;;)語句相當于while(1)語句

D.break語句可用于程序的任何地方,以終止程序的執(zhí)行

44.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x>10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}該程序的輸出結果是

A.0.000000B.0.250000C.0.500000D.1.000000

45.調(diào)用函數(shù)時,如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是()。

A.地址傳遞B.單向值傳遞C.由實參傳形參,再由形參傳實參D.傳遞方式由用戶指定

46.下列能正確進行字符數(shù)組賦初值的語句是______。

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

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

C.chart[5]="abcde";

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

47.設有表示學生選課的三張表,學生s(學號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學號,課號,成績),則表sc的關鍵字(鍵或碼)為()。

A.課號,成績B.學號,成績C.學號,課號D.學號,姓名,成績

48.能正確表示邏輯關系:"a≥10或a≤0"的C語言表達式是

A.a>=10ora<=0

B.a>=0|a<=10

C.a>=10&&a<=0

D.a>=10||a<=0

49.下列選項中不合法的+六進制數(shù)是()。

A.OxffB.OXllC.OxlgD.OXabc

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

A.C語言比其他語言高級

B.C語言可以不用編譯就被計算機識別并執(zhí)行

C.C語言以接近英語國家的自然語言和數(shù)學語言作為語言的表達形式

D.C語言出現(xiàn)最晚,具有其他語言的一切優(yōu)點

51.算法的有窮性是指A.算法程序的運行時間是有限的

B.算法程序所處理的數(shù)據(jù)量是有限的

C.算法程序的長度是有限的

D.算法只能被有限的用戶使用

52.下列程序的輸出結果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}

A.非法B.a[4]的地址C.5D.3

53.若有以下定義和語句:ihtw[2][3],(*pw)[3];pw=w;則對w數(shù)組元素的非法引用是()

A.*(w[0]+2)B.*(pw+1)[2]C.pw[0][0]D.*(pw[1]+2)

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

A.一個C語言源程序可以由一個函數(shù)組成也可以由多個函數(shù)組成

B.main()中的“()”是函數(shù)的參數(shù)部分,括號內(nèi)可為空,但括號不能省略

C.C語言程序是以函數(shù)為基本單位的

D.在C語言程序中,注釋行只能位于一條語句的后面

55.下列程序運行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結果為______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}

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

56.下述程序的輸出結果是()。#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));printf("%d",**q);}

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

57.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序運行后的輸出結果是______。

A.22B.76C.72D.62

58.假定當前盤符下有兩個如下文本文件:

文件名a1.txta2.txt

內(nèi)容123#321#

則下面程序段執(zhí)行后的結果為

#include"stdio.h"

voidfc(FILE*p)

{charc;

while((c=fgetc(p))!=′#′)putchar(c);}

main()

{FILE*fp;

fp=fopen("a1.txt","r");

fc(fp);

fclose(fp);

fp=fopen("a2.txt","r");

fc(fp);

fclose(fp);

putchar('\n');}

A.123321B.123C.321D.以上答案都不正確

59.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型

D.函數(shù)定義時形參的類型

60.C語言庫函數(shù)fgets(str,n,fp)的功能是______。

A.從fp指向的文件中讀取長度n的字符串存入str旨向的內(nèi)存

B.從fp指向的文件中讀取長度不超過n-1的字符串存入str指向的內(nèi)存

C.從fb指向的文件中讀取n個字符串存入str指向的內(nèi)存

D.從str讀取至多n個字符到文fp

四、選擇題(20題)61.下面程序段的輸出為()。

#include"stdio.h"

main

{

printf("%d\n",12<<2);

}

A.0B.47C.48D.24

62.設有以下程序段:

要求輸入字符串給結構體變量rec的title成員,錯誤的輸入語句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

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

main

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;

for(k=1;k<3;k++)printf("%s\n",w[k]);A.A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

64.以下選項中正確的語句組是()。

A.char*s;s={f.BOOK!”};

B.char*s;s:”BOOK!”:

C.chars[10];s=”BOOK!”;

D.cbars[];s:”BOOK!n:

65.

66.有以下程序

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%d",ptr);ptr++;}

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

{for(j=0;j<2;j++)printf("%2d",a[i][j]);

printf("\n");

}

}

若運行時輸入123<回車>,則輸出結果為

67.

68.有以下程序程序輸出()。

A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,l,2,0

69.

70.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

71.有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是()。

A.chara=’\x2d’;B.chara=。\n。;C.chara=…a;D.chara=”aa”:

72.

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

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

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

#definef(x)x*x

main

{inta=6,b=2,c;

c=f(a)/f(b);

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

}

A.9B.6C.36D.18

75.以下程序的輸出結果是()。main{inta[3][3]=“l(fā),2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21

76.若a是數(shù)值類型,則邏輯表達式(a==1)Il(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

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

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

78.

有以下程序:

intfun(intx)

{intp;

if(x==0||x==1)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

執(zhí)行后的結果是()。

A.7B.3C.2D.0

79.有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。

A.自然連接B.交C.投影D.并

80.有以下程序:

voidfun2(chara,charb){printf(”%c%c”,a,b);}

chara='A',b='B';

voidfunl(){a='C';b='D';}

main()

{funl();

printf("%c%c",a,b);

fun2('E','F');

}

程序的運行結果是()。A.A.CDEFB.ABEFC.ABCDD.CDAB

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。例如,排序前的數(shù)據(jù)為:1132-5214則排序后的數(shù)據(jù)為:-52111432請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdio.h>#defineM20voidproc(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");}

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放人結構體數(shù)組stu中。請編寫函數(shù)proc(),它的功能是:函數(shù)返回指定成績的學生數(shù)據(jù),指定的成績在主函數(shù)中輸入。若沒找到指定的成績,在結構體變量中給學號置空串,給成績置-1,作為函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:

參考答案

1.D解析:定義了一個指向一維數(shù)組的指針,該一維數(shù)組具有三個int型元素,按照C語言中二維數(shù)組的定義知,二維數(shù)組先按照行排列,再按照列排列,故選D。

2.D選項A中,“pt+3”使指針變量Pt移動3個單元,指向第4個元素,不能正確引用。運算符“*”與“&”放在一起,其作用相互抵消,且下標10超出了數(shù)組下標范圍,所以B選項錯誤?!?(pt+i)”表示引用指針pt所指元素后的第i個元素,引用數(shù)組第11個元素,C選項錯誤。故本題答案為D選項。

3.B【答案】B

【知識點】算法描述

【解析】一個算法應該有0個或多個輸入,但是必須有一個或多個輸出。

4.A解析:在main函數(shù)中,p=&a[3]說明指針p指向a數(shù)組的第4個字符(即字符\'g\');fun1中的q=p意味著指針q也指向了a數(shù)組的第4個字符。執(zhí)行while語句,表達式(*q)++使\'g\'+1,使\'g\'變成了\'h\';表達式q++使q指向a[4]的起始地址。繼續(xù)執(zhí)行while語句,直到遇到\'\\0\'結束循環(huán),返回形參。最終得到的結果是從字符串'Program\'的第4個字符開始,每個字符加1。

5.A

6.C選項A、B的空間不夠;選項D中字符串存儲要有結束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。

7.BB選項輸出的格式為%d,即整型格式,所以輸出字符‘A’的ASCII值65,而不是字母A。因為大寫字母比其對應的小寫字母的ASCII值小32,所以A選項正確。字符‘A’的ASCII值是65,以%c格式輸出可以輸出字母A,所以C選項正確。因為字符‘A’的ASCII值比字符‘B’的小1,所以D選項正確。故本題答案為B選項。

8.C

9.C解析:選項A)char*a;*a=“china”應改為a=china;,選項B)應該是charstr[6];D)項表述方法有錯誤。

10.D

11.D自增運算符是將運算對象的值增1,它有前綴形式“++a”和后綴形式“b++”。其中“++a”表示首先將a的值自增1,然后表達式“++a”的值就是自增后a的值;而“b++”表示首先將b的值作為表達式的值,然后再將b的值自增1。本題中,a的初值為10,b的初值為11,則表達式“++a==b++”,等價于“11==11”,條件為真,所以輸出“T”。if語句執(zhí)行完后,a的值為11,b的值為12,輸出“a=11,b=12”。故本題答案為D選項。

12.A

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

14.A

15.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf(“%c%c\\n”,c5,c6)輸出45。

16.D

17.D

18.B

19.A本題考查數(shù)組和指針,*k指針是指向rn數(shù)組的首地址,所以要使表達武的值為6,只需要指針指向第m[2],所以答案選擇A。-

20.AC語言程序是由函數(shù)組成的,所以B選項錯誤。C語言函數(shù)可以單獨進行編譯,所以C選項錯誤。每個C語言程序必須包含一個main函數(shù),但不是每個C語言程序文件都必須有一個main函數(shù),用戶單獨編寫的某個函數(shù)也可以存儲為一個C語言程序文件,所以D選項錯誤。故本題答案為A選項。

21.77解析:在C語言中,宏定義是直接替換的,所以在對表達式MAX(a+b,c+d)*10進行替換后,表達式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。

在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。

22.&P(n)或p+n&P(n)或p+n解析:因為n被初始化為0、p被初始化指向str所指字符串的首地址,所以while循環(huán)的功能是從str所指字符串的第1個字符開始比較,若等于c或等于字符串結束符'\\0'就跳出循環(huán)。故循環(huán)結束后,若p[n]為'\\0',則證明str所指字符串不包含c中的字符,應該返回NULL,否則應該返回p[n]的地址值。返回NULL在第2條if語句中已經(jīng)實現(xiàn),所以我們應該填入的表達式為p[n]的地址值,即&p[n]或p+n。

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

24.66解析:++的優(yōu)先級高于*,先作自加運算,b=++a*++a=2.0*3.0=6.0。b按實型輸出6.000000。

25.32

26.cdeabcdeab解析:本題中函數(shù)move的實參到形參是按地址傳遞,故形參的改變會影響實參。根據(jù)題目可知在main函數(shù)中,n=3、s[0]=\'a\'、s[1]=\'b\'、s[2]=\'c\'、s[3]=\'d\'、s[4]=\'e\',數(shù)組元素s[5]~s[49]全部為\'\\0\',故z=strlen(s)=5。

第1次調(diào)用函數(shù)move時,形參str='abcd'、n=5,執(zhí)行完函數(shù)move后str[4]=str[3]=\'d\'、str[3]=str[2]=\'c\'、str[2]=str[1]=\'b\'、str[1]=str[0]=\'a\'、str[0]=str[4]=\'e\'。即s[0]=\'e\'、s[1]=\'a\'s[2]、s[2]=\'b\'、s[3]=\'c\'、s[4]=\'d\'。

第2次調(diào)用函數(shù)move時,形參str='eabcd、n=5,執(zhí)行完函數(shù)move后str[4]=str[3]=\'c\'、str[3]=str[2]=\'b\'、str[2]=str[1]=\'a\'、str[1]=str[0]=\'e\'、str[0]=str[4]=\'d\'。即s[0]=\'d\'、s[1]c\'e\'、s[2]=\'a\'、s[3]=\'b\'、s[4]=\'c\'。

第3次調(diào)用函數(shù)move時,形參str='deabc'、n=5,執(zhí)行完函數(shù)move后str[4]=str[3]=\'b\'、str[3]=str[2]=\'a\'、str[2]=str[1]=\'e\'、str[1]=str[0]=\'d\'、str[0]=str[4]=\'c\'。即s[0]=\'c\'、s[1]=\'d\'、s[2]=\'e\'、s[3]=\'a\'、s[4]=\'b\'。

所以printf函數(shù)的輸出結果為:cdeab。

27.8208,20解析:本題考查while循環(huán)和++運算符的運用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

28.1234123.512345.51234,123.5,12345.5解析:在primf()函數(shù)的格式控制符中:'%2d'表示輸出一個有符號整數(shù),如果輸出長度小于2,則左端補以空格,否則按實際長度輸出。所以本題中的a按原樣輸出為1234:'%2.1尸表示輸出一個單精度實數(shù),只輸出小數(shù)點后1位,后面若有小數(shù)則四舍五入,如果輸出長度小于2,則左端補以空格,否則按實際長度輸出。所以本題中的b四舍五入到小數(shù)點后1位再輸出為123.5;'%2.11f'除了表示輸出一個雙精度實數(shù)外,其余參數(shù)和'%2.1f'一樣。所以本題中的c四舍五入到小數(shù)點后1位再輸出為12345.5。故輸出結果是:1234,123.5,12345.5。

29.dat""w"或"bi.dat""w+"或"bi.dat""r+"dat','w'或'bi.dat','w+'或'bi.dat','r+'解析:本題的考點是fopen()函數(shù),此函數(shù)的格式是fopen(文件名,使用文件方式),題目的要求是將從鍵盤讀入的文本寫到文件中,因此選擇的打開方式應該是'w'(只寫)。或者是讀寫“r+”或“w+”。

30.“filea.dat”“r”“filea.dat”,“r”解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應當填入'filea.dat','r'。

31.3232解析:a*=18+(b++)-(++c)即a=a*(18+(b++)-(++c)),++c的值為5,a=2*(18+3-5)=32。b++是先使用b的值在對b加1,++c是先對c加1再使用c的值。

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

33.連接兩個字符數(shù)組中的字符連接兩個字符數(shù)組中的字符解析:strcat函數(shù)的作用是連接兩個字符數(shù)組中的字符串。

34.101091101091解析:for(表達式1;表達式2;表達式3)語句的功能是:首先計算表達式1的值,然后檢測表達式2的值,若其值為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢后,再計算表達式3的值。然后再檢測表達式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語句,若為假,則退出循環(huán);第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=1,執(zhí)行y=++i操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=1,然后x的值減1,循環(huán)條件不成立,則退出循環(huán)。

35.3232解析:根據(jù)二叉樹的性質(zhì),在二叉樹的第K層上,最多有2k-1個結點。所以,第6層的結點數(shù)最多為32。

36.#&#&解析:首先看最外面的switch,其表達式為a>0,結果為真(即1),從case1:標號處開始執(zhí)行。這里又是一個switch語句,其表達式為b<00,結果為假(即0),由于沒有case0:或default:標號,所以直接跳過此switch語句。因為沒有遇到break;語句,所以繼續(xù)執(zhí)行進入內(nèi)部第2個switch語句,其表達式為c==5,結果為真,從case1:標號處開始執(zhí)行,輸出一個#,遇到break;語句,跳出該內(nèi)部switch語句,最后執(zhí)行default:標號后的輸出語句輸出一個&后,整個外部switch語句執(zhí)行完畢。程序最后輸出的換行符不會顯示,所以本題應該填#&。

37.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

38.\0's\\0'\r\ns解析:本題選通過for循環(huán)從鍵盤讀入20個字符,然后在最后賦一定值'\\0'后為結束標志,再使指針p指向字符串的首地址。最后通過while循環(huán)對字符串進行掃描并輸出。

39.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

40.89218921解析:本題的程序的功能是將輸入的整數(shù)反向輸出。

41.C

42.88解析:*p=&a[3],即*p=4,*q=p+2;即*q=6,所以*p+*q=10。

43.C

44.D

45.B解析:如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是由實參傳給形參,而形參值的改變不能改變實參的值。

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

47.C學號是學生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關鍵字就應該是與前兩個表能夠直接聯(lián)系且能唯一定義的學號和課號,所以選擇C項。

48.B解析:條件表達式本題考查C語言的邏輯表達式及邏輯或('||')運算符的用法。''表示或的意思,'|'是按位或的意思,'&&'是并且的意思,C語言中沒有'or'。

49.C解析:+六進制是以“0x”或“0X”開頭的字符串,字符串中只能含有0~9這10個數(shù)字和a、b、c、d、s、f這6個字母。

50.C解析:計算機語言分為低級語言和高級語言,C語言屬于高級語言,但并非比其他語言高級,選項A)錯誤;除了機器語言外,其他各種語言都必須編譯成能被計算機識別的機器代碼才能執(zhí)行,選項B)錯誤;C語言出現(xiàn)于1972年至1973年,并不是出現(xiàn)最晚的語言,選項D)錯誤。

51.A算法的有窮性,是指算法必須能在有限的時間內(nèi)做完,即算法必須能在執(zhí)行有限個步驟之后終止。

52.C解析:本題中char*p=a+5;即相當于p=&a[5],而--p,是先要減1,則printf語句要輸出的值就是a[4]。

53.A

54.D解析:本題涉及C語言基本的3個知識點:①C語言是以函數(shù)為基本單位的,每一個函數(shù)完成相對獨立的功能,一個程序可以包括多個函數(shù),但有且僅有一個主函數(shù);②主函數(shù)main()的圓括號內(nèi)是填寫參數(shù)的,可以沒有參數(shù),但括號不可以省略;③程序的注釋部分應該在“/*…………*/”之間,它允許出現(xiàn)在程序的任何位置。

55.D

56.D解析:通過賦值,指針p和q都指向了數(shù)組a的首地址,*(p++)先引用數(shù)組元素,然后p++,所以輸出結果為2,**q指向的數(shù)組元素為4。注意:通過建立一個指針數(shù)組來引用二維數(shù)組元素。

57.C題目中需要求出程序的輸出值i,j,其中i的值由sizeof決定,j的值由strlen函數(shù)決定。

sizeof是C語言的一種運算符,以字節(jié)的形式給出操作數(shù)的存儲空間的大小。sizeof的操作對象可以是具體的數(shù)據(jù)類型,也可以是變量。題目中的操作數(shù)為數(shù)組名,利用sizeof可計算出數(shù)組所占用內(nèi)存的字節(jié)數(shù),題目中數(shù)組類型為char,大小為7,故該數(shù)組占用的內(nèi)存數(shù)為7。

strlen函數(shù)則是計算一段字符串的長度,可以從整個字符串的頭部開始計算,也可以從字符串的中間開始計算,當碰到第一個字符串結束符“\\0”,則停止計算,返回當前的計算值。題目中在前兩個字符之后就出現(xiàn)了結束符“\\0”,故strlen函數(shù)的值為2。

58.A解析:本題的功能是順序的讀兩個文本文件,依次輸出。當打開文件時出現(xiàn)錯誤,fopen函數(shù)將返回NULL。

59.A解析:在C語言中,應當在定義函數(shù)時指定函數(shù)值的類型。凡不加類型說明的函數(shù),默認按整型處理。在定義函數(shù)時對函數(shù)值說明的類型一般應該和return語句中的表達式類型一致。如果函數(shù)值的類型和return語句中的表達式類型不一致,則以函數(shù)值的類型為準,由系統(tǒng)自動進行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。

60.B解析:fgets函數(shù)的作用是從指定的文件讀入—個字符串。fgets(str,n,fp);中的n為要求得到的字符的個數(shù),但只從中指向的文件輸入n-1個字符,然后在最后加—個'\\0'字符,因此得到的字符串共有n個字符。

61.C解析:考查位運算的運算原理。<<為左移運算符,運算符的左邊是移位對象;右邊是整型表達式,代表左移的位數(shù),左移時,右端(低位)補0;左端(高位)移出的部分舍棄。

62.A符號“_>”是指針特用的,符號“.”用于指定元素的成員。ptr是指針,只能用符號“一>”,因此選項A錯誤。+P是指定元素(Fee)

溫馨提示

  • 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

提交評論