版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年湖北省鄂州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下程序的輸出結(jié)果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
2.
3.
4.對n個元素的數(shù)組進行(),其平均時間復(fù)雜度和最壞情況下都為O(nlogn)。
A.希爾排序B.快速排序C.堆排序D.選擇排序
5.
6.下列敘述中錯誤的是()。
A.C語言程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行過程中進行的
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.“#defmeMAX”是合法的宏定義命令行
D.在程序中,凡是以“#”開始的語句行都是預(yù)處理命令行
7.
8.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))
B.每個函數(shù)都可以被單獨編譯
C.每個函數(shù)都可以單獨運行
D.在一個函數(shù)內(nèi)部可以定義另一個函數(shù)
9.以下程序執(zhí)行后的輸出結(jié)果是()。
A.5,5
B.5,11
C.11,11
D.11,5
10.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運算次數(shù)
11.
12.十六進制數(shù)BB轉(zhuǎn)換成十進制數(shù)是()
A.192B.256C.187D.121
13.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。
A.1/2B.1C.2D.4
14.在下面棧的基本運算中,不是加工型運算的是______。
A.初始化B.進棧C.退棧D.判???/p>
15.以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}
A.650B.1470C.5430D.輸出值不定
16.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。
A.1B..0C.6D.2
17.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個區(qū)間,并標(biāo)識了地理位置信息,區(qū)間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?()
A.17B.18C.19D.20
18.若有定義:int*p[3];,則以下敘述中正確的是()。
A.定義了一個基類型為int的指針變量p,該變量具有三個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有三個int類型元素
19.以下程序運行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
20.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。
A.-1B.1C.4D.0
二、2.填空題(20題)21.與表達式a+=b等價的另一書寫形式是______。
22.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
23.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為為算法的【】。
24.以下程序運行后的輸出結(jié)果是______。
structNODE
{intk;
structNODE*link;
};
main()
structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q)
{p->k-++i;p++;
q->k-i++;q--;
}
q->k=i;
for(i-0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
25.以下程序用業(yè)統(tǒng)計文件十字符個數(shù)。請?zhí)羁铡?/p>
#include"stdio.h"
main()
{FTLE*fp;longnum=OL;
if((fp=fopen("fname.dat","r"))==NUlL)
{pirntf("Openerror\n");exit(0);}
while()
{fgetc(fp);num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
26.執(zhí)行以下程序后的輸出結(jié)果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
27.關(guān)系操作的特點是______操作。
28.以下程序的運行結(jié)果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
29.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序運行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。
30.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
31.在對文件進行操作的過程中,若要使文件位置的指針回到文件的開頭,應(yīng)使用的函數(shù)是【】。
32.下面程序的運行結(jié)果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}
33.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
34.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉(zhuǎn)置為A',例如:
123415913
5678261014
當(dāng)A=9101112則A'=371115
13141516481216
請?zhí)羁铡?/p>
#defineN4
voidrotate(inta[][NJ)
{
inti,j,t;
for(i=0;i<N;i++)
for(j=0;______;j++)
{
t=a[i][j];
______;
a[j][i]=t;
}
}
35.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
36.可以把具有相同屬性的一些不同對象歸類,稱為【】。
37.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
則程序運行后的輸出結(jié)果是【】。
38.設(shè)有以下程序,為使之正確運行,請在橫線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
39.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指內(nèi)存空間中,形成一個新字符串s。
請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
40.以下程序的輸出結(jié)果是______。
main()
{chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
三、1.選擇題(20題)41.下面程序的輸出結(jié)果是()charb[]="ABCD";main(){char*chp;for(chp=b;*chp;chp+=2)printf("%s",chp);print{("\n");}
A.ABABCDB.ABCDABC.ABCDDD.ABCDCD
42.若變量均已正確定義并賦值,以下合法的C語言賦值語句是
A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;
43.請讀程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的輸出結(jié)果是()。
A.11B.20C.21D.31
44.以下對結(jié)構(gòu)體類型變量td的定義中,錯誤的是()。
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;stmctaatd;
C.stmct{intn;floatm;}aa;stmctaatd;
D.struct{intn;floatm;}td;
45.有以下程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;執(zhí)行該程序段后,k的值是______。A.3B.2C.1D.0
46.設(shè)有定義:inta=2,b=3,c=4;,則下列選項中值為0的表達式是()。
A.任意正奇數(shù)B.任意負偶數(shù)C.任意正偶數(shù)D.任意負奇數(shù)
47.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.c=('A'+c)%26-'a'
48.下列敘述中正確的是
A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類別
D.C語言中既沒有邏輯類型也沒有集合類型
49.有以下程序段:main{){inta=5,*b,**C;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達式“**c”的值是
A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址
50.最常用的一種基本數(shù)據(jù)模型是關(guān)系數(shù)據(jù)模型,它的表示應(yīng)采用()。
A.樹B.網(wǎng)絡(luò)C.圖D.二維表
51.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#inc1ude<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w")for(i=0;i<strlen(st);i++)fputc(st[i]myf);fdose(myf);}main(){fun("test.t""newword");fun("test.t,"hello,");}
A.hello,B.newwor1dhelloC.newworldD.hello,rld
52.有以下程序#inclUde<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4
A.0987654321B.4321098765C.5678901234D.0987651234
53.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
54.______是構(gòu)成C語言程序的基本單位。
A.函數(shù)B.過程C.子程序D.子例程
55.下面程序的運行結(jié)果是
#include<stdio.h>
main()
{inta=28,b;
chars[10],*p;
p=s;
do{b=a%16;
if(b<10)*p=b+48;
else*p=b+55;
p++;a=a/5;}while(a>0);
*p=′\0′;puts(s);}
A.10B.C2C.C51D.\0
56.下面程序的輸出是______。main(){intx=3,y=6,a=0;while(x++!=y-=1)){a+=1;if(y<x)break;}printf("x=%d,a=%d\n",x,y,A);}
A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=,a=1
57.以下敘述中正確的是()。
A.預(yù)處理命令行必須位于C源程序的起始位置
B.在C語言中,預(yù)處理命令行都以“#”開頭
C.每個C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
58.下列說法不正確的是()。
A.調(diào)用函數(shù)時,實參可以是表達式
B.調(diào)用函數(shù)時,實參與形參可以共用內(nèi)存單元
C.調(diào)用函數(shù)時,將實參的值復(fù)制給形參,使實參變量和形參變量在數(shù)值上相等
D.調(diào)用函數(shù)時,實參與形參的類型必須一致
59.有以下程序
main()
{inta[4][4]={{l,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,
60.有以下程序
#include<stdio.h>
#include<string.h>
typedefstruct{charname[9];charsex;floatscore[2];}STU;
voidf(STUa)
{STUb={"Zhao",′m′,850,900};inti;
strcpy(,);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
}
main()
{STUc={"Qian",′f′,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);
}
程序的運行結(jié)果是
A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90
四、選擇題(20題)61.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。
A.隊列B.線性表C.二叉樹D.棧
62.
63.已知函數(shù)的調(diào)用形式:fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針,指向要讀入數(shù)據(jù)的存放地址
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項
64.
有以下計算公式
若程序前面已在命令中包含math.h文件,不能夠正確
計算上述公式的程序段是()。
A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);
B.y=sqrt(x)if(x<0)y=sqrt(0x);
C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);
D.y=sqrt(x>=0?x:0x);
65.
66.如果將主文件型指針fp指向的文件內(nèi)部指針置于文件尾,正確的語句是()。
A.feof(fp);
B.rewind(fp);
C.fseek(fp,OL,0);
D.fseek(fp,OL,2);
67.有以下程序:
程序運行后的輸出結(jié)果是()。
A.9B.8C.7D.10
68.下列說法不正確的是()。
A.調(diào)用函數(shù)時,實參可以是表達式
B.調(diào)用函數(shù)時,實參與形參可以共用內(nèi)存單元
C.調(diào)用函數(shù)時,將實參的值復(fù)制給形參,使實參變量和形參變量在數(shù)值上相等
D.調(diào)用函數(shù)時,實參與形參的類型必須一致
69.
70.
設(shè)有定義:“inta;floatb;”,執(zhí)行“scanf("%2d%f",&a,&b);”語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是()。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
71.有以下程序
72.以下函數(shù)實現(xiàn)按每行8個輸出w所指數(shù)組中的數(shù)據(jù)
73.有以下程序段:
以下選項中表達式的值為11的是()。
A.
B.
C.
D.
74.
75.
76.若有如下定義,則__________是對數(shù)組元素的正確的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
77.設(shè)有如下三個關(guān)系表:
78.設(shè)有以下說明語句:
則下面的敘述中不正確的是()。
A.struct結(jié)構(gòu)體類型的關(guān)鍵字
B.example是結(jié)構(gòu)體類型名
C.x,y,z都是結(jié)構(gòu)體成員名
D.struetex是結(jié)構(gòu)體類型名
79.以下程序的運行結(jié)果是
#defineMIN(x,y)(x)<(y)?(x):(y)
main()
{
inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A.10B.15
C.100D.150
80.有以下程序:
#include<stdio.h>
intfun()
{staticintx=1;
X*=2:
returnx;
}
main()
{inti,S=1;
for(i=1;i<=3;i++)S*=fun();
printf("%d\n",s);
}
程序運行后的輸出結(jié)果是()。
A.0B.10C.30D.64
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,其功能是將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=25,b=43,實際輸入時個數(shù)之間以Enter鍵分隔,調(diào)用該函數(shù)后,c=3452。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.B函數(shù)調(diào)用時,prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標(biāo)從0開始,每個元素都自加1。
2.A
3.B
4.C
5.B
6.A預(yù)處理是在程序編譯之前進行的,所以A選項錯誤。故本題答案為A選項。
7.D
8.B在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項A)錯誤;C程序從main函數(shù)開始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時,整個程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開始,選項C)選項錯誤;函數(shù)不能嵌套定義,選項D)錯誤。
9.Bmain函數(shù)中的局部變量m與fun函數(shù)中的靜態(tài)局部變量m同名,因此main訪問的是其局部變量m,所以main中的兩次函數(shù)調(diào)用,實際上都是調(diào)用fun(1,1)。
第一次調(diào)用時,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。
第二次調(diào)用時,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。
所以程序輸出5,11。
10.D解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。
選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。
選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。
所以,本題的正確答案為D。
11.C
12.C
13.C
14.D
15.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認初始化為零。
16.C
17.D
18.B解析:當(dāng)一個數(shù)組中的元素均為指針類型數(shù)據(jù)時,該數(shù)組就稱為指針數(shù)組。int*p[3]表示此數(shù)組是指針類型的,每個數(shù)組元素(指針變量)都是指向一個整型的指針變量。
19.C
20.D解析:本題考查do…while循環(huán)。當(dāng)--寸是0(即y是0)時結(jié)束循環(huán),輸出y--是先輸出y的值再將y的值減1。
21.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。
22.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
23.空間復(fù)雜度和時間復(fù)雜度空間復(fù)雜度和時間復(fù)雜度解析:算法的復(fù)雜性是指對—個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。
24.1343113431解析:本題看似考查鏈表的知識,其實只是考查了結(jié)構(gòu)體數(shù)組。程序首先定義了一個結(jié)構(gòu)體NODE,在主函數(shù)中聲明了一個該結(jié)構(gòu)體的數(shù)組m[5]和兩個結(jié)構(gòu)體指針p和q,并分別初始化p指向m(指向數(shù)組的第一個元素);q指向m+4(指向數(shù)組的最后一個元素)。接下來定義并初始化一個整型變量i為0。然后用一個while循環(huán)。在p和q不相等的時候執(zhí)行循環(huán)體:讓p所指結(jié)構(gòu)體的成員k等于++i的值,然后讓p指向下一個結(jié)構(gòu)體;讓q所指結(jié)構(gòu)體的成員k等于i++的值,然后讓q指向前一個結(jié)構(gòu)體。i從0開始交替調(diào)用++i和i++,兩個表達式的值依次分別為1和1、3和3……。所以當(dāng)p叫循環(huán)結(jié)束時,實際循環(huán)了兩次,p和q都指向m數(shù)組的中間位置m[2],i自增了4次,所以q->k=i;就是讓m[2]k=4。所以程序最后輸出為:13431。
25.!feof(fp)!feof(fp)解析:本題中統(tǒng)計文件中字符個數(shù)的算法可描述如下:首先判斷文件位置指針是否指向了文件尾,如果不是則讀出一個字符,同時字符的個數(shù)加1,再判斷文件位置指針是否位于文件尾,如此循環(huán),直到文件位置指針位于文件尾為止。本題首先以讀文件的方式打開了文件“fname.daf”,如果打開成功則把返回的文件型指針賦值給fp,然后通過循環(huán)求文件中的字符數(shù)。首先判斷文件位置指針是否位于文件尾,如果不是則循環(huán)讀取字符,每次字符數(shù)加1。所以下劃處應(yīng)填循環(huán)條件,文件位置指針不是指向文件尾,即“!feof(fp)”。
26.a=14a=14解析:逗號表達式的值是以逗號分隔的最后一個表達式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結(jié)果是a=14。
27.集合集合
28.99解析:本題考查宏定義與三目運算符的綜合用法,宏定義是原樣替換,本題中,如果a>b成立,則a+1的值為整個表達式的值,否則為b+1的值為整個表達式的值,(應(yīng)注意后面的加1)。
29.BB解析:因為c是字符類型變量,它只能接收一個字符,所以c=A,字符型變量在參與算術(shù)運算的時候是用其相應(yīng)的ASCII碼參與運算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。
30.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。
31.rewind或fseekrewind或fseek
32.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1的12個字母,函數(shù)sub(shar*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調(diào)用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。
33.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
34.j<ia[i][j]=a[j][i]j<ia[i][j]=a[j][i]解析:本題中要求將n行n列的矩陣A轉(zhuǎn)置,即讓數(shù)組中行上的元素變成對應(yīng)列上的元素。即把對角線兩邊的元素對換,所以本題的第一個空格處應(yīng)該填寫1<i,第二個空格處填寫交換對角線兩邊的元素的語句a[i][j]=a[j][i]。
35.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
36.對象類
37.00解析:while循環(huán)的條件為即當(dāng)*y非零時執(zhí)行循環(huán),-(*y)先對*y的值減1,再使用*y的值,不再執(zhí)行while循環(huán)時最后*y的值為0,輸出函數(shù)中的(*y)--,是先使用*y的值再對*y減1,就是先輸出0。
38.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲分類的概念。如果沒有特別說明,函數(shù)的存儲范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進來。
39.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組strl和str2,并且給str2賦初值“abc&fgh”,接著調(diào)用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填*t++或*(t++)。
40.abcabc解析:字符串的結(jié)束標(biāo)記'\\0',當(dāng)輸出一個存放在字符數(shù)組中的字符串時,只需輸出到'\\0'為止,而不管其后有什么數(shù)據(jù)。本題給字符數(shù)組s的元素s[3]賦值為'\\0',故只能輸出3個字符“abc”。
41.D
42.A
43.C解析:函數(shù)func的作用是返回兩個形參的和,第一個形參是x,y分別自減和自增后的和13,第二個形參的值為8(根據(jù)語法規(guī)則,應(yīng)當(dāng)先使用,后自增),所以func的返回值為13+8=21。
44.C解析:選項A使用typedef語句給結(jié)構(gòu)體8a定義了一個新的名稱AA,因此使用AA直接聲明結(jié)構(gòu)體變量td是正確的。選項B中,前面一句是定義結(jié)構(gòu)體同時聲明了結(jié)構(gòu)體變量td,后一句是使用結(jié)構(gòu)體名aa聲明結(jié)構(gòu)體變量td,都是正確的寫法。選項C的第1條語句和選項D使用的是無名結(jié)構(gòu)體直接聲明變量的語法,是正確的,但是選項C的第2條語句使用已經(jīng)聲明的結(jié)構(gòu)體變量aa來聲明td是錯誤的。故應(yīng)該選擇c。
45.B解析:本題考查的知識點是條件表達式.條件運算符?:是C語言中唯一的三目運算符,它的規(guī)則是先計算左邊運算分量,如果為“真”(非0),則返回中間運算分量的值,否則返回右邊運算分量的值。本題中因為a<b為“真”,所以第1個條件表達式的值為b的值2,所以k=2。然后又因為k>c為“假’,所以第2個表達式的值為k的值2。所以本題應(yīng)該選擇B。
46.D解析:因為變量t的初始值等于1,經(jīng)過第一次dowhile循環(huán)中,執(zhí)行t=t-2這條語句一次,所以變量t的值為-1,判斷關(guān)系表達式t!=n是否成立,如果關(guān)系表達式成立,則執(zhí)行第二次循環(huán),再執(zhí)行t=t-2這條語句一次,所以變量t的值為-3,接著再判斷關(guān)系表達式t!=n是否成立,如果關(guān)系表達式成立,執(zhí)行第三次循環(huán),否則退出循環(huán)。由此可知,所以只要輸入變量n的值為負奇數(shù),則一定會使t==n成立,則退出dowhile循環(huán)。
47.D解析:C語言中,字符數(shù)據(jù)參加運算時,實際上是其ASCII碼參與運算。大寫字母的ASCII碼比其對應(yīng)的小寫字母的ASCII碼小32。因此大寫字母轉(zhuǎn)化為小寫字母只需將其加上32即可。所以選項B)、C)都符合條件,因為變量c中存儲的是大寫字母,所以“c-'A'”的值一定小于26,故選項A)與選項C)的含義相同。
48.D解析:本題考核的知識點是c語言數(shù)據(jù)類型.在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項A和選項C不正確;C語言中沒有集合類型,故選項B不正確。所以,D選項為所選。
49.C解析:主函數(shù)中定義了一個整型變量a,一個整型指針變量b和一個二級指針變量c,并讓c指向指針變量b,讓指針b指向整形變量a,所以**c為變量a的值,所以,4個選項中選項C符合題意。
50.DD?!窘馕觥筷P(guān)系數(shù)據(jù)模型是屬于數(shù)據(jù)庫的一種最重要的數(shù)據(jù)模型,在關(guān)系數(shù)據(jù)模型中,實體及實體間的聯(lián)系都用二維表來表示。
51.A解析:C語言中文件有文本文件與二進制文件,對文件的使用前必須先打開,打開方式有只讀,寫入、讀寫等方式。
52.C解析:函數(shù)fun(int*s,intn1,intn2)的功能是對數(shù)組s中的元素進行首尾互相調(diào)換。所以在主函數(shù)中,當(dāng)fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。
53.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正確。
54.A解析:C程序是由函數(shù)構(gòu)成的?!獋€C源程序至少包含—個main函數(shù),也可以包含—個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是C程序的基本單位。
55.C解析:考查用字符指針處理字符串的方法。語句'p=s;'是使指針p指向字符數(shù)組s。*p則引用了p所指位置的數(shù)組元素。通過指針來引用一維數(shù)組元素。
56.D解析:注意的是x++中x值的引用時,這里應(yīng)當(dāng)是先引用,后自加,具體執(zhí)行過程如下:
第一次while循環(huán):條件為真,執(zhí)行a=a+1=1;此時,x的值已為4,判斷y<x不成立,繼續(xù)執(zhí)行循環(huán);
第二次while循環(huán);條件為假,此時x的值已為5,退出while循環(huán),執(zhí)行printf。
57.B解析:選項B)正確,預(yù)處理命令行之前都有一個“#”符號。C語言提供三種預(yù)處理:宏替換,文件包含,條件編譯。
58.B
\n本題考查函數(shù)調(diào)用的基本概念。調(diào)用函數(shù)時,實參的形式可以是具體的數(shù)值,也可以是表達式。實參將數(shù)值或表達式的值傳遞給形參,因而兩者的類型必須保持一致;形參在運算過程中會發(fā)生改變,但不一定會影響到實參值,所以可知兩者不共用內(nèi)存單元。
\n
59.A解析:本題利用多重for循環(huán)的嵌套來實現(xiàn)對二維數(shù)組元素的按列排序。利用最外層循環(huán)來實現(xiàn)對列的控制。內(nèi)部循環(huán)利用選擇法對數(shù)組元素按照從小到大的順序進行排列,最后輸出對角線上的元素值。
60.A解析:本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f的所有操作只是針對這個數(shù)據(jù)拷貝進行的修改,這些都不會影響變量c的值。
61.C解析:線性表、棧和隊列所表達和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織形式。棧是一種特殊的線性表,它只能在固定的一端進行插入和刪除操作,又稱后進先出表(LastInFirstOut);隊列是插入在一端進行,刪除在另一端進行的線性表,又稱先進先出表(FirstInFirstOut)。
62.B
63.C本題主要考查成塊讀函數(shù)fread。在C語言中,提供了一種成塊的讀寫方式來操作文件,使其數(shù)組或結(jié)構(gòu)體等類型可以進行一次性讀寫。成塊讀文件函數(shù)的調(diào)用形式為:
intfread(void*buf,intsize,intcount,FILE*stream)
fread()函數(shù)的意思是從stream指向的流文件讀取count(字段數(shù))個字段,每個字段為size(字段長度)個字符長,并把它們放到buf(緩沖區(qū))指向的字符數(shù)組中,然后進行讀取操作。fread()函數(shù)返回實際已讀取的字段數(shù)。
從上面的分析我們可以知道,參數(shù)buf是一個無返回類型的指針,指向要讀入數(shù)據(jù)的存放地址,它其實是一個緩沖區(qū)。因此本題正確的答案選C。
64.B
\n選項A、C、D分別用一個ifelse語句、兩個if語句和條件表達式表達了計算公式的含義。
\n
65.D
66.D文件操作;主文件型指針fp指向的文件內(nèi)部指針置于文件尾的操作;
67.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。所以第-次調(diào)用函數(shù)執(zhí)行n+=a++;時a先與n相加在再進行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時,s的值為4,調(diào)用f(a)函數(shù)時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。
68.B
\n本題考查函數(shù)調(diào)用的基本概念。調(diào)用函數(shù)時,實參的形式可以是具體的數(shù)值,也可以是表達式。實參將數(shù)值或表達式的值傳遞給形參,因而兩者的類型必須保持一致;形參在運算過程中會發(fā)生改變,但不一定會影響到實參值,所以可知兩者不共用內(nèi)存單元。
\n
69.A
70.B
\n本題考查scanf函數(shù),輸入格式符%2d%f表示只接收了字符,其中a輸入的值為2位的十進制整數(shù),即87,然后將緊接著的6賦給b,因為b的值為單精度數(shù)在,即6.000000,故選擇B選項。
\n
71.A函數(shù)fun的功能是將第二個字符串鏈接到第一個字符串的末尾,第二個字符串不變。所以選擇A)。
72.A當(dāng)i為8的倍數(shù)時,輸出一個回車符,只有A)符合題意。
73.C→的運算優(yōu)先級比++高,此時,pt→x=10,執(zhí)行自加運算后為11。
74.A
75.A
76.D
77.B兩個相同結(jié)構(gòu)關(guān)系的“并”是由屬于這兩個關(guān)系的元組組成的集合。
78.B本題中,structex是結(jié)構(gòu)體類型名,exam-Ple是結(jié)構(gòu)體變量名。
79.B該題考查函數(shù)的宏定義及三目運算符。其中,表達式10*MIN(i,j)利用宏展開后為10*i<j?i:j,即100<15?10:15,其值為15,然后賦值給k。
80.D\n函數(shù)fun是2的次方的運算,而s*=fun,所以答案為64。
\n
81.(1)錯誤:p=j
正確:p=j;
(2)錯誤:p=j;
正確:p=i;
【解析】根據(jù)C語言的語法規(guī)則.每一條語句都要以分號結(jié)束。因此,“p=j”后要加上分號“;”。每次比較后要把小的下標(biāo)賦值給p,因此,“p=j;”應(yīng)改為“p=i;”。
82.
【解析】按題目中的要求,要得到整數(shù)c,首先要得到整數(shù)a和b的個位和十位上的數(shù),可以通過取余和整除來實現(xiàn),再將其分別乘以1000,100,10,1就可以得到所要求的整數(shù)c。
</j?i:j,即100<15?10:15,其值為15,然后賦值給k。2021年湖北省鄂州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下程序的輸出結(jié)果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
2.
3.
4.對n個元素的數(shù)組進行(),其平均時間復(fù)雜度和最壞情況下都為O(nlogn)。
A.希爾排序B.快速排序C.堆排序D.選擇排序
5.
6.下列敘述中錯誤的是()。
A.C語言程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行過程中進行的
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.“#defmeMAX”是合法的宏定義命令行
D.在程序中,凡是以“#”開始的語句行都是預(yù)處理命令行
7.
8.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))
B.每個函數(shù)都可以被單獨編譯
C.每個函數(shù)都可以單獨運行
D.在一個函數(shù)內(nèi)部可以定義另一個函數(shù)
9.以下程序執(zhí)行后的輸出結(jié)果是()。
A.5,5
B.5,11
C.11,11
D.11,5
10.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運算次數(shù)
11.
12.十六進制數(shù)BB轉(zhuǎn)換成十進制數(shù)是()
A.192B.256C.187D.121
13.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。
A.1/2B.1C.2D.4
14.在下面棧的基本運算中,不是加工型運算的是______。
A.初始化B.進棧C.退棧D.判???/p>
15.以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}
A.650B.1470C.5430D.輸出值不定
16.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。
A.1B..0C.6D.2
17.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個區(qū)間,并標(biāo)識了地理位置信息,區(qū)間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?()
A.17B.18C.19D.20
18.若有定義:int*p[3];,則以下敘述中正確的是()。
A.定義了一個基類型為int的指針變量p,該變量具有三個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有三個int類型元素
19.以下程序運行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
20.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。
A.-1B.1C.4D.0
二、2.填空題(20題)21.與表達式a+=b等價的另一書寫形式是______。
22.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
23.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為為算法的【】。
24.以下程序運行后的輸出結(jié)果是______。
structNODE
{intk;
structNODE*link;
};
main()
structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q)
{p->k-++i;p++;
q->k-i++;q--;
}
q->k=i;
for(i-0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
25.以下程序用業(yè)統(tǒng)計文件十字符個數(shù)。請?zhí)羁铡?/p>
#include"stdio.h"
main()
{FTLE*fp;longnum=OL;
if((fp=fopen("fname.dat","r"))==NUlL)
{pirntf("Openerror\n");exit(0);}
while()
{fgetc(fp);num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
26.執(zhí)行以下程序后的輸出結(jié)果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
27.關(guān)系操作的特點是______操作。
28.以下程序的運行結(jié)果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
29.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序運行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。
30.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
31.在對文件進行操作的過程中,若要使文件位置的指針回到文件的開頭,應(yīng)使用的函數(shù)是【】。
32.下面程序的運行結(jié)果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}
33.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
34.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉(zhuǎn)置為A',例如:
123415913
5678261014
當(dāng)A=9101112則A'=371115
13141516481216
請?zhí)羁铡?/p>
#defineN4
voidrotate(inta[][NJ)
{
inti,j,t;
for(i=0;i<N;i++)
for(j=0;______;j++)
{
t=a[i][j];
______;
a[j][i]=t;
}
}
35.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
36.可以把具有相同屬性的一些不同對象歸類,稱為【】。
37.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
則程序運行后的輸出結(jié)果是【】。
38.設(shè)有以下程序,為使之正確運行,請在橫線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
39.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指內(nèi)存空間中,形成一個新字符串s。
請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
40.以下程序的輸出結(jié)果是______。
main()
{chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
三、1.選擇題(20題)41.下面程序的輸出結(jié)果是()charb[]="ABCD";main(){char*chp;for(chp=b;*chp;chp+=2)printf("%s",chp);print{("\n");}
A.ABABCDB.ABCDABC.ABCDDD.ABCDCD
42.若變量均已正確定義并賦值,以下合法的C語言賦值語句是
A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;
43.請讀程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的輸出結(jié)果是()。
A.11B.20C.21D.31
44.以下對結(jié)構(gòu)體類型變量td的定義中,錯誤的是()。
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;stmctaatd;
C.stmct{intn;floatm;}aa;stmctaatd;
D.struct{intn;floatm;}td;
45.有以下程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;執(zhí)行該程序段后,k的值是______。A.3B.2C.1D.0
46.設(shè)有定義:inta=2,b=3,c=4;,則下列選項中值為0的表達式是()。
A.任意正奇數(shù)B.任意負偶數(shù)C.任意正偶數(shù)D.任意負奇數(shù)
47.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.c=('A'+c)%26-'a'
48.下列敘述中正確的是
A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類別
D.C語言中既沒有邏輯類型也沒有集合類型
49.有以下程序段:main{){inta=5,*b,**C;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達式“**c”的值是
A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址
50.最常用的一種基本數(shù)據(jù)模型是關(guān)系數(shù)據(jù)模型,它的表示應(yīng)采用()。
A.樹B.網(wǎng)絡(luò)C.圖D.二維表
51.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#inc1ude<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w")for(i=0;i<strlen(st);i++)fputc(st[i]myf);fdose(myf);}main(){fun("test.t""newword");fun("test.t,"hello,");}
A.hello,B.newwor1dhelloC.newworldD.hello,rld
52.有以下程序#inclUde<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4
A.0987654321B.4321098765C.5678901234D.0987651234
53.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
54.______是構(gòu)成C語言程序的基本單位。
A.函數(shù)B.過程C.子程序D.子例程
55.下面程序的運行結(jié)果是
#include<stdio.h>
main()
{inta=28,b;
chars[10],*p;
p=s;
do{b=a%16;
if(b<10)*p=b+48;
else*p=b+55;
p++;a=a/5;}while(a>0);
*p=′\0′;puts(s);}
A.10B.C2C.C51D.\0
56.下面程序的輸出是______。main(){intx=3,y=6,a=0;while(x++!=y-=1)){a+=1;if(y<x)break;}printf("x=%d,a=%d\n",x,y,A);}
A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=,a=1
57.以下敘述中正確的是()。
A.預(yù)處理命令行必須位于C源程序的起始位置
B.在C語言中,預(yù)處理命令行都以“#”開頭
C.每個C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
58.下列說法不正確的是()。
A.調(diào)用函數(shù)時,實參可以是表達式
B.調(diào)用函數(shù)時,實參與形參可以共用內(nèi)存單元
C.調(diào)用函數(shù)時,將實參的值復(fù)制給形參,使實參變量和形參變量在數(shù)值上相等
D.調(diào)用函數(shù)時,實參與形參的類型必須一致
59.有以下程序
main()
{inta[4][4]={{l,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,
60.有以下程序
#include<stdio.h>
#include<string.h>
typedefstruct{charname[9];charsex;floatscore[2];}STU;
voidf(STUa)
{STUb={"Zhao",′m′,850,900};inti;
strcpy(,);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
}
main()
{STUc={"Qian",′f′,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);
}
程序的運行結(jié)果是
A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90
四、選擇題(20題)61.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。
A.隊列B.線性表C.二叉樹D.棧
62.
63.已知函數(shù)的調(diào)用形式:fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針,指向要讀入數(shù)據(jù)的存放地址
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項
64.
有以下計算公式
若程序前面已在命令中包含math.h文件,不能夠正確
計算上述公式的程序段是()。
A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);
B.y=sqrt(x)if(x<0)y=sqrt(0x);
C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);
D.y=sqrt(x>=0?x:0x);
65.
66.如果將主文件型指針fp指向的文件內(nèi)部指針置于文件尾,正確的語句是()。
A.feof(fp);
B.rewind(fp);
C.fseek(fp,OL,0);
D.fseek(fp,OL,2);
67.有以下程序:
程序運行后的輸出結(jié)果是()。
A.9B.8C.7D.10
68.下列說法不正確的是()。
A.調(diào)用函數(shù)時,實參可以是表達式
B.調(diào)用函數(shù)時,實參與形參可以共用內(nèi)存單元
C.調(diào)用函數(shù)時,將實參的值復(fù)制給形參,使實參變量和形參變量在數(shù)值上相等
D.調(diào)用函數(shù)時,實參與形參的類型必須一致
69.
70.
設(shè)有定義:“inta;floatb;”,執(zhí)行“scanf("%2d%f",&a,&b);”語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是()。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
71.有以下程序
72.以下函數(shù)實現(xiàn)按每行8個輸出w所指數(shù)組中的數(shù)據(jù)
73.有以下程序段:
以下選項中表達式的值為11的是()。
A.
B.
C.
D.
74.
75.
76.若有如下定義,則__________是對數(shù)組元素的正確的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
77.設(shè)有如下三個關(guān)系表:
78.設(shè)有以下說明語句:
則下面的敘述中不正確的是()。
A.struct結(jié)構(gòu)體類型的關(guān)鍵字
B.example是結(jié)構(gòu)體類型名
C.x,y,z都是結(jié)構(gòu)體成員名
D.struetex是結(jié)構(gòu)體類型名
79.以下程序的運行結(jié)果是
#defineMIN(x,y)(x)<(y)?(x):(y)
main()
{
inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A.10B.15
C.100D.150
80.有以下程序:
#include<stdio.h>
intfun()
{staticintx=1;
X*=2:
returnx;
}
main()
{inti,S=1;
for(i=1;i<=3;i++)S*=fun();
printf("%d\n",s);
}
程序運行后的輸出結(jié)果是()。
A.0B.10C.30D.64
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,其功能是將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=25,b=43,實際輸入時個數(shù)之間以Enter鍵分隔,調(diào)用該函數(shù)后,c=3452。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.B函數(shù)調(diào)用時,prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標(biāo)從0開始,每個元素都自加1。
2.A
3.B
4.C
5.B
6.A預(yù)處理是在程序編譯之前進行的,所以A選項錯誤。故本題答案為A選項。
7.D
8.B在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項A)錯誤;C程序從main函數(shù)開始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時,整個程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開始,選項C)選項錯誤;函數(shù)不能嵌套定義,選項D)錯誤。
9.Bmain函數(shù)中的局部變量m與fun函數(shù)中的靜態(tài)局部變量m同名,因此main訪問的是其局部變量m,所以main中的兩次函數(shù)調(diào)用,實際上都是調(diào)用fun(1,1)。
第一次調(diào)用時,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。
第二次調(diào)用時,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。
所以程序輸出5,11。
10.D解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。
選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。
選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。
所以,本題的正確答案為D。
11.C
12.C
13.C
14.D
15.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認初始化為零。
16.C
17.D
18.B解析:當(dāng)一個數(shù)組中的元素均為指針類型數(shù)據(jù)時,該數(shù)組就稱為指針數(shù)組。int*p[3]表示此數(shù)組是指針類型的,每個數(shù)組元素(指針變量)都是指向一個整型的指針變量。
19.C
20.D解析:本題考查do…while循環(huán)。當(dāng)--寸是0(即y是0)時結(jié)束循環(huán),輸出y--是先輸出y的值再將y的值減1。
21.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。
22.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
23.空間復(fù)雜度和時間復(fù)雜度空間復(fù)雜度和時間復(fù)雜度解析:算法的復(fù)雜性是指對—個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。
24.1343113431解析:本題看似考查鏈表的知識,其實只是考查了結(jié)構(gòu)體數(shù)組。程序首先定義了一個結(jié)構(gòu)體NODE,在主函數(shù)中聲明了一個該結(jié)構(gòu)體的數(shù)組m[5]和
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)加密技術(shù)在金融行業(yè)的應(yīng)用合同
- 水域灘涂養(yǎng)殖使用權(quán)出讓合同
- 二零二四年度鄉(xiāng)村自建房翻新改造合同2篇
- 2025年度供用電設(shè)備安全認證服務(wù)合同
- 2025年度新媒體廣告投放項目合同
- 2025年度廣告效果跟蹤監(jiān)測合同范本
- 2025年度智能制造共同擔(dān)保合同范本
- 2025年度戶外婚禮攝影服務(wù)合同模板-@-1
- 2025年度互聯(lián)網(wǎng)教育平臺股權(quán)收購與教育資源共享合同
- 2025年度戶外廣告牌租賃合同(環(huán)保材料)
- 商標(biāo)法基礎(chǔ)知識
- 初中班級成績分析課件
- 勞務(wù)合同樣本下載
- 聰明格練習(xí)題(初、中級)
- 小批量試制總結(jié)報告
- 2023年經(jīng)濟開發(fā)區(qū)工作會議表態(tài)發(fā)言
- YY/T 0216-1995制藥機械產(chǎn)品型號編制方法
- 糖尿病足與周圍血管病01課件
- 2022年試行林木采伐管理方案
- 消防設(shè)施操作員報名承諾書
- 灌腸操作評分標(biāo)準
評論
0/150
提交評論