2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計_第1頁
2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計_第2頁
2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計_第3頁
2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計_第4頁
2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩109頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列語句組中,正確的是()。

2.設有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,a11為第一元素,其存儲地址為1,每個元素占一個地址空間,則a85的地址為()。

A.13B.33C.18D.40

3.對于順序存儲的線性表,訪問結點和增加、刪除結點的時間復雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

4.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序將等待用戶輸入第2個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

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

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

6.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的運行結果是()。

A.55B.50C.45D.60

7.有以下程序,程序中庫函數islower(ch)用以判斷ch中的字母是否為小寫字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

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

A.一個算法的空間復雜度打,則其時間復雜度也必定大

B.一個算法的空間復雜度大,則其時間復雜度也必定小

C.一個算法的時間復雜度大,則其空間復雜度也必定小

D.算法的時間復雜度與空間復雜度沒有直接相關

9.若x,i,j和k都是int型變量,則執行下面表達式后x的值為()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

10.下列敘述中錯誤的是()。

A.在C語言中,函數中的自動變量可以賦初值,每調用一次賦一次初值

B.在C語言中,在調用函數時,實參和對應形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數形參的存儲類型是自動(auto)類型的變量

11.在計算機中,算法是指()

A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法

12.

有以下程序:

main

{intx=102,y=012;

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

}

執行后輸出結果是()。

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

13.下列程序執行輸出的結果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

14.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運行后的輸出結果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

15.算法應該是()

A.程序B.問題求解步驟的描述C.要滿足五個基本特性D.B和C

16.

17.

18.體育課的鈴聲響了,同學們都陸續地奔向操場,按老師的要求從高到矮站成一排。每個同學按順序來到操場時,都從排尾走向排頭,找到第一個比自己高的同學,并站在他的后面。這種站隊的方法類似于()算法。

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

19.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產生錯誤,其出錯原因是()。A.定義語句出錯,case是關鍵字,不能用做用戶自定義標識符

B.定義語句出錯,printF不能用做用戶自定義標識符

C.定義語句無錯,scanf不能作為輸入函數使用

D.定義語句無錯,printf不能輸出case的值

20.

二、2.填空題(20題)21.下列函數從字符數組s[]中刪除和c一樣的字符,請在下面橫線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

22.條件“20<x<30或x<-100”的C語言表達式是【】。

23.算法復雜度主要包括時間復雜度和【】復雜度。

24.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

25.已有文本文件test.txt,其中的內容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向該文件,則程序的輸出結果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

printf("%d%f\n",n,x);

}

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

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

}

28.下列程序的運行結果是【】。

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0||i%11==0)a[j++]=i;

*n=j;

}

main()

{intaa[M],n,k;

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");

}

29.軟件工程學把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。

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

main()

{inta=0;

a+=(a=8);

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

}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

33.軟件工程的出現是由于【】。

34.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

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

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

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

36.funl函數的調用語句為:fun1(&a,&b,&c);它將3個整數按由大到小的順序調整后依次放入a、b、c這3個變量中,a中放最大數。

voidfun2(int*x,int*y)

{intt;

t=*x;*X=*y;*y=t;

}

voidfunl(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(【】);

if(*pa<*pc)fun2(【】);

if(*pa<*pb)fun2(【】);

}

37.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

38.在面向對象方法中,信息隱蔽是通過對象的______性來實現的。

39.以下程序的功能是:將輸入的正整數按逆序輸出。例如:若輸入135則輸出531。請填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);[];}

while(n!=0);

printf("\n');

}

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

main()

{charc=′z′;

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

三、1.選擇題(20題)41.在16位IBM-PC機上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是()。

A.1B.2C.7D.11

42.下面關于算法的敘述中,正確的是()

A.算法的執行效率與數據的存儲結構無關

B.算法的有窮性是指算法必須能在執行有限個步驟之后終止

C.算法的空間復雜度是指算法程序中指令(或語句)的條數

D.以上三種描述都正確

43.下面被調用函數sub的函數值的類型是()sub(floatA){floatb;b=a*a+1;returnb;}

A.單精度型B.雙精度型C.空類型D.整型

44.以下4個程序中,完全正確的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

45.在下列關于C語言的局部變量和全局變量所采取的存儲類別的敘述中,錯誤的一條是()

A.對于動態局部變量來說,一旦離開函數,其值就消失

B.對于靜態局部變量來說,離開函數,其值仍保留

C.對于寄存器變量來說,一旦離開函數,其值就消失

D.靜態外部變量既可在本文件中引用,又可在其他文件中引用

46.以下程序運行后,輸出結果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45

47.執行下面程序的正確結果是()。main(){floata=1.9;switch(a){case0:printf("0000");case1:printf("1111");case2:printf("3333");}printf("%f",a);}

A.1.9B.111133331.9C.33331.9D.1111233331.9

48.下列程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

49.在結構化方法中,用數據流程圖(DFD)作為描述工具的軟件開發階段是()

A.邏輯設計B.需求分析C.詳細設計D.物理設計

50.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發送()。A.調用語句B.命令C.口令D.消息

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

A.構成C程序的基本單位是函數

B.可以在一個函數中定義另一個函數

C.main函數必須放在其他函數之前

D.C函數定義的格式是K&R格式

52.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=1,three};

C.enuma={"one","two","three"};

D.enuma{"one","two","three"};

53.下列敘述錯誤的是()。

A.在C語言中的保留字必須小寫

B.變量的存儲類型決定了變量的存儲位置及其生存期

C.宏定義以#define開頭,行末必須加分號

D.在C語言中的注釋行可以出現在程序的任何位置

54.在c語言中,變量的隱含存儲類別是()。

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

55.設p1和p2是指向同一個int型一維數組的指針變量,k為int型變量,則不能正確執行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

56.請讀程序片段(字符串內沒有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的輸出結果是()

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

57.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

A.1B.2C.4D.死循環

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

A.在模塊化程序設計中,一個模塊應該盡量多的包括與其他模塊聯系的信息

B.在自頂向下、逐步細化的設計過程中,首先應設計解決問題的第一個細節

C.在模塊化程序設計中,一個模塊內部的控制結構也要符合結構化原則

D.在程序設計過程中,不能同時采用結構化程序設計方法與模塊化程序設計方法

59.有以下程序: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);printf("%d\n",i);}程序運行后的輸出結果是()。

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

60.下面程序運行后的輸出結果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=-s[0].a+s[1].b;printf("%d\n",t);}

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

四、選擇題(20題)61.

62.

63.鏈表不具有的特點是()。

A.不必事先估計存儲空間B.可隨機訪問任意元素C.插入、刪除不需要移動元素D.所需空間與線性表長度成正比

64.函數fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

65.下面不屬于需求分析階段任務的是()。

A.確定軟件系統的功能需求B.確定軟件系統的性能需求C.需求規格說明書評審D.制定軟件集成測試計劃

66.程序中已構成如下圖所示的不帶頭結點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表結點,指針變量s總是作為指針指向鏈表的第一個結點。

若有以下程序段:

該程序段實現的功能是()。

A.刪除尾結點B.尾結點成為首結點C.刪除首結點D.首結點成為尾結點

67.

68.

69.有如下程序段:

其輸出結果是()。

A.123.141593B.1,23.141593C.12,3.141593D.123.1415930

70.設有以下語句:typedefstructTY{charC;inta{41;}CIN;

則下面敘述中正確的是()。

A.CIN是structTr類型的變量

B.TT是struct類型的變量

C.可以用,lr定義結構體變量

D.可以用CIN定義結構體變量

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

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

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

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

72.

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

A)對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B)數組名代表的是數組所占存儲區的首地址,其值不可改變

C)當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界的出錯信息”

D)可以通過賦初值的方式確定數組元素的個數

74.有以下程序:

#include<stdio.h>

main()

{chara=H;

a=(a>=Aa<=2)?(a-A+a):a;

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

}

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

A.AB.aC.HD.h

75.

有下列程序:

#include<stdio.h>

main

{inta=6,b=7,m=1;

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

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

}

程序的運行結果是()。

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

76.以下()不是標準的HTTP消息頭字段。

A.StatusB.HostC.AcceptD.Referer

77.

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

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

B.數據庫設計是指設計數據庫管理系統

C.數據庫是存儲在計算機存儲設備中的、結構化的相關數據的集合

D.數據庫系統中,數據的物理結構必須與邏輯結構一致

79.對于一個正常運行的C程序,以下敘述中正確的是()。A.程序的執行總是從main函數開始

B.程序的執行總是從程序的第一個函數開始,在main函數結束

C.程序的執行總是從main函數開始,在程序的最后一個函數中結束

D.程序的執行總是從程序的第一個函數開始,在程序的最后一個函數中結束

80.有以下程序main(){intc=35;printf("%d\n",c&c);}程序運行后的輸出結果是______。

A.0B.70C.35D.1

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:計算n!。例如,若輸人:6,則輸出:6!=720.000000。

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

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

試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數fun(),該函數的功能是將M行N列的二維數組中的數據,按行的順序依次放到一維數組中,一維數組中數據的個數存放在形參n所指的存儲單元中。例如,若二維數組中的數據為333333334444444455555555則一維數組中的內容應該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請勿改動main()函數和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.A字符型指針變量可以用選項A)的賦值方法:char*s;s=”Olympictt;,選項C)的寫法:char*s,s={1.Olympic”};是錯誤的。字符數組可以在定義的時候初始化:chars[]_IfIOlympic”l;或者chars[]=”Olympic'1.都是正確的,但是不可以在定義字符數組后,對數組名賦值(數組名是常量,代表數組首地址)。所以選項B)和選項D)都是錯誤的。對于本例,選項B)、D)中字符數組S的大小至少為8,才能存放下字符串(字符串的末尾都有結束標志“\0”)。

2.B

3.C

4.A解析:本題考查的是getchar()函數。getchar()函數執行時將從鍵盤緩沖區中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當輸入a<回車>后,鍵盤緩沖區被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。

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

6.D靜態變量是始終存在的,當函數變量退出后,靜態變量會保存數據,再次調用該函數時,以前的靜態變量值仍然保留著。fun(a,5)的值是15,再次調用后sum=15,所以fun(b,4)=45,s=45+15=60。故本題答案為D選項。

7.D調用缸函數后,實參數組名sl傳給形參指針P,P也指向數組sl。m函數的功能是遍歷字符數組中的所有字符,如果某一個字符是空格并且前一個字符是小寫字母的話,就把前一個字符轉換為大寫。程序中語句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是將P[i一1]中的字符轉換為大寫。因此D選項正確。

8.D

9.C

10.C解析:外部變量在編譯時由系統分配永久的內存空間,所以外部變量的類型不是自動存儲類別。

11.B在計算機中,算法被定義為對一個問題求解步驟的一種描述,是求解問題的方法,它是指令的有限序列,其中每條指令表示一個或者多個操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點。

在本題中,選項A、C、D的說法明顯偏離了算法的定義,因此正確答案選B。

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

13.B解析:本題考查函數調用時的參數傳遞。在函數調用時,static變量在函數調用結束后所做的所有變化均保持(即上次調用結束時的值)。

在主函數中,第一次循環,i=0,調用k-f(a++)=f(2),調用完之后才將a加1,a變為3,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環,i=1,調用k=f(a++)=f(3),調用完之后才將a加1,a變為4,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

14.C在main函數中調用了f函數使形參s指向數組a。執行“S[1]+=6”;語句,則“a[1]=8;”執行“*s=7;”語句,則“a[0]=7”;執行“s+=2;”語句,則s指向數組的第3個元素并返回s。調用后,函數返回值賦給指針P,則*P=3,因此輸出的結果為7,8,3。故本題答案為C選項。

15.B

16.D

17.D

18.B

19.A本題中定義了整形變量case,但case是關鍵字,關鍵字不能用做標識符。單精度printF不是關鍵字,因為標識符區分大小寫。所以A不正確。

20.D

21.s[i]!='\0's[i]!='\\0'解析:本題是要刪除字符數組中和c一樣的字符,for循環實現的功能是逐個讀出字符數組s中的元素,并和字符c做比較,直到遇到字符串結束標志'\\0',結束循環,所以橫線上應該填s[i]!='\\0'。

22.(20<x)&&(x<30)||(x<-100)或20<x&&x<30||x<-100(20<x)&&(x<30)||(x<-100)或20<x&&x<30||x<-100

23.空間空間解析:程序在計算機上運行時所耗費的時間由程序運行時所需輸入的數據總量、對源程序進行編譯所需時間、計算機執行每條指令所需時間、程序中的指令重復執行的次數等決定。習慣上常常把語句重復執行的次數作為算法運行時間的相對量度,稱作算法的時間復雜度。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。

24.10410\r\n4解析:結構體變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。int占2個字節,float占4個字節,共用體變量所占的內存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

25.HellHell解析:文件的字符串讀寫函數fgets()有3個參數,第三個參數是文件指針指向要讀取數據的文件,第二個參數是一個整數(假設為n),表示從文件中讀取n-1個字符并在其后加一個'0',第一個參數為存放讀取的字符串的內存區的起始地址,讀取得數據保存在其中。可見本題的輸出結果為:Hell。

26.220.000000220.000000解析:注意區分運算符的優先級。先是給c賦值,然后計算x=f*=n/=50,得x=f*=2,最后有x=20。x輸出是按浮點數的形式輸出的,小數點后的0不能少。

27.c1!==''&&c2==''

28.77解析:程序中的if(i%7==0||i%11==0)是找出能被7或11整除的所有整數,a[j++]=i是將滿足條件的數放到a數組中,變量j記錄了滿足條件的數據個數,main函數通過變量n得到此數據個數。如果m的值為50,即表達式fun(10,aa,&n)為fun(50,aa,&n)時,輸出結果為:711142122283335424449

29.生命期生命期解析:軟件的生存周期是軟件工程最基本的重要概念。軟件產品和其他產品的生產一樣,都要經過分析、設計、制造、檢測和運行使用幾個階段。通常,把軟件從開始研制(形成概念)到最終軟件被廢棄這整個過程稱為軟件的生命期。

30.1616解析:在程序中首先將8賦值給變量a,然后再進行復合賦值運算。即a=a+a=8+8=16,所以該空格處應該填16。

31.123056009123\r\n056\r\n009解析:數組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執行第1個for循環后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環的功能是將數組元素按照3行3列的格式輸出。

32.30253025解析:本題考核的知識點是變量的存儲屬性和算術運算的應用。本題涉及了自動變量、靜態變量和外部變量。外部變量是定義在所有函數之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結束;靜態變量的存儲空間在程序的整個運行期間是固定的(static),本題函數fun()中staticinta=10定義個一個靜態變量a,此靜態變量a是個靜態的局部變量,即它的值只能在本函數中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統在程序執行過程中自動進行的,auto是自動變量的存儲類別標識符,如果省略auto,系統隱含認為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態的局部變量.算術運算中a+=b++相當于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。

33.軟件危機的出現軟件危機的出現

34.310

35.abcfgabcfg解析:本題考查的是字符數組用作函數參數。C語言中數組名可以看作該數組首地址的常量指針、因此可以直接傳遞給指針類型的參數。本題的主函數調用fun(s,3,strlen(s));后,函數中for循環就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數組s的長度-2位置,循環中讓s[i]=s[i+2],所以函數fun()實現的功能簡單來說就是將字符串s下標為p+2~k范圍的字符整體復制到字符串s下標為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。

36.pcpb或pbpcpcpa或papcpbpa或papbpc,pb或pb,pc\r\npc,pa或pa,pc\r\npb,pa或pa,pb

37.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當n=4時,判斷條件不滿足,退出循環。

38.封裝封裝

39.n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10解析:根據s=n%10可知:此操作可以將輸入的數據n的最后—位賦給s,根據題目的要求是要將輸入的數據逆序輸出,現在已經將原數據的個位輸出,在其后如果執行n/=10司將原數據的個位數去掉,滿足do....while的條件繼續s=n%10操作,此時可求出十位上的數進行輸出,繼續執行n/=10操作,與上相同最后將百位上的數進行輸出,所以該題答案為:\u3000n/=10。

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

41.D解析:結構體變量所占用內存的字節數是其所有成員所占用內存字節數之和。本題中整型變量i所占用的內存是2字節,字符型變量ch所占用的內存是1字節,雙精度型變量f所占用的內存是8字節,三者相加即可。

42.BB)【解析】算法在運行過程t}1需輔助存儲空間的大小稱為算法的空間復雜度。算法的有窮性是指個算法必須在執行有限的步驟以后結束。

43.D

44.B解析:選項A在定義main()函數時,函數頭后面多了一個分號,故選項A不正確;C語言中的注釋是不能嵌套的,故選項C不正確:選項D在使用預編譯指令#include時漏掉了#號,所以也是錯誤的。故應該選擇B。

45.B

46.B

47.B解析:switch語句只接受int型變量,如果不是則隱式轉換為int,由于C語言中float到int的轉換是截尾取整,故在switch中從case1:標號處開始執行,首先輸出4個1。此時又因為case2:之前并沒有break;之類的跳轉語句,所以case2:標號處的語句也被執行,輸出4個3。最后以默認的浮點數格式輸出變量a,變量a在switch語句中并未被改變,故最后輸出為1.900000,所以應該選擇B。

48.B解析:先定義了一個指向字符型數組str的指針p,指針p旨向數組str的首地址,p+3將指針指向str[3],又因為字符型數組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

49.BB)【解析】軟件開發階段包括需求分析、總體設計、詳細設計、編碼和測試_五個階段。其中需求分析階段常用的工具是數據流圖和數據字典。

50.D解析:面向對象的世界是通過對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協助進行,這樣的機制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執行某一處理或回答某一要求的信息,它統一了數據流和控制流。

51.A解析:本題考查C語言的綜合基礎知識。構成C程序的基本單位是函數,一個C程序總是從main函數開始執行,而不論main函數在整個程序中的位置如何。C語言的函數定義都是互相平行、獨立的,在定義函數時,一個函數內不能定義另一個函數。C函數定義的一般格式有兩種:傳統格式和現代格式。傳統格式也稱K&R格式,是早期編譯系統使用的格式;現代格式又稱ANSI格式,是現代編譯系統使用的格式。

52.B解析:聲明枚舉類型用enum開頭。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);

說明:1、在C編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數不能直接賦給一個枚舉變量。

53.C解析:本題涉及C語言最基本的4個知識點:①C語言的保留字必須小寫;②變量的存儲類型不同,其存儲位置和生存期也不一樣:③C語言允許其注釋部分出現在程序中的任何位置;④宏定義以#define開頭,行末不需要加分號。

54.A解析:auto變量:無static聲明的局部變量。用auto作存儲類別的聲明時,可以不寫auto,存儲類別隱含確定為auto(自動存儲類別),是動態存儲方式。大多數變量是自動變量。用static聲明的局部變量是靜態局部變量。函數調用結束后靜態局部變量占據的內存存儲單元空間不釋放,局部變量保留原值,下次調用時可以繼續使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變全局變量的作用域,實際上,關鍵字'auto'可以省略,auto不寫則隱含確定為'自動存儲類別',屬于動態存儲方式。

55.B

56.C

57.A解析:因為在while循環的循環條件中,一運算符是前綴形式,所以表達式—k的值是k自減之后的值。程序開始時,將k的值初始化為5,然后進入while循環,因為—k的值為4(非零),所以執行循環體輸出k-=3的值1,此時k的值也變為1。第2次執行循環條件,—k的值為0,所以循環結束。因此最后輸出的結果是1,故應該選擇A。

58.CC。【解析】在模塊化程序設計中,模塊之間的聯系可以通過程序的控制結構來實現,在自頂向下、逐步細化的設計過程中,首先要考慮全局目標,而不是細節。在程序設計中模塊化和結構化可以同時使用,一個模塊的內部結構也要符合結構化設計原則。

59.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。所以4個選項中C正確。

60.B解析:在main函數中定義了一個structabc類型的數組,同時分別利用{1,2,3}及(4,5,6}對數組中兩個元素進行初始化。在該結構體,依次對其中的a,b,c三個變量進行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。

61.A

62.D

63.B鏈表采用的是鏈式存儲結構,它的結點空間可以動態申請和釋放;它的數據元素的邏輯次序靠結點的指針來指示,插入、刪除不需要移動數據元素。但是鏈式存儲結構也有不足之處:每個結點中的指針域需額外占用存儲空間,它是一種非隨機存儲結構。

64.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的開始,SEEK_CUR代表的是文件當前位置。

65.D在軟件開發的過程中,應該盡早的制定測試計劃,其中在需求分析階段制定系統測試計劃

66.D本題考查鏈表的操作,本題中首先是s指向了它的下個結點,題目中說明了s總是指向鏈表的第一個結點,然后while循環找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結點,之前頭結點指向了空結點,所以本題實現的功能是使首結點成為尾結點。選項D正確。

67.A

68.D

69.Aprintf函數中格式字符“%8.6”的含義是:變量Y的輸出寬度為8(包括小數點),小數點后面保留6位小數,且右對齊。所以選擇A。

70.D本題考查typcdef重新聲明一種結構體類型,其中CIN為結構體類型名,而不是結構體變量,所以D選項正確。

71.A在變量定義doublea,*p:&a;中,*號是一個指針運算符,而非間址運算符,因此A)錯誤。

72.D

73.C在C語言中,當程序執行中,數組元素的下標超出所定義的下標范圍時,系統不會有提示。

74.D\n多元運算符問號前面表達式為真,所以(a-A+a)賦值給a,括號里的運算是把大寫字母變成小寫字母,所以答案應為選項D。

\n

75.B

\n本題考查switch語句及break的用法。第一個switch語句,因為a=6.a%2=0,所以執行“case0,m++;”,將m加1,遇到break語句跳出switch語句,結束循環。不執行下面的switch。

\n

76.A

77.C

78.C數據庫是存儲在計算機存儲設備中的、結構化的相關數據的集合。數據庫中的數據不只是面向某一項特定的應用,而是面向多種應用,可以被多個用戶、多個應用程序共享,不具有獨立的系統。設計數據庫的目的實質上是為了設計出滿足實際應用需求的實際關系模型。數據庫技術的主要目的則是有效地管理和存取大量的數據資源,包括:提高數據的共享性,使多個用戶能夠同時訪問數據庫中的數據;減小數據的冗余,以提高數據的一致性和完整性;提供數據與應用程序的獨立性,從而減少應用程序的開發和維護代價。本題答案為C。

79.A程序的執行總是從main函數開始,在main函數中結束,其他函數通過main函數調用執行,所以A)正確。

80.C解析:位與運算是將兩個運算分量看作兩個二進制數,然后對兩個二進制數的相應位進行與運算,若同時為1則結果相應位為1,否則結果相應位為0。因此,當兩個運算分量相同時,它們的相應位肯定也相同,即不同為1就同為0。所以得到的結果和運算分量也相同。所以,4個選項中選項C)符合題意。

81.

82.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數組s中的數據按行的順序依次存放到一維數組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過指針返回元素個數*/8}本題可以用兩個循環來處理。由于是按行的順序取出,因此第1個for循環用于控制行下標,第2個循環用于控制列下標。若改成按列的順序取出,則循環應改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標,不能用s[i][j]。若按行取出則列下標變化較快,若按列取出則行下標變化較快,即循環嵌套時,越在內層的循環,其循環變量變化就越快。<mm;jp)2021-2022年湖北省荊門市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列語句組中,正確的是()。

2.設有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,a11為第一元素,其存儲地址為1,每個元素占一個地址空間,則a85的地址為()。

A.13B.33C.18D.40

3.對于順序存儲的線性表,訪問結點和增加、刪除結點的時間復雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

4.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序將等待用戶輸入第2個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

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

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

6.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的運行結果是()。

A.55B.50C.45D.60

7.有以下程序,程序中庫函數islower(ch)用以判斷ch中的字母是否為小寫字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

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

A.一個算法的空間復雜度打,則其時間復雜度也必定大

B.一個算法的空間復雜度大,則其時間復雜度也必定小

C.一個算法的時間復雜度大,則其空間復雜度也必定小

D.算法的時間復雜度與空間復雜度沒有直接相關

9.若x,i,j和k都是int型變量,則執行下面表達式后x的值為()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

10.下列敘述中錯誤的是()。

A.在C語言中,函數中的自動變量可以賦初值,每調用一次賦一次初值

B.在C語言中,在調用函數時,實參和對應形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數形參的存儲類型是自動(auto)類型的變量

11.在計算機中,算法是指()

A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法

12.

有以下程序:

main

{intx=102,y=012;

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

}

執行后輸出結果是()。

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

13.下列程序執行輸出的結果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

14.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運行后的輸出結果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

15.算法應該是()

A.程序B.問題求解步驟的描述C.要滿足五個基本特性D.B和C

16.

17.

18.體育課的鈴聲響了,同學們都陸續地奔向操場,按老師的要求從高到矮站成一排。每個同學按順序來到操場時,都從排尾走向排頭,找到第一個比自己高的同學,并站在他的后面。這種站隊的方法類似于()算法。

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

19.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產生錯誤,其出錯原因是()。A.定義語句出錯,case是關鍵字,不能用做用戶自定義標識符

B.定義語句出錯,printF不能用做用戶自定義標識符

C.定義語句無錯,scanf不能作為輸入函數使用

D.定義語句無錯,printf不能輸出case的值

20.

二、2.填空題(20題)21.下列函數從字符數組s[]中刪除和c一樣的字符,請在下面橫線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

22.條件“20<x<30或x<-100”的C語言表達式是【】。

23.算法復雜度主要包括時間復雜度和【】復雜度。

24.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

25.已有文本文件test.txt,其中的內容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向該文件,則程序的輸出結果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

printf("%d%f\n",n,x);

}

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

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

}

28.下列程序的運行結果是【】。

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0||i%11==0)a[j++]=i;

*n=j;

}

main()

{intaa[M],n,k;

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");

}

29.軟件工程學把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。

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

main()

{inta=0;

a+=(a=8);

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

}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

33.軟件工程的出現是由于【】。

34.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

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

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

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

36.funl函數的調用語句為:fun1(&a,&b,&c);它將3個整數按由大到小的順序調整后依次放入a、b、c這3個變量中,a中放最大數。

voidfun2(int*x,int*y)

{intt;

t=*x;*X=*y;*y=t;

}

voidfunl(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(【】);

if(*pa<*pc)fun2(【】);

if(*pa<*pb)fun2(【】);

}

37.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

38.在面向對象方法中,信息隱蔽是通過對象的______性來實現的。

39.以下程序的功能是:將輸入的正整數按逆序輸出。例如:若輸入135則輸出531。請填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);[];}

while(n!=0);

printf("\n');

}

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

main()

{charc=′z′;

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

三、1.選擇題(20題)41.在16位IBM-PC機上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是()。

A.1B.2C.7D.11

42.下面關于算法的敘述中,正確的是()

A.算法的執行效率與數據的存儲結構無關

B.算法的有窮性是指算法必須能在執行有限個步驟之后終止

C.算法的空間復雜度是指算法程序中指令(或語句)的條數

D.以上三種描述都正確

43.下面被調用函數sub的函數值的類型是()sub(floatA){floatb;b=a*a+1;returnb;}

A.單精度型B.雙精度型C.空類型D.整型

44.以下4個程序中,完全正確的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

45.在下列關于C語言的局部變量和全局變量所采取的存儲類別的敘述中,錯誤的一條是()

A.對于動態局部變量來說,一旦離開函數,其值就消失

B.對于靜態局部變量來說,離開函數,其值仍保留

C.對于寄存器變量來說,一旦離開函數,其值就消失

D.靜態外部變量既可在本文件中引用,又可在其他文件中引用

46.以下程序運行后,輸出結果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45

47.執行下面程序的正確結果是()。main(){floata=1.9;switch(a){case0:printf("0000");case1:printf("1111");case2:printf("3333");}printf("%f",a);}

A.1.9B.111133331.9C.33331.9D.1111233331.9

48.下列程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

49.在結構化方法中,用數據流程圖(DFD)作為描述工具的軟件開發階段是()

A.邏輯設計B.需求分析C.詳細設計D.物理設計

50.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發送()。A.調用語句B.命令C.口令D.消息

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

A.構成C程序的基本單位是函數

B.可以在一個函數中定義另一個函數

C.main函數必須放在其他函數之前

D.C函數定義的格式是K&R格式

52.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=1,three};

C.enuma={"one","two","three"};

D.enuma{"one","two","three"};

53.下列敘述錯誤的是()。

A.在C語言中的保留字必須小寫

B.變量的存儲類型決定了變量的存儲位置及其生存期

C.宏定義以#define開頭,行末必須加分號

D.在C語言中的注釋行可以出現在程序的任何位置

54.在c語言中,變量的隱含存儲類別是()。

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

55.設p1和p2是指向同一個int型一維數組的指針變量,k為int型變量,則不能正確執行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

56.請讀程序片段(字符串內沒有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的輸出結果是()

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

57.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

A.1B.2C.4D.死循環

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

A.在模塊化程序設計中,一個模塊應該盡量多的包括與其他模塊聯系的信息

B.在自頂向下、逐步細化的設計過程中,首先應設計解決問題的第一個細節

C.在模塊化程序設計中,一個模塊內部的控制結構也要符合結構化原則

D.在程序設計過程中,不能同時采用結構化程序設計方法與模塊化程序設計方法

59.有以下程序: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);printf("%d\n",i);}程序運行后的輸出結果是()。

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

60.下面程序運行后的輸出結果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=-s[0].a+s[1].b;printf("%d\n",t);}

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

四、選擇題(20題)61.

62.

63.鏈表不具有的特點是()。

A.不必事先估計存儲空間B.可隨機訪問任意元素C.插入、刪除不需要移動元素D.所需空間與線性表長度成正比

64.函數fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

65.下面不屬于需求分析階段任務的是()。

A.確定軟件系統的功能需求B.確定軟件系統的性能需求C.需求規格說明書評審D.制定軟件集成測試計劃

66.程序中已構成如下圖所示的不帶頭結點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表結點,指針變量s總是作為指針指向鏈表的第一個結點。

若有以下程序段:

該程序段實現的功能是()。

A.刪除尾結點B.尾結點成為首結點C.刪除首結點D.首結點成為尾結點

67.

68.

69.有如下程序段:

其輸出結果是()。

A.123.141593B.1,23.141593C.12,3.141593D.123.1415930

70.設有以下語句:typedefstructTY{charC;inta{41;}CIN;

則下面敘述中正確的是()。

A.CIN是structTr類型的變量

B.TT是struct類型的變量

C.可以用,lr定義結構體變量

D.可以用CIN定義結構體變量

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

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

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

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

72.

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

A)對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B)數組名代表的是數組所占存儲區的首地址,其值不可改變

C)當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界的出錯信息”

D)可以通過賦初值的方式確定數組元素的個數

74.有以下程序:

#include<stdio.h>

main()

{chara=H;

a=(a>=Aa<=2)?(a

溫馨提示

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

評論

0/150

提交評論