2021-2022年吉林省長春市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年吉林省長春市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdio.h>#include<stdlib.h>main{int*a,*b,*C;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);}程序運行后的輸出結果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

2.

3.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

4.下面程序的輸出結果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

5.C語言源程序的擴展名是()。

A..CB..exeC..objD..cp

6.以下關于C語言的敘述中正確的是()。

A.C語言的數值常量中夾帶空格不影響常量值的正確表示

B.C語言中的變量可以在使用之前的任何位置進行定義

C.在C語言算術表達式的書寫中,運算符兩側的運算數據類型必須一致

D.C語言中的注釋不可以夾在變量名或關鍵字的中間

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

A.C語言的可執行程序是由一系列機器指令構成的

B.用C語言編寫的源程序不能直接在計算機上運行

C.通過編譯得到的二進制目標程序需要連接才可以運行

D.在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件

8.設有定義“inta;floatb;”,執行“scanf(“%2d%f”,&a,&b);”語句時,若從鍵盤輸入876543.0并按<Enter>鍵,則a和b的值分別是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

9.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的運行結果是()。

A.500B.401C.503D.1404

10.若有如下定義,則__________是對數組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

11.假定已建立以下鏈表結構,且指針p和q已指向如圖所示的節點。則下列選項中可將q所指節點從鏈表中刪除并釋放該節點的語句組是()。

A.p->next=q->next;free(q);

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

C.p=q;free(q);

D.(*p).next=(*q).next;free(p);

12.在軟件生存周期中,能準確地確定軟件系統必須做什么和必須具備哪些功能的階段是()。

A.概要設計B.詳細設計C.可行性分析D.需求分析

13.下列關于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

14.設有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

15.

16.有以下程序:#include<stdio.h>main(){chara==‘0’,b=‘A’;inti;for(i=1;i<6;i++)if(i%2==0)putchar(a+i);elseputchar(b+i);}程序運行后的輸出結果是()。

A.A2A3BB.2B4DFC.B4CD7D.B2D4F

17.有以下程序:#include<stdio.h>#include<strin9.h>main(){printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}程序運行后的輸出結果是()。A.3B.8C.4D.9

18.人們提出了用______的原理來設計軟件,這就是軟件工程學誕生的基礎。

A.計算機科學B.數學C.工程學D.運籌學

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

A.可以給指針變量賦一個整數作為地址值

B.函數可以返回地址值

C.改變函數形參的值,不會改變對應實參的值

D.當程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL值

20.已知:intx,y;doublez;則以下語句中錯誤的函數調用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);

B.scanf("%1d*%d&1f",&x,&y,&z);

C.scanf("%x%*d%o",&x,&y);

D.scanf("%x%o%6.2f",&x,&y,&z);

二、2.填空題(20題)21.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊(樁模塊),其中【】的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

22.與表達式a+=b等價的另一書寫形式是______。

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

intk=0;

voidfun(intm)

{m+=k;k+=m;

printf("m=%dk=%d",m,k++)

}

main()

{inti=4;

fun(i++);

printf("i=%dk=%d\n",i,k);

}

24.下述函數統計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

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

26.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數之和=%d\n",a);

printf("奇數之和=%d\n",c-11);}

27.數據管理技術發展過程經過人工管理、文件系統和數據庫系統三個階段,其中數據獨立性最高的階段是______。

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

29.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

30.表達式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數據類型為______。

31.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數據域(data)和指針域(next),數據域為整型。以下函數求出鏈表中所有鏈結點數據域的和值,作為函數值返回。請在橫線處填入正確內容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

32.以下程序運行后的輸出結果是______。

main

{

inna=b=c=5:

if(c=a+b)

printf("yes\n);

else

printf("no\n);

}

33.以下程序的功能是:輸出100以內(不含100)能被3整除且個位數為6的所有整數,請填空。

#include<stdio.h>

main()

{inti,j

for(i=0;【】;i++)

{j=i*10+6;

if(【】)continue:

Printf("%d”",j);

}

}

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

main()

{chara,b;

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

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

}

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

36.若從鍵盤輸入58,則以下程序輸出的結果是【】。

mam()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

37.有以下程序:

#include<string.h>

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i<argc;i+=2)len+=strlen(argv[i]);

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

}

經編譯連接后生成的可執行文件是ex.exe,若運行時輸入以下帶參數的命令行:

exabcdefgh3k44

執行后的輸出結果是【】。

38.設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

40.數據庫保護分為安全性、控制性、______、并發性控制和數據恢復。

三、1.選擇題(20題)41.已知函數ffead的調用形式為fread(buffer,size,count,fp);,其中buffer代表的是()。

A.存放讀入數據項的存儲區

B.一個指向所讀文件的文件指針

C.一個指針,是指向輸入數據存放在內存中的起始地址

D.一個整型變量,代表要讀入的數據項總數

42.在函數調用過程中,如果函數funA調用了函數funB,函數funB又調用了函數funA,則()。

A.稱為函數的直接遞歸調用B.稱為函數的間接遞歸調用C.稱為函數的循環調用D.C語言中不允許這樣的遞歸調用

43.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數組a的每個元素的初值都是0

B.數組a的第一維大小為1

C.數組a的行數為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

44.請選出司用作C語言用戶標識符的一組標識符_______。

A.void

B.a3b3

C.For

D.2adefine123abcOOWORDIFcasesizeof

45.以下不能正確計算代數式sin2()值的C語言表達式是()。

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

46.下列程序的運行結果是______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}

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

47.下列敘述中正確的是______。

A.C程序中注釋部分可以出現在程序中任何合適的地方

B.花括號""{""和""}""只能作為函數體的定界符

C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的—部分

48.閱讀以下程序及對程序功能的描述,其中正確的是

#include<stdio.h>

main()

{FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{printf("cannotopeninfile\n");

exit(0);}

if((out=fopen(outfile,"w"))==NULL)

{printf("cannotopenoutfile\n");

exit(0);}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);fclose(out);}

A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

49.有以下程序main(){charstr[]="xyz",*ps=str;while(*ps)ps++:for(ps--;ps-str>=0;ps--)puts(ps);}執行后輸出結果是

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

50.下列不合法的用戶標識符是()。

A.j2_KEYB.DoubleC.4dD._8_

51.下面程序的輸出結果是()maint(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';a=a+s[k]-'0'}wnile(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}

A.k=3a=2b=3B.k=3a=3b=2C.k=2a=3b=3D.k=2a=2b=3

52.有以下程序段

charch;intk;

ch=′a′;k=12;

printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);

已知字符a的ASCII碼值為97,則執行上述程序段后輸出結果是

A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項與格式描述符個數不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

53.若要求從鍵盤讀入含有空格字符的字符串,應使用函數A.getc()B.gets()C.getchar()D.scanf()

54.有如下程序main(){inti,sum;for(i=1;i<=3;sum++)sum+=i;printf("%d\n",sum);}該程序的執行結果是______。

A.6B.3C.死循環D.0

55.設x的值為5,則表達式(++x)+(++x)+(++x)的值是()

A.24B.20C.15D.25

56.關系數據庫管理系統應能實現的專門的關系運算包括()。A.A.排序、索引、統計B.選擇、投影、連接C.關聯、更新、排序D.顯示、打印、制表

57.下列程序中函數reverse()的功能是將a所指數組中的內容進行逆置。

#include<stdio.h>

voidreverse(inta[],ihtn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,10);

for(i=0;i<3;i++)s+=b[i];

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

}

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

A.27B.6C.25D.30

58.下列程序的運行結果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}

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

59.以下程序運行后,輸出結果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}

A.cdeB.字符c的AScII碼值C.字符c的地址D.出錯

60.下面的程序段運行后,輸出結果是inti,j,x=0;staticinta[8][8];for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=2*i+j;for(i=0;i<8;i++)x+=a[i][j];printf("%d",x);

A.9B.不確定值C.0D.18

四、選擇題(20題)61.若i、j已定義成mt型,則下列程序段中內循環體的總執行次數是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

62.在E—R圖中,用來表示實體聯系的圖形是()。

A.橢圓形B.矩形C.菱形D.三角形

63.

64.

65.C語言源程序名的后綴是()。A.CB.exeC.obiD.ep

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

A.多態性B.繼承C.封裝性D.模塊化

67.下列條件語句中,輸出結果與其他語句不同的是()

68.以下程序段中,與語句“k—a>b?(b>c?1:O):0;”功能相同的是()。

A.if(a>b)(b>c)k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b>c)k=1;

D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:

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

#include<stdio.h>

voidmain()

{inta,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

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

70.下列程序的輸出結果是()。#include<stdio.h>main{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[o][1]+a[1][1]+a[1][2]);}A.8B.7C.12D.9

71.

72.設有定義:chars[81];inti=0;,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。

73.

74.寫出下列程序段的輸出結果()。

main()

{intx=5;inty=10;

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

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

A.5B.6C.6D.5

10101111

75.有以下程序:

#include<stdio.h>

main()

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

inti,j;

chart:、

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

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

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

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

puts(a[1]);

}

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

A.fwo

B.fix

C.two

D.owo

76.

77.有以下程序main(){intc=35;printf("%d\n",c&c);}程序運行后的輸出結果是______。

A.0B.70C.35D.1

78.執行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

79.下列數據結構中,屬于非線性結構的是A.循環隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

80.以下數組定義中錯誤的是()。

A.

B.

C.

D.

五、程序改錯題(1題)81.下列給定程序中,函數ptoc的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入前三個字符中,待排序的字符串已在主函數中賦予。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include<strin9.h>#include<stdi0.h>#defineM80voidproc(char*arr){inti,j,n;charch;n=strlen(arr):for(i=1;i<n;i++)//****found****{c=arr[i];j=i-1;while((j>=o)&&(ch<arr[j])){arr[j+1]=arr[j];j--;}arr[j+1]=ch;}}voidmain{chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";printf("Theoriginalstring:%s\n",a);proc(a);printf("Thestringaftersortin9:%s\n\n",a);}

六、程序設計題(1題)82.某學生的記錄由學號、8門課成績和平均分組成,學號和8門課的成績已在主函數中給出。請編寫proc()函數,它的功能是:求出該學生的平均分并放在記錄的ave成員中。請自己定義正確的形參。例如,若學生的成績是65.5,75,88,90,90.5,66,64.5,89.5,則他的平均分應當是78.625。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A本題中,首先創建一個動態內存,然后將地址分別存入指針a、b、c中,即a、b、c都指向相同.的變量。分別給a、b、c所指的變量賦值,最終a、b、c所指的變量中的值為3,最后打印a、b、c所指的變量

2.D

3.D解析:通常,引用一個數組元素可以用下標法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數組范圍,注意,數組的下標是從0開始的。

4.B解析:sizeof函數是取變量所占的存儲空間的字節數,標識a代表常量121;constb=12;,其中數據類型可以缺省,默認為整型;enumc{a1,a2};定義了—個枚舉類型enumc,a1,a2為枚舉元素,在C編譯時,對枚舉元素按常量處理,它們的值按定義順序依次為0,1。因此它們的字節數均為2,2,2。

5.AC語言源程序的擴展名是.C,目標文件的擴展名是.obj,可執行文件的擴展名是.exe。故本題答案為A選項。

6.DC語言的數值常量中不能夾帶空格,所以A選項錯誤。C語言中的變量都必須先定義再使用,變量的定義通常放在函數體的前部,也可以放在函數外部或復合語句的開頭,不能隨便放置,所以B選項錯誤。在C語言中,運算符兩側的運算數據類型可以不一致,且結果與精度較高的數據類型保持一致,所以C選項錯誤。故本題答案為D選項。

7.Dc語言的可執行程序是由一系列機器指令組成的。用C語言編寫的源程序必須經過編譯生成二進制目標代碼,再經過連接才能運行,并且可以脫離c語言集成開發環境。故答案為D)。

8.Ascanf函數中,在格式字符前加入一個整數可以指定輸入數據所占的寬度,所以賦值時會將87賦給變量a,把6.0賦給float型變量b。故本題答案為A選項。

9.Cfor循環中,函數f的返回值累加到變量a中。第1次循環,a=0,i=0,返回值a=0*0+1=1;第2次循環,a=1,i=10,返回值a=10*10+1+1=102;第3次循環,a=102,i=20,返回值a=20*20+1+102=503;第4次循環a=503,i=30,不符合1<30,跳出循環,最后結果輸出a=503。故本題答案為C選項。

10.D

11.A其方法是將要刪除節點的上一個節點的next指向要刪除節點的下一個節點,然后釋放將要刪除的節點,所以選項A正確。故本題答案為A選項。

12.D解析:在需求分析階段中,根據可行性研究階段所提交的文檔,特別是從數據流圖出發,對目標系統提出清晰、準確和具體的要求,即要明確系統必須做什么的問題。本題的正確答案為D。

13.B棧是先進后出,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。

14.AA選項中的語句可以在聲明變量的同時為data2賦值,賦值語句應寫作“data2={2,6};”。故本題答案為A選項。

15.D

16.D程序首先定義字符變量a并賦初值‘0’,定義字符變量b并賦初值‘A’。然后執行for循環,當i為偶數時,輸出字符“a+i”;當i為奇數時,輸出字符“b+i”。因為數字和字母的ASCII值都是按順序遞增的,所以本題輸出為B2D4F。故本題答案為D選項。

17.B本題考查strlen函數和轉移字符,strlen函數的功能是求字符串的長度,在本題中有“\”,C語言中“\”是轉義字符,在計算長度時會將轉義符以及后面的第一個字符作為1個長度進行計算,所以答

18.C

19.A不能將一個整數直接賦給指針變量作為地址值,A選項錯誤。函數的返回值可以是地址,即指針。函數調用中形參值的變化不會傳遞給實參。故本題答案為A選項。

20.BB項的格式應該為scanf("%1d*%d%1f",&x,&y,&z);

21.驅動模塊驅動模塊解析:在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊(樁模塊)。其中,驅動模塊相當于被測試模塊的主程序,它接收測試數據,并傳給被測試模塊,輸出實際測試結果。承接模塊通常用于代替被測試模塊調用的其他模塊,其作用僅做少量的數據操作,是一個模擬子程序,不必將子模塊的所有功能帶入。

22.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

23.m=4k=4i=5k=5m=4k=4i=5k=5解析:main()函數首先定義了1個變量i,并初始化為4。然后用表達式i++的值為實參調用函數fun(),因為后綴”表達式的值為增1之前的值,故此時傳遞給函數的參數m值為4。fun()函數中,首先讓形參m自增k,由于此時k還是0,所以m不變,然后讓k自增m,執行后k的值和m相同為4。最后fun()函數輸出m和k廿的值,兩個值都是4,故首先輸出了“m=4k=4”,輸出完后,k自增1(k變為5)。fun()函數執行完畢,返回main()函數中,此時i會被自增1變為5,故接著又輸出的i和k的值都是5。故最終輸出結果是“m=4k=4i=5k=5”。

24.*s++flag==0或*(s-1)==''num*s++\r\nflag==0或*(s-1)==''\r\nnum解析:在統計字符串單詞個數的算法中,本題的flag是為了記錄一個單詞是否結束。第18空應填*s++;如果某個字符不是空格,則必需判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第19空應flag==0或*(s-1)=='';最后一個空格需填寫的是返回的單詞的個數,即num。

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

26.b=i+1b=i+1解析:本題考查了for循環語句的執行過程。i+=2是修正表達式,執行一次循環體后i的值就增加2,i的初始值為0,每次加2之后和累加至a,所以a的值就是1~10之間的偶數之后;b的值是1~11之間的奇數和,但在輸出b值時c去掉多加的11,即為1~10之間的奇數之和。

27.數據庫系統或數據庫系統階段或數據庫或數據庫階段或數據庫管理技術階段數據庫系統或數據庫系統階段或數據庫或數據庫階段或數據庫管理技術階段解析:在數據庫系統管理階段,數據是結構化的,是面向系統的,數據的冗余度小,從而節省了數據的存儲空間,也減少了對數據的存取時間,提高了訪問效率,避免了數據的不一致性,同時提高了數據的可擴充性和數據應用的靈活性;數據具有獨立性,通過系統提供的映象功能,使數據具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性;保證了數據的完整性、安全性和并發性-綜上所述,數據獨立性最高的階段是數據庫系統管理階段。

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

29.1919解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。

30.整型整型解析:上面的表達式中,通過強制類型轉換把最后參與運算的數據都轉換成了int型,所以最后得到的結果也是int類型。

31.structlink*headstructlink*head解析:考查用指針引用結構體變量成員數據的方法。因為本題中是用結構體變量構成了鏈表,所以要從鏈表頭節點,逐個節點的引用結構體的數據域,需要有指向結構體變量的指針,依次指向各個節點,即p=p->next,而用指針引用結構體成員數據的方法為:p->data。

32.yesyes解析:if...else構造了一種二路分支選擇,是一種最基本的選擇結構。本題中,if后面括號里的表達式為c=a+b為真(即c=1+3=4為真);所以,執行s1,即執行prinff('yes\\'),最后輸出yes。

33.i<10或i<9j%3!=0或j%3i<10或i<9\r\nj%3!=0或j%3解析:程序中的j用于存放符合條件的整數,j=i,10+6;求得個位數為6的整數,由此可得出程序的循環次數為i<10,所以[15]處填i<10。然后通過if語句判斷整數是否能被3整除,若不能則繼續下一次循環,若能則輸出該整數,所以[16]處填j%3!=0。

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

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

36.585858585858解析:在程序小,執行scanf()語句后,a被賦值為58。接著執行第一個if語句,因為,a=58>50,執行第一個if語句后面的輸出語句,輸出58;接著執行第二個if語句,因為,a=58>40,執行第二個if語句后面的輸出語句,輸出58;接著執行第三個if語句,因為,a=58>30,執行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。

37.66解析:本題中命令行輸入5個符號串,所以argc=5,argv[0]指向符號串'ex',argv[1]指向符號串'abcd',argv[2]指向符號串'efg',argv[3]指向符號串'h3',argv[4]指向符號串'k44',for循環的作用是計算strlen(argv[1]),strlen(argv[3])=4+2=6。

38.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數的存儲分類的概念。如果沒有特別說明,函數的存儲范圍是從定義函數的位置到文件的結尾,如果其他文件想使用這個函數,需要用ginclude文件包含命令將定義函數的文件包含進來。

39.k=5k=5解析:本題主要考查了函數的遞歸調用方法。g=0或\ue008g=1\ue009或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結果。

40.

41.C解析:數據塊讀取函數調用形式:fread(buffer,size,count,fp)。

fread函數參數說明:“buffer”是一個指針,對fread來說,它是讀入數據的存放地址。對fwrite來說,是要輸出數據的地址。“size”是要讀寫的字節數;“count”是要進行讀寫多少個size字節的數據項;“fp”是指文件型指針。

42.B解析:在C語言中所謂函數的遞歸是指在調用一個函數的過程中,又出現了直接或間接調用該函數本身,直接調用該函數本身的稱為函數遞歸,而間接調用該函數稱為函數的間接遞歸調用。顯然題目中所說得函數調用為函數的間接遞歸調用。所以,4個選項中選項B符合題意。

43.D解析:本題考查給二維數組元素賦值。給二維數組元素賦值時應注意下列兩點:①在對二維數組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數組第一維的大小由下列規則確定;當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小;當初值的個數不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數加1。

44.B解析:C語言規定標識符只能由字母、數字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。選項A中的void是C語言的關鍵字,不合法;選項C中的case和C語言的關鍵字重名,不合法;選項D中的2a是數字打頭而且sizeof和C語言的關鍵字重名,不合法。

45.A解析:A中sin(1/2)是0,因為1和2都是整數,“/”在這里是整除。

46.A

47.A解析:C程序中注釋部分用“/*”和“*/”括起來,可以出現在程序中任何合適的地方;花括號“{”和“}”不僅可作為函數體的定界符,也可作為復合語句的定界符;構成C程序的基本單位是函數:—個語句必須在最后出現分號,分號是C語句中不可缺少的部分。

48.C解析:本題中,最主要的是掌握幾個有關文件的函數的應用。

函數名:fopen

功能:打開一個文件

調用方式FILE*fp;fp=fopen(文件名,使用文件方式);

函數名:feof

功能:檢查文件是否結束

調用方式:feof(FILE*fp);

函數名:fputc

功能:把一個字符寫到磁盤文件上去

調用方式:fputc(ch,fp)(ch是要輸出的字符,fp是從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的調用方式:ch=fgetc(fp)(ch是字符變量,fp是文件指針變量);

函數名:fclose

功能:關閉一個文件

調用方式:fclose(文件指針)。

49.C解析:本題考核的知識點是字符型指針變量的使用.執行while循環,使指針變量Ps指向字符串“xyz”的字符串結束標志,然后執行for循環,先執行“ps--”,使ps指向字符“z”,故puts(ps)輸出結果為“z”;再次執行“ps--”,使ps指向字符“y”,故puts(ps)輸出結果為“y2”;再次執行“ps--”,使Ps指向字符’xt,故puts(ps)輸出結果為“xyz”,退出循環.所以,C選項為所選。

50.C解析:在C語言程序中,合法標識符的命名規則是:標識符可以由字母、數字和下劃線組成,并且第一個字符必須是字母或下劃線。

51.C

52.D解析:考查printf函數的相關知識。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和C)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數據,不能指向指針變量b,所以正確答案為B)。輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數輸出,所以第一個輸出語句輸出的結果為a,97;第二個輸出語句輸出的結果為k=12。所以選項D)為正確答案。

53.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數不能輸入空格;getehar(\u3000)函數用于輸入字符,其調用形式為:ch=getelaar(\u3000),getehar(\u3000)函數從終端讀入一個字符作為函數值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執行。gets(\u3000)函數的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數組名、字符數組元素的地址或字符指針變量。9ets函數用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數的調用形式為:ch=getc(pf)其中pf是文件指針。函數的功能是從pf指定的文件中讀入一個字符,并把它作為函數值返回。

54.C解析:在循環過程中,i的值一直沒有被改變,所以這是一個死循環。

55.A

56.B解析:關系數據庫建立在關系數據模型的基礎上,具有嚴格的數學理論基礎。關系數據庫對數據的操作除了包括集合代數的并、差等運算之外,更定義了一組專門的關系運算:連接、選擇和投影。關系運算的特點是運算的對象都是表。

57.A解析:本題考查函數調用時的參數傳遞。函數reverse將數組b進行了逆置,此時的b[10]={10,9,8,7,6,5,4,3,2,1},后面for語句的功能是將b中的前3個數累加,將結果放在s中,最后將s輸出,結果s=10+9+8=27。

58.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發現a<b條件成立,執行下列的語句;第二個if語句,先判斷條件,發現b<0條件不成立,則執行與其配對的else語句,c+=1,得c=5。

59.C解析:指針數組中的每一個元素都相當于一個指針變量。一維指針數組的定義形式為:類型名*數組名[數組長度],在本題main函數中定義指針數組d,它

溫馨提示

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

評論

0/150

提交評論