2021-2022年湖南省衡陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第1頁
2021-2022年湖南省衡陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第2頁
2021-2022年湖南省衡陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第3頁
2021-2022年湖南省衡陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第4頁
2021-2022年湖南省衡陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年湖南省衡陽市全國計算機等級考試C語言程序設計真題二卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.某二叉樹的前序和后序序列正好相反,則該二叉樹一定是_____的二叉樹

A.空或者只有一個結點B.高度等于其結點數C.任一結點無左孩子D.任一結點無右孩子

2.以下選項中,能用作用戶標識符的是()。

A._0_B.8_8C.voidD.unsigned

3.有以下程序

#include<stdio.h>

main()

{ints;

scanf(“%d”,&s);

while(s>0)

{switch(s)

{case1;printf(“%d”,s+5);

case2:printf(“%d”,s+4);break;

case3:printf(“%d”。s+3);

default:printf(“%d”,s+1);break;

}

seanf(“%d”,&s);

}

}

運行時,若輸入12345O<回車>,則輸出結果是A.6566456B.66656C.66666D.6666656

4.有以下定義:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能輸出字母M的語句是()。

A.printf(“%c\n”,class[2].name[0]);

B.printf(“%c\n”,class[3].name[0]);

C.printf(“%c\n”,class[3].name[1]);

D.printf(“%c\n”,class[2].name[1]);

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

A.數據庫系統是一個獨立的系統,不需要操作系統的支持

B.數據庫技術的根本目標是要解決數據的共享問題

C.數據庫管理系統就是數據庫系統

D.以上三種說法都不對

6.有以下程序:#include<stdio.h>main{inta=1,b=2;while(a<6){b+=a;a4+=2;b%=10;)printf("%d,%d\n",a,b);}程序運行后的輸出結果是()。A.5,11B.7,1C.7,11D.6,1

7.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

8.函數調用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復制到字符串str3之后

C.將字符串str2復制到字符串str1之后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串strl復制到字符串str3中

9.關于結構化程序設計原則和方法的描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOT0語句

D.語言中若沒有控制結構,應該采用前后一致的方法來模擬

10.以下各選項中的代碼段執行后,變量y的值不為1的是()。A.intx=5,y=0;if(5)y=1;

B.intx=5,y=0;if(x)y=1;

C.intx=10,y=0;if(x=y)y=1;

D.intx=5,y=10;if(x=y)y=1;

11.下面不合法的常量數據是()。

A..023E-5B.0x3f7b8a90C.‘\0x6d’D.‘\0123321’

12.設有6個結點的無向圖,該圖至少應有()條邊才能確保是一個連通圖。

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

13.輸入序列為(A,B,C,D),不可能得到的輸出序列是______.

A.(A,B,C,D)B.(D,C,B,A)C.(A,C,D,B)D.(C,A,B,D)

14.執行完下列語句段后,i值為()。A.A.2B.4C.8D.無限遞歸

15.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執行程序時,給變量X輸入10,程序的輸出結果是()。A.55B.54C.65D.45

16.在存儲數據時,通常不僅要存儲各數據元素的值,而且還要存儲()。

A.數據的處理方法B.數據元素的類型C.數據元素之間的關系D.數據的存儲方法

17.若有定義“floata=25,b,*p=&b;”,則下列對賦值語句“*p=a;”和“p=&a;”的正確解釋為()。

A.兩個語句都是將變量a的值賦予變量P

B.*p=a是使P指向變量a,而p=&a是將變量的值賦予變量指針P

C.*p=a是將變量a的值賦予變量b,而&a是使P指向變量a

D.兩個語句都是使P指向變量a

18.若有定義“inta,b,c;”,想通過語句“scanf(“%d,%d%d”,&a,&b,&c);”把1、2、3分別賦給變量a、b、c,則正確的鍵盤輸入是()。

A.1,2,3<Enter>

B.1,2<tab>3<Enter>

C.1<Enter><tab>2<tab>3

D.1<Enter>2<Enter>3

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

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

20.若有"doublea;",則正確的輸入語句是()。

A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%1f",&a)

D.scanf("%1e",&a);

二、2.填空題(20題)21.軟件結構是以【】為基礎而組成的一種控制層次結構。

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

main()

{unsigneda=0112,x;

x=a>>3;

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

}

23.閱讀程序:

#include<string.h>

#include<strdio.h>

strle(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!='0')num++;

while(b[n])

{*(a+num)=b[n];num++;n++;}

return(num);

}

main()

{charstrl[81],str2[81],*p1=strl,*p2=str2;

gets(p1);gets(p2);

prinf("%d\n",strle(p1,p2));

}

運行上面的程序,如果從鍵盤上輸入字符串qwerty和字符串abcd,則程序的輸出結果是【】。

24.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。

25.用下面語句調用庫函數malloc,使單精度型指針p指向具有40個字節的動態存儲空間,請填空。

p=(float*)【】;

26.有以下程序

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar(

n1=ch1-'0';n2-n1*10+(ch2-'0');

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

}

程序運行時輸入:12<回車>,執行后輸出結果是______。

27.有以下語句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請填空。

n1=10

n2=20

28.如下語句printf("%c\n",'B'+40);在執行后的輸出結果是【】。

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

30.當運行以下程序時,輸入abcd,程序的輸出結果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

31.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發現錯誤的位置并改正錯誤。

32.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

33.以下程序中函數huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數返回字符串“yes!”,否則函數返回字符串“no!”,并在主函數中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adsda。請填空。

#include<stdio,h>

#include<string,h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*pl++!=*p2--){t=1;break

if(【】)return("yes!");

elsereturn("no!");

}

main(){charstr[50];

printf("Iaput:");scanf("%s",str);

printf("%s\n",【】);

34.由25人圍坐成圓圈,先由任意一人開始順時針沿用1~25依次編號,然后從1號開始順時針報數(1、2、3…),凡報5的倍數者出圈,剩下者繼續報數,求出最后出圈者的編號。

#include

main()

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{

if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",,j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

35.實體之間的聯系可以歸結為一對一聯系、一對多(或多對多)的聯系與多對多聯系。如果一個學校有許多教師,而一個教師只歸屬于一個學校,則實體集學校與實體集教師之間的聯系屬于______的聯系。

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

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

37.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結果是______。

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

39.以下isprime函數的功能是判斷形參a是否為素數,是素數,函數返回1,

否則返回0。請填空。

intisprime(inta)

{inti;

for(i=2;i<=a/2;i++)

if(a%i==0)【】;

【】;

}

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

三、1.選擇題(20題)41.設有以下說明,則不正確的敘述是()。unionun{inta;chatb:floatc;}arr;

A.arr所占的內存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數參數

D.不能在定義art時對它初始化

42.若主函數中有以下定義和語句:main(){doublea[3][4];……fun(a);}則正確的fun函數的首部是()

A.voidfun(double*s)

B.fun(double*s[4])

C.fun(double(*s)[3])

D.voidfun(double(*s)[4])

43.設有如下關系表:

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

44.常采用的兩種存儲結構是()。

A.順序存儲結構和鏈式存儲結構B.散列方法和索引方式C.鏈表存儲結構和數組D.線性存儲結構和非線性存儲結構

45.個人計算機屬于()。

A.小巨型機B.中型機C.小型機D.微機

46.編制一個好的程序,首先要保證它的正確性和可靠性,還應強調良好的編程風格,在書寫功能性注釋時應考慮

A.僅為整個程序作注釋B.僅為每個模塊作注釋C.為程序段作注釋D.為每個語句作注釋

47.有下列二叉樹,對此二叉樹中序遍歷的結果為()。

A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ

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

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

49.以下對結構體類型變量的定義中,不正確的是()

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

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

D.struct{intn;floatm,}tdl;

50.設a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則運算后,n的值為______。

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

51.以下能正確定義數組并正確賦初值的語句是______。

A.intN=5,b[N=[N];

B.inta[1][2]={{1},{3}};

C.intc[2][]={{1,2},{3,4}};

D.intd[3][2]={{1,2},{34}};

52.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}則程序運行后向文件輸出的結果是()

A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh

53.以下程序輸出結果是#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%d\n",a);}

A.21B.32C.33D.11

54.C語言函數返回值的類型是由______決定的。

A.return語句中的表達式類型B.調用函數的主調函數類型C.調用函數時臨時D.定義函數時所指定的函數類型

55.下列程序的運行結果是()。#include<stdio.h>main(){inta=0,b=4,c=0,d=10,x;if(a)d=d-10;elseif(!b)if(!c)x=15;elsex=25;printf("%d\n",d);}

A.5B.3C.20D.10

56.下列選項中不合法的十六進制數是()。

A.OxffB.OXllC.OxlgD.OXabc

57.以下函數值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

58.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

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

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

60.下列程序的輸出結果是()。#include<stdio.h>voidp(int*x){printf("%d",++*x);}voidmain(){inty=3;p(&y);}

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

四、選擇題(20題)61.若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是()。

A.函數的形參和實參分別占用不同的存儲單元

B.形參只是形式上的存在,不占用具體存儲單元

C.同名的實參和形參占同一存儲單元

D.函數的實參和其對應的形參共占同一存儲單元

62.

63.

64.以下對C語言函數的有關描述中,正確的是()。

A.C函數可以遞歸調用也可以嵌套調用

B.在C中,調用函數時,只能把實參值傳給形參,形參值不能返回給實參

C.沒有返回值的函數不能被使用.

D.C程序中有調用關系的所有函數必須放在同一個源程序文件中

65.若有以下定義和語句:

則輸出結果是()。

A.107B.105C.55D.58

66.

67.

68.

有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的輸出結果是()。

A.xyyxB.yyyyC.yyxxD.yxyx

69.已知數據表A中每個元素距其最終位置不遠,為節省時間,應采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

70.已知函數的調用形式:fread(buf,size,count,fp),參數buf的含義是

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

B.一個文件指針,指向要讀的文件

C.一個指針,指向要讀入數據的存放地址

D.一個存儲區,存放要讀的數據項

71.在關系數據庫中,用來表示實體之間聯系的是()。

A.二維表B.E—R圖C.元組D.文件

72.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運算符

B.定義語句中的*號是一個說明符

C.定義語句中的p只能存放double類型變量的地址

D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P

73.

74.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數f,正確的宏定義語句為()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

75.有兩個關系R、S如下:

由關系R通過運算得到關系s,則所使用的運算為()。

A.選擇B.投影C.插入D.連接

76.C語言中最簡單的數據類型包括()。

A.整型、實型、邏輯型B.整型、實型、字符型C.整型、字符型、邏輯型D.字符型、實型、邏輯型

77.有以下程序:

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

A.11,12B.12,13C.13,14D.14,11

78.一個函數內有數據類型說明語句如下:

doublex,y,z(10)

關于此語句的解釋,下面說法正確的是()。

A.z是一個數組,它有10個元素

B.z是一個函數,小括號內的10是它的實參的值

C.x是一個變量,小括號內的10是它的初值

D.語句中有錯誤,因為“z(10)”應該為“z[10]”

79.

有以下程序:

#include<stdio.h>

main

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break:

else

i--;

}

i+=11:

a+=i:

}

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

}

程序的輸出結果是()。

A.62B.63C.33D.32

80.

若輸入“abcdef”“abdef”,下述程序的輸出結果為()。

#include<stdio.h>

#include<string.h>

main

{intn;

chars1[20],s2[20],*p1,*p2;

scanf("%s",s1);

scanf("%S",s2);

p1=s1;

p2=s2;

n=strcmp(p1,p2);

printf("Vood\n",n);

}

A.-1B.0C."abcdef"D."abdef"

五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,輸入opdye,則應輸出deopy。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charc;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+1;j<strlen(str);j++)

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=c;

}

}

voidmain

{

charstr[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

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

proc(str);

printf("\nAftersortingdecendingly:\n

%s",str);

}

六、程序設計題(1題)82.請編寫—個函數,用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.B

2.AC語言的標識符由字母、數字、下劃線組成,且第1個字符必須是字母或下劃線。另外,關鍵字不能作為標識符。B選項中以數字8開頭,所以錯誤。C選項與D選項中用的是關鍵字“void”與“unsigned”,所以錯誤。故本題答案為A選項。

3.A

4.AC語言規定數組的下標從0開始,結構體數組class初始化了前4個元素。第3個元素的name=“Marry”,則class[2].name[0]=‘M’。故本題答案為A選項。

5.B解析:本題考查數據庫系統的基本概念和知識。

數據庫系統除了數據庫管理軟件之外,還心須有其他相關軟件的支持。這些軟件包括操作系統、編譯系統、應用軟件開發工具等。對于大型的多用戶數據庫系統和網絡數據庫系統,還需要多用戶系統軟件和網絡系統軟件的支持。因此,選項A的說法是錯誤的。

數據庫可以看成是長期存儲在計算機內的、大量的、有結構的和可共享的數據集合。因此,數據庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數據庫,可以取出它們所需要的子集,而且容許子集任意重疊。數據庫的根本目標是要解決數據的共享問題。因此,選項B的說法是正確的。

通常將引入數據庫技術的計算機系統稱為數據庫系統。一個數據庫系統通常由五個部分組成,包括相關計算機的硬件、數據庫集合、數據庫管理系統、相關軟件和人員。

因此,選項C的說法是錯誤的。

因此,本題的正確答案是選項B。

6.B“b+=a;”等價于“b=b+a;”,“a+=2;”等價于“a=a±2;”,“bA=10;”等價于“b=b%=10;”。循環體執行3次,最終結果為7,1。

7.C解析:要計算一個復雜的表達式時,首先要弄明白表達式中所有運算符的優先級與結合性,本題中所涉及的運算符中,->的優先級最高,*和++的優先級相同,但其結合性為從右至左。所以選項A等價于*pt->y)也就是pt所指向的結構體的成員指針變量y所指向的內容。從前面的程序段不難看出,pt指向結構體數組c的首地址,也就是指向它的第1個元素,在它的第1個元素中,指針變量y又被初始化為指向控型數組a的首地址,即指向數組a的第1個元素。故選項A中的表達式的值為a[0],也就是1。選項B中表達式的值就是c[0].x,即10。根據優先級和結合性,選項C中的表達式等價于++(pt->x),由于是前綴++,所以整個表達式的值為pt->x的值加1,故為11。而選項D中,++是后綴形式,所以(pt++)的值還是pt的原值,即等于pt->x的值10。故應該選擇C。

8.Cstrcat(s1,s2)函數的功能是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復制到s1字符串,要保證sl的容量。

9.C結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用G0T0語句。其他三項為結構化程序設計的原則。

10.C選項A的if條件表達式的值是5,結果為真,執行“y=1”,y的值為1;選項B的if條件表達式x的值為5,結果也是真,執行“y=1”,y的值為1;選項C的if條件表達式“x=y”是賦值語句,將y的值0賦給x,表達式的值為0,if語句不執行,y的值為0;選項D的if條件表達式“x=y”是賦值語句,將y的值10賦給x,表達式的值為10,執行“y=1”,y的值為1。故本題答案為C選項。

11.D選項A是實型常量的指數形式,表示0.023×10-5;選項B是十六進制表示的整型常量;選項C是十六進制表示的轉義字符常量;選項D是字符串常量,應該使用雙引號標注。故本題答案為D選項。

12.B

13.D

14.B

15.A函數fun()通過遞歸調用實現的功能為n+(n-1)+…+1,故程序的輸出結果為55。

16.C

17.C“P”是指針變量,指向一個地址:“*P”為P指針所指向地址的內容“&”是取變量地址。

18.B題干中,格式輸入函數scanf的格式控制字符串中,第1個%d與第2個%d之間有一個逗號。所以輸入的第1個整數和第2個整數之間必須要有一個逗號,選項C、D錯誤;輸入的第2個整數和第3個整數之間需要間隔符,可以使用<Tab>鍵、<Enter>鍵、空格符。故本題答案為B選項。

19.C

20.D解析:函數scanf()的調用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。本題中定義變量a為雙精度型變量,雙精度變量的格式符為“1e”;變量的地址用取地址符“&”加變量名表示,如變量a的地址為“&a”。

21.模塊模塊

22.x=11x=11解析:在對無符號數的右移是高位補0。

23.10

24.隊尾隊尾解析:在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。

25.malloc(40)malloc(40)解析:庫函數malloc()只有一個參數,就是所需分配內存的字節數,然后返回一個void*指針。本題要求分配40個字節,故直接調用malloc(40)就可以了。

26.1212解析:本題考核的知識點是字符類型數據的表示方法和存儲形式。字符類型的數據在內存中以相應的ASCII碼存放,在C語言中,字符數據可以等價為與其相應的ASCII碼的整數,還可以作為整數參加運算。在本題中,n1=ch1-'0'='1'-'0'=49-48=1n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12,所以,最后輸出為12。

27.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d\nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d解析:printf函數有兩種參數:格式控制參數和輸出項參數,其中格式控制參數由兩種成分組成:格式說明和普通字符,普通字符將被簡單地復制顯示,格式說明項將引起一個輸出參數項的轉換與顯示,它是由“%”引出并以一個類型描述符結束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數,所以格式說明項為%d,也可以在%與d之間加上域寬,另外還要在每行輸出結束時加轉義字符\\n進行換行。所以,應填寫n1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2dn或n1=%2d\\nn2=%2d。

28.jj解析:在C程序中的字符量可參與任何整數運算。

29.86518651解析:主程序中,第一次循環時,i=0,調用sb(s,x)子函數,此時n=3,x=s[n]=s[3]=8,然后將n減1變為2;第二次循環時,i=1,調用sb(s,x)子函數,因為將n定義為了靜態變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環時,i=2,調用sb(s,x)子函數,此時n=1,返回x=s[n]=s[1]=5;第四次循環時,i=3,調用sb(s,x)子函數,此時n=0,返回x=s[n]=s[0]=1。此程序實際上是將數組s逆序輸出。

30.a*b*c*d*a*b*c*d*解析:程序中的變量i用于存放字符串str的長度,執行while語句,通過分析可知,字符串第2*i項的值可由第i項的值得到;第2*i-1項直接賦值為。號,i減1,如此反復直到不滿足i>0的條件時,輸出運行后的字符串。

31.調試調試

32.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。

33.p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+strp1+(stfien(str)-1)或str+(strlen(str)-1)\r\nt==0或!t\r\nhuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str解析:回文字符串是指正向與反向拼寫都一樣。由huiwen函數可知,第三處應該填寫調用函數huiwen(str)。在函數huiwen中,執行P1=str;使p1指向字符串str中第一個字符的地址,則第一處應該使p2指向字符串str中最后一個字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本題要求如果是回文,則返回'yes!',否則,返回'no!',故當t=0時,說明字符串str為回文,所以第二處應填t==0或!t。

34.0a[j]=0count<25

35.一對多或1:N。一對多或1:N。

解析:本題,已知結果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進行類型轉換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

37.1010解析:本題程序中定義了一個函數sub(),用來計算一個整數整除10的商和余數的和。在主函數中,首先用scanf()函數讀入一個十進制整數1234,然后對1234三次嵌套調用函數svb()。首先看最里層的調用,應該返回的值是123+4=127;然后中間一層調用應該返回的是12+7=19;所以最外層調用返回1+9=10。故最后輸出10。

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

39.return0return1return0,return1解析:如果a能被i整除,則a是素數,返回值為0。如果a不能被i整除,則a不是素數,返回值為1。

40.n+1n+1解析:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為0的結點多一個。

41.C解析:本題主要考查聯合體的內存使用:聯合體所占用的內存空間為最長的成員所占用的空間,int占2個字節,char占1個字節,float占4個字節,所以arr所占的內存長度等于成員c的長度;arr的地址和它的各成員的地址都是同一地址;不能直接對arr賦值,即不能在定義arr時對它初始化;arr也不可以作為函數參數。

42.D

43.B解析:仔細觀察3個表可以看到,R,S,T具有相同的關系模式,且T包含了R和S的所有元組,故T=R∪S。

44.AA?!窘馕觥烤€性表的存儲通常分為兩種存儲結構:順序存儲結構和鏈式存儲結構。

\n

45.D我國計算機界根據計算機的性能指標,如機器規模的大小、運算速度的高低、主存儲器容量的大小、指令系統性能的強弱以及機器價格等,將計算機分為巨型機、大型機、中型機、小型機、微型機和單片機6大類。目前,國外還有一種比較流行的看法,根據計算機的性能指標及廠家生產的計算機的主要面向應用對象,把計算機分為巨型機、小巨型機、大型機、小型機、工作站和個人計算機6大類。其中,個人計算機(PersonalComputer),又稱為微型計算機(MicroComputer)。故本題正確答案是D\n【考點】科技\n學科專題(物理、化學、生物醫學、計算機)\n計算機發展史

46.C解析:功能性注釋是嵌在源程序體中的,用以描述其后的語句或程序段是在做什么工作,或者執行了下面的語句會怎么樣。所以它描述的是一段程序,是為程序段做注釋,而不是每條語句。

47.B對二叉樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。在遍歷左、右子樹時,注意依舊按照“左子樹一根結點一右子樹”的順序。本題的遍歷順序是這樣的:①首先訪問左予樹:BDEY;②在左子樹BDEY中,也按中序遍歷,先訪問左子樹DY;在左子樹DY中,也按中序遍歷,先訪問左子樹,左子樹沒有,則訪問根結點D,然后訪問右子樹Y;③接著訪問根B,再訪問右子樹E;④訪問左子樹BDEY后,接著訪問根結點A,接著訪問右子樹CFXZ;⑤右子樹CFXZ的訪問順序同理可得:FCZX。

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

49.C解析:定義結構體類型的變量有幾種的方法如下:

①定義結構體類型的同時,定義結構體類型的變量,如下面的定義中在定義結構體類型aa的同時定義了該類型的變量tdl。上述B)項中將宏名AA用宏體structaa替換進去后,與該定義形式一樣,因此是正確的。這一定義形式中,結構體類型名明是可以省略的,因此,D)項也是正確的。

structaa

{...

}tdl;

②先定義結構體類型,然后再定義結構體類型的變量,形式如下:

structaa

{

};

structaatdl;

這種定義形式也可演變為,先用類型定義語句typedef將該結構體類型定義成一個類型名AA,然后直接用該類型名AA去定義一個變量(這時不再需要使用關鍵字struct了)。這就是A)項的形式。

50.A解析:C語言中比較表式的運算結果為0或1。0代表不成立,1表示成立。

51.D解析:本題考查二維數組的定義。不能對數組進行動態定義,選項A錯誤;選項C省略第二維的長度;選項B中初值的行數超過數組第一維的長度。

52.B解析:本題對文件test輸出4個數據,第一個5原樣輸出,第二個238.41只保留小數點后1位,然后輸出一個‘,’,再連續輸出兩個字符‘B’和‘h’。所以最終的輸出結果是5238.4,Bh。應該選擇B。

53.B解析:break語句只能在循環體和switch語句體內使用。本題程序為在while循環中嵌套for循環。先看內層for循環,該循環的3個表達式全部省略,循環條件始終為真,但循環體內的break語句為終止循環的條件。首先,由初始條件判斷外層循壞while括號內表達式的值,該值為真,執行本次while循環,即執行循環體內的訂語句,判斷該表達式后面括號里表達式的值為真,執行break語句,跳出內層循環,執行下面的語句,此時i和a的值均變為11;回到外層循環,判斷表達式“i<20”仍為真,執行內層循環語句,此時if條件不滿足,執行else語句,i的值為10,繼續內層循環,if語句條件滿足,執行break語句,跳出內層循環,執行下面的語句后,i和a的值分別是21和32。再判斷外層循環的條件為假,結束循環.所以,4個選項中B為所選。

54.D解析:函數值的類型應當是在定義函數時指定的。在定義函數時對函數值說明的類型一般應該和return語句中的表達式類型—致,如果不—致,則以函數類型為準,即函數類型決定返回值的類型。

55.D解析:本題考查ifelse語句。第1個if語句,先判斷條件,發現a=0條件不成立,則執行與其配對的else語句;第2個if語句,先判斷條件,發現b=4,則!b條件不成立,又沒有與其配對的else語句,所以執行printf語句,輸出d。

56.C解析:十六進制是以“0x”或“0X”開頭的字符串,字符串中只能含有0~9這10個數字和a、b、c、d、e、f這6個字母。

57.A解析:函數定義時如果數據類型默認,則默認為int。函數中如果有“retum(表達式):”語句,表達式的類型可能與函數的類型不一致,但它并不能改變函數的類型,實際情況是把表達式轉換為函數值的類型作為返回值,因此本題的函數值類型是int。

58.B解析:C語言規定,標識符只能由字母、數字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。另外還需要注意的是關鍵字不能作標識符。選項A中void,C中for都為關鍵字,D中2c以字母開頭。

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

60.B解析:本題考查函數調用時的參數傳遞。在函數調用時,形參是指向實參的指針變量,則printf的執行結果為3+1=4。

61.A本題重點考察的是函數的形參和實參。I在定義函數時函數名后面括弧中的變量名稱為“形式參數”l(簡稱形參),在主調函數中調用一個函數時,函數名后面括弧1中的參數(可以是—個表達式)稱為“實際參數”(簡稱實參)。fC語言規定,實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。因此A選項正確。

62.D

63.D

64.A選項B),形參值的改變不會影響實參,但形參值可以作為返回值返回給實參。選項c),函數可以沒有返回值,即返回值類型為void。選項D),函數可以定義在不同的文件中,只要調用前包含被調用函數所在的文件即可。

65.Cstrlen函數返回字符串的長度,求字符串1長度時,遇到結束標志‘、0’為止,但是長度不包括結束標識。f字符數組sl的后5個元素沒有賦值,都為‘\0’,即“abcd!”后為‘\0’。所以sMen(s1)的值為5。字符指針s2所指向的字符串中,、n為轉義字符換行符,表示1個字符,\、也為轉義字符,代表\,也是l個字符,其后為字符串結束標識‘0’;所以strlen(s2)的值也為5。因此C選項正確。

66.A

67.A

68.C

\n本題考查do-while語句和if…else語句。do-while語句的功能是先執行循環體再判斷條件,所以,先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執行下面的else語句,輸出Y,然后將X的值減1,x=2,滿足while循環條件,繼續循環。第三次循環:先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執行下面的else語句,輸出y,然后將X的值減1,x=l,滿足while循環條件,繼續循環。第四次循環:先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環條件,結束循環。所以B正確。

\n

69.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的過程是:先建一個堆,輸出堆頂的最大或最小的元素,再將剩余的n-1個元素重新調整成一個新堆。如此反復進行,直到排序完成。

直接插入排序是一種最簡單的排序方法,它的基本操作是將一個記錄插入到已排好的有序表中,從而得到一個新的、記錄數增1的有序表。首先,將序列中的第1個記錄看成是一個有序的子序列,然后從第2個記錄起逐個進行插入,直至整個序列變成按關鍵字非遞減有序序列為止。

快速排序是對冒泡排序的一種改進。它的基本思想是通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可以分別對這兩部分記錄繼續進行排序,以達到整個序列有序。

直接選擇排序是通過n-i次關鍵字間的比較,從n-i+1個記錄中

溫馨提示

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

評論

0/150

提交評論