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

下載本文檔

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

文檔簡介

2022年山西省忻州市全國計算機等級考試C語言程序設計測試卷一(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.要求通過while循環不斷讀入字符,當讀入字母N時結束循環,若變量已正確定義,下列正確的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch);

2.廣義表((a),a)的表頭是()。

A.aB.()C.(a)D.((a))

3.在排序方法中,元素比較次數與元素的初始排列無關的是()

A.Shell排序B.歸并排序C.直接插入排序D.選擇排序

4.

有以下程序:

main

{intx=102,y=012;

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

}

執行后輸出結果是()。

A.10,01B.02,12C.102,10D.02,10

5.以下不屬于C語言整數的是()。

A.12fB.25uC.-32D.+20L

6.在C語言中,函數隱含的類型是()

A.autoB.staticC.intD.void

7.當輸入為"hello?"時,下面程序的執行結果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

8.設有如下類型說明語句:typedefstruct{intnum;struct{inty,m,d;}date;}PER;則以下定義結構體數組并賦初值的語句中錯誤的是()。

A.PERst[2]={{1001},2008,8,1,{1002},2006,5,20};

B.PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};

C.PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};

D.PERst[2]={1001,2008,8,1,1002,2006,5,20};

9.以下程序段運行后x的值為()。inti,j,x=0;for(i=3;i>=1;i--)for(j=1;j<=i;j++)x=x+2A.8B.14C.10D.12

10.

11.將E-R圖轉換到關系模式時,實體與聯系都可以表示成________。

A.屬性B.關系C.鍵D.域

12.由3個結點可以構造出______種不同形態的二叉樹。

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

13.以下函數的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復制C.計算字符串的長度D.字符串的連接

14.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序運行后的輸出結果是()。A.0B.1C.2D.3

15.排序的算法很多,若排序的穩定性和不穩定性分類,則()是不穩定排序。

A.冒泡排序B.歸并排序C.直接插入排序D.希爾排序

16.以下說法錯誤的是()。

A.由3種基本結構組成的結構化程序不能解決過于復雜的問題

B.由3種基本結構組成的結構化程序能解決一些簡單的問題

C.由3種基本結構組成的結構化程序能解決遞歸問題

D.由3種基本結構組成的結構化程序能解決數學上有解析解的問題

17.下列排序算法中,其時間復雜度和記錄的初始排列無關的是()

A.插入排序B.堆排序C.快速排序D.冒泡排序

18.下面屬于黑盒測試方法的是()。

A.邊界值分析B.路徑覆蓋C.語句覆蓋D.邏輯覆蓋

19.下列二維數組的說明中,不正確的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

20.

二、2.填空題(20題)21.以下程序輸出的最后一個值是【】。

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<5;i++)printf("%d\n",ff(i));}

22.算法的工作量大小和實現算法所需的存儲單元多少分別稱為算法的【】。

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

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

24.設有以下定義和語句,則*(*(P+2)+1)的值為【】。

int[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

25.下列程序將二維數組a的行和列元素互換后存放到另一個二維數組b中。請填空。

main()

{inta[2][3]={{1,2,3},{4,5}},b[3][2],i,j;

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

{for(j=0;j<3;j++)

}

}

26.設Y是int型變量,請寫出判斷Y為奇數的關系表達式【】。

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

28.若a是int型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。

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

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

main()

{charc=′z′;

printf("%c",c-25);}

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

32.能把計算機處理好的結果轉換成為文本、圖形、圖像或聲音等形式并輸送出來的設備稱為【】設備。

33.下列程序執行輸出的結果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(a);

}

main()

{inta=2,i,k;

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

k=f(a++);

printf("%dh",k);

}

34.設a,b,c為整型數,且a=2,b=3,c=4,則執行完以下語句后,a的值是【】。

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

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

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

36.數據模型是數據庫系統中用于提供信息表示和操作手段的結構形式。實際數據庫系統中所支持的數據模型主要有層次模型、網狀模型和【】3種。

37.以下程序的功能是將字符串s中的數字字符放入d數組中,最后輸出d中的字符串。

例如,輸入字符串:abc123edf456gh,執行程序后輸出:123456。請填空。

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

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

d[j]='\0';

puts(d);

}

38.在先左后右的原貝嚇,根據訪問根結點的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

39.下列程序的輸出結果是16.00,請填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

40.下面程序的運行結果是______。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;

sub(s,7,SLZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charCh;

while(t1<t2)

{ch=*(a+t

三、1.選擇題(20題)41.有下列二叉樹,對此二叉樹中序遍歷的結果為()。

A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE

42.請選出可用作C語言用戶標識符的是

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,--abc,Case

D.2a,Do,Sizeof

43.判斷字符串s1是否大于字符串s2,應該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

44.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}執行后輸出結果是

A.550550B.680680C.580550D.580680

45.設有以下語句:chara=3,b=6,c;c=ab<<2;則c的二進制值是()。

A.11011B.10100C.11100D.11000

46.某個C程序中有4個函數t、u、v和w,執行時t調用了u和v,u調用了t和w,v調用了w,w調用了t和v。以下敘述中正確的是()

A.這4個函數都間接遞歸調用了自己

B.除函數t外,其他函數都間接遞歸調用了自己

C.除函數u外,其他函數都間接遞歸調用了自己

D.除函數v和w外,其他函數都間接遞歸調用了自己

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

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

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

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

48.在下列敘述中,正確的一條是()

A.語句int*pt中的*pt是指針變量名

B.語句"int*p=a;"等價于"int*p;p=&a[0];”

C.運算符*和&都是取變量地址的運算符

D.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

49.若變量c為char類型,能正確判斷出c為小寫字母的表達式是

A.'a'<=c<='2'

B.(c>='a')||(c<='2')

C.('a'<=c)and('2'>=c)

D.(c>='a')&&(c<='z')

50.下面程序段的輸出結果是()。chara[]="lanuage",*p;p=a;while(*P!='u'){printf("%c",*p-32);P++;}

A.LANGUAGEB.languageC.LAND.langUAGE

51.對于下述程序,在方式串分別采用“wt”和“wb”運行時,兩次生成的文件TEST的長度分別是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fpute('\n',fp);fputc('C',fp);fclose(fp);}

A.7字節、7字節B.7字節、5字節C.5字節、7字節D.5字節、5字節

52.下列關于棧的敘述中正確的是()

A.在棧中只能插入數據B.在棧中只能刪除數據C.棧是先進先出的線性表D.棧是先進后出的線性表

53.下列程序的輸出結果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}

A.49B.36C.25D.64

54.若fp已正確定義并指向某個文件,當未遇到該文件結束標志時函數feof(fp)的值為()

A.0B.1C.-1D.一個非0值

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

56.若有下列說明語句int(*p)();則標識符p代表的是()

A.一個用于指向函數的指針變量,函數返回值的類型為int型

B.一個帶回值類型為整型的函數名

C.一個用于指向整型數據的指針變量

D.一個帶回值類型為指針類型的函數名

57.在C語言中,函數的隱含存儲類別是______。

A.autoB.staticC.externD.無存儲類別

58.若要打開A盤中user子目錄下名為aaa.txt的文本文件進行讀、寫操作,下面符合此要求的函數調用是()。

A.fopen("A:\user\aaa.txt","r")

B.fopen("A:\\user\\aaa.txt","r=")

C.fopen("A:\user\aaa.txt","rb")

D.fopen("A:\\user\\aaa.txt","w")

59.以下敘述中正確的是______。A.預處理命令行必須位于源文件的開頭

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

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

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

60.有以下程序main(){chara[]="abcdefg",b[10]="abedefg";pfintf("%d%d\n",sizeof(a),sizeof(b));}執行后輸出結果是

A.77B.88C.810D.1010

四、選擇題(20題)61.不能把字符串:Hello!賦給數組b的語句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

62.現有如下程序段:

則程序段的輸出結果為()。

A.7,8

B.8,8

C.7,10

D.8,10

63.

64.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是()。A.A.無輸出B.結果是不確定C.-1D.1

65.

66.

67.數據庫管理系統中負責數據模式定義的語言是()。A.數據定義語言B.數據管理語言C.數據操縱語言D.數據控制語言

68.計算機能直接執行的程序是()。

A.源程序B.目標程序C.匯編程序D.可執行程序

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

70.設有定義:intx[2][3];,則以下關于二維數組X的敘述錯誤的是()。

A.x[0]可看做是由3個整型元素組成的一維數組

B.x[0]和x[l]是數組名,分別代表不同的地址常量

C.數組X包含6個元素

D.可以用語句x[o]=0;為數組所有元素賦初值0

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

A.1B.7C.9D.13

72.(43)下列關于隊列的敘述中正確的是______。

A.在隊列中只能插入數據

B.在隊列中只能刪除數據

C.隊列是先進先出的線性表

D.隊列是先進后出的線性表

73.

74.

75.

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

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

76.

77.

78.有以下程序:

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

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

79.從循環體內某一層跳出,繼續執行循環外的語句是:___________。

A.break語句B.return語句C.continue語句D.空語句。

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

A.使用三種基本結構構成的程序只能解決簡單問題

B.結構化程序由順序、分支、循環三種基本結構組成

C.C語言是-種結構化程序設計語言

D.結構化程序設計提倡模塊化的設計方法

五、程序改錯題(1題)81.下列給定的程序中,函數proc()的功能是:計算并輸出k以內最大的10個能被13或17整除的自然數之和。k的值由主函數傳人,若k的值為600,則函數的值為5671。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.N名學生的成績已在主函數中放人一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun,其功能是:求出平均分,并由函數值返回。

例如,若學生的成績是:8576698591726487,則平均分應當是:78.625。注意:部分源程序在文件PROGl.C中。

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填人你編寫的若干語句。

參考答案

1.A解析:while循環的執行過程如下:(1)計算while后面圓括號中表達式的值.當值為非0時,執行步驟(2);當值為0時,執行步驟(4)。(2)執行循環體一次。(3)轉去執行步驟(1)。(4)退出循環。在選項A)中,表達式(ch=getchar())!='N'表示輸入的字符不等于N,如果這個條件表達式成立,則執行循環體,打印輸出輸入的字符。如果這個條件表達式不成立,即輸入的字符等于N,則退出循環.所以選項A)為正確答案。

2.C

3.D

4.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個十進制整數,每個整數域寬是2。而在C語言中規定:當域寬小于實際寬度時域寬不起作用,按實際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進制整數12,等于十進制的10)。所以,4個選項中選項C符合題意。

5.AC語言中整型常量,從表示形式來看,有十進制、八進制或十六進制;從符號位來看,有有符號整數和無符號整數兩類。選項A的“12f”是float類型的實數,不是整數;選項B的“25u”屬于無符號整數;選項C的“-32”是十進制形式的有符號整數;選項D的“+20L”是十進制形式的長整數。故本題答案為A選項。

6.C

7.A本題考查getchar函數與putchar函數,通過9etchar函數讀入字符,并通過putchar函數將字符逐個輸出,當用戶輸入“?”時停止輸出,且c是一個字符變量只占一個字節。

8.A結構體PER類型定義了兩個成員:num為整型,date為嵌套的結構體類型。初始化時,成員值的順序必須與成員定義的順序相同,num必須是整數,date必須是用花括號標注的嵌套的3個整數。選項A中,{1001}和{1002}都不是整數,所以選項A錯誤。故本題答案為A選項。

9.D

10.A

11.B解析:關系數據庫邏輯設計的主要工作是將\ue008E-R\ue009圖轉換成指定RDBMS中的關系模式。首先,從E-R圖到關系模式的轉換是比較直接的,實體與聯系都可以表示成關系,E-R圖中屬性也可以轉換成關系的屬性,實體集也可以轉換成關系。

12.C難易程度:易

13.C

14.A根據C語言運算符的優先級與結合性,先計算a/b,結果為l,再將a/b的結果與C做按位與運算,即l與2做按位與運算,其結果為0。

15.D

16.A順序結構、選擇結構、循環結構是3種基本結構,由3種基本結構構成的程序稱為結構化程序,由3種基本結構組成的算法可以解決任何復雜的問題,選項A錯誤。本題答案為A選項。

17.B

18.A黑盒測試方法主要有等價類劃分、邊界值分析、因果圖、錯誤推測等。白盒測試的主要方法有邏輯驅動、路徑測試等,主要用于軟件驗證。

19.D解析:C語言規定,對于二維數組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式:二維數組的一般定義格式是:類型說明符數組名[常量表達式][常量表達式]。

20.D

21.120120解析:靜態變量的類型說明符是static,靜態局部變量屬于靜態存儲方式,它具有以下特點:

①靜態局部變量屬于靜態存儲類別,在靜態存儲區內分配存儲單元。在程序整個運行期間都不釋放。

②對靜態局部變量是在編譯時賦被值的,即只賦被值一次,在程序運行時它已有被值。以后每次調用函數時不再重新賦初值而只是保留上次函數調用結束時的值。

③如在定義局部變量時不賦初值的話,則對靜態局部變量來說,編譯時自動賦初值0(對數值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態變量在定義時,系統并不會自動給它賦被值)

④雖然靜態局部變量在函數調用結束后仍然存在,但其他函數是不能引用它的。

本題中函數的功能是:與for語句一起求一個整數的階乘。

22.時間復雜度和空間復雜度時間復雜度和空間復雜度

23.3030解析:考查for循環的使用。題目中for(;;)表示:for循環的初始化表達式,條件表達式和修正表達式都省略了,表示進行for循環和for循環的終止都沒有限制。

24.6060解析:本題定義了一個3行2列的二維數組a,并定義了一個指向兩個元素的一維數組指針p,讓p指向二維數組a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。

25.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本題考查二維數組的基本知識。它是要將一個二維數組,的行和列元素互換后存放到另一個二維數組b中,只要將數組a的行標和列標互換,然后賦給數組b即可。

26.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數可以用變量與2取模,判斷結果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。

27.33解析:條件表達式的一般形式為;表達式1?表達式2:表達式3條件運算符的執行順序:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值;若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值。30/3=10>0,所以執行p/10,結果為3。

28.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a=a-a*a=4-4*4=-12;a+=a,即a=a+a=-24。

29.軟件開發

30.aa解析:'z'的ASCII碼值為122,經過c-25運算后,得97,以字符形式輸出是a。

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

32.輸出輸出

33.88解析:第1次for循環,i=0,調用函數f(2),然后將a的值加1,在f()函數中,變量c為static類型,所以c=8:第2次for循環,i=1,調用函數f(3),然后將a的值加1,調用函數f(3)時,a=c++8,所以k=8。

34.28

35.66解析:經過分析將遞歸函數寫成其數學表達式如下:

本題中定義了一個長度為3的數組aa并初始化。接著調用遞歸函數f,由上面的數學表達式以計算其返回值s=1+2+3=6,所以空格處應該填6。

36.關系模型關系模型

37.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:根據題意和程序可知要填空的內容是:將字符申s中的數字字符放入d數組的條件。

38.中序中序解析:在先左后右的原則下,根據訪問根結點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前療遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然先遍歷右子樹,然后訪問根結點,最后遍歷左子樹。

解析:本題以浮點格式輸出z值,寬度為5,有2位小數。應該注意的是,兩個整數運算結果仍為整數,如1/2的結果為0。本題可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值為6.6。

40.本題主要考查了字符變量可參與的運算。因為字符在計算機中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術運算等,某字符的大寫字母的ASCII碼值比它對應的小寫字母ASCII碼值小32。\r\n\r\n

41.B解析:對二又樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。在遍歷左,右子樹時,注意依舊按照“左子樹—根結點—右于樹”的順序。

42.B解析:C語言規定用戶標識符由字母、數字和下畫線組成,且第一個字符必須是字母或下畫線,可見選項C),D)是錯誤的;此外,C語言不允許用戶將關鍵字作為標識符,而選項A)中的void正是C語言的關鍵字。

43.C解析:本題考查字符串比較函數strcmp()。調用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區的首地址。函數功能:比較字符串str1和str2,當str1<str2時,返回值為負數;當str1=str2時,返回0;當str1>str2,返回值為正數(注意:不能使用關系運算符比較兩個字符串的大小)。

44.C解析:本題中首先定義了結構體類型STU,該結構體由一個長度為10的字符數組、兩個整型變量num和Score組成。在主函數中,定義了一個長度為5的結構體數組s并賦初值,一個指針數組p和一個指針變量t,接著將數組s中各元素的地址依次賦給指針數組p中的各成員。然后通過兩個for循環將數組p按Score的值從小到大的順序排列。因此最后輸出的p[1]->Score的值為550,而數組s[1].Score的值為580。

45.A解析:“<<”是C語言中規定的左移運算符,例如,a=a<<2,是將a的二進制數左移兩位,左移一位相當于該數乘以2,左移兩位相當于該數乘以2的2次方;“^”是異或運算符,所以,c的二進制值應為00011011。

46.A

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

48.D

49.D解析:字符型數據在計算機內部是以ASCII存儲的,英文大寫字母和小寫字母在ASCII碼表中都是連續的,大寫字母A到Z是從65到90,小寫字母a到z是97到122。所以只要變量c大于a并且小于z就能保證其為小寫字母。

50.C解析:本段程序的作用是輸出字符串'lanuage'中字母u之前的字符,并將其轉化為大寫字母。

51.B解析:以“wt”方式寫入的是字符文件,轉義字符“\\n”被看做兩個字符來處理。而“wb”方式寫入的是二進制文件,轉義字符“\\n”是一個字符。

52.D解析:棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作,允許插入和刪除的一端稱為棧頂,另一端稱為棧底。一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛被插入的元素,所以棧也被稱為“先進后出”表或“后進先出”表。

53.C解析:本題考查if語句.當執行到第一個滿足(i*i>=20)&&(i*i<=100)這個條件的i出現時,通過break語句跳出循環,執行下列的printf語句。

54.A解析:文件尾測試函數feof()的應用,讀取文件時,當文件中的數據全部讀完后,文件位置指針將位于文件的結尾。此時如果讀數據,將會出現錯誤。為了保證讀寫數據的正確性,需要進行文件尾測試,文件尾測試使用函數feof(),它的功能是測試fp指向的文件是否到達文件尾。若到達文件尾,返回值為非0,否則返回值為0。在本題中fP指向的某文件還沒有到了文件尾,因此返回0。

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

56.A

57.C解析:C語言規定,只要在定義函數時不進行存儲類型的顯式說明,函數的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數調用。

58.B解析:選項A和C在字符串中用到特殊字符'\\',該字符在字符串中用作轉義字符的開始,所以不能單獨使用,若要在字符串常量顯示該字符可使用轉義字符'\\\\',故選項A和C不正確。選項D中fopen()函數的第二個參數w表示以只寫的方式打開文件,不符合題意,故應該選擇B。

59.D本題主要考查宏的一些基本概念。通常,預處理命令位于源文件的開頭,但不一定必須位于開頭,也可以寫在函數與函數之間;由于預處理命令的末尾不加分號,不以分號來區分一條宏命令,所以,不能在一行上寫多條預處理命令,只能寫一條,否則,系統處理時就會把它當做一條命令

溫馨提示

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

評論

0/150

提交評論