2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計_第1頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計_第2頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計_第3頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計_第4頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩119頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

2.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序運行后的輸出結(jié)果是()。A.1313B.2234C.3234D.1234

3.設(shè)變量a是整型,f是實型,i是雙精度型,則表達式10+'a'+i*f值的數(shù)據(jù)類型為()。

A.intB.floatC.doubleD.不確定

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

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

5.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

6.有以下程序:

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

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

7.下列程序的輸出結(jié)果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

8.以下關(guān)于指針的說法錯誤的是()。

A.可以向指針中寫入任意數(shù)據(jù)

B.可以向指針所指內(nèi)存單元中寫入數(shù)據(jù)

C.指針可以指向與其基類型相同的普通變量

D.可以通過加法運算,使指針指向下一個內(nèi)存單元

9.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

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

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

11.

12.若x和y都是int型變量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的輸出結(jié)果()

A.200B.100C.100200D.輸出格式符不夠,輸出不確定的值

13.設(shè)char型變量x中的值為10100111,則表達式(2+x)(-3)的值為______。

A.10101001B.10101000C.11111101D.1010101

14.按照“先進后出”原則組織數(shù)據(jù)的結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

15.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。

A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,1,2,0

16.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

D.以上3種說法都不對

17.設(shè)有函數(shù)說明語句:intfun(int,int);以及函數(shù)指針定義語句:int(*f)(int,int);若要使函數(shù)指針指向函數(shù)fun的入口地址,以下選項中正確的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

18.

19.下列關(guān)于線性表、棧和隊列的敘述,錯誤的是()。

A.線性表是給定的n(n必須大于零)個元素組成的序列

B.線性表允許在表的任何位置進行插入和刪除操作

C.棧只允許在一端進行插入和刪除操作

D.隊列允許在一端進行插入在另一端進行刪除

20.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

二、2.填空題(20題)21.設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補充完整。

scanf(“%d”,______);

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

22.輸出指針數(shù)組各元素所指的整數(shù)值和它存放的地址值。

#include<stdio.h>

main()

{inti;

inta[5]={1,3,5,7,9};

int*num[5];

int【】;

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

num[i]=【】;

p=num+0;

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

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

p++;

}

}

23.實現(xiàn)程序可將磁盤中的一個文件復制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當于copy命令),假定文件在當前目錄下。請補全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

24.有下面的程序:

#include<stdio,h>

main()

{enumteam{my,your=4,his,her=his+10};

prinff("%d%d%d%d\n",my,your,his,her);

此程序的輸出結(jié)果是【】。

A)0123B)04010C)04515D)14515

25.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

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

}

26.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:

2345678910。

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

27.以下程序中select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標。請?zhí)羁铡?/p>

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

for(i=0;i<N;i++

forj=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j:}

*n=______;

return______;

}

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf("max=%d,line=%d\n",max.n;

}

28.關(guān)鍵字ASC和DESC分別表示【】的含義。

29.沒有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進制是【】。

30.設(shè)有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。

31.若有以下函數(shù)定義,函數(shù)返回值的類型是【】。

fun(doubleA)

{returna*a*a;}

32.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復制,即將t所指字符串復制兩次到s所指內(nèi)存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調(diào)用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

voidstrcpy2(char*s,char*t)

{char*p=t;

while(*s++=*t++);

s=【】;

while(【】=*p++);

}

main()

{charstr1[100]="abed",str2[]="efgh";

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

}

33.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。

34.當數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

35.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

36.用指針法求出數(shù)組元素中最大者和最小者。

intmax,min;

voidmax_min_value(array,n)

intarray[],n;

{【】;

max=min=*array;

for(【】;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

main()

{inti,number[20],*p;

p=number;

printf("輸入20個數(shù)據(jù):\n");

for(i=0;i<20;i++,p++)scanf("%d",p);

【】;

max_min_value(p,10);

printf("max=%-10dmin=%d\n",max,rain);

}

37.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

38.以下程序的輸出結(jié)果是【】。

main()

{chars[]=“abcdef”;

s[3]='\0';

printf(“%s\n”,s);

}

39.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

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

main()

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

sstrcpy(str1,str2);

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

}

40.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

三、1.選擇題(20題)41.在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

42.下列程序執(zhí)行后的輸出結(jié)果是______。main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}

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

43.執(zhí)行下列程序的輸出結(jié)果是()。main(){union{intb;charc[2];}y;y.b=0x4142;printf("%c,%c",y.c[1],y.c[0]);}

A.65,66B.a,bC.B,AD.A,B

44.下列程序的運行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

A.2,2,0B.2,2,2C.0,2,0D.2,0,2

45.應(yīng)用數(shù)據(jù)庫的主要目的是A.A.解決數(shù)據(jù)保密問題

B.解決數(shù)據(jù)完整性問題

C.解決數(shù)據(jù)共享問題

D.解決數(shù)據(jù)量大的問題

46.若有下面的說明和定義,則sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

47.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

48.以下程序的輸出結(jié)果為()。inta,b,C;a=10;b=50;C=30;if(a<b)a=b;b=C;c=a;printf("a=%d,b=%d,c=%d",a,b,C);

A.a=50,b=30,c=30

B.a=10,b=30,c=10

C.a=50,b=30,c=10

D.a=50,b=30,c=50

49.已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

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

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

51.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流圖(DFD)作為描述工具的軟件開發(fā)階段是()。

A.可行性分析B.需求分析C.詳細設(shè)計D.程序編碼

52.為了提高軟件模塊的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

53.有以下程序段:intn,t=1,s=0;scanf("%",&n);do{s=s+t;t=t-2;}while(t!=n);為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是()。

A.任意正奇數(shù)B.任意負偶數(shù)C.任意正偶數(shù)D.任意負奇數(shù)

54.軟件生命周期中花費時間最多的階段是()

A.詳細設(shè)計B.軟件編碼C.軟件測試D.軟件維護

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

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

56.設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL

57.在軟件測試設(shè)計中,軟件測試的主要目的是

A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.盡可能多地發(fā)現(xiàn)軟件中的錯誤

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

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值.

D.當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL

59.有以下程序:#include<stdio.h>#include<string.h>main(){charp[]={'a','b','c'],q[10]={'a','h','c'}prinff("%d%d\n",strlen(p),strlen(q));以下敘述中正確的是()。

A.在給p和q數(shù)組賦初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3

B.由于P數(shù)組中沒有字符串結(jié)束符,長度不能確定;q數(shù)組中字符串長度為3

C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;p數(shù)組中字符長度為3

D.由于p和q數(shù)組中沒有字符串結(jié)束符,故長度都不能確定

60.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序運行后的輸出結(jié)果是______。

A.15B.16C.12D.59

四、選擇題(20題)61.

下列程序執(zhí)行后的輸出結(jié)果是()。

main

{charx=0xFFFF;printf("%d\n",x--);}

A.-32767B.FFFEC.1D.32768

62.有如下程序段

structabc

{inta,b,c,s;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;

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

}

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

A.5B.6

C.7D.8

63.若x,i,j和k都是int型變量,則計算表達式x=(i=4,j=16,k=32)后,x的值為()。

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

64.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是()。A.A.isupper(c)B.'A'<=c<='Z'

C.'A'<=c&&c<='Z'

D.c<=('z'-32)&&('a'-32)<=c

65.

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

A.簡單c語句必須以分號結(jié)束

B.C程序中的每—行只能寫—條i{}句

C.c語言程序中的注釋必須與語句寫在同一行

D.C語句必須在一行內(nèi)寫完

67.數(shù)據(jù)庫設(shè)計包含四個階段,它們是需求分析、()、邏輯設(shè)計和物理設(shè)計。

A.編碼設(shè)計B.測試階段C.運行階段D.概念設(shè)計

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

A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性

B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性

C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度

D.內(nèi)聚性是指模塊間互相連接的緊密程度

69.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;

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

70.設(shè)以下變量均為int類型,則值不等于7的表達式是()。

A.(x=y=6,x+y,x+1)

B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y)

D.(y=6,y+1,x=y,x+1)

71.有以下程序函數(shù)fun只對下標為偶數(shù)的元素進行操作.:

程序運行后的輸出結(jié)果是()。A.A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

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

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

73.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫的劃分原則是()

A.數(shù)據(jù)之間的聯(lián)系方式B.記錄長度C.聯(lián)系的復雜程度D.文件的大小

74.

75.

76.有以下程序

main()

{inti;

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

switch(i)

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

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

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

}

}

程序執(zhí)行后的輸出結(jié)果是

A.011122B.012

C.012020D.120

77.有以下程序:

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

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

78.下列數(shù)據(jù)模型中,具有堅實理論基礎(chǔ)的是()。A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上三個都是

79.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨立性是指當數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個元組就是一個字段

D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

80.

五、程序改錯題(1題)81.下列給定程序中,fun()函數(shù)的功能是:從整數(shù)1~50中,選出能被3整除且有一位上的數(shù)是5的數(shù),并把這些數(shù)放b所指的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個位數(shù),a2放十位數(shù)。

請修改函數(shù)中的錯誤,得出正確的結(jié)果。

注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g。***,刪除后,字符串中的內(nèi)容則應(yīng)當是****a*bc*def*g。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>

分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

2.C本題考查了宏定義與局部變量的區(qū)別,宏定義的作用范圍為整個程序,而變量的作用范圍只在定義它的函數(shù)體的部分,因此,主函數(shù)中定義的i與fun中的i互不相干。

3.C

4.Aswitch語句中不一定使用break語句,選項A正確;break語句除了用于switch語句,還可以用于循環(huán)語句中,選項B、C錯誤;switch語句不一定需要使用default語句,選項D錯誤。本題答案為A選項。

5.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同一個存儲單元,且此存儲單元為2個字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以x.i的值為266。

6.Astatic靜態(tài)變量只在聲明時初始化一次。mul()累乘,第一次init=1,init}=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五層init=24,val=5,因此結(jié)果為l,2,6,24,120。故答案為A選項。

7.A本題考查switch語句。當i=1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,a=a+2=2,a=a+3=5;當i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下運行,a=a+2=7,a=a+3=10;當i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a=a+2=13,a=a+3=16;當i=4時,執(zhí)行default,a=a+3=19,結(jié)束循環(huán)。

8.A指針變量必須區(qū)分基類型,可以向指針所指內(nèi)存單元寫入與基類型相同的數(shù)據(jù),而不能寫入任意數(shù)據(jù),選項A錯誤,選項B正確;指針可以指向與其基類型相同的普通變量,選項C正確;指針是一個內(nèi)存地址,它是一個整數(shù),可以通過加法運算,使指針指向下一個內(nèi)存單元,選項D正確。故本題答案為A選項。

9.A解析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭。

10.BB選項的特點是順序存儲結(jié)構(gòu)的特點,即數(shù)組的特點。

11.A

12.A

13.D解析:異或運算符(^)的運算規(guī)則是:參加運算的兩個相應(yīng)位同號,則結(jié)果為0(假);異號則為1(真)。取反運算符(-)的運算規(guī)則是:對一個二進制數(shù)按位取反,即將0變?yōu)?,1變?yōu)?。本題(-3)是對3(二進制形式為00000011)按位取反即11111100。表達式(2+x)(-3)的值就等價于(00000010+10100111)^11111100,結(jié)果為01010101。

14.B棧是線性表的一種,其插入和刪除運算都只在表的一端進行。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素是最后被插入的元素,不是最后被刪除的元素,是按先進后出的原則組織數(shù)據(jù)的。

15.AC語言中規(guī)定else總是和之前與其最近的且不帶else的if配對。題目中,“if(a=1)b=1;c=2;”默認省略了else,導致下一句else沒有匹配語句。故本題答案為A選項。

16.D解析:程序設(shè)計的過程應(yīng)是先畫出流程圖,然后根據(jù)流程圖編制出程序,所以選項A錯誤。程序中的注釋是為了提高程序的可讀性,注釋必須在編制程序的同時加入,所以,選項B和選項C錯誤。綜上所述,本題的正確答案為選項D。

17.CC語言中,函數(shù)名也是一個指針,是函數(shù)的人口地址。使函數(shù)指針f指向函數(shù)fun的入口地址,直接將函數(shù)名fun賦給指針f即可。故本題答案為C選項。

18.C

19.A解析:線性表的插入和刪除允許在任何位置進行,所以B選項的說法是正確的;棧的操作只允許在棧頂進行,因此,棧稱為先進后出表(FILO,FirstInLastOut),或“后進先出”表(LIFO,LastInFirstOut),所以C選項說法也是正確的;隊列(queue)是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),因此隊列亦稱作先進先出(FIFO,FirstInFirstOut)的線性表,或后進后出(LILO,LastInLastOut)的線性表。所以D選項說法也是正確的。

20.B本題考查for循環(huán)的使用。對于第1個for循環(huán),任何一個i,內(nèi)層j的循環(huán)都要使j~0到3,j=4時不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4=24次。

21.k*kk*k解析:本題考查的知識點是scarf()函數(shù)和printf()函數(shù)的用法。scanf()函數(shù)有兩個參數(shù),第一個參數(shù)是格式控制部分(格式控制部分是字符串,主要由“%”號和格式字符組成)第二個參數(shù)是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空格處位于scanf()函數(shù)的第二個參數(shù)處,所以,第一個空應(yīng)該填地址k。printf()函數(shù)有兩個參數(shù),第一個參數(shù)是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成的,通常是字符常量。非格式字符作為輸出數(shù)據(jù)的間隔,輸出時原樣輸出)第二個參數(shù)為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出的表達式組成的,表達式之間用逗號分隔開)。而第;個空位于printf()函數(shù)的第二個參數(shù)處,所以應(yīng)該填*K。

22.**pa+I**p*p

23.3!feof(f1)3\r\n!feof(f1)解析:要實現(xiàn)文件復制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。

24.CC解析:枚舉的語法規(guī)定,當枚舉元素沒有賦值時,如果前面沒有其他枚舉元素,其值為0;如果前面有其他枚舉元素,其值為前一個元素的值加1,所以his的值為5,her的值為15。

25.132132解析:在程序中,i從9開始循環(huán),當i=9時,執(zhí)行case0后的語句m++;n++;此時m=1,n=1,然后執(zhí)行break,跳出循環(huán);當i=10時,執(zhí)行detault后的語句k++;n++;此時k=1,n=2;當i=11時,再執(zhí)行default后的語句,k=2,n=3。此時,m=1,n=3,k=2。輸出結(jié)果為132。

26.本題程序的流程是:讓i;j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,所以s[i]要留到新數(shù)組中。注本題中i、j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。\r\n\r\n

27.rowa[row][colum]row\r\na[row][colum]解析:通過對題意的分析,在select()函數(shù)中,變量row的作用是用來記錄最大元素的行下標,column的作用是用來記錄最大元素的列下標。程序中通過一個循環(huán)求得數(shù)組元素中最大值的行列下標,分別存放在變量row和colmnn中,根據(jù)題意,應(yīng)該把行下標賦值給形參指針變量n指向的變量,把最大值a[row][columa]作為函數(shù)值返回。

28.升序排列和降序排列升序排列和降序排列解析:ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語句中的ORDER子句中。

29.1000001010000010解析:運算“&”的規(guī)則是只有當兩個相應(yīng)的二進制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進制數(shù)10000010相與。

30.88解析:本題考查帶參數(shù)的宏定義及相關(guān)運算.運算過程為:t=B*2=A+3*2=2+3*2=8。

31.int類型int類型

32.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函數(shù)。strcpy2()中,首先將指針t保存到指針p中,然后進入第1個while()循環(huán),其循環(huán)條件為*s++=*t++,其中“*”和“++”運算符的優(yōu)先級相同,但他們的結(jié)合性為從右至左,而“=”運算符優(yōu)先級比較低,所以原表達式等價于(*s++)=(*(t++)),即將t當前所指內(nèi)容復制到s當前所指地址中,然后讓s和t同時往后移動一位,整個表達式返回的是復制給s的值。所以,當t所指內(nèi)容是字符串結(jié)束符'\\0',時,while循環(huán)結(jié)束,原先t所指的整個字符串也就復制到s所指的地址中去了。但是,while循環(huán)最后一次判斷也會讓s和t往后移動一位,即此時s指向了字符串結(jié)束符'\\0'的后一位。所以第2次復制字符串之前,應(yīng)先將s指針往回移動一位,故前一空應(yīng)該填入s-1或其他等價形式。接下來的while循環(huán)實現(xiàn)第二次復制,照抄第1次的while循環(huán)就行,故后一空應(yīng)填入*s++。

33.1212解析:x=(表達式1,表達式2,…)的形式,結(jié)果為最后一個表達式的值:x=(a=4,6*2)=2*6=12。

34.物理獨立性物理獨立性

35.fopenfopen解析:函數(shù)fopen的原型為FILE*fopen(char*filename,char*mode),功能為以mode指定的方式打開名為filename的文件;函數(shù)fseek的原型為intfseek(FILE*fp,longoffset,intbase),功能為將fp所指向的文件的位置指針移到以base所指出的位置為基準,offset為位移量的位置;函數(shù)ftell的原型為longftell(FILE*fp),功能為返回fp所指向的文件中當前的讀寫位置;函數(shù)fclose的原型為intfclose(FILE*fp),功能為關(guān)閉fp所指的文件,釋放文件緩沖區(qū)。

36.int*pp=array+1p=numberint*p\r\np=array+1\r\np=number解析:函數(shù)max_min_value()中用到了指針變量p,顯然應(yīng)在第一個空格處填int*p。函數(shù)max_min_value()中的for循環(huán)逐一把數(shù)組中的元素與max和min的當前值進行比較。max和rain的初值是數(shù)組的第1個元素值,第1次比較應(yīng)與第2個元素比較,即array+1。第二個空格處應(yīng)填p=array+1。主函數(shù)main()中的指針變量p首先指向數(shù)組number的第1個元素,當?shù)?個for循環(huán)結(jié)束時,它指向數(shù)組的最后一個元素。若這時將p作為實參傳給被調(diào)用函數(shù),形參array[]數(shù)組的首址將是number口數(shù)組的最后元素的地址,而number[]數(shù)組的前n-1個元素不能參加比較,這將引起計算出錯。因此,在調(diào)用max_min_value()函數(shù)之前,應(yīng)將指針p指向number[]數(shù)組首址,即在第三個空格應(yīng)填寫p=umber。

37.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。

38.abcabc解析:字符串的結(jié)束標記'\\0',當輸出一個存放在字符數(shù)組中的字符串時,只需輸出到'\\0'為止,而不管其后有什么數(shù)據(jù)。本題給字符數(shù)組s的元素s[3]賦值為'\\0',故只能輸出3個字符“abc”。

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

40.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。

41.D

42.C解析:根據(jù)二維數(shù)組的定義得出: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,所以本題的輸出是第3行的值m[2][0],m[2][1],m[2][2],即369。

43.D解析:共用體中的成員是共享同一內(nèi)存區(qū)域的,另外,整數(shù)在內(nèi)存中的表示是低字節(jié)在前高字節(jié)在后,所以給y.b賦值0x4142,等價于給y.c[0]賦值0x42(字符B),y.c[1]賦值Ox41(字符A)。所以本題輸出的結(jié)果是A,B。故應(yīng)該選擇D。

44.A解析:本題考查ifelse語句的使用。先判斷第1個if語句,因為c=1>0,所以x=x+y=0+2=2。第1個if語句,因為a=-5<0,所以進入下列的復合語句。經(jīng)判斷發(fā)現(xiàn),復合語句中第2個if語句的條件均不滿足,不執(zhí)行任何語句退出,在這個過程中y和z的值沒有發(fā)生變化。

45.C數(shù)據(jù)庫是對數(shù)據(jù)進行操作和管理的,可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。數(shù)據(jù)庫可以被直觀地理解為存放數(shù)據(jù)的倉庫,數(shù)據(jù)庫可以對大量數(shù)據(jù)進行管理和應(yīng)用。一個應(yīng)用數(shù)據(jù)庫的主要目的就是要實現(xiàn)數(shù)據(jù)的共享,能使應(yīng)用數(shù)據(jù)庫的數(shù)據(jù)被大量用戶使用。

46.D解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和,每個成員分別占有自己的內(nèi)存單元;共用體變量所占的內(nèi)存長度等于最長的成員的長度。結(jié)構(gòu)體變量aa中,成員r1占2個字節(jié),r2占8個字節(jié),r3占4個字節(jié),共用體ua占8個字節(jié),所以共占用2+8+4+8=22個字節(jié)。

47.D解析:本題中是一個含有兩個結(jié)點的循環(huán)鏈表。

C語言中結(jié)構(gòu)體的定義為:

struct結(jié)構(gòu)題類型名

{

成員項表;

};

48.D解析:a的初值為10,b的初值為50,a<b為真,執(zhí)行a=b,則a的值為50。繼續(xù)執(zhí)行b=c;和c=a;,則b=30,c=50。所以選項D正確。

49.A本題考查的知識點是轉(zhuǎn)義字符。題目中的關(guān)鍵是八進制101的十進制是多少.八進制的101轉(zhuǎn)換為十進制為65,也就是字符A的ASCII。

50.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運行中,當局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

51.B解析:軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試五個階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。

52.D解析:耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,是互相關(guān)聯(lián)的。在程序設(shè)計中,各模塊間的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,有利于提高模塊的獨立性。

53.D解析:要使程序段不陷入死循環(huán),必須存在終止循環(huán)的條件“t=n”,由于t的初始值為1,且每執(zhí)行一次循環(huán)都會使t的值減2,故執(zhí)行本程序后t有可能的最大值為-1,然后,每循環(huán)一次就減2,所以鍵盤輸入的n的值必須是t的值之一,即為任意負奇數(shù)。

54.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個所段。本題中,詳細設(shè)計、軟什編碼和軟件測試都屬于軟件開發(fā)階段;維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段,軟件工程學的一個目的就是提高軟件的可維護性.降低維護的代價。

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

56.B(27)B)解析:函數(shù)feof的功能是:測試fp所指的文件的位置是否已達到文件尾,如果達到文件尾,則函數(shù)返回非0值,否則返回0,表示文件尚未結(jié)束。

57.D解析:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結(jié)果與實際結(jié)果之間的差別。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。

58.C解析:函數(shù)形參和實參分別占用不同的內(nèi)存單元,改變形參的值不會影響對應(yīng)實參的值,選項A)正確。指針類型的函數(shù)可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數(shù),選項C)錯誤。

59.B解析:strlen函數(shù)用于計算以,'\\0'結(jié)束的字符串的長度,函數(shù)值為字符串的實際長度,長度中不包括,'\\0'。q數(shù)組定義的數(shù)組大小為10,而初始化時字符串只占用了前3個存儲單元,其余存儲單元系統(tǒng)自動加'\\0',故數(shù)組q的長度為3;而p數(shù)組定義時沒有指定大小,其大小根據(jù)初始化所賦值確定為3,沒有字符串結(jié)束符,故字符串的長度不能確定。

60.A解析:自增運算符“++”放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。語句p=s;使指針p指向字符串s的首地址,第一次輸出語句先輸出字符'1',指針p再往后移一位,指向字符'5'的地址,第二個輸出語句,同樣先輸出字符'5',指針p再往后移一位,指向字符'9'的地址。

61.C

\n因為x=0xFFFF=11111111,因此當以整型形式輸出時對應(yīng)的數(shù)為一1。

\n

62.B本題中,程序首先定義一個結(jié)構(gòu)體,該結(jié)構(gòu)體定義了四個整型變量。在主函數(shù)中,首先定義了一個該結(jié)構(gòu)體的大小為2的結(jié)構(gòu)體數(shù)組,并給該數(shù)組進行了初始化,從初始化語句我們可以看出,初始化時缺少了一個結(jié)構(gòu)體成員的值,在這種情況下,系統(tǒng)會自動為缺省的成員補0,本題中就是給結(jié)構(gòu)體成員變量b賦初值為0。

然后定義了一個整型變量t,接著運行t=s[0].a+s[1].b;語句,即t=1+5=6。因此,程序的最后輸出結(jié)果為6,本題正確答案選B。

63.C本題主要考查逗號表達式。逗號是一個特殊的運算符,它具有所有運算符中最低的優(yōu)先級。在C語言中,用它可以將兩個表達式連接起來,逗號表達式的一般表現(xiàn)形式為:

表達式1,表達式2,…,表達式n

逗號表達式的求解過程是:先求解表達式1,再求解表達式2,依次往后計算,整個逗號表達式的值是最后一個表達式的值,如“3+5,5+6”的值是11。

在本題中,逗號表達式為i=4,j=16,k=32,根據(jù)上面的分析,計算逗號表達式得到的結(jié)果為k=32,最后將逗號表達式的結(jié)果賦值給變量x,那么變量x的值為32。因此,本題的正確答案選C。

64.B選項B先計算關(guān)系表達式“'A'<=c”的值是0還是l,再比較該值與字符'z'之間的大小關(guān)系,不能實現(xiàn)題目所要求的功能。

65.C

66.A語句必須以分號結(jié)束,所以A)正確,c語言中書寫格式自由,所以B)、C)、D)錯誤

67.D數(shù)據(jù)庫設(shè)計目前一般采用生命周期法,即將整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)分解成目標獨立的若干階段。它們是需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、編碼階段、測試階段、運行階段和進一步修改階段。數(shù)據(jù)庫設(shè)計中采用前四個階段,并重點以數(shù)據(jù)結(jié)構(gòu)與模型為設(shè)計主線。

68.B模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以C與D錯誤。故答案為B選項。

69.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項正確。

70.C逗號表達式,其值為最后一個表達式的值。如A,值為x+1,x=6,所以結(jié)果為7,而C,x+y,x=6,y=6,x+y=12.

71.A由函數(shù)fun(int*a,intn)中語句if(a[j]>a[k])k=j;可知當前k是記錄數(shù)組中較大數(shù)據(jù)值所在位置的下標變量,所以該函數(shù)的作用是對數(shù)組a中的下標為偶數(shù)位置的數(shù)據(jù)進行從大到小的排序,即對a[0],a[2],a[4],a[6]中的數(shù)據(jù)1,3,5,7進行從大到小的排序,其他位置的數(shù)據(jù)不變,所以答案為A)。

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

73.A\n數(shù)據(jù)庫按數(shù)據(jù)模型分為層次型數(shù)據(jù)庫、網(wǎng)狀型數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)模型即數(shù)據(jù)之間的聯(lián)系方式,因此正確選項為A)。

\n

74.B

75.D

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

第一次循環(huán)時,i=0,然后執(zhí)行switch語句,由于i=0,無法找到匹配的case結(jié)構(gòu),執(zhí)行default結(jié)構(gòu),此時輸出變量i的值0。本次循環(huán)結(jié)束。

第二次循環(huán)時,i=1,然后執(zhí)行switch語句,由于i=1,首先執(zhí)行case1結(jié)構(gòu),輸出1,由于沒有break,程序接著執(zhí)行case1結(jié)構(gòu),又輸出1,接著又執(zhí)行default結(jié)構(gòu),又輸出一個1。在本次循環(huán)中,總共輸出3個1。

第三次循環(huán)時,i=2,然后執(zhí)行switch語句,由于i=2,首先執(zhí)行case2結(jié)構(gòu),輸出2,由于沒有break,程序接著執(zhí)行default結(jié)構(gòu),又輸出一個2。在本次循環(huán)中,總共輸出2個2。三次循環(huán)后循環(huán)結(jié)束,主函數(shù)結(jié)束。

從上面對程序的分析我們可以知道,程序最后的輸出結(jié)果是011122。因此本題的正確答案選A。

77.D該題目中首先區(qū)別++n和n++,第一次調(diào)用f函數(shù)時,將++n(n自增l后再參與運算)作為參數(shù)進行傳遞,此時變量m的值為1,執(zhí)行n+=m;后,n=1,將l返回主函數(shù),并輸出。第二次調(diào)用f函數(shù)時,將n++(n參與運算后再自增1)作為參數(shù)進行傳遞,此時變量m的值為1,執(zhí)行語句n+=m;,由于n是靜態(tài)存儲變量,因此n=2,將2返回主函數(shù)并輸出。因此D選項正確。

78.C解析:在層次模型和網(wǎng)狀模型的系統(tǒng)研究和數(shù)據(jù)庫設(shè)計中,其性能和質(zhì)量主要決定于設(shè)計者的經(jīng)驗和技術(shù)水平,而缺乏一定的理論指導。因此,系統(tǒng)的研制和數(shù)據(jù)庫的設(shè)計都比較盲目,即使是同一個數(shù)據(jù)庫管理系統(tǒng),相同的應(yīng)用,不同設(shè)計者設(shè)計出來的系統(tǒng)其性能可以差別很大。關(guān)系模型是以數(shù)學理論為基礎(chǔ),從而避免了層次模型和網(wǎng)狀模型系統(tǒng)中存在的問題。本題的正確答案是C。

79.D數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤。數(shù)據(jù)的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B敘述錯誤。關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故選項C敘述錯誤。所以本題選D。

80.B

81.

【解析】(1)根據(jù)題目中要求,第一個標識下fun()函數(shù)的定義為“intfun(int*b);”。在C語言中規(guī)定,函數(shù)的定義格式,不應(yīng)以分號結(jié)束,所以應(yīng)把末尾分號去掉。

(2)題干中要求在1~50之間選出符合條件的整數(shù),循環(huán)條件表達式的起始應(yīng)當是j=1,而不是j=10,所以第二個標識下應(yīng)改為“for(j=1;j<=50;j++)”。

(3)變量i是標識數(shù)組b的下標,也就是數(shù)組的個數(shù)。題目“returnj”返回的是循環(huán)條件表達式中的變量,所以這里應(yīng)改為“returni”。

82.

【解析】要刪除字符串尾部的所有*,只要將尾部所有*中的第一個改為字符串結(jié)束符即可。首先,將字符串指針移動到字符串最后一個位置,檢查最后一個字符,是*則將指針前移,否則將指針后移一個位置賦值作為結(jié)束符。

2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

2.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序運行后的輸出結(jié)果是()。A.1313B.2234C.3234D.1234

3.設(shè)變量a是整型,f是實型,i是雙精度型,則表達式10+'a'+i*f值的數(shù)據(jù)類型為()。

A.intB.floatC.doubleD.不確定

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

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

5.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

6.有以下程序:

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

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

7.下列程序的輸出結(jié)果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

8.以下關(guān)于指針的說法錯誤的是()。

A.可以向指針中寫入任意數(shù)據(jù)

B.可以向指針所指內(nèi)存單元中寫入數(shù)據(jù)

C.指針可以指向與其基類型相同的普通變量

D.可以通過加法運算,使指針指向下一個內(nèi)存單元

9.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

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

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

11.

12.若x和y都是int型變量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的輸出結(jié)果()

A.200B.100C.100200D.輸出格式符不夠,輸出不確定的值

13.設(shè)char型變量x中的值為10100111,則表達式(2+x)(-3)的值為______。

A.10101001B.10101000C.11111101D.1010101

14.按照“先進后出”原則組織數(shù)據(jù)的結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

15.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。

A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,1,2,0

16.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

D.以上3種說法都不對

17.設(shè)有函數(shù)說明語句:intfun(int,int);以及函數(shù)指針定義語句:int(*f)(int,int);若要使函數(shù)指針指向函數(shù)fun的入口地址,以下選項中正確的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

18.

19.下列關(guān)于線性表、棧和隊列的敘述,錯誤的是()。

A.線性表是給定的n(n必須大于零)個元素組成的序列

B.線性表允許在表的任何位置進行插入和刪除操作

C.棧只允許在一端進行插入和刪除操作

D.隊列允許在一端進行插入在另一端進行刪除

20.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

二、2.填空題(20題)21.設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補充完整。

scanf(“%d”,______);

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

22.輸出指針數(shù)組各元素所指的整數(shù)值和它存放的地址值。

#include<stdio.h>

main()

{inti;

inta[5]={1,3,5,7,9};

int*num[5];

int【】;

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

num[i]=【】;

p=num+0;

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

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

p++;

}

}

23.實現(xiàn)程序可將磁盤中的一個文件復制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當于copy命令),假定文件在當前目錄下。請補全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

24.有下面的程序:

#include<stdio,h>

main()

{enumteam{my,your=4,his,her=his+10};

prinff("%d%d%d%d\n",my,your,his,her);

此程序的輸出結(jié)果是【】。

A)0123B)04010C)04515D)14515

25.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

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

}

26.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:

2345678910。

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

27.以下程序中select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標。請?zhí)羁铡?/p>

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

for(i=0;i<N;i++

forj=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j:}

*n=______;

return______;

}

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf("max=%d,line=%d\n",max.n;

}

28.關(guān)鍵字ASC和DESC分別表示【】的含義。

29.沒有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進制是【】。

30.設(shè)有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。

31.若有以下函數(shù)定義,函數(shù)返回值的類型是【】。

fun(doubleA)

{returna*a*a;}

32.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復制,即將t所指字符串復制兩次到s所指內(nèi)存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調(diào)用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

voidstrcpy2(char*s,char*t)

{char*p=t;

while(*s++=*t++);

s=【】;

while(【】=*p++);

}

main()

{charstr1[100]="abed",str2[]="efgh";

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

}

33.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。

34.當數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

35.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

36.用指針法求出數(shù)組元素中最大者和最小者。

intmax,min;

voidmax_min_value(array,n)

intarray[],n;

{【】;

max=min=*array;

for(【】;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

main()

{inti,number[20],*p;

p=number;

printf("輸入20個數(shù)據(jù):\n");

for(i=0;i<20;i++,p++)scanf("%d",p);

【】;

max_min_value(p,10);

printf("max=%-10dmin=%d\n",max,rain);

}

37.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

38.以下程序的輸出結(jié)果是【】。

main()

{chars[]=“abcdef”;

s[3]='\0';

printf(“%s\n”,s);

}

39.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

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

main()

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

sstrcpy(str1,str2);

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

}

40.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

三、1.選擇題(20題)41.在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

42.下列程序執(zhí)行后的輸出結(jié)果是______。main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}

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

43.執(zhí)行下列程序的輸出結(jié)果是()。main(){union{intb;charc[2];}y;y.b=0x4142;printf("%c,%c",y.c[1],y.c[0]);}

A.65,66B.a,bC.B,AD.A,B

44.下列程序的運行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

A.2,2,0B.2,2,2C.0,2,0D.2,0,2

45.應(yīng)用數(shù)據(jù)庫的主要目的是A.A.解決數(shù)據(jù)保密問題

B.解決數(shù)據(jù)完整性問題

C.解決數(shù)據(jù)共享問題

D.解決數(shù)據(jù)量大的問題

46.若有下面的說明和定義,則sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

47.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=

溫馨提示

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

評論

0/150

提交評論