2022年福建省莆田市全國計算機等級考試C語言程序設計_第1頁
2022年福建省莆田市全國計算機等級考試C語言程序設計_第2頁
2022年福建省莆田市全國計算機等級考試C語言程序設計_第3頁
2022年福建省莆田市全國計算機等級考試C語言程序設計_第4頁
2022年福建省莆田市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年福建省莆田市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的運行結果是()A.1B.0C.2D.3

2.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結構是()。

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

3.已知大寫字母A的ASCII碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉換為對應小寫字母的語句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

4.若有定義“doublea;floatb;shortc;”,若想把1.2賦給變量a,3.4賦給變量b,5678賦給變量c,程序運行時鍵盤輸入:1.23.45678<回車>則以下正確的讀入語句是()。A.scanf("%If%If%d",&a,&b,&c);

B.scanf("%If%If%hd",&a,&b,&c);

C.scanf("%If%f%hd",&a,&b,&c);

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

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

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

6.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法需要的內存空間

7.程序運行后的輸出結果是()。A.3B.4C.1D.9

8.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運行后的輸出結果是

A.9B.11C.19D.21

9.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y(tǒng))reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結果是______。A.3B.6C.8D.12

10.

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

A.(rear-front+m)%m

B.rear-front+1

C.(front-rear+m)%m

D.(rear-front)%m

12.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復制C.計算字符串的長度D.字符串的連接

13.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的運行結果是()。

A.500B.401C.503D.1404

14.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的運行結果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

15.下面關于線性表的敘述中,錯誤的是哪一個()。

A.線性表采用順序存儲,必須占用一片連續(xù)的存儲單元

B.線性表采用順序存儲,便于進行插入和刪除操作

C.線性表采用鏈式存儲,不必占用一片連續(xù)的存儲單元

D.線性表采用鏈式存儲,便于進行插入和刪除操作

16.某二叉樹的先序序列和后序序列正好相同,則該二叉樹可能是______的二叉樹。

A.高度大于1的左單支B.高度大于1的右單支C.最多只有一個結點D.既有左孩子又有右孩子

17.下列關于棧敘述正確的是A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.以上三種說法都不對

18.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

19.軟件生命周期是指()。

A.軟件的定義和開發(fā)階段

B.軟件的需求分析、設計與實現(xiàn)階段

C.軟件的開發(fā)階段

D.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

20.有下列程序:main{charp[]={a,h,c},q[]="a";printf("%d%d\n".sizeof(P),sizeof(q));}程序運行后的輸出結果是()。A.44B.33C.34D.43

二、2.填空題(20題)21.棧的3種基本運算是:入棧、退棧和______。

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

23.下列程序利用指針將2個數(shù)按從大到小的順序輸出。

main()

{inta,b,【】;

printf("inputa,b:");

scanf("%d%d",&a,&b);

【】;

p2=&b;

if(a<b)

{p=p1;

p1=p2;

p2=p;

}

printf("a=%db=%d\n",a,b);

printf("max=%dmin=%d\n",【】);

24.()是指用戶的應用程序與數(shù)據(jù)庫的邏輯結構是相互獨立的,也就是說,數(shù)據(jù)的邏輯結構改變了,用戶程序也可以不變。

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

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

26.測試的目的是暴露錯誤,評價程序的可靠性;而______得目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

27.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,i,x;

for(j=4;j______;j--)

{for(i=1;i<4;i++)

{x=(j-1)*4+______;

printf("%4d",x);

}

printf("\n");

}

28.下面程序的運行結果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

29.下面的程序用來統(tǒng)計文件中字符的個數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fP;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenfile!\n");sxit(0);}

while【】

{fgetc(fp);num++;}

printr("num=%d\n",num);

fclose(fp);

}

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

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

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

main()

{unsigneda=0112,x;

x=a>>3;

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

}

32.性結構中,第一個結點沒有前驅結點,其余每個結點有且只有【】個前驅結點;最后一個結點沒有后繼結點,其余每個結點有且只有【】個后繼結點。

33.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,這稱為______。

34.問題處理方案的正確而完整的描述稱為______。

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

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

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

請?zhí)羁铡?/p>

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

{doublex,y1,y2;

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

y1=fun([6]);

y2=fun([7]);

printf("y1=%lf,y2=%lf\n",y1,y

36.以下程序的功能是:處理由學號和成績組成的學生記錄,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,它的功能是:把分數(shù)最高的學生數(shù)據(jù)放在h所指的數(shù)組中,注意:分數(shù)高的學生可能不只一個,函數(shù)返回分數(shù)最高學生的人數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

37.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;

return(num);

}

38.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

39.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

40.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

序的輸出結果是______。

三、1.選擇題(20題)41.以下不能正確計算代數(shù)式sin2()值的C語言表達式是()。

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

42.運行下列程序時,若輸入的數(shù)據(jù)為“1,2,3”,則輸出結果是()。

main()

{floata,b,C,t;

scanf("%f,%f,%of",&a,&b,&C);

if(a<B)

{t=a;a=b;b=t;}

if(a<C)

{t=a;a=c;c=t;}

if(b<C)

{t=b;b=c;c=t;}

printf("%f\n%f\n%f\n",a,b,C);

}

A.1.002.003.00

B.1.003.002.00

C.132

D.3.0000002.0000001.000000

43.判斷字符型變量chr為小寫字母的表達式是______。

A.'a'<=chr<='z'

B.(chr>='a')||(chr<='z')

C.(chr>=A)&&(chr<=z)

D.(chr>='a')&&(chr<='z')

44.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.iff(a>b)‖(b>c))k=1;elsek=0;

C.iffa<=b)k=0;elseiffb<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

45.若說明int*p,n;則通過語句scanf能夠正確讀入數(shù)據(jù)的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p);

C.scanf("%d",n);

D.p=&n;scanf("%d",p);

46.對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數(shù)中正確的是()。

A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2

47.線性表的順序存儲結構和線性表的鏈式存儲結構分別是______。

A.順序存取的存儲結構、順序存取的存儲結構

B.隨機存取的存儲結構、順序存取的存儲結構

C.隨機存取的存儲結構、隨機存取的存儲結構

D.任意存取的存儲結構、任意存取的存儲結構

48.下列合法的字符型常量是()。

A.'\x13'B.'\081'C.'65'D.\n

49.有以下程序:#include<stdio.h>intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}執(zhí)行后的輸出結果是()。

A.12B.11C.18D.16

50.有以下程序:main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}rintf("%d\n",m);}程序運行后的輸出結果是()。

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

51.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

52.設血型占2個字節(jié),則unsignedint所能表示的數(shù)據(jù)范圍是______。

A.0~65535B.-32769~32767C.1~65536D.0~32767

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

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

54.有以下程序:#include<string.h>main(){charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";strcpy(p+strlen(q),r);strcat(p,q);printf("%d%d\n",sizeof(p),strlen(p));}程序運行后的輸出結果是()。

A.209B.99C.2011D.1111

55.有如下程序

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

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

該程序的輸出結果是

A.69825B.63825C.6385D.693825

56.對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數(shù)為()。

A.125B.n/2C.nD.n+1

57.在C語言中,下列各選項為不正確的int類型的常數(shù)足()。

A.32768B.0C.37D.0xAF

58.C語言的基本單位是()。

A.函數(shù)B.過程C.子程序D.子函數(shù)

59.fwrite函數(shù)的一般調用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

60.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

四、選擇題(20題)61.以下敘述中正確的是(

)。A.C語言中的全部數(shù)據(jù)類型都是基本類型B.C語言中的全部數(shù)據(jù)類型都是構造類型C.C語言中的數(shù)據(jù)類型只有兩種,即基本類型和構造類型D.以上都不對

62.

63.設變量已正確定義,則以下能正確計算f=n!的程序段是()。

A)f=0;B)f=1;

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

C)f=1;D)f=1;

for(i=n;i>1;i++)f*=i;for(i=n;i>=2;i--)f*=i;

64.有以下程序:

#include<<stdio.h>

structstu

{intnum;

charname[10]:

intage;}

voidfun(structstu*p)

{printf("%s\n",(*p).name);}

themain

{

structstustudents[3]={{9801,"Zhang".20},

{9802,"Wang",19},{9803,"Zhao",18}}

fun(students+2);

}

輸出的結果是()。

A.ZhangB.ZhaoC.WangD.18

65.有以下程序:

#include<stdio.h>

main()

{inta[]={10,20,30,40},*p=a,j;

for(i=0;i<=3;i++){a[i]=*P;p++;}

printf("oAd\n",a[2]);

}

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

A.30

B.40

C.10

D.20

66.下列程序的輸出結果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8

67.

68.

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

A.用E—R圖能夠表示實體集之間一對一的聯(lián)系、一對多的聯(lián)系、多對多的聯(lián)系

B.用E—R圖只能表示實體集之間一對一的聯(lián)系

C.用E—R圖只能表示實體集之間一對多的聯(lián)系

D.用E—R圖表示的概念數(shù)據(jù)模型只能轉換為關系數(shù)據(jù)模型

70.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

71.

72.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

73.若變量已正確定義,在if(W)printf(”%d、n”,k);中,以下不可替代w的是()。A.ab+1:B.ch=getchar()C.a==b+cD.a++

74.

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

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

76.

77.下列描述中正確的是()。

A.算法是指對解題方案的準確而完整的描述

B.算法的有窮性是指算法程序的長度是有限的

C.算法是否有效與擁有的情報無關

D.算法的基本特征有可行性、確定性和有窮性

78.在E-R圖中,用來表示實體的圖形是

A.矩形B.橢圓形C.菱形D.三角形

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:求S的值。設例如,當k為20時,函數(shù)的值應為1.551759。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開觸文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是移動字符串中的內容,移動的規(guī)則是把第1~m個字符,移動到字符串的最后,把第m+1到最后的字符移動到于符串的前面。例如,字符串中原有的內容為“ABCDEFGHIJK”,m的值為3,移動后,字符串中的內容應該是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.A雖為嵌套的for循環(huán),但“m=m%j”只執(zhí)行1次,即當i=3時,內層循環(huán)條件成立,m=55%3=1,故選A。

2.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數(shù)據(jù)的。

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。

3.B根據(jù)ASCII碼可知大寫字符A與小寫字符a的ASCIl碼相差32,而D中應該是加上'a',選項A和C左側的表達式都是大寫字符C與大寫字符A的差與'a'的ASCIl代碼的和就是小寫字符c的ASCII代碼。

4.Cscanf函數(shù)用于輸入數(shù)據(jù)。第1個參數(shù)表示輸入格式控制。本題變量a是double類型,使用格式控制符%If;變量b是float類型,使用%If;變量c是short類型,使用%hd,選項C正確。本題答案為C選項。

5.C【答案】:C

【知識點】:需求分析階段的任務

【解析】:需求分析階段的任務是深入描述軟件的功能和性能,確定軟件設計的約束和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求,借助于當前系統(tǒng)的邏輯模型導出目標系統(tǒng)邏輯模型,解決目標系統(tǒng)“做什么”的問題??煞譃樾枨筇岢?、需求描述及需求評審三個階段。從此可以看出需求分析的任務不包括制定軟件集成測試計劃,故選C。

6.D解析:算法的復雜度主要包括算法的時間復雜度和算法的空間復雜度。所謂算法的時間復雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復雜度一般是指執(zhí)行這個算法所需要的內存空間。

7.B[解析]每次內循環(huán)只循環(huán)一-次就結束,第一次外循環(huán)時t=t+b[][0][]=1+b[0][0]=1+0=1;第二次外循環(huán)時t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循環(huán)時t=t+b[][2][]=2+b[2][2]=2+2=40

8.A解析:本題考核的知識點是一維數(shù)組的定義,初始化和數(shù)組中元素的引用。函數(shù)f()的作用是形參a為偶數(shù)的時候返回0,主函數(shù)中首先定義了一個長度為8的一維數(shù)組,然后給它賦初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他沒有賦值的數(shù)組元素將自動賦值為0。for循環(huán)中,當s[1]不為偶數(shù)的時,將s[i]相加,即當i=3時,s[i]=2為偶數(shù),退出循環(huán),此時d的值為d=s101+s[1]+s[2]=1+3+5=9,因此最后輸出的d的值為9。所以,4個選項中選項A符合題意。

9.B解析:在主函數(shù)中,第—次調用fun函數(shù),將變量b,c的值傳給形參x,y,在fun()函數(shù)中執(zhí)行if語句,判斷b和c的值是否相等,由于在主函數(shù)中賦初值b=5,c=6,所以判斷條件不滿足,執(zhí)行else語句,返回表達式(x+y)/2的值,即:(5+6)/2,因為參數(shù)的類型都為int型,所以結果也為整型:5,第二次調用時8和5也不相等,所以返回值為6,因此,選項B是正確的。

10.B

11.A

12.C

13.Cfor循環(huán)中,函數(shù)f的返回值累加到變量a中。第1次循環(huán),a=0,i=0,返回值a=0*0+1=1;第2次循環(huán),a=1,i=10,返回值a=10*10+1+1=102;第3次循環(huán),a=102,i=20,返回值a=20*20+1+102=503;第4次循環(huán)a=503,i=30,不符合1<30,跳出循環(huán),最后結果輸出a=503。故本題答案為C選項。

14.A語句“pc=ch;”使得指針變量pc指向字符數(shù)組ch的首地址,即指向字符‘u’。而“pc+5”指向的是指針向后移動5位所指的字符,即指向字符‘z’,所以輸出的“*(pc+5)”的值為‘z’。故本題答案為A選項。

15.B

16.C

17.A棧是限定只在一端進行插入與刪除的線性表,按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。

18.A本題考查了函數(shù)的調用。首先主函數(shù)定義了兩個字符型數(shù)據(jù)b和a,給b賦值為字母a.a(chǎn)賦值為字母A,調用fun(&.b,a)函數(shù),*C=*c十1,a的ASCIl碼值加1后為b,A的ASCIl碼值加1后為B。輸出第一組值,排除C、D選項。B選項的值此時為小b,排除B選項,所以本題答案為A。

19.D通常把軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用、退役的過程稱為軟件生命周期。選項A、B、C選項均為生命周期的一部分。故選D選項。

20.C語句charp[]={a,b,c);定義了一個一維字符數(shù)組p[],并用3個字符a,b,c進行了初始化;而語句q[]="abe"表示定義了一個一維字符數(shù)組,并用一個字符串常量"abc"進行了初始化。在C語言中,系統(tǒng)在每個字符串常量的最后自動加入一個字符\0作為字符串的結束符。所以函數(shù)sizeof(q)=4,而sizeof(p)=3,因而選項C為正確答案。

21.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。

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

23.*p*p1*p2p1:&a*p1*p2

24.邏輯獨立性邏輯獨立性解析:數(shù)據(jù)獨立性包括數(shù)據(jù)的物理獨立性和邏輯獨立性。物理獨立性是指用戶的應用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)是相互獨立的。數(shù)據(jù)在磁盤上的數(shù)據(jù)庫中怎樣存儲是由DBMS管理的,用戶程序不需要了解,應用程序要處理的只是數(shù)據(jù)的邏輯結構,這樣當數(shù)據(jù)的物理存儲改變時。應用程序不用改變。邏輯獨立性是指用戶的應用程序與數(shù)據(jù)庫的邏輯結構是相互獨立的,也就是說,數(shù)據(jù)的邏輯結構改變了,用戶程序也可以不變。

25.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應ASCII碼值68。

26.軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定;調試也稱排錯,它是一個與測試有聯(lián)系又有區(qū)別的概念。具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。\r\n\r\n

27.ii解析:本題使用了一個兩重for循環(huán)輸出如題所示的方陣。從外層for循環(huán)的最后一條語句prinff('\\n');可以看出,外層for循環(huán)每次輸出方陣的一行,由于方陣是4行所以外層循環(huán)會循環(huán)4次,又從j=4和卜可以看出這4次循環(huán),循環(huán)變量i的值分別為4、3、2、1.故前一空應該填j>=1或者j>0,以保證j等于0時循環(huán)結束。內層循環(huán)控制每行輸出的4個數(shù),其循環(huán)變量i從1遞增到4,由于每行的4個結果也是差1遞增的,所以將每次結果減去循環(huán)變量i的值為一個常數(shù),每行分別是12、8、4、0,而這些值正好與4次外循環(huán)中表達式(j-1)*4的值相吻合,故后一空應該填i。

28.8080解析:本題考查的知識點是共用體數(shù)組變量所占內存的長度。數(shù)組a是共用體變量,共用體類型變量所占的內存長度為最大成員的長度,即單精度數(shù)組的長度,為4×4=16,因此,數(shù)組a所占的內存長度為5×16=80,所以最后輸出的s的值為80。

29.(!feof(fp))或feof(fp):=0(!feof(fp))或feof(fp):=0

30.8080解析:數(shù)組a是共用體變量,共用體類型變量所占的內存長度為最大成員的長度,即單精度數(shù)組的長度,為4×4=16,因此,數(shù)組a所占的內存長度為5×16=80,所以最后輸出的s的值為80。

31.x=11x=11解析:在對無符號數(shù)的右移是高位補0。

32.11

33.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結構(包括存儲結構、存取方式)改變時,不需要修改應用程序。而邏輯獨立性是指當邏輯結構改變時,不需要修改應用程序。

34.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

35.

36.max==a[i].smax==a[i].s解析:該程序使用循環(huán)嵌套,第1個for語句的作用是找出最大值。第2個循環(huán)的作用是找出與max相等的成績,也即最高成績的學生,并存入b中。

37.\0'n++\\0'\r\nn++解析:第1個循環(huán)是求字符串a(chǎn)的長度,并存儲在變量num中,循環(huán)條件要控制是否取到字符串末尾的'\\0'。第2個循環(huán)通過兩個變量num和n的改變,將b字符串連接到a字符串后面,并將新的字符串長度記錄到num中。

38.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。

39.length++i<lengthlength++\r\ni<length解析:第—個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到笫i+n或最后—個間的所有字符。刪除前,應判斷i<=length。由于已經(jīng)進行了-i運算,故實際應填入i<length。

40.QTHRGQTHRG解析:函數(shù)strcmp(t,s)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0:若t<s,則函數(shù)值小于0。函數(shù)strcpy(t,s)的功能是,把字符數(shù)組s所指字符串的內容復制到字符數(shù)組t所指存儲空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán),s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內容復制到字符數(shù)組t所指存儲空間中,然后輸出字符數(shù)組t。

41.A解析:A中sin(1/2)是0,因為1和2都是整數(shù),“/”在這里是整除。

42.D解析:本題考查if語句。第1個if語句,實現(xiàn)如果a<b,則交換a、b值的功能;第2個if語句,實現(xiàn)如果a<c,則交換a、c的值的功能;第3個if語句,實現(xiàn)如果b<c,則交換b、c的值的功能。3個if語句結合起來實現(xiàn)的功能就是將a、b、c按從大到小排序。

43.B解析:程序段中定義x值為1,!x值為0,因此循環(huán)執(zhí)行的條件永遠成立,該循環(huán)是死循環(huán)。

44.A解析:本題考核的知識點是三目運算符“?:”的運用:三目運算表達式的規(guī)則為如果“?”前面的表達式的值為真,則取“:”前的表達式的值,否則,取“:”后面表達式的值。分析題目中給出的表達式可知,如果a>b和b>c同時成立,k=1,否則k=0.所以,4個選項中選項A符合題意。

45.D解析:函數(shù)scanf的地址列表應由變量的地址組成。選項A中雖然&p也為地址,但它是指針變量p的地址,該地址的存儲單元中只能存放地址值,不能存放整型數(shù)據(jù)。選項B中*p相當于變量n,所以不能正確讀入數(shù)據(jù);選項C不正確,因為n為變量名;選項D中p為指針變量,并且值為變量n的地址,所以選項D能夠正確讀入數(shù)據(jù)。D為所選。

46.DD?!窘馕觥勘绢}主要考查對排序算法的理解。冒泡排序法首先將第一個記錄的關鍵字與第二個記錄的關鍵字進行比較,若逆序則交換,然后比較第二個與第三個,以此類推,直至第n-1個與第n個記錄的關鍵字進行比較。第一趟冒泡排序使最大的關鍵字元素放到最后。以此類推,進行第2~n次冒泡排序。如果在排序過程中不存在逆序,則排序結束。在最壞情況下,冒泡排序中,若初始序列為“逆序”序列,則需要比較n(D-1)/2次??焖倥判蚴菍γ芭菖判虻囊环N改進。它的基本思想是:通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字比另一部分記錄的關鍵字小,然后分別對這兩部分記錄繼續(xù)進行排序,最終達到整個記錄有序。對于快速排序,當初始記錄序列按關鍵字有序或基本有序時,快速排序退化為冒泡排序,最壞情況下比較次數(shù)為n(n-1)/2。

47.B【命題目的】考查有關線性表存儲結構的基本知識。

【解題要點】順序存儲結構中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)=LOC(a1)+(I-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈式存儲結構,要對某結點進行存取,都得從鏈的頭指針指向的結點開始,這是一種順序存取的存儲結構。

【考點鏈接】順序存儲結構和鏈式存儲結構的定義和性質,兩種存儲結構的操作方法。

48.A解析:C語言的字符常量是用單引號(\')括起來的一個字符,也可以用以一個“\\”開頭的字符序列來表示字符常量。其中形式\\ddd表示1到3位8進制數(shù)所代表的字符;形式\\xhh表示1到2位16進制數(shù)所代表的字符。在本題中\(zhòng)'\\x13\'表示回車符,是一個字符常量;而\'\\081\'用8進制數(shù)所代表的字符形式不正確,因為8進制數(shù)所表示的字符中不會出現(xiàn)數(shù)字“8”;\'65\'單引號(即撇號)括起來的不是一個字符,而是一個十進制數(shù)字;'\\n'是用雙引號括起來的一個字符,表示一個字符串,而不是字符常量。

49.D解析:程序中,當j=0時,i=0,i>2不成立,s+=b[0][0)=1;j=1時,i=1,i>2不成立,s=s+b[1][1]=1+2=3;j=2時,i=2,i>2不成立,s=s+b[2][2]=3+9=12;j=3時,i=3,i>2成立,i=3-j,此時i=0,s=s+b[0][3]=12+4=16;j=4時循環(huán)結束。所以最后s值為16。

50.A解析:本題中首先計算switch后面括號里的表達式a%3,即15%3為0;執(zhí)行case0:后面的語句m++:m自加1,即m為1遇到break語句;然后跳出switch語句,所以最后輸出的m的值為1。所以選項A正確。

51.D解析:假設線性表的長度為n,則在最壞情況下,冒泡排序要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。

52.A解析:本題int型占2個字節(jié),即16位,unsignedint所能表示的數(shù)據(jù)范圍是0-(216-1),即0-65535。

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

54.C解析:題目中p+strlen(q)的作用是在數(shù)組元素p[0]地址的基礎上向后移動三位,然后再將r所指字符串內容復制到p所指的存儲空間中,字符d被覆蓋,p[20]={'a','b','c','a','b','c','d','e')。然后通過“strcat(p,q);”將q所指的字符串內容連接到p所指的字符串后面,p[20]={'a','b','c','a','b','c','d','e',a','b','c',}。在輸出語句中strlen(p)是求字符串的長度,值為ll;sizeof(p)用來求數(shù)組p占多少字節(jié),值為20。

55.C解析:該題稍微難一點。主要要搞清楚以下幾點:①定義了一個指針數(shù)組char*p[2]后,程序中第一個循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數(shù)組的p[0]元素(它本身是一個指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p[1]元素指向二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應關系,以后對二維數(shù)組ch的某個元素的引用就有兩種等價的形式:ch[i][j]或p[i][j]。②對二維數(shù)組ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的內容為字符串'8254'。③程序中第二個循環(huán)中的循環(huán)體s=s*10+p[i][j]-\'0\';的功能是這樣的,每執(zhí)行一次,將s中的值乘以10(也即,將s中的數(shù)值整體向左移動一位,并在空出來的個位上添一個0),再將當前p[i][j]中的字符量轉換為相應的數(shù)字,然后把這個數(shù)字加到s的個位上。④注意到內層循環(huán)的循環(huán)條件p[i]\ue009[j]>\'\\0\'是指p[i][j]中的字符只要不是字符串結束標志\'\\0\'就繼續(xù)循環(huán),語句j+=2;是使下標j每次增加2,也即一個隔一個地從p[i]所指向的字符串中取出字符。經(jīng)過上述解析后,不難看出,該程序首先從p[0]所指向的字符串'6937'中一個隔一個地取出字符,分別是\'6\'和\'3\',然后從p[1]所指向的字符串'8254'中一個隔一個地取出字符,分別是\'8\'和\'5\',同時經(jīng)過轉換和相加運算后,結果s中的值應該是6385。

56.CC?!窘馕觥繉€性表進行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關鍵字進行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進行比較,因此比較次數(shù)為n。

57.A解析:本題考查int類型的范圍問題。C語言中int類型的常數(shù)的范圍是:-32768~32767。選項A)超出了范圍,錯誤。C語言中整常數(shù)可用三種形式表示:十進制整數(shù),八進制整數(shù),十六進制整數(shù)。

58.AA?!窘馕觥緾語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在C語言中任何程序都是由一個或者多個函數(shù)組成的。

59.D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示準備輸出的數(shù)據(jù)塊的起始地址,size表示每個數(shù)據(jù)塊的字節(jié)數(shù),count用來指定每寫一次或輸出的數(shù)據(jù)塊,fp為文件指針。

60.A解析:作為一個算法,一般應該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達到一個滿意的結果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內做完;(4)擁有足夠的情報。

61.D在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構造數(shù)據(jù)類型,指針類型,空類型四大類

62.B

63.DA項不成立,因為f=0,乘以任何數(shù)都為0,B項的判斷條件錯誤,i<n,計算的結果為(n-1)!,C項也不對,計算的是一個無限循環(huán),n*(n+1)*(n+2)…….

64.B

\n從實參傳遞過去的是結構體系數(shù)組的第3個元素,所以輸出的name為Zhao。

65.A\nFor循環(huán)結束后,數(shù)組a的值并沒有變化,由于數(shù)組是由0開始,所以a[2]的值是30。

\n

66.B本題考查函數(shù)調用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行b=2+1=3,最終t=2+3=5。

67.D

68.D

69.A用E—R圖可以描述實體及其相互之間的聯(lián)系,還可以描述多個實體集之間的聯(lián)系和一個實體集內部實體之間的聯(lián)系。用E—R圖表示的概念數(shù)據(jù)模型不僅能轉換為關系數(shù)據(jù)模型,還可以轉換為其他數(shù)據(jù)模型,如網(wǎng)狀模型和層次模型等。所以A的說法正確。

70.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。

71.D

72.AB選項中switch((int)x);語句中不應該有最后的分號。switch(exprl),中的exprl不能用浮點類型或10n9類型,也不能為一個字符串,所以c錯誤。ca”后面常量表達式的類型必須與switch后面表達式的類型一致,所以D錯誤。

73.A選項A)是非法的表達式,C語言中沒有“<>”運算符。

74.A

75.C十六進制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。

76.D

77.A算法是指對解題方案的準確而完整的描述。算法具有4個特征:可行性、確定性、有窮性和擁有足夠的情報。有窮性指算法必需在有限時間內做完,即算法必需能在執(zhí)行有限個步驟之后終止。當算法擁有足夠的情報時,此算法才是有效的;而當提供的情報不夠時,算法可能無效。

\n

78.A解析:在E-R圖中,用三種圖框分別表示實體、屬性和實體之間的聯(lián)系,其規(guī)定如下:用矩形框表示實體,框內標明實體名;用橢圓狀框表示實體的屬性,框內標明屬性名;用菱形框表示實體間的聯(lián)系,框內標明聯(lián)系名。所以,選項A正確。

79.C

80.B

81.(1)錯誤:proc(i.ntk)

正確:doubleproc(intk)

(2)錯誤:returnS

正確:returns;

【解析】由主函數(shù)中的函數(shù)調用以及函數(shù)proc()中的re-turn語句可知,函數(shù)proc()的返回值類型為double。因此,“proc(intk)”應改為“doubleproc(intk)”。根據(jù)C語言中的語法規(guī)則,每一條語句都必須以分號結束。因此,應在語句“returns”后加上分號。

82.Voidfun(char*w,intm)chart;for(i=1;i<=m;i++)/*進行m次的循環(huán)左移*/{t=w[o];for(j=1;w[j]!='\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/w[j-l]=w[j];9w[j-l]=t;/*將第1個字符放到最后一個字符中*/10}}本題應采用“循環(huán)左移”的算法。外層循環(huán)用于控制移動的字符的個數(shù),即需進行多少次循環(huán)。內層循環(huán)的作用是將第2個字符以后的每個字符依次前移一個位置,最后將第1個字符放到最后一個字符中。2022年福建省莆田市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的運行結果是()A.1B.0C.2D.3

2.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結構是()。

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

3.已知大寫字母A的ASCII碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉換為對應小寫字母的語句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

4.若有定義“doublea;floatb;shortc;”,若想把1.2賦給變量a,3.4賦給變量b,5678賦給變量c,程序運行時鍵盤輸入:1.23.45678<回車>則以下正確的讀入語句是()。A.scanf("%If%If%d",&a,&b,&c);

B.scanf("%If%If%hd",&a,&b,&c);

C.scanf("%If%f%hd",&a,&b,&c);

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

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

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

6.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法需要的內存空間

7.程序運行后的輸出結果是()。A.3B.4C.1D.9

8.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運行后的輸出結果是

A.9B.11C.19D.21

9.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y(tǒng))reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結果是______。A.3B.6C.8D.12

10.

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

A.(rear-front+m)%m

B.rear-front+1

C.(front-rear+m)%m

D.(rear-front)%m

12.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復制C.計算字符串的長度D.字符串的連接

13.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的運行結果是()。

A.500B.401C.503D.1404

14.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的運行結果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

15.下面關于線性表的敘述中,錯誤的是哪一個()。

A.線性表采用順序存儲,必須占用一片連續(xù)的存儲單元

B.線性表采用順序存儲,便于進行插入和刪除操作

C.線性表采用鏈式存儲,不必占用一片連續(xù)的存儲單元

D.線性表采用鏈式存儲,便于進行插入和刪除操作

16.某二叉樹的先序序列和后序序列正好相同,則該二叉樹可能是______的二叉樹。

A.高度大于1的左單支B.高度大于1的右單支C.最多只有一個結點D.既有左孩子又有右孩子

17.下列關于棧敘述正確的是A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.以上三種說法都不對

18.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

19.軟件生命周期是指()。

A.軟件的定義和開發(fā)階段

B.軟件的需求分析、設計與實現(xiàn)階段

C.軟件的開發(fā)階段

D.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

20.有下列程序:main{charp[]={a,h,c},q[]="a";printf("%d%d\n".sizeof(P),sizeof(q));}程序運行后的輸出結果是()。A.44B.33C.34D.43

二、2.填空題(20題)21.棧的3種基本運算是:入棧、退棧和______。

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

23.下列程序利用指針將2個數(shù)按從大到小的順序輸出。

main()

{inta,b,【】;

printf("inputa,b:");

scanf("%d%d",&a,&b);

【】;

p2=&b;

if(a<b)

{p=p1;

p1=p2;

p2=p;

}

printf("a=%db=%d\n",a,b);

printf("max=%dmin=%d\n",【】);

24.()是指用戶的應用程序與數(shù)據(jù)庫的邏輯結構是相互獨立的,也就是說,數(shù)據(jù)的邏輯結構改變了,用戶程序也可以不變。

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

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

26.測試的目的是暴露錯誤,評價程序的可靠性;而______得目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

27.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,i,x;

for(j=4;j______;j--)

{for(i=1;i<4;i++)

{x=(j-1)*4+______;

printf("%4d",x);

}

printf("\n");

}

28.下面程序的運行結果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

29.下面的程序用來統(tǒng)計文件中字符的個數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fP;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenfile!\n");sxit(0);}

while【】

{fgetc(fp);num++;}

printr("num=%d\n",num);

fclose(fp);

}

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

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

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

main()

{unsigneda=0112,x;

x=a>>3;

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

}

32.性結構中,第一個結點沒有前驅結點,其余每個結點有且只有【】個前驅結點;最后一個結點沒有后繼結點,其余每個結點有且只有【】個后繼結點。

33.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,這稱為______。

34.問題處理方案的正確而完整的描述稱為______。

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

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

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

請?zhí)羁铡?/p>

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

{doublex,y1,y2;

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

y1=fun([6]);

y2=fun([7]);

printf("y1=%lf,y2=%lf\n",y1,y

36.以下程序的功能是:處理由學號和成績組成的學生記錄,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,它的功能是:把分數(shù)最高的學生數(shù)據(jù)放在h所指的數(shù)組中,注意:分數(shù)高的學生可能不只一個,函數(shù)返回分數(shù)最高學生的人數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

37.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;

return(num);

}

38.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

39.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

40.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

序的輸出結果是______。

三、1.選擇題(20題)41.以下不能正確計算代數(shù)式sin2()值的C語言表達式是()。

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

42.運行下列程序時,若輸入的數(shù)據(jù)為“1,2,3”,則輸出結果是()。

main()

{floata,b,C,t;

scanf("%f,%f,%of",&a,&b,&C);

if(a<B)

{t=a;a=b;b=t;}

if(a<C)

{t=a;a=c;c=t;}

if(b<C)

{t=b;b=c;c=t;}

printf("%f\n%f\n%f\n",a,b,C);

}

A.1.002.003.00

B.1.003.002.00

C.132

D.3.0000002.0000001.000000

43.判斷字符型變量chr為小寫字母的表達式是______。

A.'a'<=chr<='z'

B.(chr>='a')||(chr<='z')

C.(chr>=A)&&(chr<=z)

D.(chr>='a')&&(chr<='z')

44.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.iff(a>b)‖(b>c))k=1;elsek=0;

C.iffa<=b)k=0;elseiffb<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

45.若說明int*p,n;則通過語句scanf能夠正確讀入數(shù)據(jù)的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p);

C.scanf("%d",n);

D.p=&n;scanf("%d",p);

46.對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數(shù)中正確的是()。

A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2

47.線性表的順序存儲結構和線性表的鏈式存儲結構分別是______。

A.順序存取的存儲結構、順序存取的存儲結構

B.隨機存取的存儲結構、順序存取的存儲結構

C.隨機存取的存儲結構、隨機存取的存儲結構

D.任意存取的存儲結構、任意存取的存儲結構

48.下列合法的字符型常量是()。

A.'\x13'B.'\081'C.'65'D.\n

49.有以下程序:#include<stdio.h>intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}執(zhí)行后的輸出結果是()。

A.12B.11C.18D.16

50.有以下程序:main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}rintf("%d\n",m);}程序運行后的輸出結果是()。

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

51.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

52.設血型占2個字節(jié),則unsignedint所能表示的數(shù)據(jù)范圍是______。

A.0~65535B.-32769~32767C.1~65536D.0~32767

53.若有下面的說明和定義,則sizeof(structaa)的值是______

溫馨提示

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

評論

0/150

提交評論