版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年四川省廣元市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值
B.執(zhí)行函數(shù)test后,函數(shù)不再返回
C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值
D.以上三個答案都是錯誤的
3.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()。
A.元素按值有序B.采用順序存儲結(jié)構(gòu)C.元素按值有序,且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)D.元素按值有序,且采用順序存儲結(jié)構(gòu)
4.軟件生命周期中所花費用最多的階段是()。
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
5.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。
charc;
c=getchar;
if(c>=a&&c<=g)c=c+4:
elseif(c>=9&&c<=2)c=c-21:
elseprintf("inputerror!\n");
putchar(c);
A.fB.tC.eD.d
6.歸并排序采用的算法設(shè)計方法屬于()
A.歸納法B.分治法C.貪心法D.回溯方法
7.
8.字符串"\\"ABCDEF\"\\”的長度是()。
A.11B.10C.5D.3
9.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。
A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改
10.若有定義"int(*pt)[3];",則下列說法正確的是()。
A.定義了基類型為int的三個指針變量
B.定義了基類型為int的具有三個元素的指針數(shù)組pt
C.定義了一個名為*pt、具有三個元素的整型數(shù)組
D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組
11.有以下程序
#include<stdio.h>
main()
{charch[3][5]={“AAAA”,”BBB”,”CC”};
printf(“%s\n”,ch[1];)
}
程序運行后的輸出結(jié)果是()A.A.AAAA
B.CC
C.BBBCC
D.BBB
12.在一個鏈?zhǔn)疥犃兄校僭O(shè)f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點的運算是()。
A.f->next=s;f=s;
B.r->next=s;r=s;
C.S->next=rr=s;
D.r->next=f;f=s;
13.下列說法不正確的是()。
A.圖的遍歷是從給定的源點出發(fā)每一個頂點僅被訪問一次
B.圖的深度遍歷不適用于有向圖
C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷
D.圖的深度遍歷是一個遞歸過程
14.下列敘述中正確的是()。
A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系
B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C.一個關(guān)系的屬性名表稱為關(guān)系模式
D.一個關(guān)系可以包括多個二維表
15.有以下程序:#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");}程序運行后輸出的結(jié)果是()。A.246810B.13579C.12345D.678910
16.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
17.有以下程序:#include<stdio.h>main(){inta[]={10,20,30,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*P;p++;}printf("oAd\n",a[2]);}程序運行后的輸出結(jié)果是()。A.30B.40C.10D.20
18.對于int*pa[5];的描述,()是正確的。
A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素
B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量
C.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
D.pa[5]表示某數(shù)組的第5個元素的值
19.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。
A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析
20.下列存儲器中,存取速度最快的是()。
A.軟盤B.硬盤C.光盤D.內(nèi)存
二、2.填空題(20題)21.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。
22.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
main()
{double*p;
p=(double*)malloc(【】);
p[0]=1.5;p[1]=2.5;P[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
23.下面程序的運行結(jié)果是【】。
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d\n",s);
break;}
s+=i;}}
24.以下程序運行后的輸出結(jié)果是【】。
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
25.以下程序運行后的輸出結(jié)果是【】。
fun(ihtx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
26.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。
27.以下程序運行后的輸出結(jié)果是______。
main()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
28.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
29.以下程序運行后的輸出結(jié)果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
30.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
31.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
32.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
33.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。
34.以下函數(shù)的功能是計算s=1+1/2!+1/3!+…+1/n!,請?zhí)羁铡?/p>
doublerun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++)
{【】;
fac=fac/k;
s=s+fac;
}
}
35.以下程序的輸出結(jié)果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
36.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4=0)printf("\n");
printf("%3d",b[i]);
}
}
37.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
38.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。
structdate
{intday;
intmouth;
intyear;
union{intshare1;
floatshare2;
}share;
}a;
39.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b+*;break;
}
printf("%d%d\n",a,b);
}
40.以下程序的運行結(jié)果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:case2:return1;
}
return(fib(g-1)+fib(g-2));
}
main()
{longk;
k=fib(5);
printf("k=%d\n",k);
}
三、1.選擇題(20題)41.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
42.以下運算符中優(yōu)先級最低的算符是______。
A.&&B.&C.+=D.?:
43.以下程序中函數(shù)f的功能是:當(dāng)flag為1時,進(jìn)行由小到大排序;當(dāng)flag為0時,進(jìn)行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(flag?b[!]>[j]:b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}}main(){inta[10]={5,4,3,2,1,6,7,8,9,10},i;f(&a[2],5,0);f(a,5,1),for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后輸出結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
44.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是
A.77B.88C.810D.1010
45.若有如下程序:main(){inta=1,b=1;for(;a<=10;a++){if(b>=9)break;if(b%3==1){b+=3;continue;}b++;}printf("%d,%d",b,a);}則程序運行后的輸出結(jié)果是()。
A.10,4B.7,3C.10,3D.11,3
46.下面關(guān)于算法的敘述中,正確的是()
A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
C.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
D.以上三種描述都正確
47.有以下程序:#include<stdlo.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+")for(i=1;i<6;i++){fprintf(fp."%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp."%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);
A.00B.12345C.14D.1
48.下列程序的輸出結(jié)果是_____。main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
49.以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“NO%d:%f\n”,n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是
A.sum=0.0;
B.sum+=score;
C.ave=sum/4.0;
D.printf(“NO%d:%f\n”,n,ave);
50.假定w、x,y、z、m均為int型變量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是()
A.4B.3C.2D.1
51.以下敘述不正確的是______。
A.分號是C語言的必要組成部分
B.C程序的注釋可以寫在句的后面
C.函數(shù)是C程序的基本單位
D.主函數(shù)的名字不一定用main表示
52.關(guān)于printf()函數(shù)的返回值敘述正確的是
A.通常是本次調(diào)用中輸出字符的個數(shù)B.通常是輸出的第一個數(shù)值C.通常返回布爾值真D.通常返回非零值
53.C語言源程序的最小單位是()。
A.程序行B.語句C.函數(shù)D.字符
54.下列描述中,正確的一條是______。
A.關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”,可以賦給一個邏輯變量
B.在C語言中,判斷一個量是否為:真”時,以0代表“假”,以1代表“真”.
C.設(shè)a=3、b=4、c=5,則表達(dá)式!(x=a)&&(y=b)&&0的值為0
D.一個數(shù)組的各個數(shù)組元素可屬于不同的數(shù)據(jù)類型
55.以下敘述中錯誤的是A.gets函數(shù)用于從終端讀入字符串
B.getchar函數(shù)用于從磁盤文件讀入字符
C.fputs函數(shù)用于把字符串輸出到文件
D.fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件
56.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
57.下列選項中不屑于C語言數(shù)據(jù)類型的是()
A.整型B.邏輯型C.雙精度型D.枚舉型
58.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()
A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;
59.以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}
A.699B.669C.61515D.6615
60.以下說法中,不正確的是
A.C程序中必須有一個main()函數(shù),從main()函數(shù)的第一條語句開始執(zhí)行
B.非主函數(shù)都是在執(zhí)行主函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而執(zhí)行
C.C程序中的main()函數(shù)必須放在程序的開始位置
D.C程序中的main()函數(shù)位置可以任意指定
四、選擇題(20題)61.若變量x、Y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。
A.++x,y=x-B.x+1=yC.x=x+10=x+yD.double(x/10)
62.
63.為了提高軟件的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
64.
65.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
D.以上三種描述都不對
66.第
42
題
若有說明語句
chara[]="Itismine";
char*p="Itismine";
則以下不正確的敘述是
A.a+1表示的是字符t的地址
B.p指向另外的字符串時,字符串的長度不受限制
C.p變量中存放的地址值可以改變
D.a中只能存放10個字符
67.串的長度是______。A.A.串中不同字符的個數(shù)
B.串中不同字母的個數(shù)
C.串中所含字符的個數(shù)且字符個數(shù)大于零
D.串中所含字符的個數(shù)
68.以下能正確定義一維數(shù)組的選項是A.intnum[];
B.#defineN100intnum[N];
C.intnum[0..100];
D.intN=100;intnum[N];
69.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的運行結(jié)果是()A.1B.0C.2D.3
70.以下敘述中錯誤的是()。A.用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用二次返回多個函數(shù)值
B.用戶定義的函數(shù)中可以沒有return語句
C.用戶定義的函數(shù)中若沒有retum語句,則應(yīng)當(dāng)定義函數(shù)為void類型
D.函數(shù)的return語句中可以沒有表達(dá)式
71.下面敘述中錯誤的是()。
A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤
B.對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟
C.程序調(diào)試通常也稱為Debug
D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性
72.
73.
74.若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n",i,j);輸出的結(jié)果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
75.有以下程序:
#include<stdio.h>
main
{intx=4,y;
do
{y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的輸出結(jié)果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx
76.C語言提供的合法的數(shù)據(jù)類型關(guān)鍵字是()。
A.DoubleB.shortC.integerD.Char
77.在長度為n的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)是
A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)
78.
79.有如下嵌套的語句
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCIl碼升序排序后輸出。例如,輸入opdye,則應(yīng)輸出deopy。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include%string.h>#include%stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charC;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j4-+)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=C;}}voidmain{charst/[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\nknBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%S",str);}
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是將s所指字符串中ASCII值為偶數(shù)的字符刪除,字符串中剩余字符形成一個新字符串并將其存放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG123456”,其中字符B的ASCII值為偶數(shù),字符2的ASCII值為偶數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的字符串中的內(nèi)容應(yīng)是“ACEG135”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart[]){}voidmain(){ chars[100],t[100]; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); fun(s,t); printf(“\nTheresultis:%s\n”,t);}
參考答案
1.D
2.A
3.D
4.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護(hù)3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟什開發(fā)階段;維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段.軟件工程學(xué)的一個目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價。
5.C
\ngetchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=a,判斷if條件,發(fā)現(xiàn)a>=a&&a<=g成立,則執(zhí)行下列語句:C=C+4,C得到的字符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。
6.B解析:以2一路歸并排序為例進(jìn)行說明。2一路歸并是指將兩個有序序列合并成一個有序序列,其基本過程為;從兩個序列中各取一個元素,進(jìn)行比較,輸出較小的元素,從較小元素所在序列取下一個元素,與未輸出的那個元素比較,輸出較小者。依此類推,直到輸出序列包含了兩個初始有序序列的全部元索。對于一個初始無序的序列,可以先將其等分為兩個無序的子序列,對這兩個子序列再次二分,重復(fù)該過程,直到分出的子序列中僅包含一個元素時(一個元素自然是有序的)為止,然后在反復(fù)進(jìn)行2一路歸并的過程,最后完成排序。
7.B
8.B解析:本題涉及字符串的兩個最基本的概念。①字符串的長度是指字符串中字符的個數(shù),但不包含字符串結(jié)束符;②以反斜線“\\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\\”連同后面的字符為一個長度。
9.D
10.D\n數(shù)組指針是指向數(shù)組的一個指針,int(*pt)[3]表示一個指向3個int元素的數(shù)組的一個指針。
\n
11.Dch[1]即輸出的為第二個字符串,即BBB。
12.B
13.C
14.C解析:在格式化模型中,要事先根據(jù)應(yīng)用的需要,確定數(shù)據(jù)之間的邏輯關(guān)系,即先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。在關(guān)系模型中,不需要事先構(gòu)造數(shù)據(jù)的邏輯關(guān)系,只要將數(shù)據(jù)按照一定的關(guān)系存入計算機(jī),也就是建立關(guān)系。所以選項A錯誤。對于一個表示關(guān)系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數(shù)據(jù)項,即不允許表中再有表。所以,選項B、D說法是錯誤的。一個關(guān)系的屬性名表稱為關(guān)系模式,也就是二維表的表框架,相當(dāng)于記錄型。因此,選項C說法正確。
15.D本題中exch函數(shù)是用數(shù)組中的第6個元素對第1個元素進(jìn)行賦值,所以數(shù)組的值應(yīng)該為678910。
16.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價的。這是一種運算符之間的等價轉(zhuǎn)換,就好像a-(b-C)等價于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來。因為[]運算符的結(jié)合性是從左至右的,所以w[i][j]等價于(w[i][j],此時可以先將任意一個[]運算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價于w[i][j]。選項A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項B小,因為[]運算符的優(yōu)先級高于*運算符,所以*(w+1)[4]等價于*((w+1)[4]等價于*(*((w+1)+4)),即*(*(w+5)+0),它等價于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項C等價于w[1][0],是下確的。選項D中,&w[0][0]是數(shù)組w第1個元素的地址,它等價于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個數(shù),然后再除以這個數(shù)一樣。所以,&w[0][0]等價于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價于w[0][1],這個也是合法的。綜上所述,本題應(yīng)該選擇B。
17.AFor循環(huán)結(jié)束后,數(shù)組a的值并沒有變化,由于數(shù)組是由0開始,所以a[2]的值是30。
18.A
19.D\n通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用、退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。軟件生命周期的主要活動階段為:可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。
\n需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。
\n軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。
\n軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
\n軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。
\n運行和維護(hù)。將已交付的軟件投入運行,并在運行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。
\n本題答案是D)。
\n
20.D\nD【解析】存儲器中.存取速度最快的是內(nèi)存。
\n
21.22解析:'\\13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進(jìn)制數(shù)12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志“'\\0'”,所以共有2個字節(jié)。
22.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。
23.3030解析:題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。注意:while循環(huán)的執(zhí)行原理。
24.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。
25.136136解析:本題考查函數(shù)的遞歸調(diào)用。函數(shù)fun是遞歸函數(shù),語句fun(6)的調(diào)用過程如下:
第1次:調(diào)用fun(6),6/2=3>0成立,調(diào)用fun(3);
第2次:調(diào)用fun(3),3/2=1>0成立,調(diào)用fun(1);
第3次:調(diào)用fun(1),1/2=0>0不成立,執(zhí)行語句printf('%d',x);,輸出1。
推出fun(3)輸出3,fun(6)輸出為6。
26.模塊化模塊化
27.*2*4*6*8**2*4*6*8*解析:程序中定義了一個字符數(shù)組a,并初始化為123456789,接著定義了一個指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個while循環(huán),此循環(huán)的作用是:當(dāng)i為偶數(shù)時,將“*”賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調(diào)用puts()函數(shù)輸出的a的值為*2*4*6*8*
28.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當(dāng)其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達(dá)式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應(yīng)的大寫字母,結(jié)果為ACE。
29.4334
30.852852解析:循環(huán)前,變量y的值為9,其中的循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值減1。循環(huán)體是當(dāng)y能被3整除時輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán)。所以程序輸出852。
31.*(p+5)或p[5]*(p+5)或p[5]
32.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當(dāng)n=4時,判斷條件不滿足,退出循環(huán)。
33.測試實例測試實例解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。
34.k=k*ik=k*i解析:本題小通過for循環(huán)求s表達(dá)式中每一項的和,表達(dá)式“fac=fac/k;”求的是每一項的值,所以k的值應(yīng)為n!,在求n!的時候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故木題填k=k*i。
35.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空.輸出語句不在for循環(huán)體內(nèi),所以在循環(huán)執(zhí)行完畢后才輸出s的值.s、i的初值分別為0和1,判斷循環(huán)條件,表達(dá)式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達(dá)式“2<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為3,再次判斷循環(huán)條件,表達(dá)式“3<3”不成立,循環(huán)結(jié)束。
36.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。
37.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。
38.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。
39.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結(jié)果是21。
40.k=5k=5解析:由題可知fib(0)的值為0,fib(1)和fib(2)的值為1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。
41.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。
42.C解析:本題中運算符優(yōu)先級順序從高到低依次是:&、&&、?:、+=。
43.B解析:題目中先后兩次調(diào)用了函數(shù)f()。第1次,使用參數(shù)“&a[2],5,0”表示從數(shù)組a下標(biāo)為2的元素開始,對其后的5個元素進(jìn)行由大到小排序。所以排序結(jié)果是{5,4,7,6,3,2,1,8,9,10)。第2次,使用參數(shù)“a,5,1”表示從數(shù)組a的首元素開始,對其后5個元素進(jìn)行由小到大排序。所以排序結(jié)果是{3,4,5,6,7,2,1,8,9,10)。故本題應(yīng)該選擇B。
44.C解析:本題考核的知識點是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。
45.A解析:本題中for循環(huán)循環(huán)10次。如果b>=9結(jié)束循環(huán)。如果b能被3整除結(jié)束本次循壞。都不成立b加1。for循環(huán)執(zhí)行過程為:當(dāng)a=1,b=1時,b%3=1,b=b+3=1+3=4,進(jìn)入下一次循環(huán):當(dāng)a=2,b=4時,b%3=1,b=b+3=4+3=7,進(jìn)入下一次循環(huán);當(dāng)a=3,b=7時,b%3=1,b=b+3=7+3=10,進(jìn)入下一次循環(huán);當(dāng)a=4,b=10時,因b>=9成立,執(zhí)行“break;”退出循環(huán)。
46.BB)【解析】算法在運行過程t}1需輔助存儲空間的大小稱為算法的空間復(fù)雜度。算法的有窮性是指個算法必須在執(zhí)行有限的步驟以后結(jié)束。
47.D解析:在for循環(huán)中用fpfinff(fp,'%d',i);將循環(huán)變量的值1~5輸出到fp指向的文件data.dat中,輸出3個數(shù)后換行。執(zhí)行rewind(fP)使文件指針重新返回到文件的開頭,再執(zhí)行fscanf(fp,'%d%d',&k,&n)將磁盤文件中的前兩個數(shù)輸入給變量k,n,并將其輸出到屏幕上。
48.A
49.A解析:本程序中用了兩層for循環(huán),外層循環(huán)是控制人數(shù),循環(huán)一次是求一個人的成績和,然后除以4得到平均成績。每個人的成績總和一開始時都必須清0,否則就會出現(xiàn)后面人的總成績越來越大?!皊um=0.0”;應(yīng)在外層循環(huán)中。
50.D
51.D解析:C語言的程序是由主函數(shù)main()開始運行,由主函數(shù)來調(diào)用其他函數(shù),所以D是錯誤的。
52.A解析:printf函數(shù)的返回值通常是本次調(diào)用中輸出字符的個數(shù)。scanf函數(shù)在調(diào)用結(jié)束后將返回一個函數(shù)值,其值等于得到輸入項的個數(shù)。
53.C解析:C語言源程序的最小單位是函數(shù),所以本題選C。
54.D
55.B其中B選項的getchar函數(shù)用于從終端讀入字符。故本題答案為B選項。
56.A解析:數(shù)據(jù)流圖包括4個方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體)。不包括選項中的控制流。
57.B
58.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達(dá)式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項B不正確;選項D表達(dá)式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確:4個選項中只有C正確。
59.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦韌值一次,在程序運行時它已有初值。以后每次調(diào)用時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值,而對自動變量賦初值,不是在編譯時進(jìn)行的,而在函數(shù)調(diào)用時進(jìn)行,每調(diào)用一次函數(shù)重新給一次初值,相當(dāng)于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調(diào)函數(shù)fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調(diào)用函數(shù)fun時,d初值為5,p由主函數(shù)傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數(shù)調(diào)用結(jié)束后,它仍保留d=6。再次調(diào)用fun函數(shù),d的初值為6,而由主函數(shù)傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數(shù)。
60.C解析:main()函數(shù)的作用,以及main()函數(shù)在程序中出現(xiàn)的位置。一個完整的C語言程序有且僅有一個主函數(shù)(main()函數(shù))。程序總從main()函數(shù)的第一條語句開始執(zhí)行,到main()函數(shù)的最后—條語句結(jié)束,其他函數(shù)都是在執(zhí)行main()函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C語言規(guī)定,main()函數(shù)在程序中的位置是任意的。
61.A賦值表達(dá)式左邊必須是一個變量,而選項B)、c)中賦值號左邊都是表達(dá)式,選項D)進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,應(yīng)寫為(double)x/10。
62.A
63.D在程序設(shè)計中,各模塊間的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,以有利于提高模塊的獨立性。耦合性與內(nèi)聚性是模塊獨立的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。
64.D
65.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)都有很緊密的關(guān)系。算法的空間復(fù)雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程序中指令的條數(shù)。算法一般應(yīng)該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步驟之后終止,否則可能失去實際意義。
66.D在C程序中,可以用字符數(shù)組存放一個字符串,然后輸出該字符串,也可以用字符指針指向一個字符串。
題目中用字符數(shù)組a[]來存放字符串'Itismine',a為數(shù)組名,表示首元素的地址,即字母I的地址。a+1表示數(shù)組中第二個元素t的地址,選項A正確。當(dāng)用字符串指針指向字符串時,只是將字符串的第一個元素的地址賦給指針,當(dāng)該指針指向其他字符串時,只需將該字符串的第一個元素地址賦給這個指針即可,和字符串的長度沒有關(guān)系,選項B也是正確的。指針變量的值為元素的地址,和元素具體的值沒有關(guān)系,當(dāng)指針指向不同的元素時,存放的地址也會發(fā)生改變,故選項C是正確的。數(shù)組a初始化時沒有指定數(shù)組長度,系統(tǒng)自動根據(jù)初值個數(shù)確定數(shù)組長度,題目中只是將10個有效字符存放到數(shù)組中,不能說明這個數(shù)組只能存放10個字符。
67.D解析:串的長度指的是串中字符的個數(shù),且其字符個數(shù)可以為零。選項D正確。
68.B解析:選項A定義數(shù)組時省略了長度,而C語言中規(guī)定,只有在定義并同時進(jìn)行初始化時,數(shù)組的長度才可以省略,數(shù)組的長度為初始化時候的成員個數(shù),故選項A錯誤;在C語言中規(guī)定,數(shù)組的長度必須是一個整數(shù)或整型常量表達(dá)式,故選項C不正確:定義時數(shù)組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。
69.A雖為嵌套的for循環(huán),但“m=m%j”只執(zhí)行1次,即當(dāng)i=3時,內(nèi)層循環(huán)條件成立,m=55%3=1,故選A。
70.Areturni吾句結(jié)束函數(shù).即使函數(shù)中有多個retum語句,也只會執(zhí)行一個。所以選項A)錯誤。
71.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項。
72.D
73.A
74.B本題考查函數(shù)的輸出格式。在printf函數(shù),格式說明符中有兩個“%”說明;將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)r的變量值。
75.B本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以,先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將X的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將X的值減1,x=l,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結(jié)束循環(huán)。所以B正確。
76.Bdouble,char,int,第一個字母都是小寫。
77.A在有序的線性表中進(jìn)行查找,最差的情況為從表頭查找到表尾都沒有所需要的值。長度為n的線性表從表頭開始每次取出一個值比較,若不符合,再取下一個值,依次比較,一直到最后一個,需要比較n次。
78.B\r\n
79.Aif\r\nelse語句和“?:”可以互換,?前語句相當(dāng)于i垢括號內(nèi)容,?后語句相當(dāng)于i垢的執(zhí)行語句,冒號后語句相當(dāng)于else后語句,綜合以上可以看出A)符合題意。
80.A
81.(1)錯誤:intproc(charstr[])正確:voidproc(charstr[])(2)錯誤:str[j]=str[i++];正確:str[j]=str[i];【解析】由主函數(shù)中的函數(shù)調(diào)用可知,函數(shù)proc沒有返回值。因此,“intproc(charstr[])”應(yīng)改為“voidproc(charstr[])”;由函數(shù)proc可知,if語句塊完成將字符串str中的第i個元素與第j個元素相交換。因此,“str[j]=str[i++];”應(yīng)改為“str[j]=str[i];”。
82.voidfun(char*s,chart[]){ inti=0; for(;*s!=‘\0’;s++) /*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/ if(*s%2==1) t[i++]=*s; t[i]=‘\0’; /*在字符串的末尾加上字符串結(jié)束標(biāo)志*/}本題要求將s所指字符串中ASCII值為偶數(shù)的字符刪除,因此本題要求采用一個for循環(huán)來找出ASCII值為奇數(shù)的字符,將其依次存入數(shù)組t中,并使用if條件語句來判斷s所指字符串中ASCII值是否為奇數(shù)。將‘\\0’加在字符串的末尾來表示字符串的結(jié)束。要刪除ASCII值為偶數(shù)的字符,也就是要留下ASCII值為奇數(shù)的字符。由于最終要求出剩余字符(即ASCII值為奇數(shù))形成的新字符串,因此本題程序的算法是對原字符串從頭到尾掃描,找出ASCII值為奇數(shù)的字符,并將其依次存入數(shù)組t中。此外,還要注意數(shù)組t的下標(biāo)變化和下標(biāo)的初值(初值必須為0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。2021-2022年四川省廣元市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值
B.執(zhí)行函數(shù)test后,函數(shù)不再返回
C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值
D.以上三個答案都是錯誤的
3.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()。
A.元素按值有序B.采用順序存儲結(jié)構(gòu)C.元素按值有序,且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)D.元素按值有序,且采用順序存儲結(jié)構(gòu)
4.軟件生命周期中所花費用最多的階段是()。
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
5.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。
charc;
c=getchar;
if(c>=a&&c<=g)c=c+4:
elseif(c>=9&&c<=2)c=c-21:
elseprintf("inputerror!\n");
putchar(c);
A.fB.tC.eD.d
6.歸并排序采用的算法設(shè)計方法屬于()
A.歸納法B.分治法C.貪心法D.回溯方法
7.
8.字符串"\\"ABCDEF\"\\”的長度是()。
A.11B.10C.5D.3
9.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。
A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改
10.若有定義"int(*pt)[3];",則下列說法正確的是()。
A.定義了基類型為int的三個指針變量
B.定義了基類型為int的具有三個元素的指針數(shù)組pt
C.定義了一個名為*pt、具有三個元素的整型數(shù)組
D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組
11.有以下程序
#include<stdio.h>
main()
{charch[3][5]={“AAAA”,”BBB”,”CC”};
printf(“%s\n”,ch[1];)
}
程序運行后的輸出結(jié)果是()A.A.AAAA
B.CC
C.BBBCC
D.BBB
12.在一個鏈?zhǔn)疥犃兄校僭O(shè)f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點的運算是()。
A.f->next=s;f=s;
B.r->next=s;r=s;
C.S->next=rr=s;
D.r->next=f;f=s;
13.下列說法不正確的是()。
A.圖的遍歷是從給定的源點出發(fā)每一個頂點僅被訪問一次
B.圖的深度遍歷不適用于有向圖
C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷
D.圖的深度遍歷是一個遞歸過程
14.下列敘述中正確的是()。
A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系
B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C.一個關(guān)系的屬性名表稱為關(guān)系模式
D.一個關(guān)系可以包括多個二維表
15.有以下程序:#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");}程序運行后輸出的結(jié)果是()。A.246810B.13579C.12345D.678910
16.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
17.有以下程序:#include<stdio.h>main(){inta[]={10,20,30,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*P;p++;}printf("oAd\n",a[2]);}程序運行后的輸出結(jié)果是()。A.30B.40C.10D.20
18.對于int*pa[5];的描述,()是正確的。
A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素
B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量
C.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
D.pa[5]表示某數(shù)組的第5個元素的值
19.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。
A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析
20.下列存儲器中,存取速度最快的是()。
A.軟盤B.硬盤C.光盤D.內(nèi)存
二、2.填空題(20題)21.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。
22.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
main()
{double*p;
p=(double*)malloc(【】);
p[0]=1.5;p[1]=2.5;P[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
23.下面程序的運行結(jié)果是【】。
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d\n",s);
break;}
s+=i;}}
24.以下程序運行后的輸出結(jié)果是【】。
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
25.以下程序運行后的輸出結(jié)果是【】。
fun(ihtx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
26.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。
27.以下程序運行后的輸出結(jié)果是______。
main()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
28.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
29.以下程序運行后的輸出結(jié)果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
30.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
31.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
32.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
33.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。
34.以下函數(shù)的功能是計算s=1+1/2!+1/3!+…+1/n!,請?zhí)羁铡?/p>
doublerun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++)
{【】;
fac=fac/k;
s=s+fac;
}
}
35.以下程序的輸出結(jié)果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
36.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4=0)printf("\n");
printf("%3d",b[i]);
}
}
37.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
38.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。
structdate
{intday;
intmouth;
intyear;
union{intshare1;
floatshare2;
}share;
}a;
39.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b+*;break;
}
printf("%d%d\n",a,b);
}
40.以下程序的運行結(jié)果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:case2:return1;
}
return(fib(g-1)+fib(g-2));
}
main()
{longk;
k=fib(5);
printf("k=%d\n",k);
}
三、1.選擇題(20題)41.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
42.以下運算符中優(yōu)先級最低的算符是______。
A.&&B.&C.+=D.?:
43.以下程序中函數(shù)f的功能是:當(dāng)flag為1時,進(jìn)行由小到大排序;當(dāng)flag為0時,進(jìn)行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(flag?b[!]>[j]:b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}}main(){inta[10]={5,4,3,2,1,6,7,8,9,10},i;f(&a[2],5,0);f(a,5,1),for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后輸出結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
44.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是
A.77B.88C.810D.1010
45.若有如下程序:main(){inta=1,b=1;for(;a<=10;a++){if(b>=9)break;if(b%3==1){b+=3;continue;}b++;}printf("%d,%d",b,a);}則程序運行后的輸出結(jié)果是()。
A.10,4B.7,3C.10,3D.11,3
46.下面關(guān)于算法的敘述中,正確的是()
A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
C.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
D.以上三種描述都正確
47.有以下程序:#include<stdlo.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+")for(i=1;i<6;i++){fprintf(fp."%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp."%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);
A.00B.12345C.14D.1
48.下列程序的輸出結(jié)果是_____。main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
49.以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“NO%d:%f\n”,n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是
A.sum=0.0;
B.sum+=score;
C.ave=sum/4.0;
D.printf(“NO%d:%f\n”,n,ave);
50.假定w、x,y、z、m均為int型變量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是()
A.4B.3C.2D.1
51.以下敘述不正確的是______。
A.分號是C語言的必要組成部分
B.C程序的注釋可以寫在句的后面
C.函數(shù)是C程序的基本單位
D.主函數(shù)的名字不一定用main表示
52.關(guān)于printf()函數(shù)的返回值敘述正確的是
A.通常是本次調(diào)用中輸出字符的個數(shù)B.通常是輸出的第一個數(shù)值C.通常返回布爾值真D.通常返回非零值
53.C語言源程序的最小單位是()。
A.程序行B.語句C.函數(shù)D.字符
54.下列描述中,正確的一條是______。
A.關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”,可以賦給一個邏輯變量
B.在C語言中,判斷一個量是否為:真”時,以0代表“假”,以1代表“真”.
C.設(shè)a=3、b=4、c=5,則表達(dá)式!(x=a)&&(y=b)&&0的值為0
D.一個數(shù)組的各個數(shù)組元素可屬于不同的數(shù)據(jù)類型
55.以下敘述中錯誤的是A.gets函數(shù)用于從終端讀入字符串
B.getchar函數(shù)用于從磁盤文件讀入字符
C.fputs函數(shù)用于把字符串輸出到文件
D.fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件
56.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
57.下列選項中不屑于C語言數(shù)據(jù)類型的是()
A.整型B.邏輯型C.雙精度型D.枚舉型
58.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()
A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;
59.以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}
A.699B.669C.61515D.6615
60.以下說法中,不正確的是
A.C程序中必須有一個main()函數(shù),從main(
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 定音鼓市場發(fā)展預(yù)測和趨勢分析
- 辦公用膠產(chǎn)業(yè)深度調(diào)研及未來發(fā)展現(xiàn)狀趨勢
- 人教版英語八年級上冊單元基礎(chǔ)過關(guān)Units 4-5練習(xí)
- 工業(yè)用竹籃產(chǎn)業(yè)規(guī)劃專項研究報告
- 壁爐爐鉗市場需求與消費特點分析
- 家用切肉機(jī)產(chǎn)業(yè)規(guī)劃專項研究報告
- 巴拉克拉瓦頭套產(chǎn)業(yè)運行及前景預(yù)測報告
- 具有空氣凈化功能的防塵口罩市場需求與消費特點分析
- 外科用羊腸線產(chǎn)業(yè)深度調(diào)研及未來發(fā)展現(xiàn)狀趨勢
- 心臟內(nèi)導(dǎo)管產(chǎn)業(yè)運行及前景預(yù)測報告
- 2024年物業(yè)管理師(中級四級)考試題庫大全-上(單選、多選題)
- 2024年人教部編版語文六年級上冊期中測試題及答案(一)
- 《江西數(shù)學(xué)三年級上學(xué)期數(shù)學(xué)期中試卷》
- 2024年10月福建三明寧化縣城市管理和綜合執(zhí)法局公開招聘非在編協(xié)管員11人筆試歷年典型考點(頻考點試卷)解題思路附帶答案詳解
- 2024年環(huán)保知識生態(tài)建設(shè)知識競賽-環(huán)?;A(chǔ)知識競賽考試近5年真題附答案
- 《萬維網(wǎng)安全新協(xié)議》課件 2024-2025學(xué)年人教版新教材初中信息技術(shù)七年級全一冊
- 2024中國郵政集團(tuán)河北省分公司春季校園招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 部編版歷史高一上學(xué)期期中試卷與參考答案(2024-2025學(xué)年)
- 人教版(2019)必修 第三冊Unit 5 The value of money 單元集體備課教案
- 數(shù)據(jù)備份與恢復(fù)應(yīng)急預(yù)案
- 印刷包裝崗位招聘筆試題與參考答案(某大型國企)
評論
0/150
提交評論