2022-2023年山西省朔州市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2022-2023年山西省朔州市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2022-2023年山西省朔州市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2022-2023年山西省朔州市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2022-2023年山西省朔州市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年山西省朔州市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.已知一個長度為32的有序表,若采用二分查找一個不存在的元素,則比較次數最多是()

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

2.設x和y均為int型變量,且x=10,y=3,則以下語句的輸出結果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

3.有以下程序:voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);print("%d\n",aa[0]);}程序運行后的輸出結果是______。

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

4.當變量c的值不為2、4、6時,值為“真”的表達式是()。

A.(c>=2&&c<=6)&&(c%2!=1)

B.(c==2)||(c==4)||(c==6)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)||(c!=3)||(c!=5)

5.判定一個順序棧st(最多元素為MaxSize)為空的條件是()。

A.st->top!B.st->top!C.top==-1D.top==MaxSize

6.

7.在目標串T[0,n-1]=”xwxxyxy”中,對模式串p[0,m-1]=”xy”進行子串定位操作的結果_______

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

8.以下程序的輸出結果是

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

9.設有定義“intx,y,z;”,且各變量已經賦正整數值,則以下能正確表示代數式“”的C語言表達式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

10.有以下程序:

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

A.abc+abc=defdef

B.abc+ABC=DEFdef

C.abcABCDEFdef

D.abcabcdefdef

11.設inta=12,則執(zhí)行完語句a+=a-=a*a后,a的值是()。

A.552B.264C.144D.-264

12.有以下程序

#include<stdio.h>

main()

{structnode{intn;structnode*next;}*p;

structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};

p=x:

printf("%d,",p->n);

printf("%d\n",P->next->n);

}

程序運行后的輸出結果是A.A.2,3B.2,4C.3,4D.4,6

13.在定義inta[5][6];后,數組a中的第10個元素是()。(設a[0][0]為第一個元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

14.已知一算術表達式的中綴表達式為a-(b+c/d)*e,其后綴形式為()

A.-a+b*c/dB.-a+b*cd/eC.-+*abc/deD.abcd/+e*-

15.在嵌套使用if語句時,C語言規(guī)定else總是A.和之前與其具有相同縮進位置的if配對

B.和之前與其最近的if配對

C.和之前與其最近的且不帶else的if配對

D.和之前的第一個if配對

16.有三個關系R,S和T如下:

其中關系T由關系R和S通過某種操作得到,該操作為()。A.選擇B.投影C.交D.并

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

A.宏替換不占用程序的運行時間

B.預處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預處理命令

D.宏名必須用大寫字母表示

18.已知一個大小為n的整型數組,現(xiàn)求該數組的全部連續(xù)子數組的元素之和的最大值,最優(yōu)算法的時間復雜度是()如:a[4]={2,-1,3,-4},它的全部連續(xù)子數組為{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它們的元素之和為{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值為4。

A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)

19.設有下列二叉樹:

對此二叉樹后序遍歷的結果為

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

20.健壯的算法不會因非法的輸入數據而出現(xiàn)莫名其妙的狀態(tài)()

A.對B.錯

二、2.填空題(20題)21.下述函數統(tǒng)計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

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

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

}

return【】;}

22.若a=10,b=20,則表達式!(a<b)的值是【】。

23.表示“整數x的絕對值大于5”時值為“假”的C語言表達式是______。

24.設有以下定義

struetss

{intinfo;struetss*link;}x,y,z;

且已建立如下圖所示鏈表結構:

請寫出刪除結點y的賦值語句【】。

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

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

main()

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

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

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

}

26.在最壞情況下,冒泡排序的時間復雜度為【】。

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

28.當數據的物理結構(存儲結構)改變時,不影響數據庫的邏輯結構,從而不致引起應用程序的變化,這是指數據的【】。

29.有以下程序:

voidf(intv,intw)

{intt;

t=v;v=w;w=t;

}

main()

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

if(x>y)f(x,y);

elseif(y>z)f(y,z);

elsef(x,z);

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

}

執(zhí)行后的輸出結果是【】。

30.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后的輸出結果是【】。

31.在面向對象方法中,信息隱蔽是通過對象的______性來實現(xiàn)的。

32.mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

33.實現(xiàn)程序可將磁盤中的一個文件復制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當于copy命令),假定文件在當前目錄下。請補全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

n=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

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

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));

}

35.以下程序中,for循環(huán)體執(zhí)行的次數是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

36.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

37.數據庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

38.二叉樹按某順序線索化后,其結點均有指向其前趨和后繼的線索,該說法是【】的。

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

40.下列程序的輸出結果是【】。

main()

{charb[]="Helloyou";

b[5]=0;

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

}

三、1.選擇題(20題)41.利用E-R模型進行數據庫的概念設計,可以分成3步:首先設計局部E-R模型,然后把各個局部E-R模型綜合成一個全局的模型,最后對全局E-R模型進行(),得到最終的E-R模型。

A.簡化B.結構化C.最小化D.優(yōu)化

42.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數D.算法程序中的指令條數

43.定義下列結構體(聯(lián)合)數組:structst{charname[15];intage;}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};執(zhí)行語句printf["%d,%c",a[2].age,*(a[3].name+2))的輸出結果為()。

A.15,AB.16,HC.16,AD.17,H

44.若指針p已正確定義,要使p指向兩個連續(xù)的整型動態(tài)存儲單元,則正確的語句是()。

A.p=2*(int*)malloc(sixeof(int))

B.p=(int*)calloc(2*sixeof(int))

C.p=(int*)malloc(2*sizeof(int))

D.p=2*(int*)calloc(sizeof(int))

45.以下對結構體類型變量的定義中,不正確的是_______。

A.typedefstructaa{intn;floatm;}aa;aatd1;

B.#defineaastructaaaa{intn;floatm;}td1;

C.struct{intn;floatm;}aa;structaatd1;

D.struct{intn;floatm;}td1;

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

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數據和相關文檔的集合

47.以下程序的輸出結果是main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf(“%d\n”,d;}

A.1B.0C.非0的數D.-1

48.下列程序的輸出結果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

49.當把4個表達式用做if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是()。

A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1

50.下面語句的輸出結果是______。printf("/od\n",strlen("\t\"\065\xff\n"))

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

51.有如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a%d,b=%d\n",a,B);}該程序的輸出結果是______。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

52.若要求定義具有10個血型元素的一維數組a,則以下定義語句中錯誤的是()。

A.#definmeN10inta[N];

B.#definen5inta[2*n];

C.inta[5+5];

D.intn=10,a[n];

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

A.C語言程序是以函數為基本單位的,整個程序由函數組成

B.C語言程序的一條語句可以寫在不同的行上

C.C語言程序的注釋行對程序的運行功能不起任何作用,所以注釋應該盡可能少寫

D.C語言程序的每個語句都以分號結束

54.有以下函數intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關于aaa函數的功能的敘述正確的是A.求字符串s的長度B.比較兩個串的大小C.將串s復制到串tD.求字符串s所占字節(jié)數

55.在C語言中,運算對象必須是整型數的運算符是()。

A.%B.\C.%和\D.**

56.以下能正確定義整型變量a,b和c,并為其賦初值1的語句是______。

A.inta=b=c=1;B.inta,b,c=1;C.a=b=c=1;D.inta=1,b=1,c=1;

57.下面不屬于軟件設計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

58.已有定義int(*q)(),指針q可以()。

A.指向函數的入口地址B.代表函數的返回值C.表示函數的類型D.表示函數返回值的類型

59.下列敘述中正確的是()。

A.在面向對象的程序設計中,各個對象之間具有密切的關系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述3種說法都不對

60.有以下程序:#include<stdio.h>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++)prinff("%2d",a[i][j]);prinff("\n");}}若運行時輸入:123<回車>,則輸出結果是()。

A.產生錯誤信息B.102000C.123000D.102030

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

#include<stdio.h>

main

{inty=10;

while(y--);

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

}

程序執(zhí)行后的輸出結果是()。

A.y=0B.y=-1C.y=lD.while構成無限循環(huán)

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

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

63.

64.

65.有以下程序:

程序運行后的輸出結果是()。A.235B.0235C.02356D.2356

66.

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

68.有以下程序:

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

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

69.以下選項中正確的定義語句是()。

70.非空循環(huán)鏈表所表示的數據結構()。

A.有根結點也有葉子結點B.沒有根結點但有葉子結點C.有根結點但沒有葉子結點D.沒有根結點也沒有葉子結點

71.

A.*P=*q;B.P=q;C.*P=&nl;D.P=*q;

72.設有定義

73.數據的存儲結構是指()。

A.存儲在外存中的數據

B.數據所占的存儲空間

C.數據在計算機中的順序存儲方式

D.數據的邏輯結構在計算機中的表示

74.

75.設有定義:intx=3;,以下表達式中,值不為l2的是()。

A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x.x+=6

76.

A.P=8;B.P=k;C.P=s[0];D.k=s;

77.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是()。

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

78.以下不合法的字符常量是()。

A."、、"B.’\”’C.’\018’D.\xcc"

79.有以下程序:

程序輸出結果是()。

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

80.若有以下程序段:

輸出結果是()。

A.2B.4C.8D.16

五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:先將字符串s中的字符按順序存放到t中,然后把S中的字符按正序連接到t的后面。例如,當s中的字符串為WXYZ時,則t中的字符串應為WXYZWXYZ。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidproc(char*s,char*t){inti,s1;s1=strlen(s);for(i=0;i<s1;i++)//****found****t[i]=s[s1];for(i=0;i<s1;i++)t[s1+i]一s[i];t[2*s1]=\O0;}voidmain{chars[100],t[100];system("CLS");print{("\nPleaseenterstrings:");scanf("%s",s);proc(s,t);printf("Theresultis:%s\n",t);}

六、程序設計題(1題)82.請編寫一個函數intproc(int*s,intt,int*k),用來求出數組的最大元素在數組中的下標并存放在k所指的存儲單元中。例如,輸入如下整數:876675896101999401980431451777則輸出結果為4,999。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.D

3.D解析:C語言覿定,實參變量對形參變量的數據傳遞是“值傳遞”,只由實參傳給形參,而不能由形參傳回來給實參。函數調用結束后,形參單元被釋放,實參單元仍保留并維持原值。本題要求輸出aa[0]的值,結果應為1。

4.D邏輯或運算中只要有一個運算量為真,結果就為真。當“c>=2&&c<=6”條件不成立時,c的值肯定不是2、3、4、5、6,“c!=3”與“c!=5”均成立,所以D選項的結果一定為真。故本題答案為D選項。

5.B

6.D

7.C

8.B解析:考查指針作為參數的函數調用。盡管C語言以傳值方式進行函數調用,但也可以通過傳遞指針的值(變量的地址)來達到修改實參變量值的目的,這是此題主要說明的問題。另外,應注意表達式\ue008*(z++)\ue009的值是*z,其后的z++在程序中無實際作用。函數調用時,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調用函數時,*x=a=10,*y=b=40,*z=c=20輸出結果為11,41,20,至此,已經可以肯定選項B)是正確的。在第一次輸出后,a=11,b=41,c=20,第二次輸出為:12,42,20。

9.A代數式“”的結果為小數,轉為C語言的表達式必須是浮點數。A選項由于1.0為浮點數,計算結果自動轉換為浮點數。選項B、C、D的表達式均為0,因此只有選項A正確。故本題答案為A選項。

10.A題干中,函數fun的功能是:判斷形參ch是否為大寫字母,若是大寫字母則改寫成小寫字母,其他字符不變。main函數中,通過while循環(huán),調用fun函數,將字符數組s中的各個字符傳入,將s中的大寫字母改成小寫字母,程序輸出:abc+abc=defdef。本題答案為A選項。

11.D

12.B解析:p指向x的第一個元素,所以p->n的值為2,p->next指向x+1,即指向x的第二個元素,所以p->next->n為4。

13.C

14.D

15.C解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結合,與書寫格式無關。所以選項C)為正確答案。

16.D

17.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。

18.B

19.D解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應該為:后序遍歷左子樹->,后序遍歷右子樹->,訪問根結點。按照定義,后序遍歷序列是DEBFCA,故答案為D。

20.A

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

22.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。

23.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達,“整數x的絕對值大于5”時值為“假”,即整數x的絕對值小于等于5,也就是整數x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達式為:(x>-5)&&(x<5)。

24.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:鏈表中結點的刪除,要刪除結點y,只需要讓結點x的指針域指向y結點的指針域所指向的后續(xù)結點就可,因此只需把結點z的地址賦給x的指針域就可以了,即讓結點x的指針域指向結點z。而結點z的地址保存在結點y的指針域中,因此只需把結點y的指針域賦值給結點x的指針域即可。

25.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。

26.

解析:冒泡排序法是通過相鄰數據元素的交換逐步將線性表變成有序。假設線性表的長度為n,則在最壞的情況下,冒泡排序需要經過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數為。

27.輸出結果輸出結果解析:注意:測試的基本方法和步驟。

28.物理獨立性數據獨立性是數據與程序間的互不依賴性,即數據庫中數據獨立于應用程序而不依賴于應用程序。也就是說,數據的邏輯結構、存儲結構與存取方式的改變不會影響應用程序。數據獨立性一般分為物理獨立性與邏輯獨立性兩級。

29.1321,3,2解析:函數f的形參是簡單變量,形參的改變不能影響實參,所以正確答案為1,3,2。

30.00解析:for循環(huán)執(zhí)行完成后t=5×4×3×2×1×0=0。

31.封裝封裝

32.str[i]或str+iistr[i]或str+i\r\ni

33.3!feof(f1)3\r\n!feof(f1)解析:要實現(xiàn)文件復制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數,加上程序名本身,故argc的值至少為3,因此第一空應填3。while循環(huán)中語句fputc(fgetc(f1),(f2);的目的是將f1中的字符依次讀出并寫入到f2對應的文件中去,直至文件f1結束為止,因此第二空為!feof(f1)。

34.gae

35.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。

36.yearleap=1leap

37.概念設計階段(數據庫概念設計階段)概念設計階段(數據庫概念設計階段)

38.錯誤錯誤解析:線索二叉樹是利用二叉鏈表存儲結構中的空鏈域來存放其前趨或后繼。由于二叉樹度為2的非終端結點無空鏈域,因此它沒有空鏈域用來存放前趨和后繼。

39.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。

40.HelloHello解析:執(zhí)行b[5]=0;是給數組的第6個元素賦值為0,即將Hello后的空格變?yōu)?。當輸出字符串時遇到0終止輸出。

41.D解析:在概念設計中按照模塊的劃分畫出每個模塊的E-R圖,然后把這些圖合成一張E-R圖作為全局模型,最后應該對全局E-R圖進行優(yōu)化,看看是否有重復和不合理的地方。不能只是進行簡單的合并。

42.C解析:算法的時間復雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據一個算法所編制出的程序之中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。所以,本題正確答案為C。

43.C解析:本題主要考查結構體數組。a[2].age為結構體a[2]的age成員,即16。a[3].name為指向結構體a[3]的name成員的第一個元素的指針,即指向“Z”,(a[3].name+2)將指針后移兩位指向第三個元素“A”,*(a[3].name+2))是取指針所指向地址的內容。

44.C解析:malloc函數的調用形式:malloc(size)。malloc函數用來分配size個字節(jié)的存儲區(qū),返回一個指向存儲區(qū)首地址基類型為void的地址,可以利用強制類型轉換將其換成所需的類型,這里需轉換為整型(int*)。若不能確定數據類型所占的字節(jié)數,可使用sizeof運算符來求得,這里要求兩個連續(xù)的整型動態(tài)存儲單元即2*sizeof(int)。4個選項中只有C符合題意。

45.C解析:本題的考查點是結構體類型變量的定義。在選項C中,aa是—個結構體變量,而不是結構體名,所以structaatd1;是非法的。

46.D解析:軟件是運行在計算機硬件之上的邏輯實體,包括程序、數據和相關的文檔,軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制。

47.A解析:由于單目運算符優(yōu)先級高于“&&”和“||”運算,所以先計算!a、!b和!c分別為“假”、“假”、“真”,然后是&&運算和“||”運算,原表達式就等價于“假”&&“假”||“真”又由于“&&”的優(yōu)先級高于“||”運算符,所以先計算“假”&&“假”,還是為假,最后是“假”||“真”為真。因此最后d被賦值為1,故最后輸出為1。

48.A解析:本題程序的功能是求1到99之間(包括1和99)所有奇數之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內,如果i是偶數,則執(zhí)行continue,跳過這一次循環(huán),執(zhí)行下—次循環(huán),否則求和和。最后輸出的值是1到99之間(包括1和99)所有奇數之和(1+99)*50/2=2500。

49.A整數k對2求余數的兩個結果只能是0和1,所以選項A)表示k除以2的余數,其結果是0或1。在選項B)、c)和D)中包括算術求余運算符“%”,關系等于運算符“-”和關系不等于運算符“!=”以及邏輯非運算符“!”。而邏輯運算符與賦值運算符、算術運算符、關系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術運算符、關系運算符、(邏輯“與”)、?(邏輯“或”)、賦值運算符。選項B)含義是判斷表達式k%2的結果是否等于1、選項C)的含義是判斷表達式k%2的結果是否不等于0,選項D)含義是判斷表達式!k%2的結果是否等于1,所以選項B)、C)和D)的禽義相同。

50.C解析:在C語言中,以“\\”開頭的字符均為轉義字符,其中“\\”后可跟1~3位八進制數或在“\\”后跟字母x及1~2位十六進制數,以此來代表一個特定的字符。

51.A解析:在這個switch語句中,因為x的值為1,所以執(zhí)行case1:后面的a++,這樣a=1。但又由于其下沒有break語句,所以其后面的語句“a++;b++”也將被執(zhí)行,這樣一來,a=2,b=1。

52.D解析:C語言規(guī)定,在定義數組時數組名后的方括號中必須是常量表達式,不能包含變量。因此,選項D中用變量n來定義數組的大小是錯誤的。故應該選擇D。

53.C解析:本題涉及C語言的3個基本知識點:①C語言的源程序是由函數構成的,函數是其基本單位,每一個函數完成相對獨立的功能,其中只能包括一個主函數;②C語言規(guī)定每個語句以分號結束,其書寫格式是自由的,一條語句可以寫在不同的行上,或者一行也可以寫多條語句;⑧注釋行雖然對程序的運行不起作用,但是它可以方便程序員閱讀,提高程序的可讀性和可移植性,所以書寫注釋行還是很有必要的。

54.A解析:aaa()函數中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針\u3000t不斷遞增,直到t指向字符串結束標志處。當t指向結束標志處時,由于后綴++運算符的原因,它還會被再遞增1,所以接卜來的t--;語句讓它回到結束標志處。最后返回t-s,因此s還是指向字符串第1個字符處,而t指向了字符串結尾,故返回值為字符串的長度值。

55.A解析:在C語言中,“%”運算符兩側的運算數必須是整型。

56.D解析:選項A中,變量b、c未定義;選項B中,a、b未賦值;選項C中a、b、c均未定義。

57.C解析:軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關的概念。①抽象是一種思維工具,就是把事物本質的共同特性抽出來而不考慮其他細節(jié)。②模塊是指可以單獨命名且可編址的元素。如高級語言中的過程、函數、子程序等。③信息隱蔽是指在一個模塊內包含的信息(過程或數據),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。

58.A解析:本題考查的是指向函數的指針。函數指針的定義方式是:類型標識符(*指針變量名)()。其中,“類型標識符”為函數返回值的類型;“指針”指向函數的入口地址。

59.C本題考查對面向對象的理解。面向對象的程序設計是對象模擬問題領域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現(xiàn)對象之間的相互聯(lián)系。

60.B解析:程序中a[3)[2]={0}將數組元素全部初始化為0,指針變量ptr指向包含2個元素的一維數組。在第一個for語句的循環(huán)體中ptr=a+i;語句用于將指針變量ptr指向第i行的數組元素,通過兩次循環(huán),分別給二維數組a的第。行的第1個元素和第1行的第1個元素賦了值1和2,即a[0][0]=1,a[1][0]=2。

61.B\ny--的作用是先取其值作

溫馨提示

  • 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

提交評論