2022-2023年甘肅省天水市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2022-2023年甘肅省天水市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2022-2023年甘肅省天水市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2022-2023年甘肅省天水市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2022-2023年甘肅省天水市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年甘肅省天水市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

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

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

2.隊和棧的主要區(qū)別是________

A.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運算個數(shù)不同D.限定插入和刪除的位置不同

3.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()

A.不確定B.n-i+1C.iD.n-i

4.下面關(guān)于線性表的敘述中,錯誤的是()。

A.線性表采用順序存儲,必須占用一片連續(xù)的存儲單元

B.線性表采用順序存儲,便于進行插入和刪除操作

C.線性表采用鏈接存儲,不必占用一片連續(xù)的存儲單元

D.線性表采用鏈接存儲,便于插入和刪除操作

5.

6.有以下結(jié)構(gòu)體說明、變量定義和賦值語句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];則下列scanf函數(shù)調(diào)用語句有錯誤的是()。

A.scanf(“%s”,s[0].name);

B.scanf(“%d”,&s[0].age);

C.scanf(“%c”,&(ps->sex));

D.scanf(“%d”,ps->age);

7.設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

8.按照C語言規(guī)定的用戶標識符命名規(guī)則,不能出現(xiàn)在用戶標識符中的是()。

A.大寫字母B.下劃線C.數(shù)字D.連接符

9.下列程序的輸出結(jié)果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

10.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

11.

12.有以下程序:voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序運行后的輸出結(jié)果是()。

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

13.有以下程序:#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í)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

14.下列有關(guān)圖的遍歷說法中,不正確的是()

A.圖的遍歷必須用遞歸實現(xiàn)

B.基本遍歷算法兩種:深度遍歷和廣度遍歷

C.有向圖和無向圖都可以進行遍歷操作

D.圖的遍歷算法可以執(zhí)行在有回路的圖上

15.

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

A.一個C程序中可以包含多個不同名的函數(shù)

B.一個C程序只能有一個主函數(shù)

C.C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

17.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

18.設a、b和、c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式為()

A.'a'&&'b'

B.a<=b

C.a‖b+c&&b-c

D.!(a-b)&&(!c‖1)

19.鏈棧與順序棧相比,比較明顯的優(yōu)點是()。

A.插入操作更加方便B.刪除操作更加方便C.不會出現(xiàn)下溢的情況D.不會出現(xiàn)上溢的情況

20.

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

main()

{intx=0;

sub(&x,8,1);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

22.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p/13所指向的數(shù)組元素的地址為______。

23.已有文本文件test.txt,其中的內(nèi)容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向文件,則程序的輸出結(jié)果是______。

#include<stdio.h>main(){FILE*fr;charstr[40];

fgets(str,5,fr);

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

fclose(fr);}

24.按照邏輯結(jié)構(gòu)分類,數(shù)據(jù)結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),隊列屬于______。

25.若有程序:

main()

{inti,j;

scanf('i=%d,j=%d";&i,&j);

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

}

要求給i賦10,給j賦20,則應該從鍵盤輸入上【】。

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

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

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

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

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

#include<stdio.h>

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

28.以下程序段用于構(gòu)成一個簡單的單向鏈表。請?zhí)羁铡?/p>

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;

29.若有定義doublea[5];,則a數(shù)組元素下標的上限為______。

30.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

31.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

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

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

33.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

34.對下列二叉樹進行中序遍歷的結(jié)果為【】。

35.在結(jié)構(gòu)化設計方法中,數(shù)據(jù)流圖表達了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應一個處理模塊。

36.指針變量p和數(shù)組a的說明如下:

int*a[3]={"aa","bb","cc"},**p;

執(zhí)行語句p=&a[2];后,*p指向的字符串是______。

37.為了便于對照檢查,測試用例應由輸入數(shù)據(jù)和預期的【】兩部分組成。

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

main()

{inti;

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

f(i);}

f(j)

{intj;

staticinta=1000;

autointk=1;

++k;

printf("%d+%d+%d=%d\n",a,k,j,a+k+j);

a+=10;}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

primf("%d,",z<y?x++:y++);

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

}

40.函數(shù)ssbc叩()的功能是對兩個字符申進行比較。當s所指字符串和t所指字符申相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp())。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{

while(*s&&*t&&*s==)

{s++;t++;}

return

}

三、1.選擇題(20題)41.有以下程序

#include<stdlib.h>

structNODE

{intnum;stmctNODE*next;};

main()

{structNODE*p,*q,*r;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf(“%d\n”,p->num+q->next->num);

}

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

A.10B.20C.30D.40

42.在printf的格式字符中,e格式字符的作用是()。

A.以十六進制無符號形式輸出整數(shù)

B.以帶符號的十進制形式輸出整數(shù)

C.以指數(shù)形式輸出實數(shù)

D.以字符形式輸出,且只輸出一個字符

43.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

44.數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進行的運算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲

45.能正確表示邏輯關(guān)系:"a≥10或a≤0"的C語言表達式是

A.a>=10ora<=0

B.a>=0|a<=10

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

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

46.有以下程序:main(){charp[]={'a','b','c},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));}程序運行后的輸出結(jié)果是()。

A.44B.33C.34D.43

47.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

48.以下不合法的用戶標識符是______。A.j2KEYB.DoubleC.4dD._8_

49.下列數(shù)據(jù)中,不能存放在動態(tài)存儲區(qū)中的是______。

A.函數(shù)形參變量B.局部自動變量C.函數(shù)調(diào)用時的現(xiàn)場保護和返回地址D.局部靜態(tài)變量

50.有以下程序:#include<stdio.h>structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));程序運行后的輸出結(jié)果是()。

A.10B.11C.20D.21

51.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。

A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH

52.有以下程序:#include<stdio.h>main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序運行后的輸出結(jié)果是()。

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

53.若有說明:int*p1,*p2,n=8,m;下列均是正確賦值語句的選項是()。

A.p1=&n;p2=&p1;

B.p1=n;

C.p1=&n;*p2=p1;

D.p1=&n;p2=p1;

54.如果一個算法顯式地調(diào)用自己則稱為()

A.直接遞歸B.自用遞歸C.間接遞歸D.外用遞歸

55.調(diào)用gets和puts函數(shù)時,必須包含的頭文件是

A.stdio.hB.stdlib.hC.defineD.以上都不對

56.請選出以下語句的輸出結(jié)果()printf("%d\n,strlen("\t\"065\xff\n"));

A.5B.14C.8D.輸出項不合法,無正常輸出

57.一個C語言程序是由()

A.一個主程序和若干子程序組成B.函數(shù)組成C.若干過程組成D.若干子程序組成

58.下列關(guān)于軟件測試的目的和準則的敘述中,正確的是()

A.軟件測試是證明軟件沒有錯誤

B.主要目的是發(fā)現(xiàn)程序中的錯誤

C.主要目的是確定程序中錯誤的位置

D.測試最好由程序員自己來檢查自己的程序

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

60.以下敘述中正確的是_______。

A.預處理是指完成宏替換和文件包含中指定文件的調(diào)用

B.預處理也是C語句

C.C源程序中,凡是行首以#標識的控制行都是預處理指令

D.預處理就是完成C編譯程序?qū)源程序的第一遍掃描,為編譯的詞法分析和語法分析做準備

四、選擇題(20題)61.有以下程序:

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

A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,

62.有以下程序:

main

{

unsignedchara=2,b=4,c=5,d;

d=a|b;d&=c;printf("%d\n",d);

}

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

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

63.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

64.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當執(zhí)行程序時,輸出的結(jié)果是()。A.-1B.1C.4D.0

65.

程序運行后的輸出結(jié)果是()。A.1002,ZhangDa,1202.0

B.1002,ChangRon9。1202.0

C.1001,ChangRon9,1098.0

D.1001,ZhangDa,1098.0

66.已定義以下函數(shù)

67.

68.若有定義語句:

charS[10]=”1234567\0\0”;則strlen(s)的值是()。

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

69.待排序的關(guān)鍵碼序列為15,20,9,30,67,65,45,90,要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個位置。

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

70.

71.有以下程序

72.有以下程序:

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

A.aegiB.dfhkC.abedD.abedefghijk

73.有以下程序程序運行后的輸出結(jié)果是()

A.3,5,3,5B.3,5,5,3C.5,3,3,5D.5,3,5,3

74.以下語句的輸出結(jié)果是()。

inta=-1,b=4,k;

k=(++a<0)!(b--<=0);

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

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

75.數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)模式定義和數(shù)據(jù)的物理存取構(gòu)建的語言是()。

A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

76.在學生管理的關(guān)系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

77.設有如下說明:

以下說法正確的是()。

A.NEW是一個結(jié)構(gòu)體變量

B.NEW是一個結(jié)構(gòu)體類型

C.ST是一個結(jié)構(gòu)體類型

D.以上說明形式非法

78.

79.

以下程序的輸出結(jié)果是()。

main

{inti;

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

switch(i){case0:printf("%d",i);

case2:printf("%d",i);

default:printf("%d",i);

}

}

A.000102B.000020C.000122D.000111

80.執(zhí)行下列程序中的輸出語句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13

五、程序改錯題(1題)81.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入前三個字符中,待排序的字符串已

在主函數(shù)中賦予。

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

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

試題程序:

#include<strin9.h>

#include<stdi0.h>

#defineM80

voidproc(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.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”。回文字符串是指順讀和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無紙化考武題庠請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];10FILE*out;11char*test[]={"1234321","123421","123321","abcdCBA"};12inti;13printf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf("YES\n");19else20printf("NO\n");21/******************/22out=fopen("out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26else27fprintf(out,"NO\n");28fclose(out);29/******************/30}

參考答案

1.B

2.D

3.B

4.B

5.B

6.D題目中需要輸入一個變量,scanf要求輸入?yún)?shù)為指針,而D選項中“ps->age”為變量,不是指針。故本題答案為D選項。

7.D解析:本題考核的知識點是指針變量定義和賦值語句的基本應用。在使用一個指針變量之前,先要用聲明語句對其進行定義,在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配了一個存儲單元,用它來存放地址。在C語言中有兩個有關(guān)指針的運算符:&運算符,為取地址運算符,*運算符是指針運算符,*p代表p所指向的變量。本題中首先定義了整型變量n,其初值為0,接著定義一個指針變量p并讓它指向n,然后定義了一個指向指針的指針變量q并讓它指向p,選項A中將常量1賦給指針p不正確;選項B也是將常量2賦給*p,故選項B不正確;選項C中P不是指向指針的指針變量,而將他賦值給一個指向指針的指針變量小顯然不正確,所以,4個選項中選項D符合題意。

8.DC語言只符由字母、數(shù)字、下劃線組成,且第1個字符必須是字母或下劃線,所以D選項中的連接符不合法。故本題答案為D選項。

9.D本題考夢自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現(xiàn)在變量之前,表示先使用變量的值加l,再使用變量的值進行運算;出現(xiàn)在變量之后,表示先使用變量的值進行運算,再使用變量的值加l。當邏輯與運算符“&&’’兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“||”只要一個值為1,值就為1。根據(jù)運算符的優(yōu)先級,題中應先計算內(nèi)層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達式++j=3成立,即表達式的值為1;1與任何數(shù)都為進行或(||)運算,結(jié)果都為1,因此k=3的表達式i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

10.B在c語言規(guī)定中,可以在定義變量的同時給變量賦初值,選項A中n2沒有定義;選項C中不能在賦值表達式的右邊出現(xiàn)變量本身,選項D中字母E后面的數(shù)應該為整數(shù),所以不對。

11.A

12.A解析:在主函數(shù)main()中,語句“sum(&a[2]);”把數(shù)組元素a[0]的地址傳遞給了sun函數(shù)的形參a[],使得sum函數(shù)中的“(a+0)”為主函數(shù)中a[2]的地址,所以a[-1]的值為主函數(shù)中a[1]的值;a[1]的值為主函數(shù)中a[3]的伉,故函數(shù)sum中a[0]=2+4=6,由于此函數(shù)中的a是指向主函數(shù)中的a[2],所以a[2]的值為6。

13.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\'結(jié)束循環(huán),返回形參。最終得到的結(jié)果是從字符串'Program\'的第4個字符開始,每個字符加1。

14.A

15.A

\r\n

16.C【答案】C

【知識點】C程序的函數(shù)

【解析】C程序必須有且只有一個主函數(shù)main()。一個C程序可以包含多個不重名的子函數(shù)。C程序在書寫時沒有嚴格的縮進要求,語句前的縮進隨意。

17.A用typedef沒有增加新類型,所以選擇A)。

18.D

19.D

20.C

21.77解析:在主函數(shù)中定義了一個變量x并賦初值0,然后執(zhí)行函數(shù)調(diào)用語句,該語句的執(zhí)行過程為sub(&x,8,1)調(diào)用sub(&a,4,2),sub(&a,4,2)調(diào)用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括號里的判斷為假,遞歸結(jié)束,執(zhí)行其后的*a+=k;語句此時x=x+k=0+4=4,回退到上一層調(diào)用函數(shù)sub(&x,4,2)中,執(zhí)行后面的語句,x=x+k=4+2=6,再回推到最上一層調(diào)用函數(shù)sub(&x,8,1)執(zhí)行后面的語句,x=x+k=6+1=7,所以最后輸出7。

22.252H252H解析:要解答本題,首先要明白在對指針進行加、減運算時,數(shù)字'1'不是十進制數(shù)的'1',而是指'1'個存儲單元長度。1個存儲單元長度占存儲空間的多少,應該視具體情況而定,如果存儲單元的基類型是int型,則移動1個存儲單元的長度就是位移2個字節(jié);如果存儲單元基類型是float型,則移動1個存儲單元的長度就是位移4個字節(jié)。所以曠13所指向的數(shù)組元素的地址為:200H+(13*4)H=252H。

23.HellHell解析:該函數(shù)有3個參數(shù),第三個參數(shù)是文件指針指向要讀取數(shù)據(jù)的文件,第二個參數(shù)是一個整數(shù)(假設為n),表示從文件中讀n-1個字符并在其后加一個'\\0',第一個參數(shù)為存放讀取的字符串的內(nèi)存區(qū)的起始地址,讀取得數(shù)據(jù)保存在其中??梢姳绢}的輸出結(jié)果為:Hell。

24.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:隊列有且只有一個根結(jié)點,而且每一個結(jié)點最多有一個前件,也最多有一個后件,滿足線性結(jié)構(gòu)的條件,所以屬于線性結(jié)構(gòu)。

25.i=10j=20i=10,j=20解析:該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應要輸入的變量,所以本題中應該原樣輸入i=,j=,后面分別給變量10和20,故空格處應該填入i=10,j=20。

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

27.136136解析:程序中定義了一個遞歸調(diào)用函數(shù)fun。程序運行時,先把實參6傳給形參。if語句中6/2>0成立,執(zhí)行fun(x/2),即fun(3),同時輸出x的值6;再判斷if條件,3/2>0成立,再執(zhí)行fun(x/2),即fun(1),同時輸出x的值3;此時1/2>0不再成立,輸出1。而遞歸調(diào)用的輸出順序是相反的,故輸出結(jié)果為136。

28.structSTRU*

29.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。

30.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)

31.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

32.解析:程序通過語句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”將結(jié)構(gòu)體變量s中各結(jié)點連接成了一個循環(huán)鏈表,即最后一個結(jié)點的指針域指向了頭結(jié)點,整個鏈表形成了一個環(huán),并通過語句“p=s;q=p->next;r=q->next;”將結(jié)構(gòu)體指針變量p、q、r指向了各結(jié)點。

33.k<=nk++k<=n,k++解析:本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句'k++;'\ue009。

34.ACBDFEHGPACBDFEHGP解析:中序遍歷方法的遞歸定義;當二叉樹的根不為空時,依次執(zhí)行如下3個操作:①按中序遍歷左子樹。②訪問根結(jié)點。③技中序遍歷右子樹。根據(jù)遍歷規(guī)則來遍歷本題中的二叉樹。首先遍歷F的左子樹,同樣按中序遍歷。先遍歷C的左子樹,即結(jié)點A,然后訪問C,接著訪問C的右子樹,同樣按中序遍歷C的右子樹,先訪問結(jié)點B,然后訪問結(jié)點D,因為結(jié)點D沒有右子樹,因此遍歷完C的右子樹,以上就遍歷完根結(jié)點F的左子樹。然后訪問根結(jié)點F,接下來遍歷F的右子樹,同樣按中序遍歷。首先訪問E的左子樹,E的左子樹為空,則訪問結(jié)點E,然后訪問結(jié)點E的右子樹,同樣按中序遍歷。首先訪問G的左子樹,即H,然后訪問結(jié)點G,最后訪問G的右子樹P。以上就把整個二叉樹遍歷一遍,中序遍歷的結(jié)果為ACBDFEHGP。因此,劃線處應填入“ACBDFEHGP”。

35.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應一個處理模塊。

36.cc。cc。解析:a是指針數(shù)組,每個數(shù)組元素存放的是字符數(shù)據(jù)的地址,數(shù)組a的3個元素分別指向字符串常量'aa'、'bb'和'cc',指針p賦予數(shù)組元素a[2]的值,即指向第3個字符串。

37.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。

38.100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=147100+2+1=103\r\n110+2+2=114\r\n120+2+3=125\r\n130+2+4=136\r\n140+2+5=147解析:靜態(tài)局部變量的生存期為整個程序的運行期間,而作用域為定義該變量的函數(shù)或局部范圍。自動變量的建立和撤銷都是由系統(tǒng)自動進行的,所以稱為自動變量。自動變量的作用域和生存期都為定義它的局部范圍內(nèi)。對同一函數(shù)的兩次調(diào)用之間,自動變量的值是不保留的。而靜態(tài)變量則保留。注意:局部變量和全局變量的定義及其作用范圍。

39.22132,2,1,3解析:本題考查++,--運算符和條件運算符的使用。

“表達式1?表達式2:表達式3”的功能是:表達式1的值若非0,則計算表達式2的值,且表達式2的值為最終結(jié)果;若表達式1的值為0,則計算表達式3的值,且為最終結(jié)果。

本題中,x=1,y=2時,x<y成立,輸出y的值2;y=2,z=3時,z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個輸出x的值不變?yōu)?,y的值為增加后的3。

40.*t或t[0)*s-*t或*s-t[0]或s[0]-*t或s[0]t[0]*t或t[0)*s-*t或*s-t[0]或s[0]-*t或s[0]t[0]解析:本題考查的知識點是字符型指針變量作為函數(shù)的參數(shù)以及序符串大小的比較.函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應的字符相等則接著比較下一個字符,一直到兩個字符串中對應字符不等,或者有一個為'\\0',此對應字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為'\\0'。且*s和*t相同,第一處應填“*t”或其他等價形式。根據(jù)題意可知第二處應填“*s-*t”或其等價形式。

41.D解析:主函數(shù)中首先定義了三個結(jié)構(gòu)體指針變量p,q,r。然后調(diào)用內(nèi)存分配函數(shù)分別為其分配地址空間,程序中變量q->num的值為20,指針變量q->next指向指針變量r,r->num的值為30,所以變量q->next->num的值為30,因此,表達式q->num+q->next->num的值為20+30=50。

42.C本題考查printf函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。

43.D解析:內(nèi)聚性是—個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強排列順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

44.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進行的運算。

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

46.C解析:字符數(shù)組即可以用{初始化列表}來初始化,也可以用一個字符串常量來初始化。但字符串常量系統(tǒng)會自動為其添加結(jié)束標記'\\0',故比實際長度要多一位,所以本題輸出為34,應該選擇C。

47.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項A不是C語言中的輸入語句,故選項A不正確;選項C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項C不正確;選項D不是C語言中的輸入語句,故選項D不正確:所以,4個選項中選項B符合題意。

48.C解析:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第—個字符必須是字母或下劃線。大寫字母和小寫字母被認為是兩個不同的字符,用戶在定義標識符時應做到“見名知意”,且不允許使用關(guān)鍵字作標識符。

49.D

50.B解析:本題考查對外部存儲類型的結(jié)構(gòu)體變量進行初始化。初始化后,data[0]x的值為10,data[0]y的值為100。輸出++(p->x)時,++(p->x)就相當于++data[0].x,這時data[0].x先自增,再使用,所以輸出11。

51.B解析:對二叉樹的前序遍歷是指:先訪問根結(jié)點,然后訪問左子樹,最后訪問右子樹,并且,在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左,右子樹。

52.C解析:本題考查邏輯或運算。因為b>a為真,即n=1,則m不需再計算,保持原值,因此k值為1,m值仍為0。

53.D解析:本題考查指針變量的賦值。

選項A)中,p1、p2本身都是地址變量,不能再將p1取地址賦給p2:選項B)中,不能將整型數(shù)據(jù)直接賦值給指針型數(shù)據(jù);選項C)中,*p2代表了一個整型變量,而*p2=p1這個語句試圖把一個地址值放入一個整犁變量中是錯誤的;選項D)中指針問的賦值是正確的。

54.A

55.A解析:gets函數(shù)和puts函數(shù)是庫函數(shù),必須包含的頭文件是stdio.h。

56.A

57.B解析:C程序是由函數(shù)構(gòu)成的。一個C源程序至少包括一個main函數(shù),也可以包含一個main函數(shù)和若干個其他函數(shù)。因此,函數(shù)是C程序的基本單位,被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫函數(shù),也可以是用戶根據(jù)需要自己編制設計的函數(shù)。

58.BB)【解析】軟件側(cè)試的目的:

\n①軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;

\n②一個好的測試用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤;

\n⑧一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤。

\n軟件側(cè)試的準則:

\n①所有測試都應追溯到需求;

\n②嚴格執(zhí)行測試計劃,排除測試的隨意性;

\n③充分注意測試中的群集現(xiàn)象:

\n④程序員應避免檢查自己的程序;

\n⑤窮舉測試不可能;

\n⑥妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。

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

60.C解析:預處理功能主要有以下三種:宏定義、文件包含和條件編譯,所以A不正確。預處理不是C語句,所以B不正確。預處理命令是由ANSIC統(tǒng)—規(guī)定的,編譯程序不能識別它們,D也不正確。

61.A該程序首先在定義變量時,對二維數(shù)組a[][N]進行賦值操作;調(diào)用函數(shù)fun,函數(shù)fun的功能是將二維數(shù)組中的a[0兒0]、a[1][1]、a[2][2]和a[3][3]賦值給一維數(shù)

溫馨提示

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

評論

0/150

提交評論