版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述中錯誤的是()。
A.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令
B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件
C.用C語言編寫的程序稱為源程序,它以ASCII形式存放在一個文本文件中
D.C語言源程序經(jīng)編譯后生成擴(kuò)展名為.obj的目標(biāo)文件
2.當(dāng)接受用戶輸入的含有空格的字符串時,應(yīng)使用()函數(shù)。
A.gets()B.getchar()C.scanf()D.printf()
3.若程序中有宏定義行“#defineN100”,則下列敘述中正確的是()。
A.宏定義行中定義了標(biāo)識符N的值為整數(shù)100
B.在編譯程序?qū)語言源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N
C.上述宏定義行實現(xiàn)將100賦給標(biāo)識符N
D.在運行時用100替換標(biāo)識符N
4.第
17
題
若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
5.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結(jié)果是()。
A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4
6.
7.在圖采用鄰接表存儲時,求最小生成樹的Prim算法的時間復(fù)雜度為()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
8.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。
A.if(strcmp(s1,s2)<0)
B.if(s1>s2)
C.if(strcmp(s2,s1)<0)
D.if(strcmp(s1,s2))
9.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656
10.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
11.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0
12.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復(fù)合語句中定義了一個變量,則該變量().
A.為全局變量,在本程序文件范圍內(nèi)有效
B.為局部變量,只在該函數(shù)內(nèi)有效
C.為局部變量,只在該復(fù)合語句中有效
D.定義無效,為非法變量
13.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。
A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]
14.
15.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
16.若有定義int(*pt)[3];,則下列說法正確的是A.定義了基類型為int的三個指針變量
B.定義了基類型為int的具有三個元素的指針數(shù)組pt
C.定義了一個名為*pt、具有三個元素的整型數(shù)組
D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組
17.可以判斷一個有向圖中是否含有回路的方法為()。
A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓?fù)渑判駾.求最短路徑
18.以下程序的輸出結(jié)果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
19.設(shè)串s1='ABCDEFG',s2='PQRST',函數(shù)StrCat(x,y)返回x和y串的連接串,StrSub(s,i,j)返回串s的從序號i的字符開始的j個字符組成的子串,StrLen(s)返回串s長度,則StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的結(jié)果串()。
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
20.設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。
A.data2=(2,6);
B.data2=data1;
C.data2.real=data1.real;
D.data2.real=data1.unreal;
二、2.填空題(20題)21.下面invert函數(shù)的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>
#include<string.h>
voidinvert(charstr[])
{inti,j,【】;
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;
}
}
22.以下程序中函數(shù)fun()的功能是構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單向鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。
#include<atdio.h>
typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/
{charsub[3];
structnode*next;
}Node
Node~un(chars)/*建立鏈表*/
{......}
voiddisp(Node*h)
{Node*Ps
p=h->next;
while(【】)
{printf("%s\n",p->suh);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);prinff("\n");
23.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運行后的輸出結(jié)果是【】。
24.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁铡?/p>
#include<stdio.h>
#defineN100
intfun(int(*a)[N])
{
introw,col,max,min;
for(row=0;row<N;row++
{
for(max=a[row][0],col=1;col<N;col++)
if(【】)max=a[row][col];
if(row==0)min=max;
elseif(【】)min=max;
}
returnmin;
}
25.關(guān)系表達(dá)式x<y<z,用C語言的表達(dá)式為【】。
26.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。
27.當(dāng)先后輸入1、3、4、12、23時,屏幕上出現(xiàn)【】;再輸入12時,則屏幕上出現(xiàn)【】。
#include<stdio.h>
#defineN5
main()
{inti,j,number,top,bott,min,loca,a[N],flag;
charc;
printf("Pleaseinput5numbers(a[i]>a[i-1])\n");
scanf("%d",&a[0]);
i=1;
while(i<N)
{scanf("%d",&a[i]);
if(a[i]>=a[i-1))i++;
}
printf("\n");
for(i=0;i<N;i++)printf("%d",a[i]);
printf("\n");
flag=1;
while(flag)
{scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((number<a[0])||(number>a[N-1]))loca=-1;
while((loca==0)&&(top<=bott))
{min=(bott+top)/2;
if(number==a[min])
{loca=min;
printf("%disthe%dthnumber\n",number,loca+1);
}
elseif(number<a[min])bott=min-1;
elsetop=min+1;
}
if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);
c=getchar();
if(c=='N'||c=='n')flag=0;
}
}
28.strcat函數(shù)的作用是【】。
29.以下程序的輸出結(jié)果為【】。
#defineJFT(x)x*x
main()
{inta,k=3;
a=++JFT(k+1);
printf("%d",a);
}
30.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
31.若a是int型變量,則下列表達(dá)式的值為______。
(a=2*3,a*2),a+4
32.下列語句的輸出結(jié)果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
33.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
34.以下程序調(diào)用隨機(jī)函數(shù)得到N個20以內(nèi)的整數(shù)放在s數(shù)組中。函數(shù)fun的功能是找出s數(shù)組中的最大數(shù)(不止一個)所在下標(biāo)傳回主函數(shù)進(jìn)行輸出,并把最大值作為函數(shù)值返回,請?zhí)羁铡?/p>
#defineN30
man()
{ints[N],d[N],i,k,m;
for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}
m=fun(【】);
printf("m=%d\n",m);
printf(”Theindex;\n");
for(i=0;i<k;i++)printf("%4d",d[i]);
printf("\n\n");
}
fun(int*w,int*d,int*k)
{inti,j,m=0,v;
for(i=0;i<N;i++)
if(w[i]>w[m])【】;
v=w[m];
for(i=0,j=0;i<N;i++)
if(w[i]==v)【】;
*k=【】;
return【】;
}
35.有以下程序
#include<stdio.h>
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getchar(
n1=ch1-'0';n2-n1*10+(ch2-'0');
printf("%d\n",n2);;
}
程序運行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是______。
36.下面程序的輸出結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=0;i<4;i++)k+=arr[i]=i;
printf("%d\n",k);
}
37.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
38.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
39.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是()。
40.以下程序的運行結(jié)果為【】。
main()
{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
}
三、1.選擇題(20題)41.若有以下定義的語句
structstudent
{intage;
intnum;};
structstudentstu[3]={{1001,20},{1002,19},{1003,21}};
main()
{structstudent*p;
p=stu;
…}
則以下不正確的引用是
A.(p++)->numB.p++C.(*p).numD.P=&stu.age.
42.設(shè)x和y均為int型變量,且x=10,y=3,則以下語句的輸出結(jié)果是()printf("%d,%d\n",x--,--y);
A.10,3B.9,3C.9,2D.10,2
43.下列說法不正確的是()。
A.C程序是以函數(shù)為基本單位的,整個程序由函數(shù)組成
B.C語言程序的一條語句可以寫在不同的行上
C.C程序的注釋行對程序的運行功能不起任何作用,所以注釋應(yīng)該盡可能少寫
D.C程序的每個語句都以分號結(jié)束
44.下列敘述中正確的是()。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率
45.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。
A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定
46.以下程序的輸出結(jié)果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}
A.7B.13C.9D.10
47.若有下列語句:chara[]="xyz";charb[]=}'x','y','z'};則下列敘述正確的是______。
A.數(shù)組a和數(shù)組b不等價
B.數(shù)組a和數(shù)組b的長度相同
C.數(shù)組a占用空間大小等于數(shù)組b占用空間大小
D.數(shù)組a占用空間大小大于數(shù)組b占用空間大小
48.下列不是合法的C語言語句是()。
A.a=5B.{inti;i++;}C.;D.{;}
49.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機(jī)中所占的空間不一定是連續(xù)的
50.如下程序的輸出結(jié)果是
#include<stdio.h>
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
A.69825B.63825C.6385D.693825
51.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與實體間的聯(lián)系可以表示成()。
A.屬性B.關(guān)系C.鍵D.域
52.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
53.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是______。
A.0B.4C.6D.7
54.若已定義x和y為double類型,則表達(dá)式x=1,y=x+5/2的值是______。
A.3B.4C.3D.3.5
55.有以下程序:main(){inta[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,)},i,j,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序運行后的輸出結(jié)果是()。
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
56.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("D1v.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運行后的輸出結(jié)果是()。
A.2030B.2050C.3050D.3020
57.數(shù)據(jù)管理技術(shù)隨著計算機(jī)技術(shù)的發(fā)展而發(fā)展。數(shù)據(jù)庫階段具有許多特點,但下面列出的特點中,______不是數(shù)據(jù)庫階段的特點。
A.數(shù)據(jù)結(jié)構(gòu)化B.數(shù)據(jù)面向應(yīng)用程序C.數(shù)據(jù)共享性高D.數(shù)據(jù)具有較高的獨立性
58.若有如下程序:sub(int*t,inta[3][4]){intm,n;for(m=0;m<3;m++)for(n=0;n<4;n++){*t=a[m][n];t++;}}main(){int*t,s[3][4)={{1,2,3),{4,5,6),{7,8,9}};t=(int*)malloc(50);sub(t,s);printf("%d,%d\n",t[4],t[7]);}則程序運行后的輸出結(jié)果是()。
A.4,7B.4,0C.5,8D.程序錯誤
59.以下數(shù)組定義中錯誤的是()。
A.intx[][3]={0};
B.intx[2][3]={{1,2},{3,4},{5,6}};
C.intx[][3]={{1,2,3},{4,5,6}};
D.intx[2][3]=(1,2,3,4,5,6};
60.以下關(guān)于函數(shù)的敘述中正確的是______。A.每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))
B.每個函數(shù)都可以被單獨編譯
C.每個函數(shù)都可以單獨運行
D.在一個函數(shù)內(nèi)部可以定義另一個函數(shù)
四、選擇題(20題)61.
下面for語句的循環(huán)次數(shù)為()。
for(x=1,y=0;(y!=19)&&(x<6);x++);
A.是無限循環(huán)B.循環(huán)次數(shù)小定C.最多執(zhí)行6次D.最多執(zhí)行5次
62.
63.
有以下程序
#include<stdio.h>
intfun(chars[])
{intn=0;
while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)
return(n);
}
main
{chars[10]={6,1,*,4,*,9,*,0,*);
printf("%d",fun(s));
}
程序運行的結(jié)果是()。
A.9B.61490C.61D.5
64.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。
A.在需求分析階段建立數(shù)據(jù)字典
B.在概念設(shè)計階段建立數(shù)據(jù)字典
C.在邏輯設(shè)計階段建立數(shù)據(jù)字典
D.在物理設(shè)計階段建立數(shù)據(jù)字典
65.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.5B.24C.32D.40
66.下列關(guān)于C語言文件的敘述中正確的是()。
A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件
B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
D.文件由字符序列組成,其類型只能是文本文件
67.
68.若有以下定義和語句:
chars[10]="abcd!",*s2="\nl23\\";
Drintf("%d%d\n",strlen(sl),strlen(s2));
則輸出結(jié)果是()。
A.55B.105C.107D.58
69.有以下程序
#defineN15
fun(inta[],intn,intm)
{inti,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main()
{inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,3,7);
for(i=3;i<8;i++)
printf("%d",a[i]);
}
程序的運行結(jié)果是A.A.45678
B.44567
C.45567
D.45677
70.下面四個選項中,均是不合法的用戶標(biāo)識符的選項是()。
A.
B.
C.
D.
71.以下敘述中正確的是()。
A.在C語言程序中,main函數(shù)必須放在其他函數(shù)的最前面
B.每個后綴為C的C語言源程序都可以單獨進(jìn)行編譯
C.在C語言程序中,只有main函數(shù)才可單獨進(jìn)行編譯
D.每個后綴為.C的C語言源程序都應(yīng)該包含一個main函數(shù)
72.
73.若有定義語句:inta[21[3],*P[3];則以下語句中正確的是()。
A.p:a;B.p[0]=a;C.p[O]=&a[1][2];D.1a[1]=&a;
74.
75.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系
76.以下選項中,能用做用戶標(biāo)識符的是()。
A.voidB.8_8C._0_D.unsigned
77.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l
78.有以下程序
A.357B.753C.369D.751
79.有以下函數(shù):
函數(shù)的功能是()。
A.將Y所指字符串賦給x所指存儲空間
B.查找x和y所指字符串中是否有
C.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)
D.統(tǒng)計x和Y所指字符串中相同的字符個數(shù)
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學(xué)生的學(xué)習(xí)成績,按從低到高的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和ll整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.AC語言中的非執(zhí)行語句不會被編譯,不會被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令,所以A選項錯誤。由C語言構(gòu)成的指令序列稱為C語言源程序,C語言源程序經(jīng)過C語言編譯程序編譯之后,生成一個擴(kuò)展名為.obj的二進(jìn)制文件(稱為目標(biāo)文件);最后要由“連接程序”把此目標(biāo)文件與C語言提供的各種庫函數(shù)連接起來生成一個擴(kuò)展名為.exe的可執(zhí)行文件。故本題答案為A選項。
2.A
3.B宏定義在編譯程序時做了一個簡單的替換,所以B選項正確。故本題答案為B選項。
4.B解析:條件運算符要求有3個操作對象,稱三目(元)運算符,它是C語言中惟一的一個三目運算符。條件表達(dá)式的一般形式為:表達(dá)式17表達(dá)式2:表達(dá)式3其求解順序是:先求解表達(dá)式1,若為非O(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。并且注意++、--的用法。
5.Astrlen函數(shù)求得參數(shù)中字符串的長度(不包括字符串結(jié)束標(biāo)識“\\0”)sizeof函數(shù)求得特定類型參數(shù)所占存儲空間的長度。題干中a是數(shù)組名,由于定義時省略維數(shù)大小,因此數(shù)組大小是初始化的字符個數(shù),即a的數(shù)組大小為6。綜上,strlen(a)只計算字符“T”“H”“I”“S”,結(jié)果為4;sizeof(a)求得數(shù)組a的大小,結(jié)果為6;指針b指向一個字符串“OK\\0\\0”,所以strlen(b)只計算字符“O”“K”,結(jié)果為2;sizeof(b)求得指針占用存儲空間的大小,結(jié)果為4。故本題答案為A選項。
6.D
7.B
8.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運算符比較兩個字符串的大小)。
9.A根據(jù)題意,當(dāng)s=1時,輸出65;當(dāng)s=2時,輸出6;當(dāng)S=3時,則輸出64;當(dāng)S=4時,輸出5;當(dāng)s=5時,輸出6;當(dāng)s=0時,程序直接退出。所以最后答案為6566456,A選項正確。
10.A解析:n--是先使用后自減,--n是先自減后使用。n=4時,執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。
11.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。
12.C
13.C
14.B
15.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
16.D解析:定義了一個指向一維數(shù)組的指針,該一維數(shù)組具有三個int型元素,按照C語言中二維數(shù)組的定義知,二維數(shù)組先按照行排列,再按照列排列,故選D。
17.C
18.D當(dāng)k=1時,循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當(dāng)k=2時,循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當(dāng)k=3時,循環(huán)不成立,退出。
19.D
20.AA選項中的語句可以在聲明變量的同時為data2賦值,賦值語句應(yīng)寫作“data2={2,6};”。故本題答案為A選項。
21.k-1k\r\n-1解析:本題通過定義一中間值k,實現(xiàn)字符串str內(nèi)容的交換。
22.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定義了一個結(jié)構(gòu)體類型名Node,其中定義了一個指向結(jié)點類型的指針next。接下來用Node定義了頭結(jié)點指針變量h和指向第一個結(jié)點的指針變量p,在滿足p未指向最后一個結(jié)點的空指針時(即為NULL),輸出p所指向結(jié)點的字符串,所以第一處應(yīng)填p!=NULL,然后將p指向下一個非空結(jié)點,所以第二處應(yīng)填P->next或與其等效的形式,反復(fù)執(zhí)行直到所有的結(jié)點都輸出。
23.310
24.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本題有兩層for循環(huán),主函數(shù)中定義了整型變量row、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內(nèi)循環(huán)中的次數(shù),max記錄每行中的最大值,min記錄所有行中最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個空應(yīng)該填a[row][col]>max或a[row][col]>=max。退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時,將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應(yīng)該填max>min或mm>max,當(dāng)退出外循環(huán)時,min為所有行中的最大值的最小值。
25.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達(dá)“并且”用邏輯與運算符“&&”。
26.軟件危機(jī)軟件危機(jī)
27.134122312isthe4thnumber.
28.連接兩個字符數(shù)組中的字符連接兩個字符數(shù)組中的字符解析:strcat函數(shù)的作用是連接兩個字符數(shù)組中的字符串。
29.99解析:本題中首先將宏替換掉,則表達(dá)式為a=++k+1*k+1=4+1*4+1=9,故最后輸出a的值為9。
30.完整性控制完整性控制
31.1010解析:此題考查逗號表達(dá)式。逗號表達(dá)式的值是最后一個表達(dá)式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。
32.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。
33.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因為只有i=j=-2時,表達(dá)式-(i+j)的值才為4。
34.sd&km=id[j++]=ijv
35.1212解析:本題考核的知識點是字符類型數(shù)據(jù)的表示方法和存儲形式。字符類型的數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,在C語言中,字符數(shù)據(jù)可以等價為與其相應(yīng)的ASCII碼的整數(shù),還可以作為整數(shù)參加運算。在本題中,n1=ch1-'0'='1'-'0'=49-48=1n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12,所以,最后輸出為12。
36.66解析:本題第1個for循環(huán)是為數(shù)組arr元素賦初值。第2個for循環(huán)是分別用i=0,1,2,3給數(shù)組元素arr[0]、arr[1]、arr[2]、arr[3]賦值,再累加到變量k中,k=0+1+2+3=6。
37.邏輯關(guān)系邏輯關(guān)系
38.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
39.層次模型層次模型解析:層次模型是最早發(fā)展起來的數(shù)據(jù)庫模型。層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu)。
40.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。
41.D解析:考查對結(jié)構(gòu)體成員的引用方法。結(jié)構(gòu)體成員的引用可以用'結(jié)構(gòu)體變量名.成員名'或者'結(jié)構(gòu)體變量指針->成員名'兩種方式來引用。
42.D
43.C解析:本題涉及C語言基本的3個知識點:①C語言的源程序是由函數(shù)構(gòu)成的,函數(shù)是其基本單位,每一個函數(shù)完成相對獨立的功能,其中只能包括一個主函數(shù);②C語言規(guī)定每個語句以分號結(jié)束,其書寫格式是自由的,一條語句可以寫在不同的行上,或者一行也可以寫多條語句;③注釋行雖然對程序的運行不起作用,但是它可以方便程序員閱讀,提高程序的可讀性和可移植性,所以書寫注釋行還是很有必要的。
44.D解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是對數(shù)據(jù)元素之間的邏輯關(guān)系的描述,它可以用一個數(shù)據(jù)元素的集合和在此集合中定義的若干關(guān)系來表示。數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序、鏈接等存儲結(jié)構(gòu)。但是不同的存儲結(jié)構(gòu)的數(shù)據(jù)的處理效率不同。
45.B解析:C語言函數(shù)中的參數(shù)傳遞方式有傳值與傳址兩種方式,傳值方式是指將實參的值復(fù)制一份傳遞給形參,而傳址方式是指將實參的變量地址傳遞給形參,也就是實參的引用。
46.B
47.D解析:數(shù)組a的存儲空間占4個字節(jié)(結(jié)束符'\\0'占一字節(jié)),數(shù)組a的存儲空間占3個字節(jié)。
48.A解析:選項A)是一個表達(dá)式,它后面沒有分號結(jié)尾(C語言中規(guī)定語句必須以分號結(jié)束),所以它不是語句;選項B)用一個花括號把幾條語句括起來了,這是一個復(fù)合語句;選項C)中只有一個分號,是一個空語句;選項D)是個復(fù)合語句,也是一個空語句。
49.BB?!窘馕觥繑?shù)據(jù)的存儲結(jié)構(gòu)分為順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu),一個數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)。順序結(jié)構(gòu)中數(shù)據(jù)元素所占的存儲空間是連續(xù)的,而鏈?zhǔn)酱鎯Y(jié)構(gòu)中,數(shù)據(jù)元素所占的存儲空間不一定是連續(xù)的。數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)。
50.C解析:考查通過指針引用字符串?dāng)?shù)組中的元素。通過行指針p來實現(xiàn)數(shù)組元素的引用。用格式說明符%s進(jìn)行整串輸入與輸出。
51.B解析:將E-R圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式是數(shù)據(jù)庫邏輯設(shè)計的主要工作。從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體和聯(lián)系都可以表示成關(guān)系。
52.B解析:第1個循環(huán)對數(shù)組a進(jìn)行賦值:第2個循環(huán)對數(shù)組p進(jìn)行賦值;第3個循環(huán)對k進(jìn)行累加,k的初值等于5,第1次循環(huán),k=k+p[0]*2=5+0*2=5,第2次循環(huán),k=k+p[1]*2=5+2*2=9,第3次循環(huán),k=k+p[2]*2=9+6*2=21并輸出。
53.D解析:在switch語句中,若case語句后沒有break語句,則執(zhí)行完本層case后會繼續(xù)執(zhí)行后面case中的操作。k的初值為5,while條件成立,進(jìn)入switch(5),執(zhí)行default語句,退出switch,執(zhí)行k--后得4,再進(jìn)入while循環(huán),執(zhí)行switch(4),退出switch,再執(zhí)行k--后得3,繼續(xù)while循環(huán),執(zhí)行switch(3),n=n+k=3,再執(zhí)行k--后得2,進(jìn)入while循環(huán),執(zhí)行case2,再執(zhí)行n=n+k=5,然后執(zhí)行k--后得1,最后一次進(jìn)入while循環(huán),執(zhí)行case1,n=n+k=6,然后繼續(xù)執(zhí)行case2和case3后的語句,n=n+k=7,且執(zhí)行k--后得0,此時while條件不滿足,退出循環(huán),輸出n的值為7。
54.C解析:本題注意數(shù)據(jù)類型的轉(zhuǎn)換以及“/”的使用方法。
55.A解析:本題首先定義了一個4行4列的二維數(shù)組,并用了三層for循環(huán)來進(jìn)行由小到大的排序。外層循環(huán)變量i表示數(shù)組的列.第二層循環(huán)變量j表示數(shù)組的行,第三層循環(huán)用于求第i列第j行的最小值,其中通過if語句對相關(guān)數(shù)值進(jìn)行比較和交換。最后通過for循環(huán)對排序后數(shù)組對角線上的元素輸出。
56.A
57.B解析:數(shù)據(jù)的結(jié)構(gòu)化是數(shù)據(jù)庫階段的重要特征之一。在數(shù)據(jù)庫階段,數(shù)據(jù)不再面向應(yīng)用,而是面向整個系統(tǒng),數(shù)據(jù)的共享性高、冗余小、易于擴(kuò)展。由于數(shù)據(jù)庫三級模式間的兩級映像,所以數(shù)據(jù)具有較高的獨立性。
58.B解析:本題定義了一個sub()函數(shù),其作用為將一個二維數(shù)組按行復(fù)制到t所指的連續(xù)內(nèi)存空間內(nèi)。主程序中首先使用malloc()函數(shù)為t申請了50個字節(jié)的內(nèi)存空間,然后調(diào)用sub()函數(shù),將二維數(shù)組s的內(nèi)容復(fù)制到t申請的內(nèi)存空間內(nèi),最后輸出t的第5個元素(t[4])和第8個元素(t[7]),即為3行4列二維數(shù)組中的s[1][0]和s[1][3]。s[1][0]是初始化列表中第二個大括號中的第一個值4,而s[1][3]應(yīng)該是初始化列表中第二個大括號中的第4個值,但沒有這么多初始值,C語言在這種情況下會自動將該元素設(shè)置為0,即s[3][4]={{1,2,3},{4,5,6},{7,8,9}}等價于s[3][4]={{1,2,3,0},{4,5,6,0),{7,8,9,0}}。所以最后輸出結(jié)果是4,0,應(yīng)該選擇B。
59.B解析:選項B的第1維長度為2,而初始化列表外花括號中包含了3個內(nèi)花括號,所以該選項的定義錯誤,故應(yīng)該選擇B。
60.B解析:本題考查函數(shù)的一些概念.main()函數(shù)是一個程序的主函數(shù),它由系統(tǒng)調(diào)用,所以選項A不正確。一個C語言源程序文件可以只包含一個函數(shù),每個源文件都可以被單獨編譯成。obj文件,最后鏈接成可執(zhí)行文件。因此每個函數(shù)都可以被單獨編譯,選項B正確。一個C程序必須從主函數(shù)main()開始運行,其他函數(shù)只能是直接或間接被main()函數(shù)調(diào)用才能得以運行,因此選項C錯誤。C語言不支持函數(shù)的嵌套定義,所有函數(shù)只能是全局函數(shù),所以選項D錯誤。故應(yīng)該選擇B。
61.D
\n本題考查for循環(huán)的使用。根據(jù)條件考慮x的取值變化,x從1取到5,可以循環(huán)5次,但并不知道y是如何變化的,有可能出現(xiàn)y=19提前跳出循環(huán)的情況,所以是最多執(zhí)行5次。
\n
62.C
63.C
\n在fun函數(shù)中,while循環(huán)的功能是逐個取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個數(shù)保存到變量n中,并返回變量n的值。
\n
64.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。故答案為A選項。
65.C本題的含義是在1—40的蔓敦的范圍中,只有當(dāng)i的值能被5整除,且i+2的值能被3薹纛時,打印i的值,滿跫這個條件的只有32,選擇c選項。
66.C文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件。故本題答案為C選項。
67.A
68.A\n\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個字符的位置。
\n
69.B題目中的程序包括主程序main和fun函數(shù)。主程序中定義了一個數(shù)組a,并賦給了初值。通過調(diào)用fun函數(shù),對數(shù)組a中的值進(jìn)行更改操作,最后要求的結(jié)果是輸出數(shù)組a中a[3]~a[7]的值。解決本題的關(guān)鍵在于清楚地理解fun函數(shù)的功能。fun函數(shù)有3個形參,包括1個整型數(shù)組a[],2個整型變量n和m。fun函數(shù)的功能是將數(shù)組a[i+1]的值等于a[i]的值,i的初始值大小為m,依次減1,直到數(shù)值等于n。主函數(shù)調(diào)用fun函數(shù)時,輸入的實參為(a,3,7),即fun函數(shù)要將數(shù)組a[i+1]的值等于a[i]的值,i的取值范圍從7到3,如a[8]=a[7]。fun函數(shù)執(zhí)行完畢,數(shù)組a中的值變?yōu)?,2,3,4,4,5,6,7,9,10。輸出a[3]~a[7]的值為4,4,5,6,7。
70.AC語言規(guī)定的標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,第一個字符必須為字母或下劃線,并且不能使用C語言中的關(guān)鍵字作為標(biāo)識符。選項A)中g(shù)ot0和
71.BC語言是一種成功的系統(tǒng)描述語言,具有良好的移植性,每個后綴為.C的C語言源程序都可以單獨進(jìn)行編譯。
72.A
73.CA選項錯誤,因為P是指向一個指針數(shù)組,作為數(shù)組名,不能指向別的地方。B選項錯誤,因為P[0]是一個int指針,也就是int-;而a是一個指向指針的指針in‘}}。c選項正確,因為p[O]是一個int},a[1][2]是int,&a[1][2]是int+,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址。即使能取,P[1]是int·,&a是int+t;,類型不對。因此C選項正確。
74.C
75.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。
76.C標(biāo)識符由字母、數(shù)字和下劃線組成。開頭必須是字母或下劃線且區(qū)分大小寫。在C語言中,預(yù)先定義了一些標(biāo)識符,以作專門用途,稱為關(guān)鍵字,標(biāo)識符不能與關(guān)鍵字相同。選項A和D是關(guān)鍵字,選項B是數(shù)字開頭的,所以都不正確。
77.C只有當(dāng)3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。
78.A二維數(shù)組定義行數(shù)可以省略,列數(shù)不能省略,所以答案選擇A)。
79.C本題中由循環(huán)條件可知遇到‘\0’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計x和Y所指字符串中最前面連續(xù)相同的字符個數(shù)。
80.C81.(1)錯誤:*t=calloe(m,sizeof(STU));
正確:(structss*)calloc(m,sizeof(STU));
(2)錯誤:for(i=j=0;i<M;j++)
正確:for(i=j=0;i<M;i++)
(3)錯誤:t[k].s=b[j].s;
正確:t[k]=b[j];
【解析】由函數(shù)proc()可知,變量t是指向動態(tài)存儲空間的變量,因此不能間接訪問運算符,而函數(shù)calloc的返回值類型為void*,要進(jìn)行顯式類型轉(zhuǎn)換,因此“*t=calloc(m,si-zeof(STU));”應(yīng)改為“(structss*)calloc(m,sizeof(STU));”。
由程序可知,變量i為控制學(xué)生個數(shù)的變量,因此“for(i=j=
82.
【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實現(xiàn)對整數(shù)1~1000的遍歷;通過if語句找出能被7或11整除,但不能同時被7和11整除的所有整數(shù),因為同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除,可得出表達(dá)式“(i%7==0||i%11==O)&&i%77!=0”;再按題目要求,將找出來的整數(shù)放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)即可。
2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述中錯誤的是()。
A.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令
B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件
C.用C語言編寫的程序稱為源程序,它以ASCII形式存放在一個文本文件中
D.C語言源程序經(jīng)編譯后生成擴(kuò)展名為.obj的目標(biāo)文件
2.當(dāng)接受用戶輸入的含有空格的字符串時,應(yīng)使用()函數(shù)。
A.gets()B.getchar()C.scanf()D.printf()
3.若程序中有宏定義行“#defineN100”,則下列敘述中正確的是()。
A.宏定義行中定義了標(biāo)識符N的值為整數(shù)100
B.在編譯程序?qū)語言源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N
C.上述宏定義行實現(xiàn)將100賦給標(biāo)識符N
D.在運行時用100替換標(biāo)識符N
4.第
17
題
若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
5.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結(jié)果是()。
A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4
6.
7.在圖采用鄰接表存儲時,求最小生成樹的Prim算法的時間復(fù)雜度為()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
8.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。
A.if(strcmp(s1,s2)<0)
B.if(s1>s2)
C.if(strcmp(s2,s1)<0)
D.if(strcmp(s1,s2))
9.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656
10.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
11.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0
12.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復(fù)合語句中定義了一個變量,則該變量().
A.為全局變量,在本程序文件范圍內(nèi)有效
B.為局部變量,只在該函數(shù)內(nèi)有效
C.為局部變量,只在該復(fù)合語句中有效
D.定義無效,為非法變量
13.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。
A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]
14.
15.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
16.若有定義int(*pt)[3];,則下列說法正確的是A.定義了基類型為int的三個指針變量
B.定義了基類型為int的具有三個元素的指針數(shù)組pt
C.定義了一個名為*pt、具有三個元素的整型數(shù)組
D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組
17.可以判斷一個有向圖中是否含有回路的方法為()。
A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓?fù)渑判駾.求最短路徑
18.以下程序的輸出結(jié)果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
19.設(shè)串s1='ABCDEFG',s2='PQRST',函數(shù)StrCat(x,y)返回x和y串的連接串,StrSub(s,i,j)返回串s的從序號i的字符開始的j個字符組成的子串,StrLen(s)返回串s長度,則StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的結(jié)果串()。
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
20.設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。
A.data2=(2,6);
B.data2=data1;
C.data2.real=data1.real;
D.data2.real=data1.unreal;
二、2.填空題(20題)21.下面invert函數(shù)的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>
#include<string.h>
voidinvert(charstr[])
{inti,j,【】;
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;
}
}
22.以下程序中函數(shù)fun()的功能是構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單向鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。
#include<atdio.h>
typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/
{charsub[3];
structnode*next;
}Node
Node~un(chars)/*建立鏈表*/
{......}
voiddisp(Node*h)
{Node*Ps
p=h->next;
while(【】)
{printf("%s\n",p->suh);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);prinff("\n");
23.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運行后的輸出結(jié)果是【】。
24.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁铡?/p>
#include<stdio.h>
#defineN100
intfun(int(*a)[N])
{
introw,col,max,min;
for(row=0;row<N;row++
{
for(max=a[row][0],col=1;col<N;col++)
if(【】)max=a[row][col];
if(row==0)min=max;
elseif(【】)min=max;
}
returnmin;
}
25.關(guān)系表達(dá)式x<y<z,用C語言的表達(dá)式為【】。
26.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。
27.當(dāng)先后輸入1、3、4、12、23時,屏幕上出現(xiàn)【】;再輸入12時,則屏幕上出現(xiàn)【】。
#include<stdio.h>
#defineN5
main()
{inti,j,number,top,bott,min,loca,a[N],flag;
charc;
printf("Pleaseinput5numbers(a[i]>a[i-1])\n");
scanf("%d",&a[0]);
i=1;
while(i<N)
{scanf("%d",&a[i]);
if(a[i]>=a[i-1))i++;
}
printf("\n");
for(i=0;i<N;i++)printf("%d",a[i]);
printf("\n");
flag=1;
while(flag)
{scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((number<a[0])||(number>a[N-1]))loca=-1;
while((loca==0)&&(top<=bott))
{min=(bott+top)/2;
if(number==a[min])
{loca=min;
printf("%disthe%dthnumber\n",number,loca+1);
}
elseif(number<a[min])bott=min-1;
elsetop=min+1;
}
if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);
c=getchar();
if(c=='N'||c=='n')flag=0;
}
}
28.strcat函數(shù)的作用是【】。
29.以下程序的輸出結(jié)果為【】。
#defineJFT(x)x*x
main()
{inta,k=3;
a=++JFT(k+1);
printf("%d",a);
}
30.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
31.若a是int型變量,則下列表達(dá)式的值為______。
(a=2*3,a*2),a+4
32.下列語句的輸出結(jié)果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
33.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
34.以下程序調(diào)用隨機(jī)函數(shù)得到N個20以內(nèi)的整數(shù)放在s數(shù)組中。函數(shù)fun的功能是找出s數(shù)組中的最大數(shù)(不止一個)所在下標(biāo)傳回主函數(shù)進(jìn)行輸出,并把最大值作為函數(shù)值返回,請?zhí)羁铡?/p>
#defineN30
man()
{ints[N],d[N],i,k,m;
for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}
m=fun(【】);
printf("m=%d\n",m);
printf(”Theindex;\n");
for(i=0;i<k;i++)printf("%4d",d[i]);
printf("\n\n");
}
fun(int*w,int*d,int*k)
{inti,j,m=0,v;
for(i=0;i<N;i++)
if(w[i]>w[m])【】;
v=w[m];
for(i=0,j=0;i<N;i++)
if(w[i]==v)【】;
*k=【】;
return【】;
}
35.有以下程序
#include<stdio.h>
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getchar(
n1=ch1-'0';n2-n1*10+(ch2-'0');
printf("%d\n",n2);;
}
程序運行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是______。
36.下面程序的輸出結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=0;i<4;i++)k+=arr[i]=i;
printf("%d\n",k);
}
37.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
38.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
39.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是()。
40.以下程序的運行結(jié)果為【】。
main()
{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
}
三、1.選擇題(20題)41.若有以下定義的語句
structstudent
{intage;
intnum;};
structstudentstu[3]={{1001,20},{1002,19},{1003,21}};
main()
{structstudent*p;
p=stu;
…}
則以下不正確的引用是
A.(p++)->numB.p++C.(*p).numD.P=&stu.age.
42.設(shè)x和y均為int型變量,且x=10,y=3,則以下語句的輸出結(jié)果是()printf("%d,%d\n",x--,--y);
A.10,3B.9,3C.9,2D.10,2
43.下列說法不正確的是()。
A.C程序是以函數(shù)為基本單位的,整個程序由函數(shù)組成
B.C語言程序的一條語句可以寫在不同的行上
C.C程序的注釋行對程序的運行功能不起任何作用,所以注釋應(yīng)該盡可能少寫
D.C程序的每個語句都以分號結(jié)束
44.下列敘述中正確的是()。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率
45.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。
A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定
46.以下程序的輸出結(jié)果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}
A.7B.13C.9D.10
47.若有下列語句:chara[]="xyz";charb[]=}'x','y','z'};則下列敘述正確的是______。
A.數(shù)組a和數(shù)組b不等價
B.數(shù)組a和數(shù)組b的長度相同
C.數(shù)組a占用空間大小等于數(shù)組b占用空間大小
D.數(shù)組a占用空間大小大于數(shù)組b占用空間大小
48.下列不是合法的C語言語句是()。
A.a=5B.{inti;i++;}C.;D.{;}
49.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機(jī)中所占的空間不一定是連續(xù)的
50.如下程序的輸出結(jié)果是
#include<stdio.h>
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
A.69825B.63825C.6385D.693825
51.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與實體間的聯(lián)系可以表示成()。
A.屬性B.關(guān)系C.鍵D.域
52.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
53.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是____
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆內(nèi)蒙古烏蘭察布集寧二中物理高二第一學(xué)期期末調(diào)研模擬試題含解析
- 2025屆福建省廈門六中物理高三上期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2025屆江西省吉安一中、九江一中等八所重點中學(xué)物理高二上期末預(yù)測試題含解析
- 2025屆山西省大同市煤礦第二學(xué)校物理高二上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 2025屆衡水市第十三中學(xué)高三上物理期中聯(lián)考模擬試題含解析
- 2025屆銅陵市重點中學(xué)物理高一上期末考試模擬試題含解析
- 2025屆甘肅省定西市高一物理第一學(xué)期期末預(yù)測試題含解析
- 湖南省張家界市(2024年-2025年小學(xué)五年級語文)人教版期末考試((上下)學(xué)期)試卷及答案
- 性激素類藥與抗生育藥課件
- 急診神經(jīng)定位課件
- 2024年6月2日《證券投資顧問》真題卷(79題)
- 招投標(biāo)咨詢合同文本
- 2025年中考語文復(fù)習(xí)之文言文閱讀
- 2024統(tǒng)編版(2024)道德與法治小學(xué)一年級上冊教學(xué)設(shè)計(附目錄)
- 2.2 直線的方程(分層練習(xí))(解析版)
- 《保密法》培訓(xùn)課件
- 北京市2024-2025學(xué)年高三上學(xué)期第二次普通高中學(xué)業(yè)水平合格性考試英語試卷 含解析
- 2024版《中醫(yī)基礎(chǔ)理論經(jīng)絡(luò)》課件完整版
- 2024年全球 二次元移動游戲市場研究報告-點點數(shù)據(jù)
- 第6課《我們神圣的國土》第1課時(教學(xué)設(shè)計)-部編版道德與法治五年級上冊
- 綿陽市高中2022級(2025屆)高三第一次診斷性考試(一診)物理試卷(含標(biāo)準(zhǔn)答案)
評論
0/150
提交評論