2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第1頁
2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第2頁
2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第3頁
2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第4頁
2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

2.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序運(yùn)行后的輸出結(jié)果是()。

A.IB.JC.KD.H

3.有以下程序:#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;}程序的運(yùn)行結(jié)果是()。

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

4.

5.算法的效率的分析主要包括兩個(gè)方面()。

A.時(shí)間復(fù)雜度和空間復(fù)雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性

6.對序線性表23,29,34,55,60,70,78用二分法查找值為60的元素時(shí),需要比較次數(shù)為()

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

7.有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf("%d\n",j);}程序運(yùn)行后的輸出結(jié)果是()。

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

8.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的運(yùn)行結(jié)果是()。

A.036B.012C.048D.147

9.軟件生命周期中的活動(dòng)不包括()

A.軟件維護(hù)B.市場調(diào)研C.軟件測試D.需求分析

10.設(shè)有一個(gè)10階的對稱矩陣A,采用壓縮存儲方式,以行序?yàn)橹鞔鎯?,a11為第一元素,其存儲地址為1,每個(gè)元素占一個(gè)地址空間,則a85的地址為()。

A.13B.33C.18D.40

11.

12.如果要求一個(gè)線性表既能較快地查找,又能適應(yīng)動(dòng)態(tài)變化的要求,可以采用下列哪一種查找方法()

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

13.

14.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

15.對初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()

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

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

A.軟件工程只是解決軟件項(xiàng)目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

17.設(shè)棧S的初始狀態(tài)為空,6個(gè)元素入棧的順序?yàn)閑1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應(yīng)該是()。

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

18.有以下函數(shù):intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函數(shù)的功能是()。A.將y所指字符串賦給x所指存儲空間

B.查找和y所指字符串中是否有‘\0’

C.統(tǒng)計(jì)x和y所指字符串中最前面連續(xù)相同的字符個(gè)數(shù)

D.統(tǒng)計(jì)x和y所指字符串中相同的字符個(gè)數(shù)

19.定義根節(jié)點(diǎn)深度為1,有n個(gè)元素的完全二叉樹的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

20.設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績.,則表SC的關(guān)鍵字(鍵或碼)為()

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

二、2.填空題(20題)21.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

(1)第0列元素和主對角線元素均為1

(2)其余元素為其左上方和正上方元素之和

(3)數(shù)據(jù)的個(gè)數(shù)每行遞增1

請將程序補(bǔ)充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;

x[0][0]=1;

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

{x[i][0]=【】=1;

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

x[i][j]=【】;

}

}

22.在面向?qū)ο蠓椒ㄖ?,對象之間進(jìn)行通信的構(gòu)造稱為()。

23.在結(jié)構(gòu)化設(shè)計(jì)方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個(gè)______實(shí)際上對應(yīng)一個(gè)處理模塊。

24.已定義charch='$';inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為______。

25.下面程序的運(yùn)行結(jié)果是______。

voidswap(int*a,int*B)

{

int*t;

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

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

26.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

27.若輸入Ihaveatest.#,則以下程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

main()

{FILE*fp;

charstr[100],filename[10];

inti=0;

if((fp=fopen("test","w"))==NULL)

{printf("cannotopenthefile!\n");

exit(0);

}

getchar();

gets(str);

while(str[i]!='#')

{if(str[i]>='a'&&str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

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

fclose(fp);

}

28.設(shè)有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

29.最簡單的交換排序方法是______。

30.軟件維護(hù)活動(dòng)包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

31.執(zhí)行以下程序后,輸出‘#’號的個(gè)數(shù)是【】。

#include<atdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

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

main()

{

inta[]={2,4,6},*prt=&a[0],x=8,y,z;

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

z=(*(ptr+y<x)?*(ptr+y):x;

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

}

33.數(shù)據(jù)的物理結(jié)構(gòu)在計(jì)算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的【】。

34.下面程序的功能是將一個(gè)字符串str的內(nèi)容倒序,請?zhí)羁铡?/p>

#inelude<stdio.h>

#include<strins.h>

main()

{inti,j,【】;

charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

35.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

36.若有以下定義:

chara;intb;

floatc;doubled;

則表達(dá)式a*b+d-c值的類型為【】。

37.某二叉樹中度為2的結(jié)點(diǎn)有n個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。

38.本程序用改進(jìn)冒泡法對數(shù)組a[n]的元素從小到大排序,請?jiān)诔绦蚩瞻滋幪羁铡?/p>

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

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

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

39.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

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

main()

{inta=177;

printf(“%o\n”,A);

}

三、1.選擇題(20題)41.若有以下的說明,對初值中整數(shù)2的正確引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

42.有以下程序:main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是

A.3,2,0B.3,2,-1C.4,3,1D.5.-2,-5

43.下列不屬于軟件工程的3個(gè)要素的是______。

A.工具B.過程C.方法D.環(huán)境

44.算法的時(shí)間復(fù)雜度是指______。

A.執(zhí)行算法程序所需要的時(shí)間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D.算法程序中的指令條數(shù)

45.定義如下變量和數(shù)組:inti,x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句的輸出結(jié)果是()。for(i=0;i<3;i++)printf("%d",x[i][2-i]);

A.159B.147C.357D.369

46.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

47.人們提出了用______的原理來設(shè)計(jì)軟件,這就是軟件工程學(xué)誕生的基礎(chǔ)。

A.計(jì)算機(jī)科學(xué)B.數(shù)學(xué)C.工程學(xué)D.運(yùn)籌學(xué)

48.程序中頭文件typel.h的內(nèi)容是#defineN5#defineM1N*3#define"typel.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d\n",i);}程序編譯后運(yùn)行的輸出結(jié)果是

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

49.十進(jìn)制數(shù)124轉(zhuǎn)換成二進(jìn)制數(shù)是()

A.111l010B.1111100C.1011111D.1111011

50.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

51.下列程序的輸出結(jié)果是______。#includesub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}{chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}

A.BABBABB.ABBBBAC.BABABAD.BAABBA

52.以下程序(程序左邊的數(shù)字為附加的行號)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.沒有錯(cuò)B.第1行有錯(cuò)C.第6行有錯(cuò)D.第7行有錯(cuò)

53.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!='a')str[j++]=str[i];str[j]='\0';}voidmain(){charstr[]="abcdef";abc(str);printf("str[]%s",str);}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

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

A.顯示器和打印機(jī)都是輸出設(shè)備B.顯示器只能顯示字符C.通常的彩色顯示器都有7種顏色D.打印機(jī)只能打印字符和表格

55.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

56.組成計(jì)算機(jī)網(wǎng)絡(luò)的最大好處是()

A.進(jìn)行通話聯(lián)系B.資源共享C.發(fā)送電子郵件D.能使用更多軟件

57.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每一個(gè)元素的地址D.數(shù)組每個(gè)元素中的值

58.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)()。inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;

A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))

59.下面程序的輸出結(jié)果是()。#defineSQR(X)2*X+1main(){inta,b,C;a=3;b=2;C=1;a*=SQR(b+c)/SQR(b+c);printf("%d",a);}

A.3B.18C.21D.24

60.在下列選項(xiàng)中,沒有構(gòu)成死循環(huán)的是()。

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

四、選擇題(20題)61.以下選項(xiàng)中,不合法的C語言用戶標(biāo)識符是()。A.a-一bB.AaBeC.a_bD.一1

62.

63.有以下程序:#include<stdio.h>structS{inta,b;)data[2]=10,100,20,200);main(){structSp=data[l];printf("%d\n",++(p.a(chǎn)));}程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

64.

65.

66.有如下程序:

main

{inta=2,b=-1.c=2;

if(a<b)if(b<0)c=0;

elsec++;

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

}

該程序的輸出結(jié)果是()。A.A.0B.1C.2D.3

67.有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",'');

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。A.A.i-1B.iC.i+1D.4一i

68.下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照‘‘先進(jìn)后出”原則存取數(shù)據(jù)的是()。A.循環(huán)隊(duì)列B.棧C.隊(duì)列D.二叉樹

69.在面向?qū)ο蠓椒ㄖ校?)描述的是具有相似屬性與操作的一組對象。

A.屬性B.事件C.方法D.類

70.

71.

72.已知字母A的ASCII碼為十進(jìn)制的65,下面程序的輸出為()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

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

}

A.67,DB.B,CC.C,DD.不確定的值

73.有以下程序:

程序的運(yùn)行結(jié)果是()。

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

74.

75.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,k=0,n=0;

fp=fopen("d1.dat","wb+");

for(i=1;i<4;i++)fprintf(fp,"%d",i);

fclose(fp);

fp=fopen("d1.dat","r");

fseek(fp,1L,SEEK_SET);

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

}

執(zhí)行后輸出結(jié)果是()。

A.12B.1230C.123D.230

76.有以下程序:

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

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

77.有以下程序:

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

A.7,4B.4,10C.8,8D.10,10

78.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是

A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序易讀性

79.有以下程序:

當(dāng)執(zhí)行程序時(shí)從鍵盤上輸入HelloBeijing<;回車>;,則程序運(yùn)行后的輸出結(jié)果是()。

A.hellobajiIlg

B.HelloBeijing

C.HELLOBEIJING

D.hELLOBeijing

80.軟件詳細(xì)設(shè)計(jì)產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

五、程序改錯(cuò)題(1題)81.下列給定程序中函數(shù)fun的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計(jì)題(1題)82.有N個(gè)學(xué)生,每個(gè)學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成績,從鍵盤上輸入N個(gè)學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信息,包括學(xué)號、性別、姓名和平均成績。

參考答案

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

2.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六進(jìn)制數(shù),轉(zhuǎn)為十進(jìn)制數(shù)x=9。“printf(“%C\\n”,‘A’+9);”,輸出格式要求是“%c”,因此將字符‘A’按字母順序向后偏移9個(gè)位置,可得結(jié)果為“J”。故本題答案為B選項(xiàng)。

3.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),最后結(jié)果輸出a=503。故本題答案為C選項(xiàng)。

4.D

5.D

6.Cc)【解析】根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進(jìn)行比較,由于60大于55,所以性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進(jìn)行比較,由于60小于70,所以性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時(shí)兩者相等,即查找成功。

7.B解析:通過分析不難寫出,f()函數(shù)的數(shù)學(xué)表達(dá)式為:

f(n)=1n=l;

f(n)=f(-1)+1n≠1;

在主函數(shù)中for循環(huán)執(zhí)行了兩次函數(shù)調(diào)用f(i)。第一次:i為1,調(diào)用f(1)得到返回值1,并把它加到j(luò)中,j的值為1。第二次i為2,調(diào)用f(n),根據(jù)遞歸公式可知f(2)=f(1)+1,得到返回值2并把它加到j(luò)中,j的值為3。所以最后輸出,i的值為3。

8.Cmain函數(shù)定義3行3列的整型二維數(shù)組a;定義數(shù)組指針P,P指向包含3個(gè)元素的數(shù)組。程序首先將a賦給p。for循環(huán)中,i=0時(shí),P指向a的第1個(gè)元素{0,1,2},輸出p[0]即0;i=1時(shí),p指向a的第2個(gè)元素{3,4,5},輸出P[1]即4;i=2時(shí),p指向a的第3個(gè)元素{6,7,8},輸出P[2]即8。所以程序輸出048。故本題答案為C選項(xiàng)。

9.B【答案】:B

【知識點(diǎn)】:軟件生命周期

【解析】:一個(gè)軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個(gè)軟件生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、編碼、測試、維護(hù)等活動(dòng),可以將這些活動(dòng)以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。

10.B

11.B

12.D

13.A

14.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。

15.B

16.C\r\n軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項(xiàng)目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的部分問題。因此選項(xiàng)C正確。

17.C

18.C本題中由循環(huán)條件可知遇到‘\\0’或x與y所指的字符的值不等中的一個(gè)條件時(shí)就結(jié)束,所以功能是統(tǒng)計(jì)x和y所指字符串中最前面連續(xù)相同的字符個(gè)數(shù)。

19.B

20.C學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C項(xiàng)。

21.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中用兩重循環(huán)。在第一層循環(huán)中將每行的第0列賦值為1,對角線上的元素賦值為1顯然在第一個(gè)空中應(yīng)該填入對角線上的元素即x[i][i],在第二重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對角線的元素外其他元素為其對應(yīng)的上一行中同列和同列的前一列的元素相加,所以在第二個(gè)空中應(yīng)該填入x[i-1][j-1]+x[i-1][j]。

22.消息消息解析:對象之間進(jìn)行通信的構(gòu)造叫做消息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

23.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動(dòng)變換過程。其中的每一個(gè)加工對應(yīng)一個(gè)處理模塊。

24.11解析:在執(zhí)行邏輯表達(dá)式“j=!ch&&i++”時(shí),首先判斷j=!ch的值,因?yàn)椤癱h='$'”不為0,所以“j=!ch=0”,編譯系統(tǒng)便不再計(jì)算表達(dá)式“i++”的值,i的值不變,仍為1。

25.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實(shí)參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實(shí)參的值,所以函數(shù)調(diào)用返回后x和y依舊是原來的值。

26.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊(duì)列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

27.IHAVEATEST.

28.->->解析:結(jié)構(gòu)變量abc有成員a,并有指針pabc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的形式有abc.a和p_abc->a。

29.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。

30.完善性軟件維護(hù)活動(dòng)包括以下幾類:改正性維護(hù),適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù),完善性維護(hù)是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。

31.66解析:本題中,i,j分別為外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量,外層循環(huán)共執(zhí)行了4次。當(dāng)i=1時(shí),由于內(nèi)層循環(huán)判斷條件(2<=1)為假不執(zhí)行內(nèi)層循環(huán)。當(dāng)i=2時(shí),執(zhí)行內(nèi)層循環(huán),輸出一個(gè)#;當(dāng)i=3時(shí),內(nèi)層循環(huán)循環(huán)兩次,輸出兩個(gè)#;當(dāng)i=4時(shí),內(nèi)層循環(huán)循環(huán)三次,輸出三個(gè)#;當(dāng)i=5時(shí),循環(huán)判斷條件不成立,退出外層循環(huán)。所以一共輸出6個(gè)#。

32.66解析:條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,因此本題先計(jì)算關(guān)系個(gè)表達(dá)式(*ptr+y)<x)?(ptr+y):x的值,再賦紿變量z,當(dāng)y=O時(shí),*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(pry)=2,所以z=2;當(dāng)y=1時(shí)*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時(shí),*(ptr+y)=6,*((ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

33.內(nèi)模式或物理模式或存儲模式內(nèi)模式或物理模式或存儲模式解析:一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲方式是順序存儲、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密等。

34.k-1k-1解析:第一處應(yīng)該是定義的某個(gè)變量,讀程序可知,變量k沒有定義,所以此處應(yīng)填入k。字符串的倒序,就是將首尾對應(yīng)的字符(數(shù)組元素)兩兩交換??捎脙蓚€(gè)游標(biāo)變量i和j分別代表前端元素的下標(biāo)和后端元素的下標(biāo),交換以這兩個(gè)變量值為下標(biāo)的元素str[i]和str[j]。開始時(shí),i的值為0,j的值為字符串末元素的下標(biāo)(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]仍然位于str[j]的前面,即i<j。字符串末元素的下標(biāo)是它的長度減1,所以在第二處應(yīng)填入-1。

35.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf('%d\\n',z);語句。

36.double或雙精度型double或雙精度型解析:C語言中,如果運(yùn)算符兩邊的數(shù)據(jù)類型不同,將進(jìn)行類型轉(zhuǎn)換,根據(jù)轉(zhuǎn)換規(guī)則,短整型轉(zhuǎn)為長整型;整型轉(zhuǎn)換為實(shí)型。注意:數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。

37.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為0的結(jié)點(diǎn)多一個(gè)。

38.n-1jn-1\r\nj解析:此題采用了do…while循環(huán)內(nèi)嵌for循環(huán)的雙層循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)了數(shù)組元素的排序。數(shù)組元素通過首地址和數(shù)組下標(biāo)的方式來引用的。

39.存儲結(jié)構(gòu)

40.261261解析:在控制格式符中“o”代表的是將數(shù)據(jù)按八進(jìn)制數(shù)輸出,十進(jìn)制數(shù)的177代表的八進(jìn)制數(shù)是261。

41.B解析:考查結(jié)構(gòu)體數(shù)組對結(jié)構(gòu)體成員的引用。結(jié)構(gòu)體數(shù)組中對結(jié)構(gòu)體成員的引用要先引用到數(shù)組元素,然后像對待普通的結(jié)構(gòu)體變量一樣來對待結(jié)構(gòu)體數(shù)組元素。

42.B解析:本題中首先定義了三個(gè)整型變量x、y和z并分別賦值為0、5和3,while循環(huán)的判定條件為z-->0&&++x<5,由于x的初值為3,所以當(dāng)z--執(zhí)行3次后,z-->0將不在成立,又由于x的初值為0,所以++x執(zhí)行5次,++x<5將不再成立,而它們兩個(gè)表達(dá)式的值為邏輯與的關(guān)系,故當(dāng)z-->0不成立時(shí)整個(gè)表達(dá)式的值為假,因此該循環(huán)共執(zhí)行了3次,即語句y=y-1共執(zhí)行了三次,但while循環(huán)的判定表達(dá)式卻執(zhí)行了四次,故起最后輸出的x、y、z的值分別為3,2,-1,所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

43.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制和管理。

44.C解析:算法的時(shí)間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計(jì)算工作量。為了客觀地反映算法性能,在度量算法的時(shí)間復(fù)雜度時(shí),應(yīng)該與編寫算法程序所使用的程序設(shè)計(jì)語言、執(zhí)行算法程序時(shí)所使用的計(jì)算的工具以及程序員的水平無關(guān)。選項(xiàng)A錯(cuò)誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計(jì)算機(jī)上運(yùn)行時(shí),其計(jì)算時(shí)間是不同的。選項(xiàng)B錯(cuò)誤,因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計(jì)語言以及程序員的水平有關(guān),同一個(gè)算法,用不同的程序設(shè)計(jì)語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項(xiàng)D錯(cuò)誤,因?yàn)楦鶕?jù)一個(gè)算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計(jì)語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時(shí)間復(fù)雜度。所以,本題正確答案為C。

45.C解析:本題主要考查二維數(shù)組的使用。題中利用for循環(huán)來輸出x數(shù)組中的指定元素:①當(dāng)j=0時(shí),輸出x[0][2]=3;②當(dāng)i=1時(shí),輸出x[1][1]5;③當(dāng)i=2時(shí)。輸出x[2][0]=7。

46.D解析:本題考查語句的基本構(gòu)成。選項(xiàng)A)中j=5后面少了一個(gè)分號:選項(xiàng)B)中少了“}”;選項(xiàng)C)不是一個(gè)完整的函數(shù)定義格式,一個(gè)完整的函數(shù)定義格式還包括一對花括號:選項(xiàng)D)正確,是一個(gè)空語句。

47.C

48.C解析:本題考查的知識點(diǎn)是“文件包含”。編譯預(yù)處理時(shí),用“typel.h”中的內(nèi)容替代命令ginclude”typel.h'。表達(dá)式“i=M1+M2”經(jīng)過宏替換為“i=5*3+5*2”即i=25,所以最后輸出的i的值為25。所以4個(gè)選項(xiàng)中C正確。

49.B

50.C解析:strcat(s1,s2)是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復(fù)制給s1字符串,要保證s1能容納下連接或復(fù)制后的字符串。

51.A

52.B解析:字符串復(fù)制函數(shù)strcpy包含在頭文件string.h中,因此,程序中的第1行文件包含命令是錯(cuò)誤的。

53.A解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。通過函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的。由于是通過指針調(diào)用,所以改變字符串的結(jié)果。

54.A

55.B解析:主函數(shù)中先定義了一個(gè)整型變量a,一個(gè)字符變量c并賦初值10,一個(gè)浮點(diǎn)型變量f并賦初值100.00和一個(gè)double型x,接著執(zhí)行a=f/=c*=(x=6.5),該語句從右向左計(jì)算,先把6.5賦值給x(該括號表達(dá)式的值也為6.5),此時(shí)x的值變?yōu)?.5,然后執(zhí)行c*=(x=6.5)相當(dāng)于執(zhí)行c=c*(x=6.5),此時(shí)c的值為65,接著向左執(zhí)行f/c*=(x=6.5),語句相當(dāng)于執(zhí)行f=f/c,所以f的值為100/65≈1.538。接著向最右邊執(zhí)行“a=f”,由于a是整型變量,所以a最后去f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值(f和x只保留小數(shù)點(diǎn)后面1位)分別為1、65、1.5、6.5。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

56.B

57.B解析:當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳送的是數(shù)組的首地址,函數(shù)中的形參可定義成以下三種形式:

①形參定義成數(shù)組;

②形參定義成可變長數(shù)組:

③形參定義為指針變量。

58.D解析:本題考查數(shù)組指針的應(yīng)用。選項(xiàng)D)第一層括號中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒有意義。

59.C解析:以b+c代替參數(shù)x,a*=a*(2*b+c+1/2*b+c+1)=3*(2*2+1+1/2*2+1+1)=21。

60.D解析:選項(xiàng)A)的循環(huán)表達(dá)式條件永久為1,由于小于100的數(shù)與100取余不超過99,所以在循環(huán)體內(nèi)表達(dá)式i%100+1的值永遠(yuǎn)不大于100,break語句永遠(yuǎn)不會被執(zhí)行,所以是死循環(huán);選項(xiàng)B)的括號內(nèi)沒有能使循環(huán)終止的條件,是死循環(huán);選項(xiàng)C)中先執(zhí)行k++,使k=10001,陷入死循環(huán);選項(xiàng)D)中的s從36開始,每循環(huán)一次就減小1,直到s為0,循環(huán)結(jié)束,不會構(gòu)成死循環(huán)。

61.A用戶標(biāo)識符命名規(guī)則為:由數(shù)字、字母或下劃線組成,且首字母不能是數(shù)字.不能和關(guān)鍵字重復(fù),所以A)錯(cuò)誤.

62.D

63.D考查結(jié)構(gòu)體的應(yīng)用,答案為21。

64.B

65.C

66.Celse與離它最近的if構(gòu)成if…else語句,而當(dāng)a為2時(shí),第一個(gè)if語句不成立,因此什么也不做,即c的值仍然為2,故選擇C選項(xiàng)。

67.B本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標(biāo)相同,所以j=i。

68.B棧是按先進(jìn)后出的原則組織數(shù)據(jù)的;隊(duì)列是按先進(jìn)先出的原則組織數(shù)據(jù)的,因此本題答案為B)。

69.D解析:類(calss)描述的是具有相似屬性與操作的一組對象,而一個(gè)具體對象則是其對應(yīng)類的一個(gè)實(shí)例。

70.C

71.D

72.A將字符進(jìn)行運(yùn)算時(shí),進(jìn)行運(yùn)算的是ASCII值,所以ch1=65+2=67(‘5’與’3’的ASCII值差為2),ch2=65+6-3=68.

73.C函數(shù)intf(intx)是一個(gè)遞歸函數(shù)調(diào)用,

74.C

75.D文件操作;fscanf:從一個(gè)流中執(zhí)行格式化輸入fprintf:傳送格式化輸出到一個(gè)文件中.

76.A在函數(shù)point函數(shù)調(diào)用時(shí),系統(tǒng)自動(dòng)為函數(shù)的形參P分配內(nèi)存空間,并賦值為實(shí)參P的值。當(dāng)執(zhí)行語句P+=3;時(shí),系統(tǒng)操作的是形參P的內(nèi)存空間,更改形參P的內(nèi)容,而實(shí)參指針變量P的值未受影響,即指針變量作為函數(shù)參

77.Bslrlen用來返回字符串的長度,而sizeof返回的是一個(gè)對象或者類型所占的內(nèi)存字節(jié)數(shù),即數(shù)組所占的內(nèi)存。

78.D結(jié)構(gòu)化程序設(shè)計(jì)由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設(shè)計(jì)為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,這樣使完成每一個(gè)模塊的工作變得單純而明確,為設(shè)計(jì)一些較大的軟件打下了良好的基礎(chǔ)。

由于模塊相互獨(dú)立,因此,在設(shè)計(jì)其中一個(gè)模塊時(shí),不會受到其他模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計(jì)。模塊的獨(dú)立性還為擴(kuò)充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因?yàn)榭梢猿浞掷矛F(xiàn)有的模塊作為積木式的擴(kuò)展。

結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計(jì)方法和“單入口單出口”的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計(jì)方法從問題本身開始,經(jīng)過逐步細(xì)化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;“單入口單出口”的思想認(rèn)為一個(gè)復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個(gè)新構(gòu)造的程序一定是一個(gè)單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序。

79.C主程序讀取整個(gè)字符串存于s中,調(diào)用fun函數(shù)。字符指針c指向數(shù)組S。函數(shù)fun的功能是把指針C所指向的字符數(shù)組中的所有小寫字符轉(zhuǎn)換為大寫。囂cts函數(shù)可以把空格作為字符串的一部分輸入,以回車作為輸入結(jié)束。如果·c為小寫字符,則}C={C一32(轉(zhuǎn)大寫)。因此C選項(xiàng)正確。

80.CN-S圖(也被稱為盒圖或CHAPIN圖)、PAD(問題分析圖)及PFD(程序流程圖)是詳細(xì)設(shè)計(jì)階段的常用工具。E—R圖即實(shí)體一聯(lián)系圖,是數(shù)據(jù)庫設(shè)計(jì)的常用工具。從題中圖可以看出該圖屬于程序流程圖。

81.

(1)}t=0;

(2)if(d%21=0)或if(d%2==1)

【考點(diǎn)分析】

本題考查:指針型變量作為函數(shù)參數(shù);if語句條件表達(dá)式,結(jié)合奇偶數(shù)的表示方法來確定該表達(dá)式內(nèi)容。

【解題思路】

(1)由函數(shù)定義可知,變量t是指針變量,所以對t進(jìn)行賦初值0是不對的。因?yàn)閠指向的是存放新數(shù)的變量,所以此處應(yīng)給新數(shù)賦初值0,即。t=0。

(2)變量d表示數(shù)S各個(gè)位上的數(shù),此處的if條件應(yīng)為判斷d是否為奇數(shù)。

82.\n#include'stdio.h'

\n#defineN3

\nstructstudent

\n{longstu_num;charsex;

\ncharname[15];intscore[4];

\nfloataverage;};

\nmain

\n{intI,j,index;floatsum,max;

\nstructstudentstuarr[N];

\nfor(I=0;I{printf('pleaseinput%dstudentinformation:\\n',I+1);

\nscanf('%ld,%c,%s',&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);

\nfor(j=0;j<4;j++)

\nscanf('%d',&stuarr[I].score[j]);}

\nfor(I=0;I{sum=0.0;

\nfor(j=0;j<4;j++)

\nsum+=stuarr[I].score[j];

\nstuarr[I].a(chǎn)verage=sum/4.0;}

\nmax=stuarr[0].a(chǎn)verage;

\nindex=0;

\nfor(I=1;Iif(stuarr[I].a(chǎn)verage>max)

\n{max=stuarr[I].a(chǎn)verage;

\nindex=I;}

\nprintf('總平均成績最高的學(xué)生信息是學(xué)號=%ld,性別=%c,姓名=%s,平均成績=%4.1f\\n',stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].a(chǎn)verage);

\n}\n2021年廣東省揭陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

2.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序運(yùn)行后的輸出結(jié)果是()。

A.IB.JC.KD.H

3.有以下程序:#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;}程序的運(yùn)行結(jié)果是()。

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

4.

5.算法的效率的分析主要包括兩個(gè)方面()。

A.時(shí)間復(fù)雜度和空間復(fù)雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性

6.對序線性表23,29,34,55,60,70,78用二分法查找值為60的元素時(shí),需要比較次數(shù)為()

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

7.有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf("%d\n",j);}程序運(yùn)行后的輸出結(jié)果是()。

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

8.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的運(yùn)行結(jié)果是()。

A.036B.012C.048D.147

9.軟件生命周期中的活動(dòng)不包括()

A.軟件維護(hù)B.市場調(diào)研C.軟件測試D.需求分析

10.設(shè)有一個(gè)10階的對稱矩陣A,采用壓縮存儲方式,以行序?yàn)橹鞔鎯?,a11為第一元素,其存儲地址為1,每個(gè)元素占一個(gè)地址空間,則a85的地址為()。

A.13B.33C.18D.40

11.

12.如果要求一個(gè)線性表既能較快地查找,又能適應(yīng)動(dòng)態(tài)變化的要求,可以采用下列哪一種查找方法()

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

13.

14.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

15.對初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()

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

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

A.軟件工程只是解決軟件項(xiàng)目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

17.設(shè)棧S的初始狀態(tài)為空,6個(gè)元素入棧的順序?yàn)閑1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應(yīng)該是()。

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

18.有以下函數(shù):intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函數(shù)的功能是()。A.將y所指字符串賦給x所指存儲空間

B.查找和y所指字符串中是否有‘\0’

C.統(tǒng)計(jì)x和y所指字符串中最前面連續(xù)相同的字符個(gè)數(shù)

D.統(tǒng)計(jì)x和y所指字符串中相同的字符個(gè)數(shù)

19.定義根節(jié)點(diǎn)深度為1,有n個(gè)元素的完全二叉樹的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

20.設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績.,則表SC的關(guān)鍵字(鍵或碼)為()

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

二、2.填空題(20題)21.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

(1)第0列元素和主對角線元素均為1

(2)其余元素為其左上方和正上方元素之和

(3)數(shù)據(jù)的個(gè)數(shù)每行遞增1

請將程序補(bǔ)充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;

x[0][0]=1;

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

{x[i][0]=【】=1;

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

x[i][j]=【】;

}

}

22.在面向?qū)ο蠓椒ㄖ校瑢ο笾g進(jìn)行通信的構(gòu)造稱為()。

23.在結(jié)構(gòu)化設(shè)計(jì)方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個(gè)______實(shí)際上對應(yīng)一個(gè)處理模塊。

24.已定義charch='$';inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為______。

25.下面程序的運(yùn)行結(jié)果是______。

voidswap(int*a,int*B)

{

int*t;

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

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

26.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

27.若輸入Ihaveatest.#,則以下程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

main()

{FILE*fp;

charstr[100],filename[10];

inti=0;

if((fp=fopen("test","w"))==NULL)

{printf("cannotopenthefile!\n");

exit(0);

}

getchar();

gets(str);

while(str[i]!='#')

{if(str[i]>='a'&&str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

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

fclose(fp);

}

28.設(shè)有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

29.最簡單的交換排序方法是______。

30.軟件維護(hù)活動(dòng)包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

31.執(zhí)行以下程序后,輸出‘#’號的個(gè)數(shù)是【】。

#include<atdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

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

main()

{

inta[]={2,4,6},*prt=&a[0],x=8,y,z;

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

z=(*(ptr+y<x)?*(ptr+y):x;

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

}

33.數(shù)據(jù)的物理結(jié)構(gòu)在計(jì)算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的【】。

34.下面程序的功能是將一個(gè)字符串str的內(nèi)容倒序,請?zhí)羁铡?/p>

#inelude<stdio.h>

#include<strins.h>

main()

{inti,j,【】;

charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

35.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

36.若有以下定義:

chara;intb;

floatc;doubled;

則表達(dá)式a*b+d-c值的類型為【】。

37.某二叉樹中度為2的結(jié)點(diǎn)有n個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。

38.本程序用改進(jìn)冒泡法對數(shù)組a[n]的元素從小到大排序,請?jiān)诔绦蚩瞻滋幪羁铡?/p>

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

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

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

39.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

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

main()

{inta=177;

printf(“%o\n”,A);

}

三、1.選擇題(20題)41.若有以下的說明,對初值中整數(shù)2的正確引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

42.有以下程序:main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是

A.3,2,0B.3,2,-1C.4,3,1D.5.-2,-5

43.下列不屬于軟件工程的3個(gè)要素的是______。

A.工具B.過程C.方法D.環(huán)境

44.算法的時(shí)間復(fù)雜度是指______。

A.執(zhí)行算法程序所需要的時(shí)間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D.算法程序中的指令條數(shù)

45.定義如下變量和數(shù)組:inti,x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句的輸出結(jié)果是()。for(i=0;i<3;i++)printf("%d",x[i][2-i]);

A.159B.147C.357D.369

46.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

47.人們提出了用______的原理來設(shè)計(jì)軟件,這就是軟件工程學(xué)誕生的基礎(chǔ)。

A.計(jì)算機(jī)科學(xué)B.數(shù)學(xué)C.工程學(xué)D.運(yùn)籌學(xué)

48.程序中頭文件typel.h的內(nèi)容是#defineN5#defineM1N*3#define"typel.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d\n",i);}程序編譯后運(yùn)行的輸出結(jié)果是

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

49.十進(jìn)制數(shù)124轉(zhuǎn)換成二進(jìn)制數(shù)是()

A.111l010B.1111100C.1011111D.1111011

50.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

51.下列程序的輸出結(jié)果是______。#includesub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}{chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}

A.BABBABB.ABBBBAC.BABABAD.BAABBA

52.以下程序(程序左邊的數(shù)字為附加的行號)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.沒有錯(cuò)B.第1行有錯(cuò)C.第6行有錯(cuò)D.第7行有錯(cuò)

53.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!='a')str[j++]=str[i];str[j]='\0';}voidmain(){charstr[]="abcdef";abc(str);printf("str[]%s",str);}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

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

A.顯示器和打印機(jī)都是輸出設(shè)備B.顯示器只能顯示字符C.通常的彩色顯示器都有7種顏色D.打印機(jī)只能打印字符和表格

55.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

56.組成計(jì)算機(jī)網(wǎng)絡(luò)的最大好處是()

A.進(jìn)行通話聯(lián)系B.資源共享C.發(fā)送電子郵件D.能使用更多軟件

57.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每一個(gè)元素的地址D.數(shù)組每個(gè)元素中的值

58.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)()。inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;

A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))

59.下面程序的輸出結(jié)果是()。#defineSQR(X)2*X+1main(){inta,b,C;a=3;b=2;C=1;a*=SQR(b+c)/SQR(b+c);printf("%d",a);}

A.3B.18C.21D.24

60.在下列選項(xiàng)中,沒有構(gòu)成死循環(huán)的是()。

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

四、選擇題(20題)61.以下選項(xiàng)中,不合法的C語言用戶標(biāo)識符是()。A.a-一bB.AaBeC.a_bD.一1

62.

63.有以下程序:#include<stdio.h>structS{inta,b;)data[2]=10,100,20,200);main(){structSp=data[l];printf("%d\n",++(p.a(chǎn)));}程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

64.

65.

66.有如下程序:

main

{inta=2,b=-1.c=2;

if(a<b)if(b<0)c=0;

elsec++;

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

}

該程序的輸出結(jié)果是()。A.A.0B.1C.2D.3

67.有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",'');

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。A.A.i-1B.iC.i+1D.4一i

68.下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照‘‘先進(jìn)后出”原則存取數(shù)據(jù)的是()。A.循環(huán)隊(duì)列B.棧C.隊(duì)列D.二叉樹

69.在面向?qū)ο蠓椒ㄖ校?)描述的是具有相似屬性與操作的一組對象。

A.屬性B.事件C.方法D.類

70.

71.

72.已知字母A的ASCII碼為十進(jìn)制的65,下面程序的輸出為()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

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

}

A.67,DB.B,CC.C,DD.不確定的值

73.有以下程序:

程序的運(yùn)行結(jié)果是()。

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

74.

75.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,k=0,n=0;

fp=fopen("d1.dat","wb+");

for(i=1;i<4;i++)fprintf(fp,"%d",i);

fclose(fp);

fp=fopen("d1.dat","r");

fseek(fp,1L,SEEK_SET);

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

}

執(zhí)行后輸出結(jié)果是()。

A.12B.1230C.123D.230

76.有以下程序:

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

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

77.有以下程序:

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

A.7,4B.4,10C.8,8D.10,10

78.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是

A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序易讀性

79.有以下程序:

當(dāng)執(zhí)行程序時(shí)從鍵盤上輸入HelloBeijing<;回車>;,則程序運(yùn)行后的輸出結(jié)果是()。

A.hellobajiIlg

B.HelloBeijing

C.HELLOBEIJING

D.hELLOBeijing

80.軟件詳細(xì)設(shè)計(jì)產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

五、程序改錯(cuò)題(1題)81.下列給定程序中函數(shù)fun的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計(jì)題(1題)82.有N個(gè)學(xué)生,每個(gè)學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成績,從鍵盤上輸入N個(gè)學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信息,包括學(xué)號、性別、姓名和平均成績。

參考答案

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

2.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六進(jìn)制數(shù),轉(zhuǎn)為十進(jìn)制數(shù)x=9?!皃rintf(“%C\\n”,‘A’+9);”,輸出格式要求是“%c”,因此將字符‘A’按字母順序向后偏移9個(gè)位置,可得結(jié)果為“J”。故本題答案為B選項(xiàng)。

3.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),最后結(jié)果輸出a=503。故本題答案為C選項(xiàng)。

4.D

5.D

6.Cc)【解析】根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進(jìn)行比較,由于60大于55,所以性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進(jìn)行比較,由于60小于70,所以性表的前半部分查找。③第三次比較的元素是前半

溫馨提示

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

評論

0/150

提交評論