版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年黑龍江省鶴崗市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序
#include<stdio.h>
main()
{ini,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>0;j--)
{if(i*j)>3)break;
m=i*j;
}
}
printf("m=%d\n",m);
}
程序運(yùn)行后的輸出結(jié)果是A.m=6B.m=2C.m=4D.m=5
2.a、b和c都是int型變量,且a=3,b=4,c=5,則下面的表達(dá)式中,值為0的表達(dá)式是()
A.'a'&&'b
B.a<=b
C.ab+c&&b-c
D.!((a<b)&&!c1)
3.在C語言程序中,main函數(shù)的位置()
A.必須作為第一個函數(shù)B.必須作為最后一個函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后
4.串的長度是指()。
A.串中所含不同字母的個數(shù)B.串中所含字符的個數(shù)C.串中所含不同字符的個數(shù)D.串中所含非空格字符的個數(shù)
5.有以下程序段:#include<stdio.h>intj;floaty;charname[50];scanf(“%2d%f%s”,&j,&y,name);當(dāng)執(zhí)行上述程序段時,從鍵盤上輸入555667777abc后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
6.下列選項中,當(dāng)X為大于1的奇數(shù)時,值為0的表達(dá)式是()。
A.x%2==0B.x/2C.x%2!=0D.x%2==1
7.結(jié)構(gòu)化程序所規(guī)定的三種最基本控制結(jié)構(gòu)是A.A.輸入、處理、輸出
B.樹形、網(wǎng)形、環(huán)形
C.順序、選擇、循環(huán)
D.主程序、子程序、函數(shù)
8.以下選項中,值為1的表達(dá)式是()。
A.1-‘0’B.1-‘\0’C.‘1’-0D.‘\0’-‘0’
9.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001
10.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}
A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3
11.用向量和單鏈表示的有序表均可使用折半查找方法來提高查找速度()A.是B.否
12.最小堆[0,3,2,5,7,4,6,8],在刪除堆頂元素0之后,其結(jié)果是()
A.[3,2,5,7,4,6,8]
B.[2,3,5,7,4,6,8]
C.[2,3,4,5,7,8,6]
D.[2,3,4,5,6,7,8]
13.以下有關(guān)宏的描述不正確的是()。
A.宏定義不做語法檢查B.雙引號中出現(xiàn)的宏名不進(jìn)行替換C.宏名無類型D.宏名必須用大寫字母表示
14.若有運(yùn)算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序為()
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
15.若聲明一個浮點數(shù)數(shù)組如下:froataverage[]=newfloat[30];假設(shè)該數(shù)組的內(nèi)存起始位置為200,average[15]的內(nèi)存地址是()。A.A.214B.215C.260D.256
16.
17.下面軟件中,屬中應(yīng)用軟件的是()
A.UnixB.人事管理系統(tǒng)C.數(shù)據(jù)庫管理理系統(tǒng)D.DOS
18.C語言的邏輯表達(dá)式在特定情況下會產(chǎn)生“短路”現(xiàn)象。若有邏輯表達(dá)式“x++&&y++,”則以下敘述中正確的是()。
A.若x的值為0,則“y++”操作被“短路”,y值不變
B.若x的值為1,則“y++”操作被“短路”,y值不變
C.若y的值為0,則“&&”運(yùn)算被“短路”,y值不變
D.若y或x的值為0,則表達(dá)式值為0,“x++”和“y++”均不執(zhí)行
19.下列寫法正確的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
20.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.21B.11C.20D.10
二、2.填空題(20題)21.下面程序的運(yùn)行結(jié)果是【】。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;
sub(s,7,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--;}}
22.有以下程序:
voidf(int*x,iht*y)
{intt;
t=*x;*x;=*y;*y=t;
}
main()
{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p)
{f(p,q);p++;q--;}
for(i=0;i<8;i++)printf("%d,",a[i]);
}
程序運(yùn)行后的輸出結(jié)果是【】。
23.下列程序的輸出結(jié)果是______。
#include<stdio.h>
int(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
24.下列程序的循環(huán)次數(shù)是______。
x=2;
do
{x=x*x;}
while(!x);
25.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
26.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達(dá)式______。
27.在Windows環(huán)境下,可以利用單擊、雙擊、拖動這三種鼠標(biāo)操作之一的【】操作實現(xiàn)窗口的移動。
28.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);}
29.調(diào)用C語言標(biāo)準(zhǔn)庫函數(shù)時要求用【】命令。
30.以下程序運(yùn)行后輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta,b,c;
a=10;b:20;c=(a%b<1)‖(a/b>1);
printf("%d%d%d\n",a,b,c);
}
31.下面程序的運(yùn)行結(jié)果是【】。
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d\n",s);
break;}
s+=i;}}
32.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
33.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
34.以下程序的輸出結(jié)果是【】。
main()
{ints,i;
for(s=0,i=1;1<3;i++,s+=i);
printf("%d\n",s);
}
35.x、y、x均為int型變量,描述“x、y和z中至少有兩個為正數(shù)”的表達(dá)式是______。
36.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算。這種情況稱為【】。
37.設(shè)有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進(jìn)制是【】。
38.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。
39.若a是int型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。
40.數(shù)據(jù)結(jié)構(gòu)分為線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu),帶鏈的隊列屬于()。
三、1.選擇題(20題)41.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是
A.線性鏈表B.棧C.循環(huán)鏈表D.順序表
42.對長度為n的線性表進(jìn)行順序查找,在最壞的情況下需要比較的次數(shù)為()。
A.125B.n/2C.nD.n+1
43.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。
A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定
44.有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為()。
A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE
45.下面程序輸出的結(jié)果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);}
A.159B.753C.357D.591
46.已知intt=0;while(t=1){…}則以下敘述正確的是()。
A.循環(huán)控制表達(dá)式的值為0B.循環(huán)控制表達(dá)式的值為1C.循環(huán)控制表達(dá)式不合法D.以上說法都不對
47.下述函數(shù)功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}
A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接到字符串y后面
48.以下對C語言函數(shù)的有關(guān)描述中,正確的是()
A.在C中,調(diào)用函數(shù)時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數(shù)既可以嵌套定義又可遞歸調(diào)用
C.函數(shù)必須有返回值,否則不能使用函數(shù)
D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中
49.以下敘述中錯誤的是
A.在程序中凡是以"#"開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
50.運(yùn)行下列程序時,若輸入的數(shù)據(jù)為“1,2,3”,則輸出結(jié)果是()。
main()
{floata,b,C,t;
scanf("%f,%f,%of",&a,&b,&C);
if(a<B)
{t=a;a=b;b=t;}
if(a<C)
{t=a;a=c;c=t;}
if(b<C)
{t=b;b=c;c=t;}
printf("%f\n%f\n%f\n",a,b,C);
}
A.1.002.003.00
B.1.003.002.00
C.132
D.3.0000002.0000001.000000
51.執(zhí)行以下程序后,a,b的值分別是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
52.下面不屬于軟件工程的三個要素的是A.A.工具B.過程C.方法D.環(huán)境
53.設(shè)有下列的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;執(zhí)行上面的程序段后,*(ptr+10)的值為()。
A.'\0'B.'0'C.不確定的值D.'0'的地址
54.若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8;則下列語句:printf("i=%08d",i);輸出的結(jié)果是()。
A.i=8,B.i=00000008,C.i=08,D.8
55.以下程序的運(yùn)行結(jié)果為______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}
A.10B.9C.8D.11
56.請選出以下程序的輸出結(jié)果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x:}main(){inta,b,c;sub10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,/%d\n",a,b,c);}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
57.下列程序的輸出結(jié)果是#include"stdio.h”"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
58.已知i、j、k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是
A.scanf(“%2d%2d%2d”,&i,&j,&k);
B.scanf(“%d%d%d”,&i,&j,&k);
C.scant(“%d,%d,%d”,&i,&j,&k);
D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
59.若運(yùn)行時給變量x賦值12,則以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}
A.0B.22C.12D.10
60.在以下程序段中,已知血型數(shù)據(jù)占兩個字節(jié),則輸出結(jié)果是unionun{inti;doubley;}structst{chara[10];unionunb;};printf("%",sizeof(structst));
A.14B.18C.20D.16
四、選擇題(20題)61.
62.
執(zhí)行下述程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain
{inta=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf("%d",a);
}
A.1B.4C.9D.0
63.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:
64.
65.閱讀下列程序,則運(yùn)行結(jié)果為()。
A.3B.4C.5D.6
66.
67.若有定義:doublex;,則表達(dá)式IX=0,x+10,x+十的值是()。
A.11.0B.10.0C.0.0D.1.0
68.
69.
70.
71.有以下程序
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5]={0};
a=0;b[0]=3;
func(&a,b);
rintf("%d\n",b[0]);
}
程序的運(yùn)行結(jié)果是
A.6B.7
C.8D.9
72.以下敘述中錯誤的是()。A.用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用二次返回多個函數(shù)值
B.用戶定義的函數(shù)中可以沒有return語句
C.用戶定義的函數(shù)中若沒有retum語句,則應(yīng)當(dāng)定義函數(shù)為void類型
D.函數(shù)的return語句中可以沒有表達(dá)式
73.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A.棧B.樹C.隊列D.--X樹
74.下列關(guān)于單目運(yùn)算符++、--的敘述中正確的是A.它們的運(yùn)算對象可以是任何變量和常量
B.它們的運(yùn)算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運(yùn)算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運(yùn)算對象可以是char型變量、int型變量和float型變量
75.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
76.有以下程序執(zhí)行程序時,給變量X輸入l0,程序的輸出結(jié)果是()。
A.55B.54C.65D.45
77.
78.
79.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.Beijing!
B.toBeijing]
C.WelcomeyoutoBeijingI
D.youtoBeijingI
80.軟件(程序.調(diào)試的目標(biāo)是()。
A.診斷和改正程序中的錯誤
B.盡可能多地發(fā)現(xiàn)程序中的錯誤
C.發(fā)現(xiàn)并改正程序中的所有錯誤
D.確定程序中錯誤的性質(zhì)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從3個紅球,5個白球,6個黑球中任意取出8個作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是l5。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.A
2.D
3.C
4.B解析::串的長度定義為串中字符的數(shù)目。所以B)為正確答案。C)答案不正確,因為串中可以含有相同的字符;A)答案不正確,因為串中可能含有相同的字母,而且也可能含有數(shù)字等其他非字母字符;D)答案不正確,因為空格也是一種字符,在計算長度時理應(yīng)將其計算在內(nèi)。
5.Ascanf是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入指定的變量中。其中,在百分號(%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name的值為7777abc。故本題答案為A選項。
6.A算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符的優(yōu)先級。所以當(dāng)x為大于1的奇數(shù)時,A選項的值為假,即0。B選項的值為不定值,但絕對不是0。C選項的值為真,即1。0選項的值為真,即1。故本題答案為A選項。
7.C解析:結(jié)構(gòu)化程序設(shè)計方法采用順序、選擇和循環(huán)三種基本程序控制結(jié)構(gòu)編寫程序,從而使程序具有好的結(jié)構(gòu)。
8.B字符‘\\0’為空值,其ASCII值為0,所以B選項的值為1。字符‘0’的ASCII值為48,所以A、C、D選項的值均不為1。故本題答案為B選項。
9.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。
10.D
11.N
12.C
13.D解析:本題考查宏的使用規(guī)則:①字符替換格式:#define標(biāo)識符字符串.標(biāo)識符稱為宏名,無類型;②雙引號中出現(xiàn)的宏名不替換;③宏名的定義通常用大寫字母,但不是必須用大寫;④宏定義不是賦值語句,不做語法檢查。
14.D解析:主要考查運(yùn)算符的優(yōu)先級。sizeof的優(yōu)先級最高,后面的順序是:%、<<、>,優(yōu)先級最低的是“=”。
15.C
16.B
17.B
18.A題干中,“x++&&y++”屬于邏輯與表達(dá)式。僅當(dāng)“x++”和“y++”的結(jié)果為真,整個邏輯表達(dá)式的結(jié)果才為真,否則整個表達(dá)式的結(jié)果為假。當(dāng)“x++”的結(jié)果為0時,“y”就會被短路,即不再執(zhí)行“y++”表達(dá)式,整個表達(dá)式的結(jié)果為假。所以當(dāng)x的值為0時,“x”的結(jié)果也是0,“y”操作被“短路”,y值不變。故本題答案為A選項。
19.D解析:本題考查語句的基本構(gòu)成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。
20.A聲明data是結(jié)構(gòu)S的數(shù)組。初始化時data[0].a(chǎn)=10;data[0].b:104);data[1].a(chǎn)=20;data[1].b=200。主函數(shù)中p=data[1];即p.a(chǎn)=data[1].a(chǎn);p.b=data[11.b;執(zhí)行語句prinff(”%dkn”,++(p.A));打印輸出時p.a(chǎn)先增l再打印。即p.a(chǎn)=data[1].a(chǎn)=20,先增1等于21,因此程序運(yùn)行結(jié)果是21。
21.abcdefglkjIhabcdefglkjIh解析:本題主要考查了字符變量可參與的運(yùn)算。因為字符在計算機(jī)中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運(yùn)算等,某字符的大寫字母的ASCII碼值比它對應(yīng)的小寫字母ASCII碼值小32。
22.876543218,7,6,5,4,3,2,1解析:函數(shù)f是將x、y指針的內(nèi)容互換,整個while循環(huán)是將a[0]與a[7]互換,a[2]與a[5]互換,a[3]與a[4]互換。
23.7979解析:因為在調(diào)用子函數(shù)時進(jìn)行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
24.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。
25.*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*
26.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達(dá)式是(y%2)==0。
27.拖動拖動
28.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf('%d\\n',z);語句。
29.includeinclude解析:include命令可調(diào)用標(biāo)準(zhǔn)的C語言庫函數(shù),可以用一對尖括號或一對雙引號將“.h”文件括起來,在include前面要加“#”。
30.1020010200解析:程序中(a%b<1)||(a/b>1)的運(yùn)算順序為先算括號→算術(shù)運(yùn)算符→關(guān)系運(yùn)算符→邏輯運(yùn)算符。首先計算a%b=10,a/b=0,因為a%b<1為假(0),a/b>1也為假(0),所以整個表達(dá)式的結(jié)果為假(0),最后輸出a,b,c的值為10200。
31.3030解析:考查for循環(huán)的使用。題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。
32.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
33.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。
34.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空。輸出語句不在for循環(huán)體內(nèi),所以在循環(huán)執(zhí)行完畢后才輸出s的值。s、i的初值分別為。和1,判斷循環(huán)條件,表達(dá)式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達(dá)式“2<3”成立,執(zhí)行“i++,s+=j”后,i和s的值分別為3,再次判斷循環(huán)條件,表達(dá)式“3<3”不成立,循環(huán)結(jié)束。
35.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:題目要求“x、y和z中至少有兩個為正數(shù)”,即x、y和x這3個數(shù)中必須有兩個是正數(shù),且這3個數(shù)中的哪兩個數(shù)都有可能是正數(shù),所以它們之間是或的關(guān)系。
36.上溢上溢解析:入隊運(yùn)算是指在循環(huán)隊列的隊尾加入一個新元素。這個運(yùn)算有兩個基本操作:首先將隊尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當(dāng)循環(huán)隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算,這種情況稱為“上溢”。
37.1000001010000010解析:運(yùn)算“&”的規(guī)則是只有當(dāng)兩個相應(yīng)的二進(jìn)制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。
38.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結(jié)點。第6層的結(jié)點數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點最多數(shù)”和“某一層的結(jié)點最多數(shù)”。前者的計算是深度為m的二叉樹最多有2m-1個結(jié)點。
39.1212解析:本題考查逗號表達(dá)式的運(yùn)算規(guī)則。逗號表達(dá)式的基本格式為:“表達(dá)式1,表達(dá)式2,…”,其整個表達(dá)式的結(jié)果取最后一個子表達(dá)式的值。本題中首先計算逗號表達(dá)式中的第1個表達(dá)式a=2*3=6,然后計算第2個表達(dá)式a*2,這時整個表達(dá)式的值為12,但要注意,因為第2個表達(dá)式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達(dá)式a+6=12,所以整個表達(dá)式最后的值為12。
40.線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)解析:隊列的鏈?zhǔn)酱鎯ΨQ為鏈隊列,它屬于線性數(shù)據(jù)結(jié)構(gòu)。
41.B解析:棧是限定在二端進(jìn)行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。注意:隊列組織數(shù)據(jù)的原則是“先進(jìn)先出”或“后進(jìn)后出”。注意:數(shù)據(jù)結(jié)構(gòu)中,棧和隊列組織數(shù)據(jù)的原則。
42.C解析:對線性表進(jìn)行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到所要找的元素為止.在最壞的情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,因此比較次數(shù)為n。
43.B解析:C語言函數(shù)中的參數(shù)傳遞方式有傳值與傳址兩種方式,傳值方式是指將實參的值復(fù)制一份傳遞給形參,而傳址方式是指將實參的變量地址傳遞給形參,也就是實參的引用。
44.B解析:對二又樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。在遍歷左,右子樹時,注意依舊按照“左子樹—根結(jié)點—右于樹”的順序。
45.B解析:本題用循環(huán)的方法考查對數(shù)組概念的掌握。首先,當(dāng)i=0時,數(shù)組中的位置是a[2][0]=7,當(dāng)然,如果用排除法,就不用考慮后面的循環(huán),因為在4個選項中,第1個數(shù)為7的選項只有B)。本題執(zhí)行第2次循環(huán)時,i的值為1,則printf函數(shù)中的數(shù)組指向為a[1][1]=5,依次循環(huán),可求出答案。
46.B解析:t=1是將t賦值為1,所以循環(huán)控制表達(dá)式的值為1。判斷t是否等于1時,應(yīng)用t==1,注意“=”與“==”的用法。
47.A解析:在函數(shù)體內(nèi)定義一字符型指針并指向形參,然后遍歷其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的長度。
48.A
49.D解析:C語言中的預(yù)處理命令以符號#開頭,這些命令是在程序編譯之前進(jìn)行處理的,選項D)的描述錯誤。
50.D解析:本題考查if語句。第1個if語句,實現(xiàn)如果a<b,則交換a、b值的功能;第2個if語句,實現(xiàn)如果a<c,則交換a、c的值的功能;第3個if語句,實現(xiàn)如果b<c,則交換b、c的值的功能。3個if語句結(jié)合起來實現(xiàn)的功能就是將a、b、c按從大到小排序。
51.C解析:a=p1==&m;等價于a=(P1==&m);將p1是否等于m的地址的邏輯值(0)賦給變量a;在b=(*p1)/(*p2)+7;語句中,(*P1)/(*p2)=0,因此將表達(dá)式的值7賦給變量b。
52.D解析:軟件工程包括3個要素,即方法、工具和過程。
53.A解析:本題涉及字符數(shù)組和指針兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以題中數(shù)組str有11個元素;②ptr指向數(shù)組str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值。
54.B解析:本題考查printf函數(shù)的格式?!?08”格式符中的“0”表示在指定數(shù)據(jù)輸出寬度的同時,在數(shù)據(jù)前面的多余空格處加“0”;“8”表示指定數(shù)據(jù)的輸出寬度為8位。
55.A解析:程序中的p指向變量x,q被定義為二級指針,即指向指針的指針,其值為指針p的地址,因此,**q即是x,打印結(jié)果為10。
56.B解析:sub()函數(shù)的作用是將形參y和x的差賦給了z指向的那個內(nèi)存地址,所以在sub(0.,5,&a),10和5屬于值傳遞,a是屬于地址傳遞,也就是a與z指向了同一個存儲單元,在執(zhí)行函數(shù)后,a的值隨*z變化,所以此次函數(shù)被調(diào)用后,a的值為y-x=-5,同理可知,在sub(7,a,&b)后,b的值發(fā)生變化,其值為-5-7=-12,在sub(a,b,&c)后,c的值發(fā)生變化,其值為-12-(-5)=-7。
57.B解析:continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)條件的判定。當(dāng)能被2整除時,a就會增1,之后執(zhí)行continue語句,直接執(zhí)行到for循環(huán)體的結(jié)尾,進(jìn)行i++,判斷循環(huán)條件。
58.C解析:輸入函數(shù)scanf使用該語句時,要求除格式控制符以外的字符都要原樣輸入,“,”為非格式符,要原樣輸入。選項A,輸入格式描述為“%2d%2d%2d”,輸入要用空格隔開,不滿足鍵盤輸入1,2,3的條件;選項B中,輸入格式描述符為“%d%。d%d”,輸入也要用空格隔開;選項D中,輸入格式描述符為“i=%d,j=%d,k=%d”,應(yīng)該從鍵盤輸入i=1,j=2,k=3,才能使得i,j,k的值為1,2,3。
59.A解析:條件運(yùn)算符“?:”是三目運(yùn)算符,其形式為:
表達(dá)式17表達(dá)式2:表達(dá)式3
當(dāng)表達(dá)式1的值為真時,則表達(dá)式2的值為整個表達(dá)式的值;如果表達(dá)式1的值為假,則表達(dá)式3的值為整個表達(dá)式的值。題中,表達(dá)式x>12的結(jié)果為假,所以將表達(dá)式x-12的值0作為y的值。
60.B解析:本題考查了結(jié)構(gòu)體和共用體類型的特點。結(jié)構(gòu)體變量的各個數(shù)據(jù)成員分別占據(jù)不同的存儲空間,而共用體變量的數(shù)據(jù)成員共同占據(jù)一段存儲空間。所以共用體un的變量占8個字節(jié),而結(jié)構(gòu)st中,變量所占據(jù)的存儲空間為成員a和b的存儲空間之和,所以答案為B。
61.B
62.D
\n本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。
\n
63.AB選項中運(yùn)算符“%”的運(yùn)算對象為整數(shù)。C選項中不能將變量賦給表達(dá)式“x+n”。D選項中不能將表達(dá)式“4+1”賦給常量5。故本題答案為A選項。
64.A
65.D在整個程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)著永久的存儲單元,即使退出函數(shù)以后,下次再進(jìn)入該函數(shù)時,靜態(tài)局部變量仍使用原來的存儲單元,靜態(tài)局部變量的初值是在編譯的時候賦予的,在程序執(zhí)行期間不再賦予初值。本題由于連續(xù)三次調(diào)用函數(shù)fun,三次對靜態(tài)變量x進(jìn)行操作,x的值應(yīng)依次為4,5,6。
66.B
67.Cc語言中,逗號運(yùn)算符可以把兩個以上(包含兩個)的表達(dá)式連接成一個表達(dá)式。逗號運(yùn)算符的優(yōu)先級是所有運(yùn)算符中級別最低的,逗號運(yùn)算符保證左邊的子表達(dá)式運(yùn)笑結(jié)束后才進(jìn)行右邊的子表達(dá)式的運(yùn)算。也麓是遼,逗號運(yùn)算符是一個序列點,其左邊所有副作用都結(jié)束后,才對其右邊的子表達(dá)式進(jìn)行運(yùn)算,并以最右邊表達(dá)式值作為整個逗號表達(dá)式的值。后置自增運(yùn)算:k++表示先運(yùn)算,后自■:曹置自增運(yùn)算:++k表示先自加,后運(yùn)算。因此,表達(dá)式l;O,I+10。x++的計算過程為首先賦值x=0,然后將x加l0,包是并不對x進(jìn)行賦值,最后計算x++,并,根據(jù)后置自增運(yùn)算的計算結(jié)果,即為x=0.0。故答案為C選項。
68.B
69.D
70.D
71.A本題考查數(shù)組作為函數(shù)形參與實參的使用。題目給出的程序分為兩個部分,一個是函數(shù)func,該函數(shù)有兩個形參,一個為整型的指針a,一個為整型的數(shù)組b[],這里的b只是一個形參數(shù)組名,與main函數(shù)中的數(shù)組b沒有關(guān)系。為了區(qū)別,將func函數(shù)中的數(shù)組b用b’表示。func函數(shù)實現(xiàn)的功能是將指針a所指向的整型值*a與6相加,并將結(jié)果放入數(shù)組b’[0]處。main函數(shù)首先對整型數(shù)據(jù)a和數(shù)組b進(jìn)行初始化,初始化后a的值為0,數(shù)組b中第一個值b[0]=3。初始化結(jié)束后,對函數(shù)func進(jìn)行調(diào)用。應(yīng)當(dāng)注意,調(diào)用函數(shù)func時,是將數(shù)組b的數(shù)組名作為函數(shù)的實參。這樣調(diào)用的結(jié)果就是沒有把數(shù)組元素的值傳遞給形參數(shù)組,而是把實參數(shù)組的起始地址傳遞給形參,b和b’共占有同一段內(nèi)存,這樣形參數(shù)組中的值發(fā)生變化也將導(dǎo)致實參數(shù)組中的值發(fā)生變化。題目中雖然main函數(shù)初始化使得b[0]=3,但是在調(diào)用func函數(shù)的過程中,作為該函數(shù)形參的數(shù)組b’有b’[0]=*a+6=6,故main函數(shù)中的實參數(shù)組b[0]值也發(fā)生改變,變?yōu)?。
72.Areturni吾句結(jié)束函數(shù).即使函數(shù)中有多個retum語句,也只會執(zhí)行一個。所以選項A)錯誤。
73.A棧支持子程序調(diào)用。棧是一種只能在一端進(jìn)行插入或刪除的線性表,在主程序調(diào)用子程序時要首先保存主程序當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中詬用子程序的位置,然后繼續(xù)向下執(zhí)行,這種調(diào)用方式符合棧的特點,因此本題的答案為A)。
74.D本題主要考查自加與自減運(yùn)算符。在C語言中,自加與自減運(yùn)算符具有以下性質(zhì):
(1)自加運(yùn)算符“++”和自減運(yùn)算符“--”的運(yùn)算本身是一種賦值運(yùn)算,其結(jié)果是使運(yùn)算對象的值增1或減1。
(2)++、--運(yùn)算符是單目運(yùn)算符,運(yùn)算對象可以是整型變量或字符型變量,也可以是實型變量,但不能是常量和表達(dá)式。
(3)自加、自減運(yùn)算符無論是作為前綴還是后綴運(yùn)算符,對于變量而言,其效果相同,但作為表達(dá)式來說,其值不同。
(4)++和--運(yùn)算符的結(jié)合方向是“自右向左”。
(5)不要在一個表達(dá)式中對同一個變量進(jìn)行多次自增或自減運(yùn)算??梢灾辣绢}正確的答案是D。
75.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
76.A本題考查的是遞歸算法的分析。一個直接或間接地調(diào)用自身的算法稱為遞歸算法。在一個遞歸算法中,至少要包含一個初始值和一個遞歸關(guān)系。本題的fun()函數(shù)在n等于l時返回1,而在其余情況下返[fi]n+fun(n一1),所以本題的遞歸算法可以這樣來表示:fun(n)=1(n=1)(初始值)fun(n)=n+fun(n一1)(n≠1)(遞歸關(guān)系)此時不難看出,該遞歸算法實現(xiàn)的是計算l+2+3+…+n,而且n必須大于0,否則會陷入死循環(huán)。故題目輸出的結(jié)果是l+2+3+..+10=55.應(yīng)該選擇A)。
77.B
78.C
79.Afor循環(huán)的作用是每次遇到空格,將空格后面的移動到數(shù)組的最前面。因此數(shù)組最后的狀態(tài)是“Bei-jing!、Og!\0ng!、neijing!、O”,但是pfinff(“%s”)打印遇到、0自動結(jié)束。因此,打印Beijing!。故答案為A選項。
80.A\n軟件測試與軟件調(diào)試是兩個不同的概念:軟件測試的目的是發(fā)現(xiàn)錯誤,而軟件調(diào)試的目的是發(fā)現(xiàn)錯誤或?qū)е鲁绦蚴У脑?,并修改程序以修正錯誤,調(diào)試是測試之后的活動。
\n
81.
82.
【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個元素。首先將最大值賦值為數(shù)組中的第一個元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標(biāo)賦值給變量d。
2021-2022年黑龍江省鶴崗市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序
#include<stdio.h>
main()
{ini,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>0;j--)
{if(i*j)>3)break;
m=i*j;
}
}
printf("m=%d\n",m);
}
程序運(yùn)行后的輸出結(jié)果是A.m=6B.m=2C.m=4D.m=5
2.a、b和c都是int型變量,且a=3,b=4,c=5,則下面的表達(dá)式中,值為0的表達(dá)式是()
A.'a'&&'b
B.a<=b
C.ab+c&&b-c
D.!((a<b)&&!c1)
3.在C語言程序中,main函數(shù)的位置()
A.必須作為第一個函數(shù)B.必須作為最后一個函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后
4.串的長度是指()。
A.串中所含不同字母的個數(shù)B.串中所含字符的個數(shù)C.串中所含不同字符的個數(shù)D.串中所含非空格字符的個數(shù)
5.有以下程序段:#include<stdio.h>intj;floaty;charname[50];scanf(“%2d%f%s”,&j,&y,name);當(dāng)執(zhí)行上述程序段時,從鍵盤上輸入555667777abc后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
6.下列選項中,當(dāng)X為大于1的奇數(shù)時,值為0的表達(dá)式是()。
A.x%2==0B.x/2C.x%2!=0D.x%2==1
7.結(jié)構(gòu)化程序所規(guī)定的三種最基本控制結(jié)構(gòu)是A.A.輸入、處理、輸出
B.樹形、網(wǎng)形、環(huán)形
C.順序、選擇、循環(huán)
D.主程序、子程序、函數(shù)
8.以下選項中,值為1的表達(dá)式是()。
A.1-‘0’B.1-‘\0’C.‘1’-0D.‘\0’-‘0’
9.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001
10.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}
A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3
11.用向量和單鏈表示的有序表均可使用折半查找方法來提高查找速度()A.是B.否
12.最小堆[0,3,2,5,7,4,6,8],在刪除堆頂元素0之后,其結(jié)果是()
A.[3,2,5,7,4,6,8]
B.[2,3,5,7,4,6,8]
C.[2,3,4,5,7,8,6]
D.[2,3,4,5,6,7,8]
13.以下有關(guān)宏的描述不正確的是()。
A.宏定義不做語法檢查B.雙引號中出現(xiàn)的宏名不進(jìn)行替換C.宏名無類型D.宏名必須用大寫字母表示
14.若有運(yùn)算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序為()
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
15.若聲明一個浮點數(shù)數(shù)組如下:froataverage[]=newfloat[30];假設(shè)該數(shù)組的內(nèi)存起始位置為200,average[15]的內(nèi)存地址是()。A.A.214B.215C.260D.256
16.
17.下面軟件中,屬中應(yīng)用軟件的是()
A.UnixB.人事管理系統(tǒng)C.數(shù)據(jù)庫管理理系統(tǒng)D.DOS
18.C語言的邏輯表達(dá)式在特定情況下會產(chǎn)生“短路”現(xiàn)象。若有邏輯表達(dá)式“x++&&y++,”則以下敘述中正確的是()。
A.若x的值為0,則“y++”操作被“短路”,y值不變
B.若x的值為1,則“y++”操作被“短路”,y值不變
C.若y的值為0,則“&&”運(yùn)算被“短路”,y值不變
D.若y或x的值為0,則表達(dá)式值為0,“x++”和“y++”均不執(zhí)行
19.下列寫法正確的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
20.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.21B.11C.20D.10
二、2.填空題(20題)21.下面程序的運(yùn)行結(jié)果是【】。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;
sub(s,7,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--;}}
22.有以下程序:
voidf(int*x,iht*y)
{intt;
t=*x;*x;=*y;*y=t;
}
main()
{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p)
{f(p,q);p++;q--;}
for(i=0;i<8;i++)printf("%d,",a[i]);
}
程序運(yùn)行后的輸出結(jié)果是【】。
23.下列程序的輸出結(jié)果是______。
#include<stdio.h>
int(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
24.下列程序的循環(huán)次數(shù)是______。
x=2;
do
{x=x*x;}
while(!x);
25.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
26.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達(dá)式______。
27.在Windows環(huán)境下,可以利用單擊、雙擊、拖動這三種鼠標(biāo)操作之一的【】操作實現(xiàn)窗口的移動。
28.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);}
29.調(diào)用C語言標(biāo)準(zhǔn)庫函數(shù)時要求用【】命令。
30.以下程序運(yùn)行后輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta,b,c;
a=10;b:20;c=(a%b<1)‖(a/b>1);
printf("%d%d%d\n",a,b,c);
}
31.下面程序的運(yùn)行結(jié)果是【】。
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d\n",s);
break;}
s+=i;}}
32.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
33.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
34.以下程序的輸出結(jié)果是【】。
main()
{ints,i;
for(s=0,i=1;1<3;i++,s+=i);
printf("%d\n",s);
}
35.x、y、x均為int型變量,描述“x、y和z中至少有兩個為正數(shù)”的表達(dá)式是______。
36.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算。這種情況稱為【】。
37.設(shè)有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進(jìn)制是【】。
38.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。
39.若a是int型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。
40.數(shù)據(jù)結(jié)構(gòu)分為線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu),帶鏈的隊列屬于()。
三、1.選擇題(20題)41.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是
A.線性鏈表B.棧C.循環(huán)鏈表D.順序表
42.對長度為n的線性表進(jìn)行順序查找,在最壞的情況下需要比較的次數(shù)為()。
A.125B.n/2C.nD.n+1
43.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。
A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定
44.有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為()。
A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE
45.下面程序輸出的結(jié)果是
main()
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);}
A.159B.753C.357D.591
46.已知intt=0;while(t=1){…}則以下敘述正確的是()。
A.循環(huán)控制表達(dá)式的值為0B.循環(huán)控制表達(dá)式的值為1C.循環(huán)控制表達(dá)式不合法D.以上說法都不對
47.下述函數(shù)功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}
A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接到字符串y后面
48.以下對C語言函數(shù)的有關(guān)描述中,正確的是()
A.在C中,調(diào)用函數(shù)時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數(shù)既可以嵌套定義又可遞歸調(diào)用
C.函數(shù)必須有返回值,否則不能使用函數(shù)
D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中
49.以下敘述中錯誤的是
A.在程序中凡是以"#"開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
50.運(yùn)行下列程序時,若輸入的數(shù)據(jù)為“1,2,3”,則輸出結(jié)果是()。
main()
{floata,b,C,t;
scanf("%f,%f,%of",&a,&b,&C);
if(a<B)
{t=a;a=b;b=t;}
if(a<C)
{t=a;a=c;c=t;}
if(b<C)
{t=b;b=c;c=t;}
printf("%f\n%f\n%f\n",a,b,C);
}
A.1.002.003.00
B.1.003.002.00
C.132
D.3.0000002.0000001.000000
51.執(zhí)行以下程序后,a,b的值分別是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
52.下面不屬于軟件工程的三個要素的是A.A.工具B.過程C.方法D.環(huán)境
53.設(shè)有下列的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;執(zhí)行上面的程序段后,*(ptr+10)的值為()。
A.'\0'B.'0'C.不確定的值D.'0'的地址
54.若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8;則下列語句:printf("i=%08d",i);輸出的結(jié)果是()。
A.i=8,B.i=00000008,C.i=08,D.8
55.以下程序的運(yùn)行結(jié)果為______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}
A.10B.9C.8D.11
56.請選出以下程序的輸出結(jié)果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x:}main(){inta,b,c;sub10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,/%d\n",a,b,c);}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
57.下列程序的輸出結(jié)果是#include"stdio.h”"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
58.已知i、j、k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是
A.scanf(“%2d%2d%2d”,&i,&j,&k);
B.scanf(“%d%d%d”,&i,&j,&k);
C.scant(“%d,%d,%d”,&i,&j,&k);
D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
59.若運(yùn)行時給變量x賦值12,則以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}
A.0B.22C.12D.10
60.在以下程序段中,已知血型數(shù)據(jù)占兩個字節(jié),則輸出結(jié)果是unionun{inti;doubley;}structst{chara[10];unionunb;};printf("%",sizeof(structst));
A.14B.18C.20D.16
四、選擇題(20題)61.
62.
執(zhí)行下述程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain
{inta=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf("%d",a);
}
A.1B.4C.9D.0
63.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:
64.
65.閱讀下列程序,則運(yùn)行結(jié)果為()。
A.3B.4C.5D.6
66.
67.若有定義:doublex;,則表達(dá)式IX=0,x+10,x+十的值是()。
A.11.0B.10.0C.0.0D.1.0
68.
69.
70.
71.有以下程序
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5]={0};
a=0;b[0]=3;
func(&a,b);
rintf("%d\n",b[0]);
}
程序的運(yùn)行結(jié)果是
A.6B.7
C.8D.9
72.以下敘述中錯誤的是()。A.用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用二次返回多個函數(shù)值
B.用戶定義的函數(shù)中可以沒有return語句
C.用戶定義的函數(shù)中若沒有retum語句,則應(yīng)當(dāng)定義函數(shù)為void類型
D.函數(shù)的return語句中可以沒有表達(dá)式
73.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A.棧B.樹C.隊列D.--X樹
74.下列關(guān)于單目運(yùn)算符++、--的敘述中正確的是A.它們的運(yùn)算對象可以是任何變量和常量
B.它們的運(yùn)算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運(yùn)算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運(yùn)算對象可以是char型變量、int型變量和float型變量
75.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
76.有以下程序執(zhí)行程序時,給變量X輸入l0,程序的輸出結(jié)果是()。
A.55B.54C.65D.45
77.
78.
79.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.Beijing!
B.toBeijing]
C.WelcomeyoutoBeijingI
D.youtoBeijingI
80.軟件(程序.調(diào)試的目標(biāo)是()。
A.診斷和改正程序中的錯誤
B.盡可能多地發(fā)現(xiàn)程序中的錯誤
C.發(fā)現(xiàn)并改正程序中的所有錯誤
D.確定程序中錯誤的性質(zhì)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從3個紅球,5個白球,6個黑球中任意取出8個作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是l5。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.A
2.D
3.C
4.B解析::串的長度定義為串中字符的數(shù)目。所以B)為正確答案。C)答案不正確,因為串中可以含有相同的字符;A)答案不正確,因為串中可能含有相同的字母,而且也可能含有數(shù)字等其他非字母字符;D)答案不正確,因為空格也是一種字符,在計算長度時理應(yīng)將其計算在內(nèi)。
5.Ascanf是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入指定的變量中。其中,在百分號(%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name的值為7777abc。故本題答案為A選項。
6.A算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符的優(yōu)先級。所以當(dāng)x為大于1的奇數(shù)時,A選項的值為假,即0。B選項的值為不定值,但絕對不是0。C選項的值為真,即1。0選項的值為真,即1。故本題答案為A選項。
7.C解析:結(jié)構(gòu)化程序設(shè)計方法采用順序、選擇和循環(huán)三種基本程序控制結(jié)構(gòu)編寫程序,從而使程序具有好的結(jié)構(gòu)。
8.B字符‘\\0’為空值,其ASCII值為0,所以B選項的值為1。字符‘0’的ASCII值為48,所以A、C、D選項的值均不為1。故本題答案為B選項。
9.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。
10.D
11.N
12.C
13.D解析:本題考查宏的使用規(guī)則:①字符替換格式:#define標(biāo)識符字符串.標(biāo)識符稱為宏名,無類型;②雙引號中出現(xiàn)的宏名不替換;③宏名的定義通常用大寫字母,但不是必須用大寫;④宏定義不是賦值語句,不做語法檢查。
14.D解析:主要考查運(yùn)算符的優(yōu)先級。sizeof的優(yōu)先級最高,后面的順序是:%、<<、>,優(yōu)先級最低的是“=”。
15.C
16.B
17.B
18.A題干中,“x++&&y++”屬于邏輯與表達(dá)式。僅當(dāng)“x++”和“y++”的結(jié)果為真,整個邏輯表達(dá)式的結(jié)果才為真,否則整個表達(dá)式的結(jié)果為假。當(dāng)“x++”的結(jié)果為0時,“y”就會被短路,即不再執(zhí)行“y++”表達(dá)式,整個表達(dá)式的結(jié)果為假。所以當(dāng)x的值為0時,“x”的結(jié)果也是0,“y”操作被“短路”,y值不變。故本題答案為A選項。
19.D解析:本題考查語句的基本構(gòu)成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。
20.A聲明data是結(jié)構(gòu)S的數(shù)組。初始化時data[0].a(chǎn)=10;data[0].b:104);data[1].a(chǎn)=20;data[1].b=200。主函數(shù)中p=data[1];即p.a(chǎn)=data[1].a(chǎn);p.b=data[11.b;執(zhí)行語句prinff(”%dkn”,++(p.A));打印輸出時p.a(chǎn)先增l再打印。即p.a(chǎn)=data[1].a(chǎn)=20,先增1等于21,因此程序運(yùn)行結(jié)果是21。
21.abcdefglkjIhabcdefglkjIh解析:本題主要考查了字符變量可參與的運(yùn)算。因為字符在計算機(jī)中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運(yùn)算等,某字符的大寫字母的ASCII碼值比它對應(yīng)的小寫字母ASCII碼值小32。
22.876543218,7,6,5,4,3,2,1解析:函數(shù)f是將x、y指針的內(nèi)容互換,整個while循環(huán)是將a[0]與a[7]互換,a[2]與a[5]互換,a[3]與a[4]互換。
23.7979解析:因為在調(diào)用子函數(shù)時進(jìn)行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
24.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。
25.*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*
26.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達(dá)式是(y%2)==0。
27.拖動拖動
28.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf('%d\\n',z);語句。
29.includeinclude解析:include命令可調(diào)用標(biāo)準(zhǔn)的C語言庫函數(shù),可以用一對尖括號或一對雙引號將“.h”文件括起來,在include前面要加“#”。
30.1020010200解析:程序中(a%b<1)||(a/b>1)的運(yùn)算順序為先算括號→算術(shù)運(yùn)算符→關(guān)系運(yùn)算符→邏輯運(yùn)算符。首先計算a%b=10,a/b=0,因為a%b<1為假(0),a/b>1也為假(0),所以整個表達(dá)式的結(jié)果為假(0),最后輸出a,b,c的值為10200。
31.3030解析:考查for循環(huán)的使用。題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。
32.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
33.88解析:本題
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年職場智者的必經(jīng)之路綜合知識筆試全解
- 2026年經(jīng)濟(jì)貿(mào)易專業(yè)高級模擬考試題
- 2026年會計中級職稱考試練習(xí)題及解析
- 2026年客戶關(guān)系管理與服務(wù)優(yōu)化策略試題
- 2026年軟件測試工程師習(xí)題集測試用例與執(zhí)行
- 2026年IEMS5體系驗證和執(zhí)行相關(guān)測試題目
- 2026年網(wǎng)絡(luò)信息安全專業(yè)職稱考試試題
- 2026年計算機(jī)二級考試編程語言應(yīng)用題
- 2026年華為技術(shù)面試題庫大全及詳細(xì)解析
- 2026年高考化學(xué)常見題型與解題技巧題庫
- 中學(xué)生冬季防溺水主題安全教育宣傳活動
- 2026年藥廠安全生產(chǎn)知識培訓(xùn)試題(達(dá)標(biāo)題)
- 初中九年級上一元二次方程計算練習(xí)題及答案詳解B2
- 冷庫防護(hù)制度規(guī)范
- 2026年生產(chǎn)管理崗入職性格測試題及答案
- 2026年bjt商務(wù)能力考試試題
- 廣東省廣州市番禺區(qū)2026屆高一數(shù)學(xué)第一學(xué)期期末聯(lián)考試題含解析
- 2026年廣東省佛山市高三語文聯(lián)合診斷性考試作文題及3篇范文:可以“重讀”甚至“重構(gòu)”這些過往
- (2025)70周歲以上老年人換長久駕照三力測試題庫(含參考答案)
- 2025年汽車駕駛員技師考試試題及答案含答案
- 觀看煤礦警示教育片寫心得體會
評論
0/150
提交評論