2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.fscanf函數的正確調用形式是()

A.fscanf(fp,格式字符串,輸出表列);

B.fscanf(格式字符串,輸出表列,fp);

C.fscanf(格式字符串,文件指針,輸出表列),

D.fscanf(文件指針,格式字符串,輸入表列);

2.有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序運行后的輸出結果是()。A.197B.143C.33D.28

3.有以下程序:程序運行后的輸出結果是()。A.6B.10C.8D.4

4.數據的獨立性是指______。

A.數據庫的數據相互獨立

B.DBMS和DB相互獨立

C.用戶應用程序與數據庫的數據相互獨立

D.用戶應用程序與DBMS相互獨立

5.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

6.

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

voidfunc(int*a,intb[])

{b[0]=*a+b;}main

{inta,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

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

7.下述程序的輸出結果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

8.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內存字節(jié)數相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

9.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運行后的輸出結果是A.2B.1C.3D.0

10.下面合法的C語言字符常量是()。

A.'\t'B."A"C.65D.A

11.直接選擇排序的時間復雜度為()。(n為元素個數)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

12.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的執(zhí)行結果是()。

A.0123456789B.0918273645C.0123498765D.9876543210

13.第

22

閱讀下面程序,則程序執(zhí)行后的結果為

#include"stdio.h"

main()

{inta=4,b=6,c=7;

doubled,fun(int,int,int);

d=fun(a,b,c);

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

doublefun(inta,intb,intc)

{doubles;

s=a%b*c;

returns;}

A.27B.27.000000C.28D.28.000000

14.程序流程圖(PFD)中的箭頭代表的是

A.數據流B.控制流C.調用關系D.組成關系

15.有下列二叉樹.對此二叉樹前序遍歷的結果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

16.函數fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始點是()。

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

17.歐幾里得的《幾何原本》描述了解最大公約數的算法,針對兩個整型a,b(a>b>0),其偽代碼如下,請估算該算法的復雜度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

18.若有定義“inta=0,b=1,c=1;”,關于邏輯表達式“a++||b++&&c++”中各個部分的執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“b++”,再執(zhí)行“c++”,最后執(zhí)行“a++”

B.先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“c++”

C.先執(zhí)行“c++”,再執(zhí)行“b++”,最后執(zhí)行“a++”

D.先執(zhí)行“b++”,再執(zhí)行“a++”,最后執(zhí)行“c++”

19.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

20.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開始輸入數據(<CR>代表…個回車符):3845<CR>,則狴序輸出結果為()。

A.77889B.77868C.776810D.7.78866e+007

二、2.填空題(20題)21.strcmp函數的功能是【】。

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

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

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

請?zhí)羁铡?/p>

#include"math.h"

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

main()

{doublex,y1,y2;

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

y1=fun(【】);

y2=fun(【】);

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

}

23.寫出下列程序的輸出結果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

24.設Y是int型變量,請寫出判斷Y為奇數的關系表達【】。

25.模式/內模式映射為數據庫提供了【】數據獨立性。

26.設當前盤為A盤,當前系統(tǒng)提示符為“>”在不改變當前盤情況下,顯示C盤的當前目錄路徑,應使用命令【】。

27.若x為int類型,請寫出與!x等價的C語言表達式______。

28.下列循環(huán)的循環(huán)次數是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

29.長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為【】。

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

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

main()

{

charc1,c2;

for(c1='0',c2='9';c1<c2;c1++,c2--)

printf("%c%c",c1,c2);

printf("\n");

}

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

#include<stdio.h>

main()

{inta=0;

a+=(a=8);

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

}

33.下述函數統(tǒng)計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

34.以下函數將b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(charaC),charb[])

{intnum=0,n=0;

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

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

return(num);

}

35.以下程序段的輸出結果是______。

inci=9;

printf("%o\n",i);

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

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

}

37.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

38.有以下程序段:

inta[l0]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;

b=p[5];

b中的值是【】。

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

main()

inta.b,c;

a=10;b=20;c=(a%b<)||{a/b>1);

printf("%d%d%dn",a,b,c);

}

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

#include<stdio.h>main(){FILE*fr;charstr[40];

fgets(str,5,fr);

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

fclose(fr);}

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

42.有以下程序:#include<stdio.h>structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));程序運行后的輸出結果是()。

A.10B.11C.20D.21

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

44.設有聲明語句chara='\72';,則變量a______。

A.包含1個字符B.包含2個字符C.包含3個字符D.聲明不合法

45.以下程序段的輸出結果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}輸入數據如下:(此處<CR>代表回車符)aaa<CR>bbb<CR>

A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb

46.一個關系中屬性個數為1時,稱此關系為()。

A.對應關系B.單一關系C.一元關系D.二元關系

47.在16位編譯系統(tǒng)上,若有定義inta[]={10,20,30},*p=&a;,當執(zhí)行p++;后,下列說法錯誤的是A.p向高地址移了一個字節(jié)B.p向高地址移了一個存儲單元C.p向高地址移了兩個字節(jié)D.p與a+1等價

48.單個用戶使用的數據視圖的描述稱為______。

A.外模式B.概念模式C.內模式D.存儲模式

49.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

50.下列描述中,正確的是______。

A.a[2*3+5]可以是一個數組元素

B.可以對結構體類型和結構類型變量賦值、存取或運算

C.結構一經定義,系統(tǒng)就給它分配了所需的內存單元

D.結構體變量和共用體變量所占的內存長度是各成員占的內存長度之和

51.設有語句:“inta=1,b=2,*p1=&a,*p2=&b;”,則使指針p1指向變量b的賦值語句是______。

A.p1=*p2B.*p1=p2C.p1=p2D.*p1=*p2

52.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}程序運行后的輸出結果是______。

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

53.若有定義:intx=0,*p=&x;,則語句printf("%d\n",*p);的輸出結果是()。

A.隨機值B.0C.x的地址D.p的地址

54.以下敘述不正確的是______。

A.分號是C語言的必要組成部分

B.C程序的注釋可以寫在句的后面

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

D.主函數的名字不一定用main表示

55.有下列程序:

main()

{intx=5;

do

(printf("%d",x-=4);}

while(!(--X));

}

程序的輸出結果是()。

A.1B.20C.1-4D.死循環(huán)

56.

下列程序的運行結果是()。

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

57.下面程序的文件名為t.exe,在DOS下輸入的命令行參數為:ttomeetme<回車>

則程序輸出的結果是

#include"stdio.h"

main(argc,argv)

intargc;char*argv[];

{inti;

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

A.3B.4C.2D.以上答案都不正確

58.在軟件測試設計中,軟件測試的主要目的是

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

59.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

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

A.在面向對象的程序設計中,各個對象之間具有密切的關系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述3種說法都不對

四、選擇題(20題)61.

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

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

63.設有定義:

則以下賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

64.有以下程序:

程序的運行結果是()。

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

65.要求通過while循環(huán)不斷讀入字符,當讀入字母N時結束循環(huán),若變量已正確定義,下列正確的程序段是()。

A.while((ch—getchar)!=N)printf("%c",ch);

B.while(oh=getchar!=N)printf("%c",ch);

C.while(ch=getchar==N)printf("%c",ch);

D.while((ch—getchar)==N)printf("%c",ch);

66.

67.兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

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

68.

69.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);

}

程序的運行結果是

A.10,3B.20,3

C.10,20D.20,2

70.

71.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

72.

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

74.

下述程序的輸出結果是()。

#defineN20

voidfun(inta[],intn,intm)

{inti,j;

for(i=m;i>n;i--)a[i+1]=a[i];

}

main()

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

fun(a,2,9);

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

}

A.10234B.12344C.12334D.12234

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

A.C語言編寫的函數源程序,其文件名后綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數

76.

77.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產率低C.軟件質量難以控制D.軟件成本不斷提高

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

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

79.

80.表達式a+=a-=a=9的值是()。

A.0B.-9C.18D.9

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串abcd(以Enter鍵結束),然后輸入m值為3,則結果為***abcd。注意:字符串的長度最長允許為79。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放入結構體數組stu中,請編寫函數proc,其功能是:按分數的高低排列學生的記錄,高分在前。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法來按從高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分數的高低排列學生的記錄,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"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}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行輸出4個學生記錄printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

參考答案

1.D

2.B此程序考查帶參數的宏定義,S(k+j)展開后即4*(k+j)*k+j+1,所以結果為l43,答案為B。

3.C題干中,整型指針變量Pk指向k,Pm指向m,所以右邊表達式“*pk*(*pm)”的值為“k*m”,即2*4=8;左邊表達式“*(p=&n)”先將變量n的地址賦給p,然后對p解引用,引用到n,將n的值賦為8。本題答案為C選項。

4.C解析:修改數據庫的物理結構或邏輯結構時,通過兩級映像,可以使得應用程序不必修改,保證數據的獨立性。數據的獨立性包括物理獨立性和邏輯獨立性。

5.Bstructdate中包含year、month、day這3個整型變量,一個整型變量占2個字節(jié);sizeof是求所占字節(jié)數的運算符。

6.A

\n本題考查函數的調用,從主函數傳遞到調用函數中,*a的值為0,因此當執(zhí)行完調用函數后,b[0]的值為6。

\n

7.A

8.D共用體變量中的所有成員共享一段公共存儲區(qū),所有成員的首地址相同。在每一個時刻所有的成員中只有一個有效,即只有最后一個被賦值的成員有效,其余的成員無效。

9.A解析:本題考查了函數的遞歸調用。在f函數中,當m=7時,程序執(zhí)行“f(--n,&r1);”語句,遞歸調用f(6,&r1),程序執(zhí)行“r1=n/3;”語句,即r1=\u30006/3=2,然后執(zhí)行“*r=r1;”語句,所以輸出結果為2。

10.A

11.D

12.B程序定義兩個字符變量c1和c2。for循環(huán)中,首先為c1賦值‘0’,為c2賦值‘9’,接著判斷c1和C2的大小。由于字符變量可以作為整型數處理,數字字符的ASCII值按字面數值的大小順序連續(xù)遞增,因此c1小于c2成立,執(zhí)行循環(huán)體輸出“09”,再將c1自增1,c2自減1后,執(zhí)行下一輪循環(huán),直到c1=‘5’,c2=‘4’時,c1<c2不成立,循環(huán)終止。最終程序段輸出:0918273645。故本題答案為B選項。

13.D

14.B解析:程序流程圖(PFD)是一種傳統(tǒng)的、應用廣泛的軟件過程設計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。

15.D

\n所謂二叉樹的前序遍歷是指先訪問根結點,訪問左子樹,最后訪問右子樹,本題中序為DYBEAFCZX,后序為YDEBFZXCA。

\n

16.BSEEK_SET代表文件的開始,SEEK_END代表文件末尾,SEEK_CUR代表文件當前位置。

17.A

18.BC語言中運算符有優(yōu)先級和結合性。自增、自減運算符的優(yōu)先級高于邏輯運算符,邏輯運算符中邏輯與“&&”的優(yōu)先級比邏輯或“||”高,邏輯運算符的結合性自左向右。所以題干中表達式等價于“(a++)||((b++)&&(c++))”。運算順序為:首先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“C++”。故本題答案為B選項。

19.A本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進行賦值時沒有錯誤。a=/*p+m賦值,在c語言中"/*"表示的注釋,所以答案選擇A。

20.A

21.字符串的比較strcmp函數的原型是intstrcmp(char*s1,char*s2);功能是對s1和s2所指字符串進行比較,若s1<s2返回負數,若s1==s2返回0,若s1>s2返回正數。

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

23.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做:n++是先取n的當前值和1做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當前值3,然后再將n加l,即程序結束后得到n=4,但輸出的是3。

24.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數可以用變量與2取模,判斷結果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。

25.物理物理

26.CDC:(CD與C:中間至少要有一個空格)CDC:(CD與C:中間至少要有一個空格)

27.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。

28.00解析:解答本題需要注意表達式“k=0”,它是賦值表達式而不是關系表達式,不論k為何值,表達式k=0總會使k為0,所以不能進入循環(huán)。

29.n/2性表的任何位置插入一個元素的概率相等,即概率為p=1/(n+1),則插入一個元素時所需移動元素的平均次數為E=1/(n+1)(n-i+1)=n/2。

30.2525解析:#NAME?

31.09182736450918273645解析:題目中為for循環(huán)定義了兩個字符型循環(huán)變量c1和c2,循環(huán)開始時分別初始化為字符‘0’和‘9’,然后每次循環(huán)結束給c1增1、c2減l,循環(huán)條件為c1<c2,即讓c1的值依次為‘0’、‘1’、‘2’…,c2的值依次為‘9’、‘8’、‘7’…,直到兩個數相遇時結束循環(huán)。又因為該循環(huán)的循環(huán)體每次按字符形式輸出c1和c2的值。所以最終的輸出結果為:0918273645。

32.1616解析:本題中a+=8相當于a=a+8。對表達式逐步進行求解:在a+=(a=8)中,首先a被賦值為8,語句等價于a+=8;即a=a+8;結果為a=16。

33.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數的算法中,本題的flag是為了記錄一個單詞是否結束。第13空應填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第14空應填flag=0或*(s-1)='';最后一個空格需填寫的是返回的單詞的個數,即num。

34.\0n++

35.1111解析:本題考核的知識點是printf()函數的輸出格式.本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,因為9的八進制的表示為11,所以最后輸出的值為11。

36.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)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時,判斷條件不滿足,退出循環(huán)。

37.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。

38.99解析:p是一個指針變量,指向數組a的元素a[3],所以b=p[5]=a[5+3]=a[8]=9。

39.1020010200解析:本題的關鍵在于求表達式(a%b<1)‖a/b>1)的值。已知a=10,b=20,所以a%b=10,因此(a%b<1)為“假”。而a/b=0,因此(a/b>1)亦為“假”。,D運算的兩邊同時為“假”,所以整個表達式的值為?!凹佟?,即c等于0。所以,本題最終輸出為:10200。

40.HellHell解析:該函數有3個參數,第三個參數是文件指針指向要讀取數據的文件,第二個參數是一個整數(假設為n),表示從文件中讀n-1個字符并在其后加一個'\\0',第一個參數為存放讀取的字符串的內存區(qū)的起始地址,讀取得數據保存在其中??梢姳绢}的輸出結果為:Hell。

41.B

42.B解析:本題考查對外部存儲類型的結構體變量進行初始化。初始化后,data[0]x的值為10,data[0]y的值為100。輸出++(p->x)時,++(p->x)就相當于++data[0].x,這時data[0].x先自增,再使用,所以輸出11。

43.A本題考查的知識點是轉義字符。題目中的關鍵是八進制101的十進制是多少.八進制的101轉換為十進制為65,也就是字符A的ASCII。

44.A解析:轉文字符常量'\\xx'可以把'\\'后面的數字轉換為對應的ASCII字符。

45.B解析:scanf是標準輸入函數,在輸入字符串aaa時,實際的內容為“aaa\\0”,“\\0”是由系統(tǒng)自動加入的:gets的功能是從終端讀入一行字符,即一直讀到換行符為止,并由系統(tǒng)自動以“/0”代替換行符。

46.C解析:在關系模型數據庫中,基本結構是二維表,這種二維表稱為關系。關系的列稱為屬性,一個具有N個屬性的關系稱為N元關系。注意:各種關系查詢語言與過程性語言和非過程性語言的關系,過程性語言的特點。

47.A解析:在16位編譯系統(tǒng)下,一個int型變量是用16位來存儲的,其占用兩個字節(jié),當執(zhí)行p++之后,相當于p向高位移動了一個存儲單元,也就是兩個字節(jié)。因此,本題的答案為選項A)。

48.A解析:選項A)正確,外模式是用戶的數據視圖,也就是用戶所見到的數據模式;選項B)不正確,全局數據視圖的描述稱為概念模式,即數據庫中全部數據的整體邏輯結構的描述;選項C)不正確,物理存儲數據視圖的描述稱為內模式,即數據庫在物理存儲方面的描述;選項D)不正確,存儲模式即為內模式。

49.B解析:C語言規(guī)定,標識符只能由字母、數字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。另外還需要注意的是關鍵字不能作標識符。選項A中void,C中for都為關鍵字,D中2c以字母開頭。

50.A

51.D解析:對于定義int*p,*q;,可以通過賦值語句p=q;,把指針變量q中的地址值賦給指針變量p,從而使這兩個指針變量指向同一地址。

52.D解析:C語言規(guī)定,實參變量對形參變量的數據傳遞是“值傳遞”,只由實參傳給形參,而不能由形參傳回來給實參。函數調用結束后,形參單元被釋放,實參單元仍保留并維持原值。本題要求輸出aa[0]的值,結果應為1。

53.B解析:p為整型指針,指向整型變量x,輸出項為*p,即x的值,所以輸出結果為0。

54.D解析:C語言的程序是由主函數main()開始運行,由主函數來調用其他函數,所以D是錯誤的。

55.C解析:本題考查do…while循環(huán)。①執(zhí)行printf語句,x=x-4=1,輸出1,判斷while循環(huán)的控制條件,--x=0,則(!(--x))非零,循環(huán)條件成立,執(zhí)行下一次循環(huán);②執(zhí)行printf語句,x=x-4=-4,輸出-4,判斷while循環(huán)的控制條件,--X=-5,則(!(--X))為零,循環(huán)條件不成立,結束循環(huán)。

56.C解析:逗號表達式的求解步驟是先求解表達式1,然后依次求解表達式2,直到表達式N的值。整個逗號表達式的值就是最后一個表達式N的值。

表達式(x=3*y,x+1)中,第一個表達式x=3*y=3*5=15;第二個表達式x+1=16,但沒有給x或y賦值,所以x還是等于15;第3個表達式x-1=15-1=14,所以y的值為14。

57.B解析:argc中存入的是命令行中字符串的個數。argv是一個指向字符型的指針數組的指針。

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

59.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

60.C本題考查對面向對象的理解。面向對象的程序設計是對象模擬問題領域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現(xiàn)對象之間的相互聯(lián)系。

61.A

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

63.AA)選項中可以在聲明變量的同事為data2賦值,但是dala2=(2,6);應寫作data2={2,61。所以選擇A。

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

65.Awhile循環(huán)的執(zhí)行過程如下:①計算while后面圓括號中表達式的值。當值為非0時,執(zhí)行步驟②;當值為0時,執(zhí)行步驟④。②執(zhí)行循環(huán)體一次。③轉去執(zhí)行步驟①。④退出循環(huán)。在選項A中,表達式(ch=get-char)!=N表示輸入的字符不等于N,如果這個條件表達式成立,則執(zhí)行循環(huán)體,打印輸出輸入的字符。如果這個條件表達式不成立,即輸入的字符等于N,則退出循環(huán)。所以選項A為正確答案。

66.D

67.C

68.D

69.C本題考查結構體數組的相關操作。結構體數組的定義方法與結構體變量的定義方法一樣,只不過將變量變?yōu)閿到M。數組內的各元素在內存中是連續(xù)存放的。題目中給出了一個結構體st,該結構體有三個整型成員x,y,z。結構體數組data元素的個數為2,并對數組進行初始化,data[0]={3,10,2},data[1]={20,15,7}。主函數main中定義了一個指針p指向數組data,第一個printf函數是輸出p->y,即data[0].y,該值等于10。第二個printf函數是輸出(++p)->x,++p使得指針p指向data[1],輸出的目標為data[1].x,該值等于20。故輸出結果為10,20。

70.B

71.C解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個時期組成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務是確定軟件系統(tǒng)的工程需求。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)時期是具體設計和實現(xiàn)在前一時期定義的軟件,它通常由下面五個階段組成:概要設計、詳細設計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務是使軟件持久地滿足用戶的需要。即當軟件在使用過程中發(fā)現(xiàn)錯誤時應加以改正;當環(huán)境改變時應該修改軟件,以適應新的環(huán)境;當用戶有新要求時應該及時改進軟件,以滿足用戶的新要求。根據上述對軟件生命周期的介紹,可知選項C中的軟件維護不是軟件生命周期開發(fā)階段的任務。因此,本題的正確答案是C。

72.A

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

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

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

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

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

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

74.B

\n函數fun的功能是從數組a中依次將當前值賦給一個元素,所以當函數fun(a,2,9)執(zhí)行后,數組a[]={1,2,3,4,4,5,6,7,8,9,10)。

\n

75.C函數是指預先定義功能塊,其目的是提高程序的重用性。在C語言中函數的源程序,后綴名可以為C。C語言所編寫的函數都可以是一個獨立的源文件。一個C語言程序只能有一個主函數。C語言中編寫的函數不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數,如果程序中沒有主函數則無法進行編譯和執(zhí)行。

76.B

77.A軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進度無法控制;軟件質量難以保證;軟件不可維護或維護程度非常低;軟件的成本不斷提高;軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。所以選擇A。

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

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

79.C

80.A賦值語句,從右向左執(zhí)行,先執(zhí)行a=9,再執(zhí)行a一:a,a為o,再執(zhí)行結果仍為0,所以A)正確。

81.(1)錯誤:str=P;

正確:p=str;

(2)錯誤:i++;

正確:i++;p++;

(3)錯誤:a[i]=0;

正確:a[i]=ˊ\0ˊ;

【解析】由函數proc()可知,變量p是指向字符串的指針,其初始化應為字符串首地址,因此,“str=p;”應改為“p=str;”;將P指向的字符串中的每一個字符插在m個*之后,并存放在字符串數組a中,因此,“i++;”應改為“i++;p++;”;操作完成后要為字符串數組添加結束符,因此“a[i]=0;”應改為“a[i]=ˊ\0ˊ;”。

82.voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)//用冒泡法來按從高到低排序for(j=0;j<M-1;j++)if(a[j].s<a[j+1].s)//按分數的高低排列學生的記錄,高分在前{t=a[j];a[j]=a[j+1];a[j+1]=t;}}2022-2023年安徽省滁州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.fscanf函數的正確調用形式是()

A.fscanf(fp,格式字符串,輸出表列);

B.fscanf(格式字符串,輸出表列,fp);

C.fscanf(格式字符串,文件指針,輸出表列),

D.fscanf(文件指針,格式字符串,輸入表列);

2.有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序運行后的輸出結果是()。A.197B.143C.33D.28

3.有以下程序:程序運行后的輸出結果是()。A.6B.10C.8D.4

4.數據的獨立性是指______。

A.數據庫的數據相互獨立

B.DBMS和DB相互獨立

C.用戶應用程序與數據庫的數據相互獨立

D.用戶應用程序與DBMS相互獨立

5.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

6.

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

voidfunc(int*a,intb[])

{b[0]=*a+b;}main

{inta,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

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

7.下述程序的輸出結果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

8.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內存字節(jié)數相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

9.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運行后的輸出結果是A.2B.1C.3D.0

10.下面合法的C語言字符常量是()。

A.'\t'B."A"C.65D.A

11.直接選擇排序的時間復雜度為()。(n為元素個數)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

12.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的執(zhí)行結果是()。

A.0123456789B.0918273645C.0123498765D.9876543210

13.第

22

閱讀下面程序,則程序執(zhí)行后的結果為

#include"stdio.h"

main()

{inta=4,b=6,c=7;

doubled,fun(int,int,int);

d=fun(a,b,c);

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

doublefun(inta,intb,intc)

{doubles;

s=a%b*c;

returns;}

A.27B.27.000000C.28D.28.000000

14.程序流程圖(PFD)中的箭頭代表的是

A.數據流B.控制流C.調用關系D.組成關系

15.有下列二叉樹.對此二叉樹前序遍歷的結果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

16.函數fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始點是()。

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

17.歐幾里得的《幾何原本》描述了解最大公約數的算法,針對兩個整型a,b(a>b>0),其偽代碼如下,請估算該算法的復雜度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

18.若有定義“inta=0,b=1,c=1;”,關于邏輯表達式“a++||b++&&c++”中各個部分的執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“b++”,再執(zhí)行“c++”,最后執(zhí)行“a++”

B.先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“c++”

C.先執(zhí)行“c++”,再執(zhí)行“b++”,最后執(zhí)行“a++”

D.先執(zhí)行“b++”,再執(zhí)行“a++”,最后執(zhí)行“c++”

19.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

20.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開始輸入數據(<CR>代表…個回車符):3845<CR>,則狴序輸出結果為()。

A.77889B.77868C.776810D.7.78866e+007

二、2.填空題(20題)21.strcmp函數的功能是【】。

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

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

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

請?zhí)羁铡?/p>

#include"math.h"

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

main()

{doublex,y1,y2;

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

y1=fun(【】);

y2=fun(【】);

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

}

23.寫出下列程序的輸出結果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

24.設Y是int型變量,請寫出判斷Y為奇數的關系表達【】。

25.模式/內模式映射為數據庫提供了【】數據獨立性。

26.設當前盤為A盤,當前系統(tǒng)提示符為“>”在不改變當前盤情況下,顯示C盤的當前目錄路徑,應使用命令【】。

27.若x為int類型,請寫出與!x等價的C語言表達式______。

28.下列循環(huán)的循環(huán)次數是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

29.長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為【】。

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

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

main()

{

charc1,c2;

for(c1='0',c2='9';c1<c2;c1++,c2--)

printf("%c%c",c1,c2);

printf("\n");

}

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

#include<stdio.h>

main()

{inta=0;

a+=(a=8);

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

}

33.下述函數統(tǒng)計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

34.以下函數將b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(charaC),charb[])

{intnum=0,n=0;

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

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

return(num);

}

35.以下程序段的輸出結果是______。

inci=9;

printf("%o\n",i);

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

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

}

37.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

38.有以下程序段:

inta[l0]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;

b=p[5];

b中的值是【】。

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

main()

inta.b,c;

a=10;b=20;c=(a%b<)||{a/b>1);

printf("%d%d%dn",a,b,c);

}

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

#include<stdio.h>main(){FILE*fr;charstr[40];

fgets(str,5,fr);

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

fclose(fr);}

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

42.有以下程序:#include<stdio.h>structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));程序運行后的輸出結果是()。

A.10B.11C.20D.21

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

44.設有聲明語句chara='\72';,則變量a______。

A.包含1個字符B.包含2個字符C.包含3個字符D.聲明不合法

45.以下程序段的輸出結果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}輸入數據如下:(此處<CR>代表回車符)aaa<CR>bbb<CR>

A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb

46.一個關系中屬性個數為1時,稱此關系為()。

A.對應關系B.單一關系C.一元關系D.二元關系

47.在16位編譯系統(tǒng)上,若有定義inta[]={10,20,30},*p=&a;,當執(zhí)行p++;后,下列說法錯誤的是A.p向高地址移了一個字節(jié)B.p向高地址移了一個存儲單元C.p向高地址移了兩個字節(jié)D.p與a+1等價

48.單個用戶使用的數據視圖的描述稱為______。

A.外模式B.概念模式C.內模式D.存儲模式

49.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

50.下列描述中,正確的是______。

A.a[2*3+5]可以是一個數組元素

B.可以對結構體類型和結構類型變量賦值、存取或運算

C.結構一經定義,系統(tǒng)就給它分配了所需的內存單元

D.結構體變量和共用體變量所占的內存長度是各成員占的內存長度之和

51.設有語句:“inta=1,b=2,*p1=&a,*p2=&b;”,則使指針p1指向變量b的賦值語句是______。

A.p1=*p2B.*p1=p2C.p1=p2D.*p1=*p2

52.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}程序運行后的輸出結果是______。

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

53.若有定義:intx=0,*p=&x;,則語句printf("%d\n",*p);的輸出結果是()。

A.隨機值B.0C.x的地址D.p的地址

54.以下敘述不正確的是______。

A.分號是C語言的必要組成部分

B.C程序的注釋可以寫在句的后面

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

D.主函數的名字不一定用main表示

55.有下列程序:

main()

{intx=5;

do

(printf("%d",x-=4);}

while(!(--X));

}

程序的輸出結果是()。

A.1B.20C.1-4D.死循環(huán)

56.

下列程序的運行結果是()。

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

57.下面程序的文件名為t.exe,在DOS下輸入的命令行參數為:ttomeetme<回車>

則程序輸出的結果是

#include"stdio.h"

main(argc,argv)

intargc;char*argv[];

{inti;

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

A.3B.4C.2D.以上答案都不正確

58.在軟件測試設計中,軟件測試的主要目的是

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

59.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

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

A.在面向對象的程序設計中,各個對象之間具有密切的關系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述3種說法都不對

四、選擇題(20題)61.

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

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

63.設有定義:

則以下賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

64.有以下程序:

程序的運行結果是()。

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

65.要求通過while循環(huán)不斷讀入字符,當讀入字母N時結束循環(huán),若變量已正確定義,下列正確的程序段是()。

A.while((ch—getchar)!=N)printf("%c",ch);

B.while(oh=getchar!=N)printf("%c",ch);

C.while(ch=getchar==N)printf("%c",ch);

D.while((ch—getchar)==N)printf("%c",ch);

66.

67.兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

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

68.

69.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);

}

程序的運行結果是

A.10,3B.20,3

C.10,20D.20,2

70.

71.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

72.

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

74.

下述程序的輸出結果是()。

#defineN20

voidfun(inta[],intn,intm)

{inti,j;

for(i=m;i>n;i--)a[i+1]=a[i];

}

main()

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

fun(a,2,9);

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

}

A.10234B.12344C.12334D.12234

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

A.C語言編寫的函數源程序,其文件名后綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數

76.

77.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產率低C.軟件質量難以控制D.軟件成本不斷提高

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

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

79.

80.表達式a+=a-=a=9的值是()。

A.0B.-9C.18D.9

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串abcd(以Enter鍵結束),然后輸入m值為3,則結果為***abcd。注意:字符串的長度最長允許為79。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放入結構體數組stu中,請編寫函數proc,其功能是:按分數的高低排列學生的記錄,高分在前。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法來按從高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分數的高低排列學生的記錄,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"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}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行輸出4個學生記錄printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

參考答案

1.D

2.B此程序考查帶參數的宏定義,S(k+j)展開后即4*(k+j)*k+j+1,所以結果為l43,答案為B。

3.C題干中,整型指針變量Pk指向k,Pm指向m,所以右邊表達式“*pk*(*pm)”的值為“k*m”,即2*4=8;左邊表達式“*(p=&n)”先將變量

溫馨提示

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

評論

0/150

提交評論