




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流動(dòng)式起重機(jī)在分解組塔施工中的應(yīng)用與優(yōu)化方案
- 簡樂尚博報(bào)告:全球及中國女性復(fù)合維生素行業(yè)研究及十四五規(guī)劃分析報(bào)告
- ivr聲訊增值業(yè)務(wù)項(xiàng)目策劃書
- 高級理論試卷
- 營銷戰(zhàn)略規(guī)劃課件
- 二年級語文上冊全冊教案滬教版
- 門窗合同范本
- 水槽買賣合同范本
- 電氣設(shè)備電力系統(tǒng)環(huán)境保護(hù)考核試卷
- 酒店投資合同范本
- 夏暉冷鏈物流公司
- 人教版小學(xué)數(shù)學(xué)四年級下冊第五單元《三角形》作業(yè)設(shè)計(jì)
- 不良資產(chǎn)處置業(yè)務(wù)操作流程與財(cái)務(wù)管理
- 2025屆山東省青島市高三下學(xué)期一模英語試題(原卷版+解析版)
- 2025屆福建省廈門市高三第二次質(zhì)量檢測地理試題(原卷版+解析版)
- 車隊(duì)安全學(xué)習(xí)培訓(xùn)課件
- 中華人民共和國國家安全法全文
- 《兒童代謝綜合征臨床防治指南(2025)》臨床解讀
- 建筑工程施工合同解讀
- 施工現(xiàn)場圍擋搭設(shè)驗(yàn)收記錄表
- 2024年全國“紀(jì)檢監(jiān)察”業(yè)務(wù)相關(guān)知識考試題庫(附含答案)
評論
0/150
提交評論