2022年山東省青島市全國計算機等級考試C語言程序設計_第1頁
2022年山東省青島市全國計算機等級考試C語言程序設計_第2頁
2022年山東省青島市全國計算機等級考試C語言程序設計_第3頁
2022年山東省青島市全國計算機等級考試C語言程序設計_第4頁
2022年山東省青島市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩114頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022年山東省青島市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:

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

A.1,3

B.2,3

C.1,4

D.1,2

2.對n個元素的有序表A[1..n]進行順序查找,其成功查找的平均查找長度(即在查找表中找到指定關鍵碼的元素時,所進行比較的表中元素個數的期望值)為()

A.nB.(n+1)/2C.log2nD.n^2

3.

4.

5.

6.下列程序的輸出結果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

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

7.數據流圖(DFD)的作用是()。

A.描述軟件系統的控制流B.支持軟件系統的功能建模C.支持軟件系統的面向對象分析D.描述軟件系統的數據結構

8.對于C語言的函數,下列敘述中正確的是()。

A.函數的定義不能嵌套,但函數調用可以嵌套

B.函數的定義可以嵌套,但函數調用不能嵌套

C.函數的定義和調用都不能嵌套

D.函數的定義和調用都可以嵌套

9.設intx=7,則~x的值是()。

A.-8B.7C.-1D.1

10.

11.將發送端數字脈沖信號轉換成模擬信號的過程稱為

A.鏈路傳輸B.調制C.解調D.數字信道傳輸

12.下面程序的輸出是()。A.17B.18C.23D.24

13.有以下程序:

程序的運行結果是()。

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

14.有以下程序#include<stdio.h>voidfun(int*a,int*B){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結果是______。A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3

15.甲乙兩個聰明人上街,撿到一張10塊錢的購物卡,兩人就想出一個辦法來分配這張卡。兩個分別將自己出的價格寫在紙上,然后看誰出的價高就給誰,并且那個出價高的人要把出的錢給對方。現在甲有6塊錢,乙有8塊錢,甲乙雙方都知道對方當前有多少錢并且都希望自己收益高于對方。問最后誰獲得的錢多()

A.甲多B.乙多C.一樣多D.有可能出現有人賠錢的情況

16.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結果是()。

A.10,One*Dream!

B.9,One*Dream!

C.9,One*World

D.10,One*World

17.若一棵二叉樹具有10個出度為2的結點,則在該二叉樹中,出度為0的結點個數是()

A.9B.11C.12D.不確定

18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序運行后的輸出結果是()。

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

19.在學生管理的關系數據庫中,存取一個學生信息的數據單位是()。

A.文件B.數據庫C.字段D.記錄

20.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double

二、2.填空題(20題)21.定義inta=5,b;,則執行表達式b=++a*--a之后,變量b的值為【】。

22.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

23.下面程序的功能是從鍵盤輸入一行字符,統計有多少個單詞,單詞間用空格分隔。補充所缺語句。

#include<stdio.h>

main()

{charss[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=s[i-1];

if(【】)num++;

i++;

}

printf("Thereare%dwords,\n",num);

}

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

25.在結構化設計方法中,數據流圖表達了問題中的數據流與加工間的關系,并且每一個______實際上對應一個處理模塊。

26.以下sstrcpy()函數實現字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。請填空。

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

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

}

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

28.當循環隊列非空且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行人隊運算。這種情況稱為【】。

29.以下程序中,函數fun的功能是計算x2-2x+6,主函數中將調用fun函數計算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

30.使用結構體處理數據的場合是【】。

31.函數my_cmp()的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當s<t時返回負值。請填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

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

intn='c':

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("moming");

case'd':printf("class");

}

33.若有如下程序:

sub(int*y)

{while(--(*y));

printf("%d",(*y)--);}

main()

{intx=10;

sub(&x);

}

則程序運行后的輸出結果是【】。

34.實體之間的聯系可以歸結為一對一的聯系,一對多的聯系與多對多的聯系。如果一個學校有許多教師,而一個教師只歸屬于一個學校,則實體集學校與實體集教師之間的聯系屬于【】的聯系。

35.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請填空。

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

36.若a的值為1,則表達式!a‖++a的值是______。

37.若要使指針p指向一個double類型的動態存儲單元,請填空。

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

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

prind("\n");

}

39.以下程序調用函數swap將指針s和t所指單元(a和B)中的內容交換,請填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}

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

#defineLEN5

inta[LEN],k;

main()

{fun1();

fun2();

}

fun1()

{for(k=0;k<LEN;k++)

a[k]=k;

}

fun2()

{intk;

for(k=0;k<LEN;k++)

printf("%d",*(a+k));

}

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

#include<stdlib.h>

structNODE{

intnum;

structNODE*next;

}

main()

{structNODE*p,*q,*r;

intsum=0;

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

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

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

p->num=1;q->num=2;r->num=3;

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

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

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

}

執行后的輸出結果是()。

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

42.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作

B.文件打開時,原有文件內容不被刪除,只能進行讀操作

C.文件打開時,原有文件內容被刪除,只能進行寫操作

D.以上三種說法都不正確

43.閱讀以下程序及對程序功能的描述,其中正確的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}

A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

44.下面關于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結點數均達到最大值

B.可能缺少若干個左右葉子結點

C.完全二叉樹一般不是滿二叉樹

D.具有結點的完全二叉樹的深度為[log2n]+1

45.以下程序的輸出結果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不確定的值(因變量無定義)B.0C.-1D.1

46.設x為int型變量,執行以下語句,x=10;x+=x-=x-x;x的值為______。

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

47.以下程序的輸出結果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

48.以下程序輸出的結果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}

A.11,10B.9,10C.010,9D.10,9

49.當執行以下語句后,函數strlen(str)返回的值是()staticcharstr[10]={”Change"};

A.10B.7C.6D.11

50.變量a已被定義為整型,下列表達式有錯的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

51.數據庫系統的核心是()A.數據模型B.數據庫管理系統C.軟件工具D.數據庫

52.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

53.設有數組定義:chararray[]="China";則數組array所占的空間為()

A.4個字節B.5個字節C.6個字節D.7個字節

54.有以下函數定義:voidfun(intn,doublex){......}若以下選項中的變量都已正確定義并賦值,則對函數fun正確調用語句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

55.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

56.下列敘述中錯誤的是()。A.在數據庫系統中,數據的物理結構必須與邏輯結構一致,

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

C.數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫

D.數據庫系統需要操作系統的支持

57.閱讀下面程序段,則執行后輸出的結果是#include"stdio.h"main(){charfun(char,int);chara='A';intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}

A.AB.MC.ND.L

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

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

59.若要求從鍵盤讀入含有空格字符的字符串,應使用函數

A.getc()B.gets()C.getehar()D.scanf()

60.有以下程序intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);pfintf(“%d\n”,i);}程序運行后的輸出結果是

A.-4B.1C.4D.8

四、選擇題(20題)61.

62.

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

A.在C語言中,預處理命令行都以“#”開頭

B.預處理命令行必須位于c源程序的起始位置

C.#include<stdi0.h>必須放在C程序的開頭

D.C語言的預處理不能實現宏定義和條件編譯的功能

64.設計軟件結構是軟件生命周期的()。

A.軟件定義期B.軟件開發期C.軟件維護期D.以上3個都不是

65.

66.在黑盒測試方法中,設計測試用例的主要根據是()。

A.程序內部邏輯B.程序外部功能C.程序數據結構D.程序流程圖

67.下列字符串是標識符的是()。

A.aaB.a-classC.intD.LINE1

68.

69.

70.

有以下程序:

#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

71.有以下程序:

intfun(intx)

{intp;

if(x==0||x==1)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

執行后的結果是()。A.A.7B.3C.2D.0

72.

73.下列程序執行后的輸出結果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

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

A.c語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令

B.c程序經過編譯、連接步驟之后才能形成一個真正可執行的二進制機器指令文件

C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中

D.c語言源程序經編譯后生成后綴為.obj的目標程序

75.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是

76.下面程序段的運行結果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

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

77.算法分析的目的是()。

A.找出數據結構的合理性B.找出算法中輸入和輸出之間的關系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進

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

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

79.

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

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

五、程序改錯題(1題)81.下列給定的程序中,函數proc的功能是:判斷字符ch是,與str所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結果。

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

//****found****

voidproc(charstr,charch)

{

while(*str&&*str!=ch)str++;

//****found****

if(*str==ch)

{str[0]=ch;

//****found****

str[1]=0:

}

}

voidmain

{

charstr[81],ch;

system("CLS");

printf("\nPleaseenterastring:");

gets(str);

printf("\nPleaseenterthecharacterto

search:");

ch=getchar;

proc(str,ch);

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

}

六、程序設計題(1題)82.編寫函數fun,其功能是:根據以下公式求π的值(要求精度0.0005,即某項小于0.0005時停止迭代)。

程序運行后,若輸入精度

0.0005,則程序應輸出為3.14…

注意:部分源程序在文件PROGl.C中。

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

參考答案

1.Af函數功能使第二個指針指向的元素增1,第一個指針指向的元素不變,所以答案選擇A)。

2.B

3.D

4.A

5.D

6.B解析:本題主要考查結構體和聯合內存使用的區別:結構中不同的成員分別使用不同的內存空間,一個結構所占內存空間的大小是結構中每個成員所占內存空間大小的總和,結構中每個成員相互獨立;聯合所占用的內存空間為最長的成員所占用的空間。

7.B數據流圖是系統邏輯模型的圖形表示,從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變化過程,它直接支持系統的功能建模。本題答案為B選項。

8.A

9.A本題主要考查按位求反運算和C語言正負數的表示,“O”代表正數,“1”代表負數;x=7的二進制為00111,第一個0代表正數,~x為11000,第一個l代表負數,值為8。

10.D

11.B

12.B

13.D在程序中指針變量P初始指向a[3],執行P減1后,P指向a[2],語句y=*P的作用是把a[2]的值賦給變量y,所以輸出為y=3。

14.B解析:本題主要考查的是函數的實參和形參之間的傳遞關系,C語言中實參變量和形參變量之間的數據傳遞是單向的“值傳遞”方式。指針變量作函數參數也要遵循這一規則。調用函數不可能改變實參指針變量的值。所以x和y的地址并沒有改變,即p和q也沒有改變,因此,選項B是正確的。

15.C

16.A函數“strlen(char*s)”;計算字符串s的長度,不包括‘\\0’在內。p指向數組的第2個元素,因此“Strien(P)=10”,并輸出“one*Dream!”。故本題答案為A選項。

17.B

18.D程序首先以讀和寫二進制文件的方式打開文件d.dat;然后通過for循環,調用fwrite函數將數組a中的各個元素寫入d.dat中;接下來調用rewind函數,將文件指針fp重定位到文件的開始位置;再調用fread函數將文件的前3個整數1,2,3讀入a[3]開始的位置,所以此時數組a中的元素值分別為:1,2,3,1,2,3。故本題答案為D選項。

19.D解析:在關系數據表中,行稱為元組,對應存儲文件中的記錄,列稱為屬性,對應存儲文件中的字段,所以本題答案為D。

20.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。

21.2525解析:#NAME?

22.

23.c1!==''&&c2==''

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

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

26.*t++或*(t++)*t++或*(t++)解析:主函數中定義了兩個字符型數組st1l和str2,并且給str2賦初值“abcdefgh”,接著調用函數sstrcpy(str1,str2),將字符串str2的值賦給str1.在函數sstrcpy(*s,*t)中,用了一個while循環,每循環一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應該填*t++或*(t++)。

27.HelloHello解析:字符串中,數值0或符號'/0'表示字符串的結束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結束標志。因此,只輸出前五個字符,即Hello。

28.上溢上溢解析:入隊運算是指在循環隊列的隊尾加入一個新元素。這個運算有兩個基本操作:首先將隊尾指針進一(即rear=rear+1),并當rear=m+1時,置rear=1;然后將新元素插入隊尾指針指向的位置。當循環隊列非空(s=1)且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行人隊運算,這種情況稱為“上溢”。

29.x+8sin(x)x+8,sin(x)解析:考查考生對函數調用相關知識的了解。用x+8代替函數fun(doublex)中形式參數x;用sin(x)代替函數fun(doublex)中形式參數x。

30.把不同類型的數據作為整體處理

31.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應字符相等情況下循環,直至不相等結束。相等時,若字符串已到了字符串的結束標記符,則兩字符串相同,函數返回0值;如還有后繼字符,則準備比較下一對字符。對應字符不相同,循環結束。循環結束時,就以兩個當前字符的差返回。所以在空框處應填入*s-*t,保證在e>t時返回正值,當s<t時返回負值。

32.morningclassmorningclass解析:本題考查了兩個知識點:①“++、--”運算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當n=\'c\'時,執行“case\'c\':”,輸出morning;因為此句中沒有break語句,因此接著執行'case\'d\':”,輸出class,最終輸出結果為morningclass。

33.00解析:while循環的條件為即當*y非零時執行循環,-(*y)先對*y的值減1,再使用*y的值,不再執行while循環時最后*y的值為0,輸出函數中的(*y)--,是先使用*y的值再對*y減1,就是先輸出0。

34.一對多一對多解析:實體之間的聯系可歸結為一對一、一對多與多對多的聯系。如一個學校有許多教師,一個教師只歸屬于一個學校,則實體集學校與實體集教師之間的聯系屬于一對多的聯系。

35.=-ffun(10)=-f\r\nfun(10)解析:本題要求調用fun()函數計算m的值,故在主函數中的空白處應該填調用fun()函數的語句。fun()函數有一個形參n,為每次參加計算的值個數,故在主函數中的空白處應該填fun(10),在fun()函數中用到了一個for循環,共循環n次,當循環第i次的時候,m的值等于m=1-2+…+[(-1)的i-1次方]*i,所以在fun()函數的空白處應該填使f改變符號的語句,故應填-f或其他等價形式。

36.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結果為1。

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

38.1011121210111212解析:需要注意的是,函數fun()中的變量c為靜態局部變量,在靜態存儲區內分配了存儲單元,在程序整個運行期間不會釋放,所以調用函數時,只賦初值一次,以后再調用函數時,c中的值為上次調用函數時的值。執行for循環,當i=0時,fun(5)=5+1+4=10,此時c=4;當i=1時,fun(5)=5+1+5=11,此時c=5;當i=2時,fun(5)=5+1+6=12;此時c=6:當i=3時,退出for循環,并輸出回車換行符。

39.swap(st);swap(s,t);解析:本題要在主函數中調用swap函數交換a、b的值,實現數據交換需要進行地址傳遞,所以函數的形參都應該是需要交換的數據的地址,程序中通過“s=&a;t=&b;”將指針變量s和t指向變量a、b的地址,因此,引用時直接引用指針變量s和t即可。

40.01234。01234。解析:函數fun1給數組a的每個元素賦值,fun2則輸出結果。

41.B解析:本題中定義了一個結點結構stmctNODE,在主函數中定義了3個結點指針p、q和r,接著通過malloc函數分配了3個結點并讓p、q和r分別指向他們,再接著給p、q和r所指向的結點的num域賦值為1、2、3,然后讓結點p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結點的hum域的值為3,p->hum的值為指針p所指向結點的num域的值為1,故最后輸出s的值為3+1=4。所以,4個選項中選項B符合題意。

42.A解析:本題考查文件使用方式標識符,以“a+”方式打開一個已存在的文件,則表示保留文件中原有的數據,文件的位置指針在文件末尾,此時,可以進行追加或讀操作。

43.C解析:本題中,最主要的是掌握幾個有關文件的函數的應用。

函數名:fopen功能:打開一個文件調用方式FILE*fp;fp=fopen(文件名,使用文件方式);

函數名:feof功能:檢查文件是否結束調用方式:feof(FILE*fp);

函數名:fputc功能:把一個字符寫到磁盤文件上去調用方式:fputc(ch,fp)(ch是要輸出的字符,fp是從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的調用方式:ch=fgetc(fp)(ch是字符變量,fp是文件指針變量);

函數名:fclose功能:關閉一個文件調用方式:fclose(文件指針)。

44.B解析:這里考察完全二叉樹與滿二叉樹的定義及二叉樹的性質。滿二叉樹指除最后一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最后一層外,每一層上的結點數均達到最大值,在最后一層上只缺少右邊的若干子結點(葉子結點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二叉樹,而完全二叉樹一般不是滿二叉樹,因此選項C是正確的敘述。選項D即二叉樹性質(5),也是正確的。

45.B解析:在C語言中NULL的ASCII碼值為0,而輸出函數要求以整形格式輸出,故最后的輸出數0。所以,選項B正確。

46.B解析:本題x=10,表達式“x+=x-=x-x;”的求解步驟如下:先進行x-=x-x的運算,相當于)x=x-(x-x)=x=10;再進行x+=x的運算,即x=x+x=20。

47.B

48.B解析:本題考核的知識點是自增運算符和自減運算符的使用.程序中i的值用八進制表示(十進制為8),++i是在變量使用前自身先加1,而j--是在變量使用后自身減1。所以,4個選項中B符合題意。

49.C

50.C

51.B數據庫管理系統DBMS是數據庫系統的核心。DBMS是負責數據庫的建立、使用和維護的軟件。DBMS建立在操作系統之上,實施對數據庫的統一管理和控制。用戶使用的各種數據庫命令以及應用程序的執行,最終都必須通過DBMS。另外,DBMS還承擔著數據庫的安全保護工作,按照DBA所規定的要求,保證數據庫的完整性和安全性。

52.B解析:a=b=c+2實際上相當于a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。注意:選項A)中包含一個不合法的運算符“:=”;選項C)應改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C++語言規定賦值號的左邊只能是單個變量,不能是表達式或常量等。注意:C++語言賦值語句的運用,

53.C解析:在給數組賦值時,可以用一個字符串作為初值,這種方法直觀、方便,而且符合人們的習慣。數組array的長度不是5,而是6,這點必須要注意。因為字符串常量的最后由系統加上一個'\\0',因此,上面的初始化與下面的等價:

Chararray[]={'C','h','i','n','a','\\0'};

54.C解析:函數調用的一般形式為:函數名(實參表列);,實參與形參的個數應相等,類型應一致,在調用函數時,不要指定其返回類型,對于返回類型為void的函數,不能作為賦值表達式的組成部分,所以選C。

55.B解析:在內存中,字符數據以ASCII碼存儲,它的存儲形式就與整數的存儲形式相類似。C語言使字符型數據和整型數據之間可以通用。也可以對字符數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數組中的下一個元素。

56.A解析:本題考查數據庫系統的基本概念和知識。數據的邏輯結構,是數據間關系的描述,它只抽象地反映數據元素之間的邏輯關系,而不管其在計算機中的存儲方式。數據的存儲結構,又叫物理結構,是邏輯結構在計算機存儲器里的實現。這兩者之間沒有必然的聯系。因此,選項A的說法是錯誤的。

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

數據庫設計是在數據庫管理系統的支持下,按照應用的要求,設計一個結構合理、使用方便、效率較高的數據庫及其應用系統。數據庫設計包含兩方面的內容:一是結構設計,也就是設計數據庫框架或數據庫結構;二是行為設計,即設計基于數據庫的各類應用程序、事務等。因此,選項C的說法是錯誤的。

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

57.C解析:函數說明語句中的類型名必須與函數返回值的類型一致。本題實現的是在字符,A,的ASCII碼值上加上一個常數,使之變成另一個ASCII碼值,從而輸出字符。

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

59.B解析:scanf()語句用“空格”區別不同的字符串;getc()與getchar()語句不能用于字符串的讀入。

60.C解析:函數f()有3個形式參數f1、f2和x,其中f1、f2是指向函數的指針變量。在main()函數中執行了函數調用“f(fa,fb,2)”,從而使f()的形式參數f1指向了fa,形式參數f2指向了fb,把實參2傳給了形參變量x。函數f()中的return語句相當于“fb(2)-fa(2)”(fb(2)的返回值為2*2*2=8,fa(2)返回值為2*2=4)即(8-4),值為4。函數f()執行后把返回值4賦給了i,輸出i的值是4。

61.A

62.D

63.A預處理命令是以“#”號開頭的命令,它們不是C語言的可執行命令,這些命令應該在函數之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預處理能夠實現宏定義和條件編譯等功能,所以D錯誤。

64.B本題是對軟件設計結構的考查。設計軟件結構是軟件概要設計階段進行的,而概要設計屬于軟件開發期。

65.B

66.B黑盒測試法指的是根據程序的外部功能,把程序本身看成一個黑盒子,設計測試用例來驗證程序外部功能的正確性。

67.A

\nC語言規定,標識符是由字母、數字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。int就是表達整型變量類型的標識符,它不能用做變量名和函數名。

\n

68.D

69.C

70.D

\n本題考查while循環。當i<20時,進入while循環體,循環體內的for循環實現的功能是i%10==0,也就是說當i值為0或者l0的倍數的時候,跳出循環,執行i+=11;a+=i;,若i值不是10的倍數,則一直執行for循環i--。①當i=0時,執行i+=11;a+=i;,i=11,a=11;②判斷i=10時,跳出for循環,執行i+=11;a+=i;,i=21,a=32;③判斷i=21>20,不符合題意,結束循環。

\n

71.C調用函數fun(7)時,由于x的值為7,執行語句“p=x-fun(x-2);”,相當于執行p=7-fun(5);

調用函數fun(5)時,由于x的值為5,執行語句“p=x-fun(x-2);”,相當于執行p=7-fun(3);

調用函數fun(3)時,由于x的值為3,執行語句“p=x-fun(x-2);”,相當于執行p=7-fun(1);

調用函數fun(1)時,由于X的值為1,執行語句“return(3);”,函數的返回值為3。

因此函數調用fun(7)等價于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數fun(7)的返回值為2。答案為C。

72.D

73.D解析:本題中的宏調用MA(1+a+b)展開后的結果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結果是8,選項D正確。

74.Ac語言中的非執行語句不會被編譯,不會生成二進制的機器指令,因此A)選項錯誤。由C語言構成的指令序列稱為C源程序,c源程序經過c語言編譯程序編譯之后生成一個后綴為obj的二進制文件(稱為目標文件);最后要由“連接程序”把此.0bj文件與c語言提供的各種庫函數連接起來生成一個后綴為.exe的可執行文件。根據上述分析可知,A)選項敘述錯誤。

75.C本題考查switch語句的使用。

switch語句是多分支選擇語句,有些教程上介紹說switch語句后面括弧里的表達式可以是任何類型,實際上,由于float型的數據在內存中的存儲會有誤差,絕大多數編譯器是不允許switch語句后面是float型的數據的。case后是常量表達式,只能是一個整數或整型常量表達式,也可以是一個字符常量或枚舉型常量,但不能是實型數據。

A選項中的case后面用的是實型常量,case語句后面不能跟實型常量。

B選項switch語句后面的語句是int(x),該表達式格式錯誤,強制轉換為整型的語句應該為(int)x。

C選項是正確的,switch后面的表達式和case后面的整型常量表達式都是規范的。

D選項的case語句后用到了變量,case后面是不允許用變量表達式的。

76.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數的整型數值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數和strcpy函數的作用。

strcpy的調用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復制到目的地址中,這種復制將覆蓋原來的字符串。strcat函數的功能是將源地址的字符串復制到目的地址字符串的后面。

strlen的調用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數。

那么程序中執行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數為4,那么執行strlen后,程序最終輸出的結果是4。因此本題正確的答案是C。

77.D解析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應的數量級,常用時間復雜度和空間復雜度表示。分析算法的目的就是要降低算法的時間復雜度和空間復雜度;提高算法的執行效。率。

78.D本題主要考查if語句的條件表達式。在本題的四個選項中給出了四個不同的條件表達式,題目要求找出其中一個意思與其他三個不同的表達式。

選項A的表達式k%2的功能是對變量k進行取余運算,如果運算結果為假,表示變量k能被2整除,如果運算結果為真,表示k不能被2整除。

選項B的表達式k%2==1的功能是對變量k進行取余運算,并判斷結果等于1,如果運算結果為假,表示k%2的運算結果為0,即k能被2整除;如果運算結果為真,表示k%2的運算結果為1,即k不能被2整除。

選項C的表達式(k%2)!=0的功能是對變量k進行取余運算,并判斷結果不等于0,如果運算結果為假,表示k%2的運算結果0,即k能被2整除;如果運算結果為真,表示k%2的運算結果為1,即k不能被2整除。

選項D的表達式!k%2==1等價于(!k)%2==1,其功能是先對變量k進行邏輯非運算,然后將運算結果對2進行取余運算,再判斷其結果是否等于1。這與前面三個選項的意思完全不同,因此本題的正確答案選D。

79.B

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

81.\n\t(1)錯誤:voidproc(charstr,charch)

\n正確:voidproc(char*str,charch)

\n(2)錯誤:if(*str==ch)

\n正確:if(*str==\0)

\n(3)錯誤:str[1]=0;

\n正確:str[1]=\0;

\n【解析】形參的個數和類型由調用該函數的實參的個數和類型決定,由main函數中調用的函數proc可知,“void

\nproe(charstr,charch)”應改為“voidproc(char*str,char

\nch)”;將字符串中的每一個字符與給定字符相比較,'-3字符串結束或者字符串中有與給定字符相同的字符時結束。如果到字符串的最后一個字符仍沒找到與給定字符相同的字符,將給定字符插在字符串的最后,因此,“if(*str==ch)”應改為“if(*str==\0)”;最后還要為字符串添加一個結束符,因此“str[1]=0;”應改為“str[1]=\0”。\n

82.

【考點分析】

本題考查:迭代法求給定多項式的值。迭代算法:讓計算機對一組指令(或一定步驟)進行重復執行,在每次執行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。需要注意變量的數據類型以及賦初值操作。

【解題思路】

首先應該定義double類型變量,并且賦初值,用來存放多項式的某一項和最后的總和。從第2項開始以后的每一項都是其前面一項乘以n/(2*n+1),程序中用sl來表示每一項,s表示求和后的結果。需注意sl和S的初值都為1.0,因為循環變量從第二項開始累加。2022年山東省青島市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:

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

A.1,3

B.2,3

C.1,4

D.1,2

2.對n個元素的有序表A[1..n]進行順序查找,其成功查找的平均查找長度(即在查找表中找到指定關鍵碼的元素時,所進行比較的表中元素個數的期望值)為()

A.nB.(n+1)/2C.log2nD.n^2

3.

4.

5.

6.下列程序的輸出結果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

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

7.數據流圖(DFD)的作用是()。

A.描述軟件系統的控制流B.支持軟件系統的功能建模C.支持軟件系統的面向對象分析D.描述軟件系統的數據結構

8.對于C語言的函數,下列敘述中正確的是()。

A.函數的定義不能嵌套,但函數調用可以嵌套

B.函數的定義可以嵌套,但函數調用不能嵌套

C.函數的定義和調用都不能嵌套

D.函數的定義和調用都可以嵌套

9.設intx=7,則~x的值是()。

A.-8B.7C.-1D.1

10.

11.將發送端數字脈沖信號轉換成模擬信號的過程稱為

A.鏈路傳輸B.調制C.解調D.數字信道傳輸

12.下面程序的輸出是()。A.17B.18C.23D.24

13.有以下程序:

程序的運行結果是()。

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

14.有以下程序#include<stdio.h>voidfun(int*a,int*B){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結果是______。A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3

15.甲乙兩個聰明人上街,撿到一張10塊錢的購物卡,兩人就想出一個辦法來分配這張卡。兩個分別將自己出的價格寫在紙上,然后看誰出的價高就給誰,并且那個出價高的人要把出的錢給對方。現在甲有6塊錢,乙有8塊錢,甲乙雙方都知道對方當前有多少錢并且都希望自己收益高于對方。問最后誰獲得的錢多()

A.甲多B.乙多C.一樣多D.有可能出現有人賠錢的情況

16.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結果是()。

A.10,One*Dream!

B.9,One*Dream!

C.9,One*World

D.10,One*World

17.若一棵二叉樹具有10個出度為2的結點,則在該二叉樹中,出度為0的結點個數是()

A.9B.11C.12D.不確定

18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序運行后的輸出結果是()。

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

19.在學生管理的關系數據庫中,存取一個學生信息的數據單位是()。

A.文件B.數據庫C.字段D.記錄

20.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double

二、2.填空題(20題)21.定義inta=5,b;,則執行表達式b=++a*--a之后,變量b的值為【】。

22.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

23.下面程序的功能是從鍵盤輸入一行字符,統計有多少個單詞,單詞間用空格分隔。補充所缺語句。

#include<stdio.h>

main()

{charss[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=s[i-1];

if(【】)num++;

i++;

}

printf("Thereare%dwords,\n",num);

}

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

25.在結構化設計方法中,數據流圖表達了問題中的數據流與加工間的關系,并且每一個______實際上對應一個處理模塊。

26.以下sstrcpy()函數實現字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。請填空。

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

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

}

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

28.當循環隊列非空且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行人隊運算。這種情況稱為【】。

29.以下程序中,函數fun的功能是計算x2-2x+6,主函數中將調用fun函數計算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

30.使用結構體處理數據的場合是【】。

31.函數my_cmp()的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當s<t時返回負值。請填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

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

intn='c':

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("moming");

case'd':printf("class");

}

33.若有如下程序:

sub(int*y)

{while(--(*y));

printf("%d",(*y)--);}

main()

{intx=10;

sub(&x);

}

則程序運行后的輸出結果是【】。

34.實體之間的聯系可以歸結為一對一的聯系,一對多的聯系與多對多的聯系。如果一個學校有許多教師,而一個教師只歸屬于一個學校,則實體集學校與實體集教師之間的聯系屬于【】的聯系。

35.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請填空。

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

36.若a的值為1,則表達式!a‖++a的值是______。

37.若要使指針p指向一個double類型的動態存儲單元,請填空。

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

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

prind("\n");

}

39.以下程序調用函數swap將指針s和t所指單元(a和B)中的內容交換,請填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}

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

#defineLEN5

inta[LEN],k;

main()

{fun1();

fun2();

}

fun1()

{for(k=0;k<LEN;k++)

a[k]=k;

}

fun2()

{intk;

for(k=0;k<LEN;k++)

printf("%d",*(a+k));

}

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

#include<stdlib.h>

structNODE{

intnum;

structNODE*next;

}

main()

{structNODE*p,*q,*r;

intsum=0;

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

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

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

p->num=1;q->num=2;r->num=3;

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

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

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

}

執行后的輸出結果是()。

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

42.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作

B.文件打開時,原有文件內容不被刪除,只能進行讀操作

C.文件打開時,原有文件內容被刪除,只能進行寫操作

D.以上三種說法都不正確

43.閱讀以下程序及對程序功能的描述,其中正確的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}

A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

44.下面關于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結點數均達到最大值

B.可能缺少若干個左右葉子結點

C.完全二叉樹一般不是滿二叉樹

D.具有結點的完全二叉樹的深度為[log2n]+1

45.以下程序的輸出結果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不確定的值(因變量無定義)B.0C.-1D.1

46.設x為int型變量,執行以下語句,x=10;x+=x-=x-x;x的值為______。

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

47.以下程序的輸出結果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

48.以下程序輸出的結果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}

A.11,10B.9,10C.010,9D.10,9

49.當執行以下語句后,函數strlen(str)返回的值是()staticcharstr[10]={”Change"};

A.10B.7C.6D.11

50.變量a已被定義為整型,下列表達式有錯的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

51.數據庫系統的核心是()A.數據模型B.數據庫管理系統C.軟件工具D.數據庫

52.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

53.設有數組定義:chararray[]="China";則數組array所占的空間為()

A.4個字節B.5個字節C.6個字節D.7個字節

54.有以下函數定義:voidfun(intn,doublex){......}若以下選項中的變量都已正確定義并賦值,則對函數fun正確調用語句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

55.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

56.下列敘述中錯誤的是()。A.在數據庫系統中,數據的物理結構必須與邏輯結構一致,

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

C.數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫

D.數據庫系統需要操作系統的支持

57.閱讀下面程序段,則執行后輸出的結果是#include"stdio.h"main(){charfun(char,int);chara='A';intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}

A.AB.MC.ND.L

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

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

59.若要求從鍵盤讀入含有空格字符的字符串,應使用函數

A.getc()B.gets()C.getehar()D.scanf()

60.有以下程序intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);pfintf(“%d\n”,i);}程序運行后的輸出結果是

A.-4B.1C.4D.8

四、選擇題(20題)61.

62.

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

A.在C語言中,預處理命令行都以“#”開頭

B.預處理命令行必須位于c源程序的起始位置

C.#include<stdi0.h>必須放在C程序的開頭

D.C語言的預處理不能實現宏定義和條件編譯的功能

64.設計軟件結構是軟件生命周期的()。

A.軟件定義期B.軟件開發期C.軟件維護期D.以上3個都不是

65.

66.在黑盒測試方法中,設計測試用例的主要根據是()。

A.程序內部邏輯B

溫馨提示

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

評論

0/150

提交評論