版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中錯誤的是()。
A.在C語言中,函數(shù)中的自動變量可以賦初值,每調(diào)用一次賦一次初值
B.在C語言中,在調(diào)用函數(shù)時,實參和對應(yīng)形參在類型上只需賦值兼容
C.在C語言中,外部變量的隱含類型是自動存儲類別
D.在C語言中,函數(shù)形參的存儲類型是自動(auto)類型的變量
2.下列排序方法中,()方法的比較次數(shù)與記錄的初始排列狀態(tài)無關(guān)。
A.直接插入排序B.冒泡排序C.快速排序D.直接選擇排序
3.
4.
有以下程序:
main()
{intk=5,n=0;
do
{switch(k)
{case1:
case3:n+=l;k--;break;
defalut:n=0;k--;
case2:
case4:n+=2;k--;break:
}
printf("%d",n);
}while(k>0&&n<5);
}
程序運行后的輸出結(jié)果是()。
A.235B.0235C.02356D.2356
5.在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是______。
A.詳細設(shè)計B.需求分析C.總體設(shè)計D.編程調(diào)試
6.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。
A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1
7.給定下列代碼:已知n是一個整數(shù):foo()時間復(fù)雜度為O(1),上述代碼的時間復(fù)雜度是()A.O(logn)B.O(n)C.O(n*log(n))D.O(log(n)^2)
8.將線性表中的結(jié)點信息組織成平衡的二叉樹,其優(yōu)點之一是總能保證任意檢索長度均為log2n量級(n為線性表中的結(jié)點數(shù)目)()
A.對B.錯
9.下面關(guān)于串的的敘述中,哪一個是不正確的()。
A.串是字符的有限序列
B.空串是由空格構(gòu)成的串
C.模式匹配是串的一種重要運算
D.串既可以采用順序存儲,也可以采用鏈式存儲
10.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為______。
A.數(shù)組x和數(shù)組y等價B.數(shù)組x和數(shù)組y的長度相同C.數(shù)組x的長度大于數(shù)組y的長度D.數(shù)組x的長度小于數(shù)組y的長度
11.某二叉樹結(jié)點的中序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E,該二叉樹對應(yīng)的層次遍歷序列為()
A.E、G、F、A、C、D、B
B.E、A、C、B、D、G、F
C.E、A、G、C、F、B、D
D.E、G、A、C、D、F、B
12.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
13.
14.已知intt=0;while(t=1){…}則以下敘述正確的是()。
A.循環(huán)控制表達式的值為0B.循環(huán)控制表達式的值為1C.循環(huán)控制表達式不合法D.以上說法都不對
15.樹最適合用來表示()。
A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關(guān)系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)
16.為非法的字符串常量()。A.“case”B.“”C.”056”D.‘123’
17.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
當執(zhí)行程序時,輸出的結(jié)果是()。
A.-1B.1C.4D.0
18.有定義語句:“intx,y;”,若要通過“scanf("%d,%d,&x,&y);”語句使變量x得到數(shù)值11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是
A.1112<回車>B.11,12<回車>C.11,12<回車>D.11,<回車>12<回車>
19.以下程序的輸出結(jié)果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}
A.258B.741C.852D.369
20.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。
A.直接插入排序B.直接選擇排序C.快速排序D.二路歸并排序
二、2.填空題(20題)21.用指針法求出數(shù)組元素中最大者和最小者。
intmax,min;
voidmax_min_value(array,n)
intarray[],n;
{【】;
max=min=*array;
for(【】;p<array+n;p++)
if(*p>max)max=*p;
elseif(*p<min)min=*p;
}
main()
{inti,number[20],*p;
p=number;
printf("輸入20個數(shù)據(jù):\n");
for(i=0;i<20;i++,p++)scanf("%d",p);
【】;
max_min_value(p,10);
printf("max=%-10dmin=%d\n",max,rain);
}
22.以下程序運行后的輸出結(jié)果是______。
inta=5;
fun(intB)
{staticinta=10;
a+=b++;
printf("%d",A);
}
main()
{intc=20;
fun(C),
a+=C++;
printf("%d\n",A);
}
23.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁眨?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,B);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{X=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];()=x:
}
}
24.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0:i<N;i++)
{k=0:
for(j=1;j<M;j++)
if(a[k][i]>a[j][i]k=j;
s+=______;
}
______=s:
}
main()
{intx[M][N]={3,2,5,1,4,1,8.3},s;
sumColumMin(______)
printf("%d\n".s):
}
25.當數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的_______。
以下程序的輸出結(jié)果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prr(&a,&b,&c);}
26.以下程序的功能是輸出如下形式的方陣:
13141516
9101112
5678
1234
請?zhí)羁铡?/p>
main()
{inti,j,x;
for(j=4;j>0;j--)
{for(i=1;i<=4;i++)
{x=(j-1)*4+【】;
printf("%4d",x);
}
printf("\n");
}
}
27.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>
#include<stdioo.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
28.下列程序執(zhí)行輸出的結(jié)果是______。
#include<stdio.h>
f(intA)
{intb=0;
staticc=7;
a=c++;b++;
return(A);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
29.下列程序的運行結(jié)果是【】。
main()
{inti;
for(i=1;i<=5;i++)
f(i);}
f(j)
{intj;
staticinta=1000;
autointk=1;
++k;
printf("%d+%d+%d=%d\n",a,k,j,a+k+j);
a+=10;}
30.下列程序的輸出結(jié)果是______。
#include<stdio.h>
sb(ints[],intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8};
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);
}
printf("\n");
}
31.以下程序的輸出結(jié)果是()。
#inciude<stdio.h>
main()
{chars[]="ABCabc";
s[5]='\0';
printf("%s\n",s);
}
32.若a=10,b=20,則表達式!(a<b)的值是【】。
33.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
34.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。
35.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括選擇、連接和【】。
36.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(【】);
ch=fgetc(fp);
while(!feof(fp)){putchar(ch);ch=fgetc(fp);}
putchar('\n');fclose(fp);
}
37.有以下程序:
voidf(inta[],inti,intj)
{intt;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main()
{inti,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");
}
執(zhí)行后的輸出結(jié)果是【】。
38.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#deftneJFT(x)x*x
main()
{inta,k=3;
a=++JFT(k+1);
printf("%d",a);
}
39.以下程序給指針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]);
}
40.函數(shù)compare的功能是比較兩個字符串是否相等,若相等則函數(shù)返回值0,否則返回值1,請?zhí)羁铡?/p>
compare(chars[],chart[])
{inti=0;
while(s[i]==t[i]||【】)i++;
return(【】?1:0);
}
三、1.選擇題(20題)41.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT()PR(s);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}
A.11B.12C.13D.15
42.若有如下程序:main(){intx=3,y=4,z;z=(x+(y-=X*X));printf("%d,%d\n",y,z);}則程序執(zhí)行后的輸出結(jié)果是()。
A.-4,2B.-5,-2C.-5,-1D.4,-2
43.執(zhí)行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=p[4];
A.4B.5C.3D.不確定
44.以下程序段的輸出結(jié)果是chars[]=“\\141\141abc\t”;printf(“%d\n”,strlen(s));
A.9B.12C.13D.14
45.有下列程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;下列選項中表達式的值為11的是()。
A.*pt->yB.pt->xC.++pt->xD.(pt++)->X
46.以下四個選項中,不能看作一條語句的是()。
A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;
47.結(jié)構(gòu)化程序有3種基本結(jié)構(gòu)組成,3種基本結(jié)構(gòu)組成的算法______。
A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡單的任務(wù)
48.有以下程序:main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1)>x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1)=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序運行后的輸出結(jié)果是______。
A.75310246B.1234567C.76310462D.13570246
49.以下程序的輸出結(jié)果是
main()
{inta,i;a=0;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=2;
case1:
case2:a+=3;
default:a+=5;}
}printf("%d\n",a);}
A.31B.13C.10D.20
50.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
51.棧和隊列的共同點是()。
A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點
52.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結(jié)果是#include<stdio.h>main(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1+=1default:v0+=1;v2+=1;}}while(c!='\n');printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13,v1=4,v2=12
53.定義int*swap()指的是______。
A.一個返回整型值的函數(shù)swap()
B.一個返回指向整型值指針的函數(shù)swap()
C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值
D.以上說法均錯
54.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
55.下列語句執(zhí)行后的結(jié)果是______。y=5;p=;x=*p++;
A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=6
56.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
57.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是_______。
A.typedefstructaa{intn;floatm;}aa;aatd1;
B.#defineaastructaaaa{intn;floatm;}td1;
C.struct{intn;floatm;}aa;structaatd1;
D.struct{intn;floatm;}td1;
58.下列程序的運行結(jié)果為#include<stdio.h>voldabc(char*str){inta,b;for(a=b=0;str[a]!='\0';a++)if(str[a]!='c')str[b++]=str[a];str[b]='\0';}voidmain(){charstr[]="abcdef";abc(str);printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
59.C語言規(guī)定如果調(diào)用fputc函數(shù)輸出成功,則返回值是()。
A.1B.輸出的字符C.0D.真
60.下列程序的輸出結(jié)果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}
A.2B.3C.4D.5
四、選擇題(20題)61.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
62.
63.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表
64.有以下程序:
程序的運行結(jié)果是()。
A.10,1B.20,1C.10,2D.20,2
65.有以下程序:
程序運行后的輸出結(jié)果是()。
A.2.3B.1,3C.1,4D.1,2
66.已定義c為字符型常量,則下列語句中正確的是()。
A)c=′97′B)c="97"
C)c=97D)c="a"
67.有以下語句:Charb[B];intC;,則正確的輸入語句是()。
A.
B.
C.
D.
68.
69.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是()。
A.可封裝B.自頂向下C.模塊化D.逐步求精
70.以下選項中可用做c程序合法實數(shù)的是()。、、
A.3.0e0.2B..1e0C.E9D.9.12E
71.有以下函數(shù):
以下關(guān)于aaa函數(shù)功能敘述正確的是()。
A.將串s復(fù)制到串tB.比較兩個串的大小C.求字符串s的長度D.求字符串s所占字節(jié)數(shù)
72.
73.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.357B.753C.369D.751
74.
75.閱讀以下程序該程序在編譯時產(chǎn)生錯誤,其出錯原因是()。
A.定義語句出錯,case是關(guān)鍵字,不能用作用戶自定義標識符
B.定義語句出錯,printF不能用作用戶自定義標識符
C.定義語句無錯,scanf不能作為輸入函數(shù)使用
D.定義語句無錯,scanf不能輸出case的值
76.
有以下程序:
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=O)t++;
while((*t++=*s++)!=0);
}
main
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%S,%s",ss,aa);
}
程序運行結(jié)果是()。
A.accxyy,bbxxyy
B.ace,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
77.
下列程序的運行結(jié)果是()。
inty=5,x=14;
y=((x=3*Y,x+1),x-1);
printf("x=%d,y=%d",x,y);
A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27
78.若有以下程序
#include<stdio.h>
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
則以下敘述中不正確的是
A.若只在主函數(shù)中對函數(shù)f進行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f
B.若在主函數(shù)前對函數(shù)f進行說明,則在主函數(shù)和其他函數(shù)中都可以正確調(diào)用函數(shù)f
C.對于以上程序,編譯時系統(tǒng)會提示出錯信息:對f函數(shù)重復(fù)說明
D.函數(shù)f無返回值,所以,可用void將其類型定義為無返回值型
79.
80.下列數(shù)據(jù)模型中,具有堅實理論基礎(chǔ)的是()。A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上三個都是
五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。
fun(inta,intb)
{if(a>b)return(a);
Elsereturn(b);}
main
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:實現(xiàn)兩個字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到
pl所指的字符串的后面。
例如,分別輸入下面兩個字符串:
程序輸出:
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
參考答案
1.C解析:外部變量在編譯時由系統(tǒng)分配永久的內(nèi)存空間,所以外部變量的類型不是自動存儲類別。
2.D
3.C
4.B
\n本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。
\n
5.C解析:軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計包括:基于功能層次結(jié)構(gòu)建立系統(tǒng)、按功能劃分成模塊的層次結(jié)構(gòu)、確定每個模塊的功能、建立與已確定的軟件需求的對應(yīng)關(guān)系、確定模塊間的調(diào)用關(guān)系和模塊間的接口、評估模塊劃分的質(zhì)量等方面。詳細設(shè)計的任務(wù)是:在使用程序設(shè)計語言編制程序以前,對所采用算法的邏輯關(guān)系進行分析,設(shè)計出全部必要的過程細節(jié),并給予清晰的表達。需求分析是指用戶對目標軟件系統(tǒng)在功能、行為、性能、設(shè)計約束等方面的期望。需求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求,通常包括:功能需求、性能需求、環(huán)境需求、可靠性需求、安全保密要求、用戶界面需求、資源使用需求、成本消耗需求、開發(fā)進度需求等。編程調(diào)試的任務(wù)是診斷和改正程序中潛在的錯誤。綜上所述。軟件功能分解只能發(fā)生在總體設(shè)計階段。
6.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。
7.B
8.A
9.B
10.C
11.C
12.B執(zhí)行調(diào)用語句“n=fun(3);”,3被當作實參傳遞進去,進行了一次調(diào)用。3被當作實參傳進去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”,函數(shù)被調(diào)用了第2次,參數(shù)是3-1,也就是2。2被當作參數(shù)傳進去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”函數(shù)被調(diào)用了第3次,參數(shù)是2-1,也就是1。1被當作實參傳進去后,程序會執(zhí)行“elseif(k==1)return1;”,函數(shù)不再被遞歸調(diào)用。所以最終結(jié)果為3次。故本題答案為B選項。
13.D
14.B解析:t=1是將t賦值為1,所以循環(huán)控制表達式的值為1。判斷t是否等于1時,應(yīng)用t==1,注意“=”與“==”的用法。
15.C樹最適合用來表示元素之間具有分支層次關(guān)系的數(shù)據(jù),故本題選C。
16.D
17.D解析:本題考查do…while循環(huán)。當--寸是0(即y是0)時結(jié)束循環(huán),輸出y--是先輸出y的值再將y的值減1。
18.A解析:本題考核的知識點是scanf()函數(shù)的運用。seanf()函數(shù)有兩個參數(shù),第一個參數(shù)為輸入格式字符串,第二個參數(shù)為輸入變量地址列表,在scallf()語句中非格式字符可以作為輸入時數(shù)據(jù)的間隔,輸入時必須原樣輸入,在本題中輸入格式串為%d,%d其中“,”為非格式字符,所以輸入時必須原樣輸入。所以4個選項中選項A符合題意。
19.C解析:在本題運行時主要注意的是當i=9時,a[i]=10-9=1:i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10:此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。
20.C
21.int*pp=array+1p=numberint*p\r\np=array+1\r\np=number解析:函數(shù)max_min_value()中用到了指針變量p,顯然應(yīng)在第一個空格處填int*p。函數(shù)max_min_value()中的for循環(huán)逐一把數(shù)組中的元素與max和min的當前值進行比較。max和rain的初值是數(shù)組的第1個元素值,第1次比較應(yīng)與第2個元素比較,即array+1。第二個空格處應(yīng)填p=array+1。主函數(shù)main()中的指針變量p首先指向數(shù)組number的第1個元素,當?shù)?個for循環(huán)結(jié)束時,它指向數(shù)組的最后一個元素。若這時將p作為實參傳給被調(diào)用函數(shù),形參array[]數(shù)組的首址將是number口數(shù)組的最后元素的地址,而number[]數(shù)組的前n-1個元素不能參加比較,這將引起計算出錯。因此,在調(diào)用max_min_value()函數(shù)之前,應(yīng)將指針p指向number[]數(shù)組首址,即在第三個空格應(yīng)填寫p=umber。
22.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進行的,auto是自動變量的存儲類別標識符,如果省略auto,系統(tǒng)隱含認為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運算中a+=b++相當于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。
23.br[i]br[i]解析:函數(shù)fun的功能是求出二維數(shù)組每行元素中的最大值。對于3行4列的二維數(shù)組將有3個最大值存放到數(shù)組br[]中。x存放的是每行的最大值,當求出每行的最大值x后,應(yīng)該將x賦值給br[]。因此此處填空應(yīng)該是br[i]。
24.a[k][i]*sumx&s
25.B
26.ii解析:外循環(huán)是遞減的,方陣中的每個元素為(j-1)*4+i,因此空格處填i。
27.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:“chars[80],d[80];”定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是C語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,所以只需比較相應(yīng)的字符是否在'0'到'9'之間,或使用庫函數(shù)isdigit(),來判斷是否為數(shù)字字符。如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進行下一字符的比較,直至s結(jié)束(即'0'的出現(xiàn))。將'\\0'字符作為字符串d結(jié)束標志,最后調(diào)用puts函數(shù)輸出d。所以空白處應(yīng)填入比較語句s[i]>>='0'&&s[i]<='9'或isdigit(s[i])以及其他任何等價表達式。
28.88解析:第1次for循環(huán),i=0,調(diào)用函數(shù)f(2),然后將a的值加1,在f()函數(shù)中,變量c為static類型,所以c=8:第2次for循環(huán),i=1,調(diào)用函數(shù)f(3),然后將a的值加1,調(diào)用函數(shù)f(3)時,a=c++=8,所以k=8。
29.100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=147100+2+1=103\r\n110+2+2=114\r\n120+2+3=125\r\n130+2+4=136\r\n140+2+5=147解析:靜態(tài)局部變量的生存期為整個程序的運行期間,而作用域為定義該變量的函數(shù)或局部范圍。自動變量的建立和撤銷都是由系統(tǒng)自動進行的,所以稱為自動變量。自動變量的作用域和生存期都為定義它的局部范圍內(nèi)。對同一函數(shù)的兩次調(diào)用之間,自動變量的值是不保留的。而靜態(tài)變量則保留。注意:局部變量和全局變量的定義及其作用范圍。
30.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。
31.ABCabABCab解析:本題中字符數(shù)組的初值是“ABCabc”,s[5]='c',然后通過s[5]='\\0'重新給s[5]賦值,在C語言中'\\0'是字符串結(jié)束標志,執(zhí)行s[5]='\\0',其實是將s[5]的值去掉只保留前面的字符。
32.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當為false,即為0。
33.可重用性可重用性解析:繼承的優(yōu)點:相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。
34.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。
35.投影專門關(guān)系運算包括對單個關(guān)系進行垂直分解(投影操作)或水平分解(選擇操作)和對多個關(guān)系的結(jié)合(連接操作)等。
36.“filea.dat”“r”“filea.dat”,“r”解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當填入'filea.dat','r'。
37.154321,5,4,3,2解析:第一次調(diào)用函數(shù)f后aa[0]=5、aa[4]=1;第二次調(diào)用函數(shù)f后aa[1]=4、aa[4]=2;第三次調(diào)用函數(shù)f后aa[3]=3。正確答案為1,5,4,3,2。
38.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。
39.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。
40.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'
41.B解析:在程序中如果有帶實參的宏,則按#define命令行中指定的字符串從左到右進行置換,如果串中包含宏中的形參,則將程序語句中相應(yīng)的實參代替形參。將實參帶入已經(jīng)定義的宏中,可以得出答案為“12”。
42.B解析:因為x的初始值為3,所以x*x=9,而y的初始值為4,所以y-=9后,y為-5,z=(x+(y-=x*x))=3+(-5)=-2。故程序執(zhí)行后的輸出結(jié)果是-5,-2,選項B正確。
43.B解析:程序中定義了一個指向整型變量的指針變量,并對其賦值為二維整型數(shù)組a的首元素的地址。p[4]等階于*(p-4),即二維數(shù)組a中第四個元素的值,而a是一個2*3的二維數(shù)組,其第四個元素為a[1][1],即5。
44.A解析:字符數(shù)組中可以存放字符串,但字符數(shù)組的長度并不是字符串的長度,字符串的長度是指字符數(shù)組中存放的有效字符個數(shù),即\'\\0\',之前的字符數(shù)。字符數(shù)組s中依次存放的字符是:\'\\\\'1'4'1'\\141'a'b'c'\\t\',和最后一個字符串結(jié)束標記\'\\0\',故字符串的長度是9。
45.C解析:由題目的已知條件可知,Pt指向結(jié)構(gòu)體數(shù)組c[2]的第一元素c[O],所以pt->x=10,執(zhí)行自加運算后為11。
46.D解析:選項D)為兩條語句,每條語句以分號結(jié)束。
47.A解析:結(jié)構(gòu)化程序的3種基本結(jié)構(gòu)是順序、循環(huán)、選擇,任何復(fù)雜的任務(wù)都可以通過這3種結(jié)構(gòu)來實現(xiàn)。
48.A解析:本題中第一次執(zhí)行for循環(huán)后,數(shù)組x中的前四個元素按由大到小的次序排序,即x[0]=7、x[1]=5、x[2]=3、x[3]=1、x[4]=2、x[5]=4、x[6]=6、x[7]=0;第二次執(zhí)行for循環(huán)后,數(shù)組x中的后4個元素按由小到大的次序排序,即此時x[0]=7、x[1]=5、x[2]=3、x[3]=1、x[4]=0、x[5]=2、x[6]=4、x[7]=6。故正確答案為A。
49.A解析:本題考查用于多分支選擇的switch語句,其一般形式為:
switch(表達式)
{
case常量表達式1:語句1;
case常量表達式2:語句2;
…
case常量表達式n:語句n;
default:語句n+1;
}
其語義是:計算表達式的值,并逐個與其后的常量表達式值進行比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的語句;如表達式的值與所有case后的常量表達式均不相等時,則執(zhí)行default后的語句。
50.D數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)則是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的物理實現(xiàn),有時也稱作數(shù)據(jù)的物理結(jié)構(gòu)。兩者的區(qū)別是數(shù)據(jù)的邏輯結(jié)構(gòu)只涉及到數(shù)據(jù)之間抽象的數(shù)學(xué)關(guān)系。存儲結(jié)構(gòu)則涉及到如何在計算機中通過對數(shù)據(jù)的物理存儲進行組織來表達數(shù)據(jù)元素之間的邏輯關(guān)系。比如在線性表的順序存儲中是利用物理存儲空間上的連續(xù)性來表達線性表中數(shù)據(jù)的前后件關(guān)系;在線性表的鏈式存儲中是通過指針域構(gòu)成的邏輯鏈條來表達數(shù)據(jù)的前后件關(guān)系。一般的,一種數(shù)據(jù)的邏輯結(jié)構(gòu)對應(yīng)的物理實現(xiàn),即數(shù)據(jù)的存儲結(jié)構(gòu)不止一種。因此選項D正確。
51.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。
52.D解析:本題考查switch語句的掌握。必須撐握以下內(nèi)容:首先應(yīng)該明白switch語句的語法格式:
switch語句的語法格式為:
switch(表達式)
{
case常量表達式1:語句組1;
case常量表達式2:語句組2;
……
case常量表達式n:語句組n;
default:語句組n+1;
}
另外,注意以下幾點關(guān)于switch語句的重點:
①系統(tǒng)在執(zhí)行時計算開關(guān)表達式的值;②根據(jù)所得的值在各個case標號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標號(本例中匹配的是case'B':);③找到匹配后執(zhí)行后面相應(yīng)的語句表,順序往下執(zhí)行;④如果無相匹配的標號,若存在default標號,則執(zhí)行該語句標號后面的語句表n+1;當不存在default標號時,不執(zhí)行switch中的任何一個語句表。
一般而言,在多分支結(jié)構(gòu)中總會出現(xiàn)“意外”的情況,這時均可歸入default:程序段,作統(tǒng)一的處理;default標號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。
53.B解析:一個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是一個返回整型指針的函數(shù)。
54.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個文件是一串字符流或二進制流。文件的存取以字符或字節(jié)為單位。
55.A解析:p=&y使指針p指向y,x=*p++使x=y,P指向下一個數(shù)據(jù)。
56.B解析:所謂中序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。
57.C解析:本題的考查點是結(jié)構(gòu)體類型變量的定義。在選項C中,aa是—個結(jié)構(gòu)體變量,而不是結(jié)構(gòu)體名,所以structaatd1;是非法的。
58.A解析:本題考查了用字符指針引用字符數(shù)組中的字符及對字符的操作。函數(shù)abc()的for語句執(zhí)行過程是:叢字符指針str所指向的字符數(shù)組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數(shù)組元素的賦值過程,若字符為'c'就不執(zhí)行,所以答案為A)。
59.B解析:調(diào)用fputc函數(shù)輸出成功,則返回值是輸出的字符。
60.C解析:帶參數(shù)的宏定義命令行形式如下:
#define宏名(形參表)替換文本
在編譯的時候編譯預(yù)處理程序用“替換文本”來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結(jié)果賦給a。注意,宏替換是在編譯時由預(yù)處理程序完成的,宏替換不占用運行的時間,而函數(shù)調(diào)用是在程序運行時進行的,在函數(shù)的調(diào)用過程中需要占用一系列的處理時間。
61.D解析:時間復(fù)雜度是指一個算法執(zhí)行時間的相對度量;空間復(fù)雜度是指算法在運行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運行速度,不得不增加空間開銷;有時為了能
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 最小公倍數(shù)(說課稿)-2023-2024學(xué)年數(shù)學(xué)五年級下冊人教版
- 一流本科專業(yè)的標準與評價體系
- 研學(xué)產(chǎn)品的教育效果評估
- 2025年魯科版六年級英語下冊階段測試試卷
- 2024年粵教新版九年級化學(xué)下冊月考試卷含答案
- 2024年華東師大版九年級生物上冊階段測試試卷含答案
- 二零二五年度醫(yī)療設(shè)施承租人租賃合同范本3篇
- 2025年華師大版二年級數(shù)學(xué)上冊階段測試試卷含答案
- 二零二五年工傷認定與職業(yè)健康評估合同3篇
- 2024年航空器材設(shè)計與生產(chǎn)承包合同
- 食品安全管理員理論考試題庫(濃縮300題)
- 小學(xué)一年級數(shù)學(xué)口算題大全(1000多道)每天50道題
- 燙傷護理pdca案例
- 廣東省深圳市南山區(qū)2023-2024學(xué)年六年級上學(xué)期期末語文試卷
- 安徽省蚌埠市禹會區(qū)2023-2024學(xué)年四年級上學(xué)期期末數(shù)學(xué)試卷
- 九年級上學(xué)期數(shù)學(xué)老師教學(xué)工作總結(jié)
- 預(yù)防幼兒骨折的措施
- 農(nóng)業(yè)植保機初級課程考試題庫(含答案)
- 2023-2024學(xué)年浙江省寧波市慈溪市七年級(上)期末數(shù)學(xué)試卷
- 工作效率管理培訓(xùn)課件
- 河南省新鄉(xiāng)市2023-2024學(xué)年八年級上學(xué)期1月期末歷史試題
評論
0/150
提交評論