2021-2022年四川省宜賓市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2021-2022年四川省宜賓市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2021-2022年四川省宜賓市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2021-2022年四川省宜賓市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2021-2022年四川省宜賓市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年四川省宜賓市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.堆排序是一種()排序。

A.插入B.選擇C.交換D.歸并

2.數據庫是()的集合,它具有統一的結構格式并存放于統一的存儲介質,可被各個應用程序所共享

A.視圖B.消息C.數據D.關系

3.假設以數組A[m]存放循環隊列的元素,其頭尾指針分別為front和rear,則當前隊列中的元素個數為()。

A.(rear-front+m)%m

B.rear-front+1

C.(front-rear+m)%m

D.(rear-front)%m

4.語句“printf("akbre"\'hi\'y\\\bou\n")”;的輸出結果是()。

A.akbre\'hi\'y'\\\bou

B.a\bre\'hi\\y\bou

C.re'hi'you

D.abre'hi'y\bou

5.若d為double型變量,則表達式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

6.如果樹的的結點A有4個兄弟,而且B為A的雙親,則B的度為()。

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

7.就平均查找速度而言,下列查找速度從慢至快的關系是()

A.順序折半哈希分塊B.順序分塊折半哈希C.分塊折半哈希順序D.順序哈希分塊折半

8.有以下程序:#include<stdio.h>intadd_more(inta,intb){returna+b-2;}main(){inti;for(i=0;i<4;i++)printf(“%d”,add_more(i,2));}程序運行后的輸出結果是()。

A.1234B.0123C.5678D.4321

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

A.在C語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數中,最好使用全局變量

C.外部變量可以在函數之間傳遞數據

D.自動變量實質上是一個函數內部的局部變量

10.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其輸出結果是()。A.1B.30C.1-2D.死循環

11.設無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點a出發進行深度優先遍歷可以得到的一種頂點序列為()。

A.aedfcbB.acfebdC.aebcfdD.aedfbc

12.有以下程序:#include<stdio.h>#include<stdlib.h>main{int*a,*b,*C;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);}程序運行后的輸出結果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

13.以下敘述中錯誤的是()。A.C程序在運行過程中所有計算都以二進制方式進行

B.C程序在運行過程中所有計算都以十進制方式進行

C.所有C程序都需要編譯鏈接無誤后才能運行

D.C程序中整型變量只能存放整數,實型變量只能存放浮點數

14.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關系

15.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0

16.下面敘述正確的是______。A.算法的執行效率與數據的存儲結構無關

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

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

D.以上三種描述都不對

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

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

18.允許對隊列進行的操作有()。

A.對隊列中的元素排序B.取出最近進隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素

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

A.數據所占的存儲空間

B.數據的邏輯結構在計算機中的存放形式

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

D.存儲在計算機外存中的數據

20.程序中若有如下說明和定義語句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;.....}以下選項中對函數Fun的正確調用語句是______。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

二、2.填空題(20題)21.數據庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

22.數據流的類型有______和事務型。

23.若由以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

24.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結果為______。

25.對長度為10的線性表進行冒泡排序,對壞情況下需要比較的次數為______

26.若有定義:intk;,以下程序段的輸出結果是______。for(k=2;k<6;k++,k++)printf("##%d",k);

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

main()

{

inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{

case0:m++;n++;break;

case10:n++;;break;

default:k++;n++;

}

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

}

28.數據庫系統中實現各種數據管理功能的核心軟件稱為【】。

29.設有下列宏定義:

#defineA2

#defineB(A+3)

則執行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。

30.設函數findbig已定義為求3個數中的最大值。以下程序將利用函數指針調用findbig函數。請填空。

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】;

seanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,2);

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

}

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

32.下列程序中的數組a包括10個整數元素,分別將前項和后項之和存入數組b,并按每行4個元素輸出數組b。請填空。

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

33.語句:x++;++x;x=1+x;執行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運行程序,輸入HOWAREYOU。

35.若有以下程序:

main()

{

inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},

{-31,32,-33,0}};

inti,j,s=0;

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

{

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

{

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

執行后輸出的結果是【】。

36.在關系運算中,【】運算是在給定關系的某些域上進行的運算。

37.定義inta=5,b;,則執行表達式b=++a*--a之后,變量b的值為【】。

38.表達式pow(2.8,sqrt(float(x)))值的數據類型為______型。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

40.以下程序段的運行結果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

三、1.選擇題(20題)41.當把以下4個表達式用作if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是

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

42.下列能正確定義且賦初值的語句是()。

A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

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

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結束

D.軟件維護是指修復程序中被破壞的指令

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

A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特征D.棧具有后進先出的特征

45.以下4個選項中,不能看成一條語句的是

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

46.有定義語句:intb;charc[10];則正確的輸入語句是()。

A.seanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.seanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

47.以下程序的輸出結果是main(){intc=35;printf("%d\n",c&c);}

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

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

A.gets(&s[0]);

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

C.gets(s);

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

49.有以下程序:#include<stdio.h>intf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f(a,2);printf("%d\n",s);}intf(intt[],intn){if((n>0)&&(n<5))returnt[n+1]+f(t,n-1);elsereturn0;}程序運行后的輸出結果是()。

A.4B.7C.10D.61

50.當輸入a1b2c3d4e時,下列程序的運行結果為______。main(){charstr[40];printf("請輸入含有4個數字字符的字符串:\n");scanf("%s",&str);insert(str);}insert(str)charstr[];{inti;for(i=strlen(str);i>0;i--){str[2*i)=str[i];str[2*i-1)='';}printf("\n結果是:%s",str);}

A.a1b2c3d4eB.1234C.a1b2D.因輸入錯誤,程序出錯

51.現有如下定義語句int*p,s[20],i;p=s;表示數組元素s[i]的表達式不正確的是

A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

52.C語言中main函數參數的非法表示形式是()

A.main(char*argv[],intargc)

B.main(inta,char**b)

C.main(inty,char*x[])

D.main(intargv,char*argc[])

53.有以下程序:fun(ihta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}程序運行后的輸出結果是()。

A.3B.6C.8D.12

54.已定義c為字符型變量,則下列語句中正確的是()。

A.c='97'B.c="97"C.c=97D.c="a"

55.在位運算中,操作數每右移兩位,其結果相當于()。

A.操作數乘以2B.操作數除以2C.操作數除以4D.操作數乘以4

56.有以下程序:#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

57.在調用函數時,如果實參是簡單變量,它與對應形參之間的數據傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實參傳遞給形參,再由形參傳遞給實參D.傳遞方式由用戶指定

58.有以下程序:main(){intm[][3]={1,4,7,2,5,8,3,6,9);inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}執行后輸出結果是______。

A.456B.258C.369D.789

59.若有如下程序:sub(inta,intb,int*z){*z=a+b;return;}main(){inta=1,b=2,c=3,d,e;sub(a,b,&D);sub(c,d,&e);printf("%d",e);}則程序運行后的輸出結果是

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

60.軟件設計包括軟件的結構、數據接口和過程設計,其中軟件的過程設計是指()

A.模塊間的關系B.系統結構部件轉換成軟件的過程描述C.軟件層次結構D.軟件開發過程

四、選擇題(20題)61.有以下程序當執行程序時,按下列方式輸入數據(從第l列開始,<CR>代表回車,注意;回車也是--+qz符)12<CR>34<CR>則輸出結果是()。

A.123B.12C.1234D.1234

62.下列敘述中正確的是()。A.算法的效率只與問題的規模有關,而與數據的存儲結構無關

B.算法的時間復雜度是指執行算法所需要的計算工作量

C.數據的邏輯結構與存儲結構是一一對應的

D.算法的時間復雜度與空間復雜度一定相關

63.

64.設有定義下列:inta=1,b=2,c=3,d=4,m=2,n=2;則表達式(m=a>b)&&(n=c>d)運算后,n的值是()。

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

65.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);

66.有以下程序

main()

{inti;

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

switch(i)

{case1:printf("%d",i);

case2:printf("%d",i);

default:printf("%d",i);

}

}

程序執行后的輸出結果是

A.011122B.012

C.012020D.120

67.

68.

69.在下述程序中,判斷條件“i>j”共執行的次數是

main()

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

for(;;)

{i+=k;

if(i>j)

{printf("%d",s);

break;

}s+=i;

}

}

A.4B.7

C.5D.6

70.有以下定義語句,編譯時會出現編譯錯誤的是()。

A)

B)

A.

B.

71.若有以下程序

#include<stdio.h>

voidf(intn);

main()

{

voidf(intn);

f(5);

}

voidf(intn)

{

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

}

則以下敘述中不正確的是

A.若只在主函數中對函數f進行說明,則只能在主函數中正確調用函數f

B.若在主函數前對函數f進行說明,則在主函數和其后的其他函數中都可以正確調用函數f

C.對于以上程序,編譯時系統會提示出錯信息:對f函數重復說明

D.函數f無返回值,所以,可用void將其類型定義為無返回值型

72.以下不合法的數值常量是()。

A.8.0E0.5B.lelC.0llD.0xabcd

73.下列程序的輸出結果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不確定的值

74.

75.以下程序段中的變量已正確定義:

程序段的輸出結果是()。

A.**B.****C.*D.********

76.

77.有以下程序:

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

A.16B.1C.32D.0

78.耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。

A.提高耦合性降低內聚性有利于提高模塊的獨立性

B.降低耦合性提高內聚性有利于提高模塊的獨立性

C.耦合性是指一個模塊內部各個元素間彼此結合的緊密程度

D.內聚性是指模塊間互相連接的緊密程度

79.

80.數據庫管理系統是()。

A.操作系統的一部分B.在操作系統支持下的系統軟件C.一種編譯系統D.一種操作系統

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:從字符串str中,刪除所有大寫字母'F'。

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

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

試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數fun(),其功能是將a、b兩個兩位正整數合并成一個新的整數放在c中。合并的方式是將a中的十位數和個位數依次放在變量c的百位和個位上,b中的十位數和個位數依次放在變量c的千位和十位上。例如,當a=45,b=12,調用該函數后c=1425。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

參考答案

1.B解析:堆排序是一種選擇排序。選擇排序有直接選擇排序和堆排序兩種。

2.C解析:數據庫是數據的集合,其中的數據是按數據所提供的數據模式存放的,它能構造復雜的數據結構,以建立數據之間的內在聯系與復雜的關系。

3.A

4.C先輸出a、b表示退一格,當執行到:\b后,光標往后退,接著輸出re'hi'y\(反斜杠后又加一個反斜杠的意思是要輸出一個反斜杠),此時又執行:\b后,\就被ou覆蓋。

5.D

6.C

7.B

8.Badd_more函數接收兩個參數a、b,返回“a+b-2”。main函數中,for循環調用add_more函數。當i=2時,傳入實參i和2,所以每次調用函數add_more時,b的值都是2。函數add_more返回值等價于實參i。所以每次for循環輸出的值就是i的值。故本題答案為B選項。

9.B解析:編譯時,編譯系統不為局部變量分配內存單元,而是在程序運行中,當局部變量所在的函數被調用時,編譯系統根據需要要臨時分配內存,調用結束空間釋放;全局變量一經定義,編譯系統為其分配固定的內存單元,在程序運行的自始至終都占用固定的單元。在考慮內存不定的情況下,最好使用全局變量。

10.C本題考查do-while循環,先執行d0輸出的x的值為1,接著執行while語句,此時--x的值為0,x也為0,而非0為1,循環成立,接著執行do輸出X值為-2,執行--x后,表達式為-2,而!(--x)為0,退出循環。

11.B

12.A本題中,首先創建一個動態內存,然后將地址分別存入指針a、b、c中,即a、b、c都指向相同.的變量。分別給a、b、c所指的變量賦值,最終a、b、c所指的變量中的值為3,最后打印a、b、c所指的變量

13.B所有的C程序都必須經過編譯鏈接無誤之后才能運行。在運行過程中,由計算機完成程序中的所有運算。由于計算機只能識別二進制,所以所有的運算都以二進制方式進行,而不是十進制。

14.C(10)C)解析:DB即數據庫(Database),是統一管理的相關數據的集合;DBMS即數據庫管理系統(DatabaseManagementSystem),是位于用戶與操作系統之間的一層數據管理軟件,為用戶或應用程序提供訪問DB的方法;DBS即數據庫系統(DatabaseSystem)由如下5部分組成,數據庫(數據)、數據庫管理系統(軟件)、數據庫管理員(人員)、系統平臺之一——硬件平臺(硬件)、系統平臺之二——軟件平臺(軟件)。

15.D解析:因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。

16.C解析:算法的執行效率與數據的邏輯結構和存儲結構都有很緊密的關系。算法的空間復雜度是指執行該算法需要的內存空間,并非算法程序中指令的條數。算法一般應該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執行有限個步驟之后終止,否則可能失去實際意義。

17.A【答案】:A

【知識點】:黑盒測試

【解析】:黑盒測試也稱功能測試或數據驅動測試,它完全不考慮程序內部的邏輯結構和內部特征,只著眼于程序的外部結構,主要用來檢查程序功能是否按照需求規格說明書的規定正常使用。故選A。

18.D

19.B解析:數據的存儲結構,又稱為數據的物理結構,是數據的邏輯結構在計算機中的存放形式,數據的存儲結構有順序結構、鏈式結構、散列結構和索引結構等。

20.A解析:題中將函數fun的入口地址賦給了指針變量f1,這時f1和fun都指向函數的開頭,調用*f1就是調用函數fun。

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

22.變換型變換型

23.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點是通過指針引用數組元素。98是數組w的第5個元素(最開始的為第0個),而通過*p=w已經將p指向了數組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。

24.44解析:strcpy(s1,s2)函數的作用是將字符串s2中的內容拷貝到字符串s1中的內容覆蓋。strlen()函數是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。

25.在最壞情況下冒泡排序法需要比較的次數為n(n-1)/2。

26.本題主要考查for循環語句。for循環的增量表達式為逗號表達式,相當于k+=2;,即每次循環后k增加2。第一次循環時,k=2,因此輸出##2;第二次循環時k=4,輸出##4。此后k=6,不滿足循環條件。\r\n\r\n

27.132132解析:本題考核的知識點是for循環與switch語句的綜合運用。主函數中用了一個for循環,for循環里嵌套了一個switch語句,for循環了三次,當i=9時,i/10=0,執行switch語句中case0分支,m和n的值各加1,變為1和1,然后遇到breake語句,退出switch語句;當i=10,i/10=1,執行switch語句中default分支,使k和n的值各加1,變為1和1,退出switch語句:當i=11時,i/10=1,執行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環結束。故該空格處應該填132。

28.數據庫管理系統數據庫管理系統(DBMS)

29.100100解析:本題考查帶參數的宏定義及相關運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。

30.findbigfindbig解析:本題首先定義了一個指向函數的指針變量f,如果希望讓它指向某個函數,只需把函數名賦給該指針變量即可。所以說本題的空格處應該填入函數名findbig。

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

32.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數組a中元素a[i]與a[j+1]值相加后的值賦予數組b中元素b[i],即可實現將一個數組的前項和后項之和存入另一數組。

33.x+=1x+=1解析:本題考查“++”,“--”運算符?!?+”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

34.HOWHOW解析:在scanf()函數中,使用空格作為分隔符,如果輸入含有空格的字符串,則不能使用scanf()函數,所以本題中輸入空格就返回了'\\0',s數組也就確定了,后面的輸入就不再讀入數組s中。

35.5858解析:本題中處理二維數組元素用了兩重循環,外循環變量i表示數組的行,內層循環變量j表示數組的列。在第二重循環中首先判斷數組元素的值是否小于0,若是則處理該行的下一個元素;若不是則判斷a[¨剛的值是否等于0,若等于0則退出內層循環開始處理下一行;其他情況下,把a[i][j]的值加到變量s中。所以本程序段的功能是把每行值為0的元素前面的所有大于0的元素值加到變量s中。

36.投影投影解析:在關系運算中,投影運算是在給定關系的某些域上進行的運算。

37.2525解析:#NAME?

38.floatfloat解析:在此表達式中x是float類型的變量,經過開方所得到的結果仍是float類型,再和2.8進行運算時,應該先將2.8轉換成float類型再運算,最后結果仍是float型。

39.3535解析:函數swap(int*a,int*b)的功能是實現*a和*b中兩個數據的交換,在主函數中調用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發生變化,所以輸出結果為35。

40.x=2

41.D解析:非常明顯,選項A)與選項C)含義相同,表示k除以2的余數非零,但要注意的是,任何整數除以2的余數只有兩個結果,0和1。選項A)與選項C)的含義表示k除以2的余數為1,也與選項B)的含義相同,所以答案為選項D)。

42.B解析:C語言規定,可以在定義變量的同時給變量賦初值,稱為變量初始化。在選項A)中在給n1和n2進行賦初值,但變量02沒有定義;在選項C)中定義變量f時,不能在賦值表達式的右邊出現變量f自身,所以選項C)錯誤:在選項D)用指數表達式的常量中,字母E后面的數應該為整數,而不應該為小數形式。因此,選項B)正確。

43.A解析:維護是軟件生命周期的最后一個階段,也是持續時間最長、付出代價最大的階段。軟件工程學的目的就在于提高軟件的可維護性,同時也要設法降低維護的代價。

軟件維護通常有以下四類;

①為糾正使用中出現的錯誤而進行的改正性維護;

②為適應環境變化而進行的適應性維護;

③為改進原有軟件而進行的完善性維護;

④為將來的可維護和可靠而進行的預防性維護。

軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。

44.D解析:棧是一種對操作的位置加以限制的線性表,它采用了順序存儲方式,屬于線性結構。與隊列不同,棧只允許在表的一端進行插入或刪除操作,具有后進先出的特征。

45.D解析:選項D)為兩條語句。

46.B解析:scanf函數中格式控制后面是地址表列,不能用變量名。數組名c代表數組在內存的首地址,&b代表變量b的首地址,選項B)正確。

47.C解析:本題考查按位與“&”。因為1&1=1,0&0=0,所以任何數與自身按位與,結果仍為此數,不發生變化。

48.D解析:在格式輸入中,要求給出的是編譯的地址,而D)答案中給出的s[1]是一個值的表達式。

49.B

50.A

51.C解析:當p指向s數組的首地址時,表示數組元素s[i]的表達式應當有:①s[i],②,(s+i),③*(p+i),④p[i]四種形式。選項C)錯誤的原因是,數組的地址是不可變的,指針的地址是可以變的。

52.A

53.D解析:主函數中首先定義了4個整型變量x、y、z和r,并分別給x、y、z賦初值為3、8、6,接著調用一個fun()函數,并將返回值賦給變量r。其中將fun(x,y)函數的返回值和2*z作為fun()函數的兩個參數。在內層fun(x,y)函數中,將x的值和y的值傳給形參a和b,此時a和b的值分別為3和8,執行if浯句,由于if后面判斷條件表達式a>b為假,所以執行else后面的語句,返回值為8。此時,外層fun(x,y)函數兩個參數為8和2*z=12,所以r的賦值語句相當于r=fun(8,12),同上分析可知tim(8,12)返回值為12,因此最后r的值為12。

54.C解析:本題考核的知識點是字符型變量的基本概念。用單引號括起來的一個字符稱為字符常量,而選項B和選項D中用的是雙引號,而用雙引號括起來的字符為字符串常量,故選項B和選項D不正確。因為在C語言中,字符常量在存儲時,并不是把該字符本身放到內存單元中去,而是將該字符的相應的ASCII代碼放到存儲單元中,所以C語言使字符型數據和整形數據之間可以通用,選項C正確.而選項A中,給字符型變量賦值時只能賦一個字符,而9,7作為字符時為兩個字符且必須分別為單引號括起來,故選項A不正確,所以,4個選項中選項C符合題意。

55.C解析:在位運算中,操作數每右移兩位,相當于在操作數的左側添0,最右面的兩位被移出,即操作數除以4。

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

57.B解析:C語言以定,實參變量對形參變量的數據傳遞是“單向值傳遞”,只由實參傳紿形參。在內存中,實參單元與形參單元是不同的單元。調用結束后,實參單元仍保留并維持原值。

58.C解析:數組m初始化后結果為:m[0][0]=1、m[0][1]=4、m[0][2]=7、m[1][0]=2、m[1][1]=5、m[1][2]=8、m[2][0]=3、m[2][1]=6、m[2][2]=9。for循環語句的作用是輸出數組元素m[2][0]、m[2][1]和m[2][2],所以輸出結果為:369。

59.D解析:第一次調用函數sub返回后,d的值為2+1=3;第二次調用函數sub返回后,e的值為3+3=6。

60.B軟件設計包括軟件的結構設計、數據接口設計和過程設計。其中軟件結構設計主要包括系統由哪些子系統構成,以及這些子系統之間的關系是怎樣的,并將這些內容編寫成文檔;數據接口設計的任務是為每個子系統設計其與其他子系統間的接口,并編寫成文檔,這個接口要是一個無二義的接口,不需要子系統的操作知識就可以使用;過程設計是指系統結構部件轉換成軟件的過程描述。

61.A按照從鍵盤輸入的數據可以判斷字符1賦給了變量a,字符2賦給了變量b,字符<cR>即回車賦給了變量e,字符3賦給了變量d。因此打印輸出的結果為選項A)。

62.B解析:本題考查數據結構中有關算法的基本知識和概念。數據的結構,直接影響算法的選擇和效率。而數據結構包括兩方面,即數據的邏輯結構和數據的存儲結構。因此,數據的邏輯結構和存儲結構都影響算法的效率。選項A的說法是錯誤的。算法的時間復雜度是指算法在計算機內執行時所需時間的度量;與時間復雜度類似,空間復雜度是指算法在計算機內執行時所需存儲空間的度量。因此,選項B的說法是正確的。

數據之間的相互關系稱為邏輯結構。通常分為四類基本邏輯結構,即集合、線性結構、樹型結構、圖狀結構或網狀結構。存儲結構是邏輯結構在存儲器中的映象,它包含數據元素的映象和關系的映象。存儲結構在計算機中有兩種,即順序存儲結構和鏈式存儲結構??梢?,邏輯結構和存儲結構不是一一對應的。因此,選項C的說法是錯誤的。

有時人們為了提高算法的時間復雜度,而以犧牲空間復雜度為代價。但是,這兩者之間沒有必然的聯系。因此,選項D的說法是錯誤的。

63.D

64.C解析:在邏輯與&&運算中,如果第一個操作數為假,則結果是假,后面的操作數不參與運算,本題中因為第一個操作數(m=a>b)為假,所以第二個操作數(n=c>d)不參加運算,因此n的值不變。

65.B在C語名中規定進行強制類型轉換的格式是:(類型名)變量名;并且給表達式賦值。

66.A在本題中,程序首先定義了一個循環變量i,然后執行for循環,從循環變量的初始值及循環的結束條件可以判斷出循環執行3次。

第一次循環時,i=0,然后執行switch語句,由于i=0,無法找到匹配的case結構,執行default結構,此時輸出變量i的值0。本次循環結束。

第二次循環時,i=1,然后執行switch語句,由于i=1,首先執行case1結構,輸出1,由于沒有break,程序接著執行case1結構,又輸出1,接著又執行default結構,又輸出一個1。在本次循環中,總共輸出3個1。

第三次循環時,i=2,然后執行switch語句,由于i=2,首先執行case2結構,輸出2,由于沒有break,程序接著執行default結構,又輸出一個2。在本次循環中,總共輸出2個2。三次

溫馨提示

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

評論

0/150

提交評論