2021年河北省唐山市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2021年河北省唐山市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2021年河北省唐山市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2021年河北省唐山市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2021年河北省唐山市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年河北省唐山市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

3.下列程序的輸出結果是()。#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

4.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序運行的結果是()。A.9B.61490C.61D.5

5.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。

A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}

B.switcha*b{casel0:x=a+b;default:y=a-b;}

C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}

D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}

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

A.getehar函數(shù)用于從磁盤文件讀入字符

B.gets匿數(shù)用于從終端讀入字符串

C.取ns函數(shù)用于把字符串輸出到文件

D.fwrite函數(shù)用于以二進制形式輸出數(shù)據到文件

7.對一個有A,B,C,D隨機組成的序列進行哈夫曼編碼,據統(tǒng)計,各個元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。

A.1.45B.1.74C.1.85D.1.92

8.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序運行后的輸出結果是()。A.1256B.5634C.5612D.3456

9.帶頭結點的單鏈表head為空的判定條件是()。

A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

10.有以下程序:#include<stdio.h>main(){chara[5][10]={“China”,“beijing”,“very”,“welcome”,“you”};char*p[5];inti;for(i=3;i<5;i++){p[i]=*(a+i);printf(“%s”,p[i]);printf(“%c”,*p[i]);}}程序運行后的輸出結果是()。

A.wwyyB.ChinaCbeijingbC.veryvwelcomewD.welcomewyouy

11.

12.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為

A.log2nB.n2C.O(n1.5)D.n(n-1)/2

13.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。

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

14.

15.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

16.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是

A.x++;B.y++;C.c++;D.D++;

17.程序中已構成如下不帶頭節(jié)點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表節(jié)點,指針變量s總是作為指針指向鏈表的第1個節(jié)點。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;該程序段實現(xiàn)的功能是()。

A.刪除尾節(jié)點B.使尾節(jié)點成為首節(jié)點C.刪除首節(jié)點D.使首節(jié)點成為尾節(jié)點

18.數(shù)據庫設計的四個階段是:需求分析、概念設計、邏輯設計和______。A.編碼設計B.測試階段C.運行階段D.物理設計

19.

20.設有定義:int?x=2,以下表達式中,值不為6的是()。

A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1

二、2.填空題(20題)21.設有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。

22.當線性表的元素總數(shù)基本穩(wěn)定,且很少進行插入和刪除操作,并要求以很快的速度存取線性表中的數(shù)據元素時,應采用【】存儲結構。

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

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

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

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

26.對于長度為n的順序存儲的線性表,當隨機插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。

27.診斷和改正程序中錯誤的工作通常稱為【】。

28.設變量已正確定義為整型,則表達式n=i=2,++i,i++的值為【】。

29.下面程序的功能:將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanquage",t;

inti,j,k;

k=strlen(A);

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

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

if(【】)

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

puts(A);

printf("\n");

}

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

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

31.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

#include<string.h>

cbar*ss(char*s)

{char*p,t;

p=s+1;t=*s;

while(-p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

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

}

34.為建立如下圖所示的存儲結構(即每個結點兩個域,p是指向結點的指針域,data用以存放整型數(shù)),請將定義補充完整。

pdata

a

structlist

{【】;intdata;}a;

35.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

white(s[i]){d[j]=【】;j++;}

d[j]=0;

36.下述函數(shù)通過遞歸方法將字符串倒置,使用時需要指定字符數(shù)組的首地址、起始下標和終止下標。請?zhí)羁眨?/p>

#include<stdio.h>

voidfun(char*s,intlow,inthigh)

{if(【】)

return;

else

{chart;

fun(【】);

t=s[low];

s[low]=s[high];

s[high]=t;}}

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

38.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

39.函數(shù)compare的功能是比較兩個字符串是否相等,若相等則函數(shù)返回值0,否則返回值1,請?zhí)羁铡?/p>

compare(chars[],chart[])

{inti=0;

while(s[i]==t[i]||【】)i++;

return(【】?1:0);

}

40.以下函數(shù)的功能是刪除字符串s中的所有數(shù)字字符。請?zhí)羁铡?/p>

vioddele(char*s)

{intn=0,i;

for(i=0;s[i];i++)

if(______)

s[n++];s[i];

s[n]=______;

}

三、1.選擇題(20題)41.設有二維數(shù)組A[8][9],其每個元素占2個字節(jié),從首地址400開始,按行優(yōu)先順序存放,則元素A[8,5]的存儲地址為______。

A.570B.506C.410D.482

42.在C語言中,關于函數(shù)fseek的說法正確的是()。

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

B.使位置指針到文件的結尾

C.可以改變文件位置指針

D.利用fseek函數(shù)只能實現(xiàn)文件順序讀寫

43.sizeof(float)是()。

A.一種函數(shù)調用B.一種函數(shù)定義C.一個浮點表達式D.一個整型表達式

44.以下程序的輸出結果是______。main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"),k;for(k=1;k<3;k++)printf("%s\n",w[k]);}

A.ABCDFGHKLMB.ABCDEFGIJC.EFGJKOD.EFGHUKL

45.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序運行的結果是()。

A.234B.432C.23D.4534554334344523

46.若有下列說明和語句,則對結構體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

47.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術問題

48.已知i、j、k為血型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4,下列正確的輸入語句是()。

A.scanf(“%3d,%3d,%3d”,&i,&j,&k);

B.scanf(“%d,%d,%d”,&i,&J,&k);

C.scanf(“%d%d%d”,&i,&j,&k);

D.scanf(“i=%d,%d,k=%d”,&i,&j,&k);

49.有一個深度為4的滿二叉樹,下面關于序號為7的結點的敘述中,正確的是______。

A.該結點雙親的序號為4B.該結點處于二叉樹的第4層C.該結點沒有右子樹D.該結點左子樹根結點的序號為14

50.若以下定義:structlink{intdata;strucklink*next;}a,b,c,*p,*q;且變量a和b之間已有下圖所示的鏈表結構:

指針p指向變量a,q指向變量c,則能夠把c插入到a和b之間并形成新的鏈表的語句組是()。

A.a.next=c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p>next;

D.(*p).next=q;(*q).next=&b;

51.已知二叉樹BT的后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______.

A.cedbaB.acbedC.decabD.deabc

52.以下4個選項中,不能看作一條語句的是

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

53.函數(shù)fun的返回值是()。fun(char*a,char*b)intnum=0,n=0;while(*(a+num))!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;)returnnum;}

A.字符串a的長度B.字符串b的長度C.字符串a和b的長度之差D.字符串a和b的長度之和

54.現(xiàn)有以下語句: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++;}

55.以下程序的輸出結果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

56.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

57.SQL語言又稱為______。

A.結構化定義語言B.結構化控制語言C.結構化查詢語言D.結構化操縱語言

58.設已執(zhí)行預編譯命令#include<string.h>,以下程序段的輸出結果是()。chars[]="anapple";printf("%d\n",strlen(s));

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

59.在下列定義中的共用體所占內存字節(jié)數(shù)是()。union{chark[6];struct{intm;floarf;}a;doubled;}b;

A.8B.14C.18D.10

60.以下程序的輸出結果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

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

四、選擇題(20題)61.

62.以下定義語句中正確的是()。

A.

B.

C.

D.

63.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

執(zhí)行該程序段后,a的值為

A.12B.10C.11D.編譯出錯

64.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

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

66.以下不能正確表示代數(shù)式4cd/ab的C語言表達式縣().

A.4*c*d/a/bB.c*d/a/b*4C.c/a/b*d*4D.4*c*d/a*b

67.

68.下面程序段的運行結果是()。

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

69.

70.在C語言程序中可用做用戶標識符的是()。

A.void123BBNB.aa_abccasC.as+b3-123IfD.6fDoSIG

71.

72.有以下程序

main()

{intm=14,n=24;

printf("%d,%d",m++,++n);

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

}

程序運行后的輸出結果是

A.15252616B.14252515

C.14252516D.14252615

73.以下描述錯誤的是

A.C程序中,函數(shù)可以直接或間接調用自己

B.函數(shù)調用時,函數(shù)名必須與所調用的函數(shù)名字完全一致

C.函數(shù)說明語句中的類型必須與函數(shù)返回值的類型一致

D.實參個數(shù)可以與形參個數(shù)不一致

74.

75.有以下程序:

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

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

76.

77.設有二元關系R和三元關系s,下列運算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

78.(21)算法的空間復雜度是指______。

A.算法程序的長度

B.算法程序中的指令條數(shù)

C.算法程序所占的存儲空間

D.算法執(zhí)行過程中所需要的存儲空間

79.有以下程序:

#include<stido.h>

main()

{charc1=′1′,c2=′2′;

c1=getchar();c2=getchar();putchar(c1);putchar(c2);

}

當運行時輸入:a<回車>后,以下敘述正確的是()。

A)變量c1被賦予字符a,c2被賦予回車符

B)程序將等待用戶輸入第2個字符

C)變量c1被賦予字符a,c2中仍是原有字符2

D)變量c1被賦予字符a,c2中將無確定值

80.軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。

A.編譯程序B.操作系統(tǒng)C.教務管理系統(tǒng)D.匯編程序

五、程序改錯題(1題)81.已知一個數(shù)列從0項開始的前3項為0,0,1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc的功能是:計算并輸出該數(shù)列前n項的和sum。n的值通過形參傳人。例如,當n=20時,程序的輸出結果應為42762.000000。

請修改程序中的錯誤,使它能得到正確結果。

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

doubleproc(intn)

{

doublesum,s0,s1,s2,s;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

s1=0.0;

s2=1.0;

//****found****

for(k=4;k<n;k++)

}

{

s=s0+s1+s2;

sum+=S:

s0=s1;

s1=s2;

//****found****

s2=s;

returnsum;

}

voidmain

{

intn;

system("CLS");

printf("InputN=");

scanf("%d",&nJ;

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

}

六、程序設計題(1題)82.請編寫函數(shù)proc,它的功能是計算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.5

在C語言中可調用log(n)函數(shù)求ln(n)。

例如,若m的值為30,則proc函數(shù)值為8.640500。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。

試題程序:

#include<stdlib.h>

#include<conio.h>

#inclllde<stdio.h>

#include<math.h>

doubleproc(intm)

{

}

voidmain

{

system("CLS");

printf("%f\n",proc(30));

}

參考答案

1.C

2.D

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

4.C在fun函數(shù)中,while循環(huán)的功能是逐個取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個數(shù)保存到變量n中,并返回變量n的值。

5.D選項A,當cl和c2相等時,不成立;選項B,a*b要用括號括起來;選項C,case與后面的數(shù)字用空格隔開。

6.A本題考查的是文件操作。題中“fopen(fn,”w”)”的作用是打開fn所指向的文件,使用文件方式為“寫入”;

“每uts(str,fp)”的作用是將字符str的值輸出到fb所指向的文件中去。在程序中,兩次使用“寫入”的方式打開同一個文件,在第二次打開時,文件指針指向文件頭,所以此次寫入的數(shù)據覆蓋了文件原有的數(shù)據,故本題中tl.dat的內容為end。故本題答案為A)。

7.C

8.BFunl是輸出局部變量的值,fun2是把全局變量的值改成3和4,所以輸出的結果是5634。

9.B

10.Dmain函數(shù)定義一個二維字符數(shù)組a,它包含5個字符串,每個字符串存放在一個長度為10的一維數(shù)組中。指針數(shù)組P包含5個字符指針元素。for循環(huán)中,每次將*(a+i)賦給P[i],再輸出P[i]和*P[i]。由于*(a+i)等價于a[i],因此每次都是將下標為i的字符串首地址賦給p[i],再輸出該字符串和該字符串的首字符。i=3時,輸出字符串“welcome”和首字符“w”;i=4時,輸出字符串“you”和首字符“y”。綜上,輸出結果為welcomewyouy。故本題答案為D選項。

11.A

12.D解析:假設線性表的長度為n,則在最壞情況下,冒泡排序要經過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。

13.C解析:棧是一種后進先出表,選項C中,先出棧的是3,說明此時棧內必然有1,2,由于1先于2進淺,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。

14.D

15.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。

16.D解析:C語言中++運算符的對象可以是整型、實型和字符型,但不可是常量,本題中D為常量。

17.D程序中,指針s指向了它的下一個節(jié)點。題目中說明了s總是指向鏈表的第1個節(jié)點。然后while循環(huán)找到鏈表的最后一個元素,最后一個元素指向了之前鏈表的頭節(jié)點,之前頭節(jié)點指向了空節(jié)點。所以本題實現(xiàn)的是使首節(jié)點成為尾節(jié)點。故本題答案為D選項。

18.DD)【解析】數(shù)據庫設計目前一段采用生命周期法.即將整個數(shù)據庫應用系統(tǒng)的開分解成目標獨立的若干階段,它們是:需要分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。在數(shù)據庫設計中采用上面幾個階段中的前四個階段,并且重點以數(shù)據結構和模型設計為主線。

19.A

20.A?A)選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選A)。B)選項中首先計算逗號表達式中第一一個表達式x++,此時x為3,再執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C)選項的賦值表達式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項中的表達式可以表示為x=x*(x+1)=2*3=6。

21.100100解析:本題考查帶參數(shù)的宏定義及相關運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。

22.順序順序

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

24.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲單元時,要在前面用強制類型轉換符說明該存儲單元中數(shù)據的類型。本題要為指向雙精度浮點型數(shù)據的指針變量p分配存儲單元,因此用(double*)說明。

25.99解析:本題要輸出的結果是字符串'IBM\\n012\\1\\\\'的長度,'IBM'是3個字符,\'\\n\'是1個字符,'012'又是3個字符,最后的\'\\1\'和\'\\\\\'都是1個字符。所以最終字符串的長度應該是3+1+3+1+1=9。故本題應該填9。

26.n/2n/2解析:刪除一個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個數(shù)為n/2。

27.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發(fā)階段。

28.33解析:本題考查的是C語言逗號表達式的相關知識。程序在計算逗號表達式時,從左到右計算由逗號分隔各表達式的值,整個逗號表達式的值等于其中最后一個表達式的值。本題中,首先i被賦值為2,再自加1,最后i++的值計算為3。

29.a[j]<a[i]a[j]<a[i]解析:本題考查排序算法,題目中通過雙循環(huán)嵌套來實現(xiàn),外層循環(huán)跳出待排序的元素,內層循環(huán)具體實現(xiàn)a[i]到a[k-2]之間偶數(shù)下標元素的排序,每次將最小的放在a[i]中。所以空中填a[j]<a[i]。

30.x=11x=11解析:在對無符號數(shù)的右移是高位補0。

31.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。

32.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因為fun函數(shù)中變量a為static類型,所以每次調用完于函數(shù)之后,變量a所做的改變都要保存。

33.bcdefghabcdefgha解析:while循環(huán)的功能把字符從第二個元素開始左移一位,并將原第一個元素賦給最后一個元素。

34.structlist*nextstructlist*next解析:定義的指針類型變量next也應該是結構體類型的。

35.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其有元素。本題應使用i舶自增后置來實現(xiàn)。

36.low>=highscow+1high-1low>=high\r\ns,cow+1,high-1解析:本題考查了用指針引用一維數(shù)組元素的方法。函數(shù)fun()通過遞歸調用的方式將字符串的首位和末位互換,第二位和倒數(shù)第二位互換……,從而實現(xiàn)了字符串倒置的功能。low和high是字符數(shù)組的下標。

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

38.軟件開發(fā)

39.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'

40.s[i]<'0'‖s[i]>9或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))isdigit(s[i])==0或s[i]>'9'‖s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'‖*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'!(*(s+i)<='9'&&*(s+i)>='0'或iss[i]<'0'‖s[i]>9,或\r\n!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))\r\nisdigit(s[i])==0或s[i]>'9'‖s[i>'0'或\r\n!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'‖*(s+i)>'9'或\r\n!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或\r\n*(s+i)>='9'&&*(s+i)<='0'\r\n!(*(s+i)<='9'&&*(s+i)>='0'或is解析:本題考核的知識點是字符指針變量作為函數(shù)的參數(shù)以及與字符串有關的算法。從一個字符串中刪除某字符的方法是從字符串的第一個字符開始一一判斷該字符是否是要刪除的字符,若不是則把它放到結果字符串中,若是則不放入結果字符串中。本題的第一個空應判斷a[i]是否為數(shù)字字符,只有在不是數(shù)字字符的情況下才存入結果字符串,所以應填入s[i]<'0'‖s[i]>'9'。最后應在結果字符串的末尾填上字符串結束標志“\\0”。

41.A

42.C解析:fseek()函數(shù)可以自由的改變文件位置指針的位置,即可以自由讀寫文件中的任何位置,故選項A、B、D都是錯誤的,應該選擇C。

43.D解析:sizeof(float)是c語言內部規(guī)定的用于計算單精度型變量(float)在計算機的內存中所占用的字節(jié)數(shù)量的函數(shù),返回一個整數(shù)值。

44.D

45.D解析:本題主要考查for循環(huán)語句的嵌套。外層主循環(huán)執(zhí)行了3次,嵌套的循環(huán)語句每輪執(zhí)行2次,每次輸出i+j的值,推出嵌套循環(huán)語句后換行。

46.B解析:本題主要考查結構指針:p=&st,訪問結構體的成員,可以通過結構變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。

47.CC?!窘馕觥寇浖こ淌侵笇⒐こ袒乃枷霊糜谲浖拈_發(fā)、應用和維護的過程,包括軟件開發(fā)技術和軟件工程管理。

48.B解析:函數(shù)scanf()的調用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。

若在格式符中插入了其他字符,則在輸入時要求按一一對應的位置原樣輸入這些字符,其中的逗號也必須輸入。

49.D深度為4的二叉樹,共有15個節(jié)點,第三層共7個節(jié)點。因此位于第3層,其雙親節(jié)點為3,因為是滿二叉樹,所以肯定有右子樹,子樹的序號為14,15

50.D解析:在本題,扣指針p指向變量a,q指向變量c。要把c插入到變量a和變量b之間,就應該首先讓變量a的指針域指向變量c,即(*p).next=q,然后讓變量c的指針域指向變量b,即(*q).next=&b。所以,4個選項中D為所選。

51.A解析:由二叉樹后序遍歷序列和中序遍歷序列可以唯一確定一棵二叉樹。二叉樹BT的后序遍歷序列為dabec,故BT的根結點為c(后序遍歷序列的最后一個結點為樹的根結點):而BT的中序遍歷序列是debac,即遍歷序列中最后一個結點為根結點,說明BT的右子樹為空。由BT的后序遍歷序列和中序遍歷序列可知BT左子樹的后序遍歷序列和中序遍歷序列分別為dabe和deba,因此BT左子樹的根結點是e。再由中序遍歷序列可知其左子樹為d,右子樹為ba。因此BT的前序遍歷序列為cedba。

52.D解析:C語言的語句都用“;”結束。如果只有一個分號,稱為“空語句”。用一對花括號把若干語句括起來構成一個語句組,稱為“復合語句”,在語法上視為一條語句。因此選項A是一條語句。選項B是逗號表達式加分號構成的語句。選項C是一條if語句,該語句的if子句是一條空語句。選項D中“if(b==0)m=1;n=2;”是兩個表達式語句。所以,4個選項中選項D符合題意。

53.D解析:因為'\\0'是字符串結束標記,而fun函數(shù)中的第一個while循環(huán)從字符串a的第一個字符開始,直到碰到'\\0'時結束循環(huán),所以其作用就是將字符串a的長度記錄到變量num中。而第二個while循環(huán)從b[0]開始,將字符串b中的字符依次復制到字符串a的結尾處,直到b[n]為假,即b[n]為字符串結束標志'\\0'時,所以最后返回的num保存了字符串a和b的長度之和。故應該選擇D。

54.D

55.D解析:本題考查帶參數(shù)的宏調用。a/=SQR(k+m)/SQR(k+m)進行宏替換后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

56.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關鍵碼值的大小排好序,而不是按關鍵碼的檢索頻率排序。

57.CC?!窘馕觥縎QL語言的全稱為StructuredQueryLanguage,它是一種介于關系代數(shù)與關系演算之間的結構化查詢語言,是一種面向數(shù)據庫的通用數(shù)據處理語言規(guī)范。它包含數(shù)據查詢語言、數(shù)據操縱語言、數(shù)據定義語言和數(shù)據控制語言4個部分。

58.B解析:如果一個字符數(shù)組中存放一個字符串,則函數(shù)strlen的值為“\\0”之前的全部字符個數(shù),也包括空格在內。注意:字符串處理函數(shù)的使用。

59.A解析:結構體變量所占的存儲空間是各個分量所占空間的總和。共用體變量中的所有成員占有同一個存儲空間,其字節(jié)數(shù)與成員中占字節(jié)數(shù)最多的那個成員相等。m占2個字節(jié),f占4個字節(jié),因此結構體變量a所占的存儲空間為6字節(jié)。k[6]占6個字節(jié),d占8個字節(jié)。共用體變量b所占的存儲空間與占存儲空間最多的d所占存儲空間的字節(jié)數(shù)相同。所以,A選項為所選。

60.C解析:觀察程序段可知,對帶參數(shù)的宏的展開只是將語句中的宏名后面括號內的實參字符串代替#define命令行中的形參。本題中c=f(a)/f(b)用#definef(x)x*x代替得c=f(6)/f(2),即c=6*6/2*2,結果為36。

61.C

62.C解析:選項A中兩個變量的定義應當以逗號隔開;選項B中a和b應當分開賦值;選項D中變量類型不相匹配,b應當是指針型變量。

63.Cp=&a表達式的含義是將變量a的地址賦給指針變量p;a=*p+b表達式的含義是將指針變量p所存地址對應的值與b的

溫馨提示

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

評論

0/150

提交評論