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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.以下不能作為合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

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

A.函數的返回值類型不能是結構體類型,只能是簡單類型

B.函數可以返回指向結構體變量的指針

C.可以通過指向結構體變量的指針訪問所指結構體變量的任何成員

D.只要類型相同,結構體變量之間可以整體賦值

3.該程序試圖通過指針p為變量n讀入數據并輸出,但程序有多處錯誤,以下語句正確的是()#includeMain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);print("outputn:");print("%d\n",p);A.intn,*p=NULL;

B.*p=&n;

C.scanf("%d",&p)

D.printf("%d\n",p);

4.有以下程序:

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

A.1,3

B.2,3

C.1,4

D.1,2

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

A.線性結構也能采用鏈式存儲結構

B.線性結構一定能采用順序存儲結構

C.有的非線性結構也能采用順序存儲結構

D.非線性結構一定不能采用順序存儲結構

6.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達式:(x+y)%2+(int)a/(int)b的值是()。

A.0B.2C.1.5D.1

7.任何一個無向圖的最小生成樹()。

A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在

8.有以下程序程序執行后的輸出結果是()。

A.y=-IB.y=oC.y=lD.while構成無限循環.

9.以下程序的輸出結果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

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

A.可以用typedef將已存在的類型用一個新的名字來代表

B.可以通過typedef增加新的類型

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

11.數組A中,每個元素的長度為3個字節,行下標i從1到8,列下標j從1到10,從首地址SA開始連續存放的存儲器內,該數組按行存放,元素A[8][5]的起始地址為()。

A.SA+141B.SA+144C.SA+222D.SA+225

12.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序運行后輸出結查是

A.16B.10C.8D.6

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

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

14.關于結構化程序設計原則和方法的描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中若沒有控制結構,應該采用前后一致的方法來模擬

15.在深度為5的滿二叉樹中,葉子結點的個數為()。

A.31B.32C.16D.15

16.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運行結果是()。A.20,30,B.30,17,C.15,30,D.20,15,

17.軟件需求規格說明書的作用不包括()。

A.軟件設計的依據B.軟件可行性研究的依據C.軟件驗收的依據D.用戶與開發人員對軟件要做什么的共同理解

18.判定一個順序棧st(最多元素為MaxSize)為滿的條件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

19.有以下程序:#include<stdio.h>voidexch(intt[]){t[0]=t[s];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%dl"x[i]);printf("\n");}程序運行后輸出的結果是()。A.246810B.13579C.12345D.678910

20.已知數據表A中每個元素距其最終位置不遠,為節省時間,應該采用的算法是()

A.直接選擇排序B.堆排序C.快速排序D.直接插入排序

二、2.填空題(20題)21.下面程序的運行結果是()。#definePOW(r)r*rmain(){intx=2,y=3,t;t=POW(x+y);printf("%d\n",t);}

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

main()

{charCl,c2;

for(c1='0''c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

23.有如圖所示的雙鏈表結構,請根據圖示完成結構體的定義:

structaa

{intdata;

【】}node;

24.數據庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

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

26.下列程序中的函數stropy2()實現字符串兩次復制,即將t所指字符串復制兩次到s所指內存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調用strcpy2后,s所指字符串為:efghefgh。請填空。

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

}

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=-a;a=c;c=t;

if(a<c&&b<c)t=b;b=a;a=t;

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

}

28.在鏈表的運算過程中,能夠使空表與非空表的運算統一的結構是______。

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

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

#include<string.h>

typedefstructstudent{

charname[10];

longsno);

floatscore

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90}

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

31.當先后輸入1、3、4、12、23時,屏幕上出現【】;再輸入12時,則屏幕上出現【】。

#include<stdio.h>

#defineN5

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

charc;

printf("Pleaseinput5numbers(a[i]>a[i-1])\n");

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

i=1;

while(i<N)

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

if(a[i]>=a[i-1))i++;

}

printf("\n");

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

printf("\n");

flag=1;

while(flag)

{scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((number<a[0])||(number>a[N-1]))loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;

printf("%disthe%dthnumber\n",number,loca+1);

}

elseif(number<a[min])bott=min-1;

elsetop=min+1;

}

if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);

c=getchar();

if(c=='N'||c=='n')flag=0;

}

}

32.軟磁盤最外邊的磁道數是【】號磁道。

33.以下程序調用invert函數按逆序重新放置a數組元素的值。a數組中的值在main函數中讀入。

#include<stdio.h>

#defineN10

invert(s,i,j)

int*s,i,j;

{intt;

if(i<j)

{t=*(s+i);

*(s+i)=(s+j);

*(s+j)=t;

invert(s,【】,j-1);

}

}

main()

{

inta[N],i;

for(i=0;i<N;i++)scanf("%d",a+【】);

invert(a,0,N-1);

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

printf("\n")

}

34.設有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結果為

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

#include<stdio.h>

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

36.下列程序的輸出結果是16.00,請填空:

main()

}

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

37.當數據的物理結構(存儲結構、存取方式等)改變時,不影響數據庫的邏輯結構,從而不致引起應用程序的變化,這是指數據的【】。

38.若有如下結構體說明:

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請填空,以完成對t數組的定義,t數組的每個元素為該結構體類型。

【】t[20]

39.以下程序的運行結果為【】。

main()

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

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

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

printf("\n");

}

}

40.下述函數用于統計一行字符中的單詞個數,單詞之間用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fo(i=0;str[i]!=【】;i++)

if(【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

三、1.選擇題(20題)41.以下敘述中正確的是_____。A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

42.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序運行后的輸出結果是

A.錯誤信息B.666C.888D.666,888

43.若有以下定義:structfink{intdata;structlink*next;}a,b,c,*p,*q;且變量a和b之間已有如下圖所示的鏈表結構:

指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是:

A.a.next;c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

44.閱讀下列程序,當運行函數時,輸入asdafaaz67,則輸出為#include<stdio.h>#include<ctype.h>#inelude<string.h>intfun(char*str){inti,j=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')str[j++]=str[i];str[j]='\0';}main(){charstr[81];intn;printf("Inputastring:");gets(str);puts(str);fun(str);printf("%s\n",str);}

A.asdafaaz67B.asdafaaz67C.asdD.z67

45.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序運行后的輸出結果是()。

A.AbB.aaC.AaD.Bb

46.函數fseek的正確調用形式是()。

A.fseek(位移量,起始點,文件類型指針);

B.fseek(文件類型指針,位移量,起始點);

C.fseek(文件類型指針,起始點,位移量);

D.fseek(起始點,位移量,文件類型指針);

47.下列敘述中,正確的一條是______。

A.語句int*pt中的*pt是指針變量名

B.運算符*和&都是取變量地址的運算符

C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

D.語句“int*p=a;”等價于“int*p;p=&a[0];”

48.若定義inta=10,則表達式a+=a-=a*=a的值是()。

A.0B.-180C.-100D.-90

49.以下程序的輸出結果是()main(){inti;for(i='A;i<'l';i++,i++)printf("%c",i+32);printf("\n");}

A.編譯不通過,無輸出B.acegC.acegiD.abcdefghi

50.結構化程序設計主要強調的是()。

A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序的易讀性

51.下列程序的運行結果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}

A.500B.5C.4D.400

52.

若有下列定義和語句:

intu=011,v=0x11,w=11;

printf("%o,%x,%d\n",u,v,w);

則輸出結果是()。

A.9,17,11B.9,11,11C.11,11,11D.11,17,11

53.閱讀程序:main(){intx;scanf("%d',&x);if(x--<5)printf("%d\n",x);elseprintf("%d\、n",x++);}程序運行后,如果從鍵盤上輸入5,則輸出結果是()

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

54.當執行下面的程序時,其輸出結果為______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}

A.1B.2C.3D.不確定

55.以下運算符中優先級最高的運算符是______。

A.++B.?:C.!=D.&&

56.第

13

設有程序段

intk=10;

while(k=0)k=k-1;

則下面描述中正確的是A.while循環執行10次B.循環是無限循環C.循環體語句一次也不執行D.循環體語句執行一次

57.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經濟性

58.數據庫系統的核心是()。

A.數據模型B.數據庫管理系統C.數據庫D.數據庫管理員

59.閱讀下列程序,則在執行后,程序的運行結果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

A.nicetomeetyouyouB.nicetoC.meetyouyouD.nicetoyou

60.請閱讀以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;}case2:a++,b++;break;}printf("a=%d,b=%d\n",a,b);上面程序的輸出結果是

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

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

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

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

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

62.下列選項不符合良好程序設計風格的是()。

A.源程序要文檔化B.數據說明的次序要規范化C.避免濫用goto語句D.模塊設計原則是高耦合、高內聚

63.有以下程序:

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

A.10B.16C.6D.12

64.以下關于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通常可以增加程序的可讀性

65.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數

B.ptr是指向int型數據的指針變量

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指向int型數據的指針

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

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

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

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

67.以下程序的輸出結果是()。

inta=5;

floatx=3.14;

a*=x*(‘E’-‘A’);

printf(“%f\n”,(float)a);

A.62.000000B.62.800000C.63.000000D.62

68.

69.有以下程序:

i

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

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

70.由兩個棧共享一個存儲空間的好處是______。A.A.減少存取時間,降低下溢發生的概率

B.節省存儲空間,降低上溢發生的概率

C.減少存取時間,降低上溢發生的概率

D.節省存儲空間,降低下溢發生的概率

71.

有以下程序

#include<stdio.h>

inta=1;

intf(intc)

{staticinta=2:

c=c+1:

return(a++)+C;

}

main

(inti,k=0;

for(i=0;i<2;i++){inta=3;k+=f(a);}

k+=a:

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

}

程序運行結果是()。

A.14B.15C.16D.17

72.下列關于棧的描述中錯誤的是()。

A.棧是先進先出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入刪除操作中,不需要改變棧底指針

73.

74.

有下列程序:

#include<stdio.h>

main

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

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

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

}

程序的運行結果是()。

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

75.對長度為n的線性表排序,在最壞情況下,比較次數不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

76.下列關于單目運算符++、--的敘述中正確的是A.它們的運算對象可以是任何變量和常量

B.它們的運算對象可以是char型變量和int型變量,但不能是float型變量

C.它們的運算對象可以是int型變量,但不能是double型變量和float型變量

D.它們的運算對象可以是char型變量、int型變量和float型變量

77.有以下程序程序的運行結果是()。

A.321678B.876543C.1098765D.345678

78.設有下列二叉樹:對此二叉樹前序遍歷的結果為()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

79.分布式數據庫系統不具有的特點是

A.數據的物理分布性和邏輯整體性B.位置透明性和復制透明性

C.事物管理的集中性D.數據冗余

80.以下關于字符串的敘述中正確的是()。

A.C語言中有字符串類型的常量和變量

B.兩個字符串中的字符個數相同時才能進行字符串大小的比較

C.可以用關系運算符對字符串的大小進行比較

D.空串一定比空格打頭的字符串小

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

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

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

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

六、程序設計題(1題)82.函數fun的功能是:將s所指字符串中下標為偶數同時ASCIl值為奇數的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數組中。例如,若s所指字符串中的內容為“ABCDEFGl2345”,其中字符C的ASCIl碼值為奇數,在數組中的下標為偶數,因此必須刪除;而字符l的ASCIl碼值為奇數,在數組中的下標為奇數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是“BDFl2345”。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.A字符常量是使用單引號標注的單個字符,選項A錯誤;選項B屬于浮點數常量,正確;選項C屬于轉義字符常量,正確;選項D屬于轉義字符,代表八進制數011的ASCII值的字符,正確。本題答案為A選項。

2.A函數返回值類型可以是簡單類型和結構體類型。

3.A選項B)的正確寫法應為p=&n;選項C)的正確寫法應為scanf("%d",p);選項D)的正確寫法應為print("%d\\n",*p)。

4.Af函數功能使第二個指針指向的元素增1,第一個指針指向的元素不變,所以答案選擇A)。

5.D滿二叉樹與完全二叉樹均為非線性結構,但可以按照層次進行順序存儲。本題答案為D選項。

6.D

7.B

8.A當y為。時,表達式y一才為假,循環結束,最終y的值為一l,所以答案選擇A)。

9.B從題目中可知,\O、\t、\\分別為一個字符,而sizeof是求字節個數的函數,其中包括\O占的字節,strlen函數是求數組長度的函數;其以\0結束,因此strlen的值為5,sizeof的值為20。

10.Btypedef并不是增加一種新的類型,而是對已存在的類型用一個新的名字來代表,所以B選項錯誤。故本題答案為B選項。

11.C

12.B解析:本題考查的是指針的簡單應用。題目中首先定義了一個int型數組a并初始化了,然后定義了兩個指針變量p和q,并分別初始化p為指向數組元素a[3]、q指向p后面的第2個元素即指向a[5]。所以最終輸出的值為a[3]+a[5]的值10。應該選B。

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

14.C結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用GOT0語句。其他三項為結構化程序設計的原則。

15.C解析:二叉樹的一個性質是,在二叉樹的第k層上,最多有2(k-1)(k>=1)個結點。對于滿二叉樹,每一層上的結點數都達到最大值,即在滿二叉樹的第k層上有2k-1個結點。所以,在深度為5的滿二叉樹中,所有葉子結點在第5層上,即其結點數為2(k-1)=2(5-1)=16。

16.D程序的結構體數組a的元素形成了一個單向的循環鏈表,每個元素的指針成員都指向下一個元素的地址。

17.B《軟件可行性分析報告》是軟件可行性研究的依據。

18.D

19.D本題中exch函數是用數組中的第6個元素對第1個元素進行賦值,所以數組的值應該為678910。

20.D

21.11

22.9.18274e+0089.18274e+008解析:本題考查的循環條件是c1<c2,當c1>=c2時,退出循環。所以,第一次循環輸出09,第二次循環輸出18,如此循環直到輸出45,之后c1=5,c2=4,不滿足循環條件,退出循環。

23.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結構體對鏈表的定義。

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

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

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

27.45994599解析:if語句只對緊跟其后的一條語句或語句塊產生作用。因此,題目中兩條if語句只有t=a;和t=b是if的子句。第1條if語句中b<a為假,所以跳過語句t=-a;,執行a=c;c=t,a=5、b=4、c=99。第2條if語句的判斷條件a<c&&b<c為真,所以后面3條語句都被執行,這3條語句構成一次a和b的內容交換。所以最后輸出的結果是:4599。

28.循環鏈表循環鏈表解析:在循環鏈表中,由于設置了一個頭結點,因此在任何情況下,循環鏈表中至少有一個結點存在,從而使空表與非空表的運算統一。

29.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執行后面的語句,直接執行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。

30.2002shangxian2002shangxian解析:\'B\'的ASCII值是66。本題中指針變量p指向d,執行第一個if語句時,條件成立,d=b;執行第二個if語句時,條件不成立,故d=b,所以d.sno=2002,p->name'Shangxian'。

31.134122312isthe4thnumber.

32.0

33.i+1i

34.89218921

35.100010100010解析:對于define宏定義語句,系統在編譯前進行如下替換:

i1=1000/s(N)i1=1000/s(10)i1=1000/10*10

i2=1000/f(N))i2=1000/f(10)i2=1000/(10*10)

解析:本題,已知結果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b代入,得到16.0=(9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進行類型轉換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

37.物理獨立性物理獨立性

38.structSTRUstructSTRU解析:結構體類型是構造數據類型,是用戶自己定義的一種類型。

結構體類型的定義:

struct結構體類型名

{

成員項表;

定義結構休變量的的形式為:

struct結構體類型名變量1,變量2,....

其中變量包括:一般變量、指針變量、數組變量等。

39.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數組的行和列元素互換,存到另一個二維數組中。

40.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:觀察題目要求,可以知道以下幾點:

①for循環的結束條件應當是:str[i]已是字符串的最后—個字符;

②str[i]代表字符串str中的第i+1個字符;

③整型變量num的值是要記錄的單詞的個數。

C語言中規定字符串的最后一個字符是一個隱含的字符串結束符“\\0”,所以在題中第—個空中應填寫“\\0”;題中第二個空應填寫“str[i]”,以判斷當前位置的字符是否為空格;題中第三個空中應當填寫“num++”,通過變量num的加1累加得到字符串中的單詞個數。

41.C解析:算法的特性中包括“有零個或多個輸入”及“有一個或多個輸出”這兩個特性。一個算法得到的結果就是算法的輸出,沒有輸出的算法是沒有意義的,所以一千算法必須至少有一個輸出。

42.B解析:程序中的printf()函數的輸出格式部分只說明了一個%d,而輸出成員列表卻有兩個成員a和b,在這里將只輸出第一個成員a值為666,所以,4個選項中選項B符合題意。

43.D解析:本題考查鏈表的數據結構,必須利用指針變量才能實現,即一個結點中應包含一個指針變量,用它存放下一結點的地址。

44.A解析:本題題意要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用“留下”字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,每走到一個字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個空格),則將其保存str[j]中。注意j的下標變化、初值及最后加串結束符“\\0”。

45.A解析:本題中fun函數的形參是兩個指向字符型數據的指針,其功能是把b賦給a,然后將a所指存儲單元里的變量值加1。在main函數中,p1里存放的是c1的地址,p2里存放的是c2的地址,經函數調用fun(p1,P2)后,p2的值賦給了p1,使p1和p2都指向了c2,而(*a)++又使'a'的值加1變成了'b',所以此時c2的值為'b',而c1的值沒變,仍為'A'。程序改變的是p1的地址和c2的值。

46.B解析:改變文件位置的指針函數fseek()的調用形式為:fseek(fp,offset,position);。fseek函數參數說明:“fp”是指向該文件的文件型指針;“offset'’為位移量,指從起始點position.到要確定的新位置的字節數。也就是以起點為基準,向前移動的字節數。ANSIC要求該參數為長整型量;“position”為起始點,指出以文件的什么位置為基準進行移動,position的值用整型常數表示,“0”表示文件的開頭,“1”表示文件的當前位置,“2”表示文件的末尾。

47.D

48.B解析:算術運算符的運算規則是:從右到左的原則。所以表達式中先計算a=a-a*(上標)a的值是-90,再計算a=a+a的值是-180。

49.B

50.D解析:程序不僅是編寫完就結束了,為了測試和維護程序,往往還有其他人閱讀和跟蹤程序,因此程序設計的風格應該強調簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。

51.A解析:本題考查帶參數的宏的定義及相關運算:(x)>(y)?(x):(y)是x>y時輸出x,否則輸出y,調用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。

52.C解析:在C語言中,“%d”表示輸出帶符號的十進制整型數;“%x”表示以十六進制無符號型輸出整型數據(即不帶前導0x或0X);“%o”表示以八進制無符號型輸出整型數據(即不帶前導0)。

53.B

54.C解析:共用體類型結構的特點是使幾個不同的變量共占同一段內存,但在每一瞬時只能存放其中一種,而不是同時存放幾種,共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用。因此本題起作用的是成員b的值,所以程序打印輸出3。

55.A解析:四個運算符的優先級由高到低依次是:++,&&,?:,!=。

56.C本題中,首先將0賦給k,表達式變為0,跳出循環,沒有執行循環體語句。解答本題的關鍵是掌握while語句。

57.C解析:軟件測試的目標是在精心控制的環境下執行程序,以發現程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經濟性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調試的概念,以及相應的方法。

58.B解析:數據庫管理系統是數據庫系統的核心,是負責數據庫的建立、使用和維護的軟件。數據庫管理系統建立在操作系統之上,實施對數據庫的統一管理和控制。用戶使用的各種數據庫命令以及應用程序的執行,最終都必須通過數據庫管理系統。另外,數據庫管理系統還承擔著數據庫的安全保護工作,按照數據庫管理員所規定的要求,保證數據庫的完整性和安全性。

59.D解析:考查通過賦值的方式給一維數組賦初值。字符串復制函數strcpy調用形式為:strcpy(s1,s2),此函數用來把s2所指字符串的內容復制到s1所指存儲空間中,函數返回s1的值,即目的串的首地址;求字符串長度函數strlen的調用形式如下:strlen(s),此函數計算出以s為起始地址的字符串長度,并作為函數值返回。注意這一長度不包括串的結束標志。用于字符串處理的函數。

60.A

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

62.D在程序設計中,對于軟件設計中的模塊設計要保證高內聚和低耦合,源程序要有文檔說明,同時對程序中數據的說明要規范化。而goto語句破壞程序的結構,要盡量避免使用。所以選項D不正確。

63.D第一個for循環作用是對數組8賦初值,從0~9,第二個缸循環是計算數組前4項的a[i]+i的和。0+0,1+1,2+2,3+3,經計算的結果為l2,因此答案為D選項。

64.A用typedef沒有增加新類型,所以選擇A)。

65.C本題考查的是指向函數的指針。函數指針定義的基本格式為:類型標識符(*指針變量名)()。“類型標識符”為函數返回值的類型。

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

67.A

68.D

69.C本題考查結構體數組的相關操作,dt為結構體數組,那么指針P指向了結構體數組的一個元素,所以P一>x為1,P一>Y為2,結果為2,3。選項C正確。

70.B棧是一種只允許在棧頂進行插入和刪除操作的線性表,使兩個棧共享同一存儲空間的是雙向棧,即將兩個棧的棧頂設在向量空間的兩端,讓兩個棧各自向中間空間延伸。當其中一個棧的元素較多,超過向量空間的一半時,只要另一個棧的元素不多,那么,前者就可以占用后者的部分存儲空間。只有當整個向量空間被兩個棧占滿(即兩個棧底相遇)時,才會發生上溢。使用這種棧的優點是可以有效地節省存取空間,降低上溢發生的概率,而對于存取時間并沒有影響。

71.A

\n在主函數中,k的初值為0,首先調用函數f(3),返回值為6,k的值變為6,而函數intfun(intc)中的局部靜態變量a等于3。第二次調用函數f(3)時,返回值為7,所以k=6+7=13。退出循環語句,k再加上全局變量a的值l,其最終的值為14。

\n

72.B

\n棧是線性表的一種,它的特點是先進后出,并且只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,因此具有記憶作用,棧可以采用順序存儲,也可以采用鏈式存儲。

\n

73.B

74.B

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

\n

75.D在最壞情況下,快速排序、冒泡排序和直接插入排序需要的比較次數都為n(n-1)/2,堆排序需要的比較次數為nlog2n。因此本題正確的答案選D。

76.D本題主要考查自加與自減運算符。在C語言中,自加與自減運算符具有以下性質:

(1)自加運算符“++”和自減運算符“--”的運算本身是一種賦值運算,其結果是使運算對象的值增1或減1。

(2)++、--運算符是單目運算符,運算對象可以是整型變量或字符型變量,也可以是實型變量,但不能是常量和表達式。

(3)自加、自減運算符無論是作為前綴還是后綴運算符,對于變量而言,其效果相同,但作為表達式來說,其值不同。

(4)++和--運算符的結合方向是“自右向左”。

(5)不要在一個表達式中對同一個變量進行多次自增或自減運算。可以知道本題正確的答案是D。

77.A本題中,函數fun()的功能是將數組k中前5個元素倒序,因此返回后數組k中的元素排列是5…432,l,6,7,8,9,10。程序打印輸,hqk[21到k[71元素的值,flP321678,所以選擇A)。

78.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結點、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時,上述規則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結果為“ATBZXCYP”。對于本題,若使用后序遍歷和中序遍歷的結果分別為“ZBTYCPXA”和“TZBACYXP”。

79.C分布式數據庫是一種將數據分布存儲,但數據在邏輯上保持整體性的一種數據庫。分布式數據庫系統具有以下幾個特點:

(1)數據的物理分布性。分布式數據庫的數據不是存儲在一個場地上,不是集中存儲,而是存儲在計算機網絡上多個場的設備上。

(2)數據的邏輯整體性。雖然數據分布在各個場地,但邏輯上是一個整體,它們被所有的用戶共享,并由一個DDBMS統一管理。

(3)位置透明性和復制透明性。位置透明性是指用戶不必關心數據的邏輯分區,不必關心數據物理位置分布的細節;而復制透明性是指用戶不用關心數據庫在網絡中各個結點的復制情況,被復制的數據的更新都由系統自動完成。

(4)場地自治性。各場地的數據由本地DBMS管理,具有自治處理能力,能執行局部的應用請求。

(5)數據冗余及冗余透明性。與集中式數據庫系統追求低冗余度不同,DDBS通過數據的適當冗余來提高系統的可靠性、可用性和改善系統性能。但這種冗余對用戶是透明的,即用戶不必知道冗余的存在,冗余副本之間的數據一致性問題由系統負責。

(6)事務管理的分布性。數據的分布性必然造成事務執行和管理的分布性,即一個全局事務的執行可分解為在若干場地上子事務(局部事務)的執行。事務的原子性、一致性、隔離性、持久性以及事務的恢復也都具有分布性特點。

80.D解析:C語言中只有字符串常量而沒有字符串變量,故選項A不正確:字符串比較大小是以第1個不相同字符的大小為標準的,跟長度沒有關系,故選項B不正確;字符串比較大小除了使用庫函數strcn3()以外,就只能靠自己寫代碼來實現了,而不能通過關系運算符來比較大小。因為字符串在表達式中相當于const\u3000char*,即常字符指針,代表的是字符串的首地址,關系運算符會將兩個字符串的首地址值比較大小,這是毫無意義的。所以選項C也不正確。空串的長度為0,而以空格打頭的字符串的長度至少為\u30001,故選項D正確,本題應該選擇D。

81.(1)錯誤:for(i=j=0;str[i]!=0;i++)

\n正確:for(i=j=0;str[i]!=\0;i++)

\n(2)錯誤:str[j]=str[i];

\n正確:str[i++]=str[i];

\n【解析】根據題目中的要求,從字符串str中刪除所有大寫字母F,需要檢查字符串str中的每一個字符,直到字符串結束,因此,“for(i=j=0;str[i]!=0;i++)”應改為“for(i=J=0;str[i]!=0;i++)”;將每一個不是F的字符放入原來的字符串中,形成新的字符串,因此,“str[j]=str[i];”應改為“str[j++]=str[i];”。

\n

82.

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

一、單選題(20題)1.以下不能作為合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

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

A.函數的返回值類型不能是結構體類型,只能是簡單類型

B.函數可以返回指向結構體變量的指針

C.可以通過指向結構體變量的指針訪問所指結構體變量的任何成員

D.只要類型相同,結構體變量之間可以整體賦值

3.該程序試圖通過指針p為變量n讀入數據并輸出,但程序有多處錯誤,以下語句正確的是()#includeMain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);print("outputn:");print("%d\n",p);A.intn,*p=NULL;

B.*p=&n;

C.scanf("%d",&p)

D.printf("%d\n",p);

4.有以下程序:

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

A.1,3

B.2,3

C.1,4

D.1,2

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

A.線性結構也能采用鏈式存儲結構

B.線性結構一定能采用順序存儲結構

C.有的非線性結構也能采用順序存儲結構

D.非線性結構一定不能采用順序存儲結構

6.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達式:(x+y)%2+(int)a/(int)b的值是()。

A.0B.2C.1.5D.1

7.任何一個無向圖的最小生成樹()。

A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在

8.有以下程序程序執行后的輸出結果是()。

A.y=-IB.y=oC.y=lD.while構成無限循環.

9.以下程序的輸出結果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

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

A.可以用typedef將已存在的類型用一個新的名字來代表

B.可以通過typedef增加新的類型

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

11.數組A中,每個元素的長度為3個字節,行下標i從1到8,列下標j從1到10,從首地址SA開始連續存放的存儲器內,該數組按行存放,元素A[8][5]的起始地址為()。

A.SA+141B.SA+144C.SA+222D.SA+225

12.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序運行后輸出結查是

A.16B.10C.8D.6

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

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

14.關于結構化程序設計原則和方法的描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中若沒有控制結構,應該采用前后一致的方法來模擬

15.在深度為5的滿二叉樹中,葉子結點的個數為()。

A.31B.32C.16D.15

16.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運行結果是()。A.20,30,B.30,17,C.15,30,D.20,15,

17.軟件需求規格說明書的作用不包括()。

A.軟件設計的依據B.軟件可行性研究的依據C.軟件驗收的依據D.用戶與開發人員對軟件要做什么的共同理解

18.判定一個順序棧st(最多元素為MaxSize)為滿的條件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

19.有以下程序:#include<stdio.h>voidexch(intt[]){t[0]=t[s];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%dl"x[i]);printf("\n");}程序運行后輸出的結果是()。A.246810B.13579C.12345D.678910

20.已知數據表A中每個元素距其最終位置不遠,為節省時間,應該采用的算法是()

A.直接選擇排序B.堆排序C.快速排序D.直接插入排序

二、2.填空題(20題)21.下面程序的運行結果是()。#definePOW(r)r*rmain(){intx=2,y=3,t;t=POW(x+y);printf("%d\n",t);}

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

main()

{charCl,c2;

for(c1='0''c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

23.有如圖所示的雙鏈表結構,請根據圖示完成結構體的定義:

structaa

{intdata;

【】}node;

24.數據庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

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

26.下列程序中的函數stropy2()實現字符串兩次復制,即將t所指字符串復制兩次到s所指內存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調用strcpy2后,s所指字符串為:efghefgh。請填空。

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

}

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=-a;a=c;c=t;

if(a<c&&b<c)t=b;b=a;a=t;

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

}

28.在鏈表的運算過程中,能夠使空表與非空表的運算統一的結構是______。

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

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

#include<string.h>

typedefstructstudent{

charname[10];

longsno);

floatscore

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90}

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

31.當先后輸入1、3、4、12、23時,屏幕上出現【】;再輸入12時,則屏幕上出現【】。

#include<stdio.h>

#defineN5

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

charc;

printf("Pleaseinput5numbers(a[i]>a[i-1])\n");

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

i=1;

while(i<N)

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

if(a[i]>=a[i-1))i++;

}

printf("\n");

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

printf("\n");

flag=1;

while(flag)

{scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((number<a[0])||(number>a[N-1]))loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;

printf("%disthe%dthnumber\n",number,loca+1);

}

elseif(number<a[min])bott=min-1;

elsetop=min+1;

}

if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);

c=getchar();

if(c=='N'||c=='n')flag=0;

}

}

32.軟磁盤最外邊的磁道數是【】號磁道。

33.以下程序調用invert函數按逆序重新放置a數組元素的值。a數組中的值在main函數中讀入。

#include<stdio.h>

#defineN10

invert(s,i,j)

int*s,i,j;

{intt;

if(i<j)

{t=*(s+i);

*(s+i)=(s+j);

*(s+j)=t;

invert(s,【】,j-1);

}

}

main()

{

inta[N],i;

for(i=0;i<N;i++)scanf("%d",a+【】);

invert(a,0,N-1);

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

printf("\n")

}

34.設有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結果為

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

#include<stdio.h>

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

36.下列程序的輸出結果是16.00,請填空:

main()

}

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

37.當數據的物理結構(存儲結構、存取方式等)改變時,不影響數據庫的邏輯結構,從而不致引起應用程序的變化,這是指數據的【】。

38.若有如下結構體說明:

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請填空,以完成對t數組的定義,t數組的每個元素為該結構體類型。

【】t[20]

39.以下程序的運行結果為【】。

main()

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

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

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

printf("\n");

}

}

40.下述函數用于統計一行字符中的單詞個數,單詞之間用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fo(i=0;str[i]!=【】;i++)

if(【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

三、1.選擇題(20題)41.以下敘述中正確的是_____。A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

42.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序運行后的輸出結果是

A.錯誤信息B.666C.888D.666,888

43.若有以下定義:structfink{intdata;structlink*next;}a,b,c,*p,*q;且變量a和b之間已有如下圖所示的鏈表結構:

指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是:

A.a.next;c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

44.閱讀下列程序,當運行函數時,輸入asdafaaz67,則輸出為#include<stdio.h>#include<ctype.h>#inelude<string.h>intfun(char*str){inti,j=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')str[j++]=str[i];str[j]='\0';}main(){charstr[81];intn;printf("Inputastring:");gets(str);puts(str);fun(str);printf("%s\n",str);}

A.asdafaaz67B.asdafaaz67C.asdD.z67

45.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序運行后的輸出結果是()。

A.AbB.aaC.AaD.Bb

46.函數fseek的正確調用形式是()。

A.fseek(位移量,起始點,文件類型指針);

B.fseek(文件類型指針,位移量,起始點);

C.fseek(文件類型指針,起始點,位移量);

D.fseek(起始點,位移量,文件類型指針);

47.下列敘述中,正確的一條是______。

A.語句int*pt中的*pt是指針變量名

B.運算符*和&都是取變量地址的運算符

C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

D.語句“int*p=a;”等價于“int*p;p=&a[0];”

48.若定義inta=10,則表達式a+=a-=a*=a的值是()。

A.0B.-180C.-100D.-90

49.以下程序的輸出結果是()main(){inti;for(i='A;i<'l';i++,i++)printf("%c",i+32);printf("\n");}

A.編譯不通過,無輸出B.acegC.acegiD.abcdefghi

50.結構化程序設計主要強調的是()。

A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序的易讀性

51.下列程序的運行結果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}

A.500B.5C.4D.400

52.

若有下列定義和語句:

intu=011,v=0x11,w=11;

printf(

溫馨提示

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

評論

0/150

提交評論