A二级公共基础知识6文档格式.docx
- 文档编号:18502135
- 上传时间:2022-12-18
- 格式:DOCX
- 页数:31
- 大小:32.19KB
A二级公共基础知识6文档格式.docx
《A二级公共基础知识6文档格式.docx》由会员分享,可在线阅读,更多相关《A二级公共基础知识6文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
break;
case1:
b++;
default:
B.switch((int)x/2.0)
C.switch((int)x%2)
D.switch((int)(x)%2)
case0.0:
case1.0:
A.
C.
[解析]%运算符两边的表达式必须是整型,所以选项A、B错误。
选项D中switch后的表达式类型和case后的表达式类型不一致。
3.有以下程序:
inta=1,b=2;
while(a<6)b+=a;
a+=2;
b%=10;
printf("
%d,%d/n"
a,b);
A.5,11B.7,1C.7,11D.6,1
B.
[解析]程序的执行过程如下:
a=1时,b=b+a=3,a=a+2=3,b=b%10=3;
a=3时,b=b+a=6,a=3+2=5,b=b%10=6;
a=5时,b=b+a=11,a=a+2=7,b=b%10=1。
此时a=7>6不满足循环条件,退出循环,此时a=7,b=1。
4.有以下程序:
inty=10;
while(y--);
y=%d/n"
y);
程序执行后的输出结果是______。
A.y=0B.y=-1
C.y=1D.while构成无限循环
[解析]在while循环中每次变量y的值减1,直到其值等于0时退出循环,这时y的再减1变为-1。
5.若有定义:
doublea=22;
inti=0,k=18;
,则不符合C语言规定的赋值语句是______。
A.a=a++,i++;
B.i=(a+k)<=(i+k);
C.i=a%11;
D.i=!
a;
[解析]在C语言中,求余运算符的运算对象只能是整型,在本题中,变量a是一个双精型变量,因此选项C中赋值表达式的右侧的表达式是一个非法的表达式。
6.若a是数值类型,则逻辑表达式(a==1)‖(a!
=1)的值是______。
A.1B.0
C.2D.不知道a的值,不能确定
[解析]在逻辑表达式中,a‖b,只有在a和b都为0时,表达式的结果才为0。
在题中所给的表达式中a要么等于1,要么不等于1,肯定会有一方的值为真。
7.有如下嵌套的if语句:
if(a<b)
if(a<c)k=a;
elsek=c;
else
if(b<c)k=b;
以下选项中与上述if语句等价的语句是______。
A.k=(a<b)?
a:
b;
k=(b<c)?
b:
c;
B.k=(a<b)?
((b<c)?
b):
((b>c)?
c);
C.k=(a<b)?
((a<c)?
c):
D.k=(a<b)?
k=(a<c)?
[解析]嵌套的ifelse语句的含义是,在变量a的值小于变量b的值,同时,变量a的值小于变量c的值时,把变量a的值赋给变量k。
在变量a的值小于变量b的值,同时,变量a的值大于等于变量c的值时,把变量c的值赋给变量k。
在变量a的值大于等于变量b的值,同时,变量b的值小于变量c的值时,把变量b的值赋给变量k。
在变量a的值大于等于变量b的值,同时,变量b的值大于等于变量c的值时,把变量c的值赋给变量k。
8.有以下程序:
chara,b,c,d;
scanf("
%c%c"
&a,&b);
c=getchar();
d=getchar();
%c%c%c%c/n”,a,b,c,d);
当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:
回车也是一个字符。
12<CR>
34<CR>
则输出结果是______。
A.1234B.12
C.12
3
D.12
34
[解析]在程序中,scanf函数把1和2分别赋给变量a和b,getchar()函数把回车符赋给变量c,getchar()函数把3赋给变量d。
9.有以下程序:
inti,j,m=1;
for(i=1;
i<3;
i++)
for(j=3;
j>0;
j--)
if(i*j>3)break;
m*=i*j;
m=%d/n"
m);
A.m=6B.m=2C.m=4D.m=5
[解析]这道题考查了for循环的嵌套应用。
对于外层for循环来说,变量i从1增到2,循环执行2次。
当变量i的值等于1时,对于内层for循环来说,变量j从3减到1,求得变量m的值等于6。
当变量i的值等于2时,第一遍执行内层for循环,变量j的值等于3,那么i*j的值等于6,其值大于3,这时执行break语句,退出内层for循环的执行。
所以程序输出变量m的值为6。
10.有以下程序:
voidmain()
intn=2,k=0;
while(k++&&n++>2);
%d%d/n"
k,n);
A.02B.13C.57D.12
D.
[解析]在程序中整型变量n的初始值等于2,整型变量k的初始值等于0,在执行while语句时,由于表达式k++的值等于0,所以while语句中的条件不满足,循环语句不会执行,但是变量k的值会加1,所在输出变量k和n的值是1和2。
11.阅读以下程序:
mam()
intcase;
floatprintF;
请输入2个数:
"
);
%d%f"
&case,&printf);
%d%f/n"
case,printtf);
该程序在编译时产生错误,其出错原因是______。
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printf不能作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
[解析]case是C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。
12.有以下程序:
%d,"
b=a+b);
a=2%);
A.0,0B.1,0C.3,2D.1,2
[解析]在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为1和0;
在第2条语句中,首先计算出a和b的和等于1,把此值赋给变量b,并在屏幕上输出此时变量b的值1;
在第3条语句中,计算出2乘以1的积等于2,把2赋给变量a,再把变量a的值在屏幕上输出。
13.设有定义:
inta=1,b=2,c=3;
,以下语句中执行效果与其他3个不同的是______。
A.if(a>b)c=a,a=b,b=c;
B.if(a>b)c=a,a=b,b=c;
C.if(a>b)c=a;
a=b;
b=c;
D.if(a>b)c=a;
[解析]在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。
在本题给出的4个选项中,选项A、B、D表示的功能相同,而选项C表示的是一条if语句和两条赋值语句。
14.有以下程序
intc=0,k;
for(k=1;
k<3;
k++)
switch(k)
c+=k;
case2:
c++;
case4:
c+=2;
c);
A.3B.5C.7D.9
[解析]在这段程序中,整型变量c的初始值赋为0,在第一次执行for循环语句时,因为此时变量k的值等于1,所以在switch语句中首先执行default语句,变量c的值加1,由于default语句后面没有break语句,会接着执行case2语句,再给变量c的值加1,其值变为2,这时退出switch语句块,进入第2次for循环,此时k的值等于2,就会执行switch语句块中的case2语句,再给变量c的值加1,这时变量c的值就是3,此时退出switch语句块,循环变量k的值加1,成为3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量c的值在屏幕上输出。
15.有以下程序:
charc1,c2;
c1='
A'
+'
8'
-'
4'
;
c2='
5'
%c,%d/n"
c1,c2);
已知字母A的ASCⅡ码为65,程序运行后的输出结果是______。
A.E,68B.D,69C.E,DD.输出无定值
[解析]字符变量c1的ASCⅡ值等于69,而字符变量c2的ASCⅡ值等于68,当分别以字符和整型输出c1和c2的ASCⅡ码值时,其结果为E,68。
16.有以下程序:
inta[]=2,3,5,4,i;
for(i=0;
i<4;
switch(i%2)
switch(a[i]%2)
a[i]++;
a[i]--;
a[i]=0;
%d"
a[i]);
/n"
A.3344B.2050C.3040D.0304
[解析]在主函数的for循环语句中,当循环变量i的值等于0或2时,执行switch中的case0语句,分别对数组元素a[0]和a[2]加1和减1,所以a[0]的值等于3,a[2]的值等于4。
当循环变量i的值等于1或3时,执行switch中的case1语句,把数组元素a[1]和a[3]的值赋为0。
所以输出数组a的元素,其结果为3040。
17.以下是if语句的基本形式:
if(表达式)语句
其中“表达式”______。
A.必须是逻辑表达式B.必须是关系表达式
C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式
[解析]本题考查if表达式。
if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑表达式、条件表达式,需要注意的是,当双等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。
18.有以下程序:
intx;
&x);
if(x<=3);
if(x!
=10)printf("
x);
程序运行时,输入的值为______才会有输出结果。
A.不等于10的整数B.大于3且不等10的整数
C.大于3或等于10的整数D.小于3的整数
[解析]本题中虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。
19.有以下程序
inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!
=2‖c--!
=3)
%d,%d,%d/n"
a,b,c);
elseprintf("
A.1,2,3B.1,3,2C.1,3,3D.3,2,1
[解析]a、b、c、d初始值分别为1、2、3、0。
第一个if中,a==1成立,但由于运算符是&
&
,还需判断第二个表达式,b++==2,它同时也成立,之后b=b+1,此时b=3,执行第二个if语句,此时b!
=2成立,由于运算符是‖,不管后面一个表达式的值是不是1,其整个表达式的值总是1,因此第二个表达式不执行,最后打印出a,b,c的值是1,3,3。
20.若函数中有定义语句:
intk;
,则______。
A.系统将自动给k赋初值0B.这时k中的值无定义
C.系统将自动给k赋初值-1D.这时k中无任何值
[解析]本题考查变量赋值基本概念。
在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。
21.程序段:
intx=12;
doubley=3.141593;
%d%8.6f"
x,y);
的输出结果是______。
A.123.141593B.123.141593C.12,3.141593D.123.1415930
[解析]本题考查printf语句。
printf()函数是格式化输出函数,一般用于向标输出设备按规定格式输出信息。
在编写程序时经常会用到此函数。
printf()函数的调用格式为:
<格式化字符串>"
<参量表>)
其中,“格式化字符串”包括两部分内容:
一部分是正常字符,这些字符将按原样输出;
另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。
格式化字符串的格式是:
%[标志][输出最小宽度][.精度][长度]格式字符
①标志:
标志字符为-、+、空格等,其意义如下:
·
-:
结果左对齐,右边填空格;
+:
输出符号(正号或负号);
空格:
输出值为正时冠以空格,为负时冠以负号。
②输出最小宽度:
用十进制整数来表示输出的最少位数(包括小数点在内至少要输出的位数)。
若实际位数多于定义的宽度,则按实际位数输出;
若实际位数少于定义的宽度,则右对齐,左边留空;
有负号,左对齐,右边留空;
表示宽度的数字以0开始,则右对齐,左边留空。
③精度:
精度格式符以“.”开头,后跟十进制整数。
它的意义是:
如果输出数字,则表示小数的位数,若实际位数大于所定义的精度数,则四舍五入,若不足则补0;
如果输出的是字符,则表示输出字符的个数,若实际位数大于所定义的精度数,则截去超过的部分。
④长度:
长度格式符为h和l两种,h表示按短整型量输出,l表示按长整型量输出。
22.有以下程序:
inta1,a2;
%d%c%d%c"
&a1,&c1,&a2,&c2);
%d,%c,%d,%c"
a1,c1,a2,c2);
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:
12,a,34,b则正确的输入格式是______。
(以下□代表空格,<CR>代表回车)。
A.12a34b<CR>B.12□a□34□b<CR>
C.12,a,34,b<CR>D.12□a34□b<CR>
[解析]本题考查scanf语句。
scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。
其调用格式为:
<地址表>)
格式化字符串包括以下3类不同的字符;
①格式化说明符:
格式化说明符与前面用的printf()函数中的格式说明符基本相同。
②空白字符:
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
③非空白字符:
一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
由于在scanf函数中,几个变量之间没有任何间隔,所以输入的时候,也同样不应该有间隔。
23.有以下程序:
char*s="
ABC"
do
*s%10);
s++;
while(*s);
注意:
字母A的ASCⅡ码值为65。
A.5670B.656667C.567D.ABC
[解析]本题考查循环语句、%运算符以及字符串的指针操作。
do-while循环的意思是打印出ABC三个ASCⅡ值整除10的余数,三者ASCⅡ值分别为65、66、67。
24.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是______。
A.n=0;
while((ch=getchar())!
='
/n'
)n++;
B.n=0;
while(getchar()!
C.for(n=0;
getchar()!
/n/;
n++);
D.n=0;
for(ch=getchar();
ch!
[解析]本题考查字符处理函数和循环语句。
选项D之所以错误是因为将ch=getchar()放在初始条件的位置,ch无论循环多少次仍然是输入的第一个字符,所以不能起到统计的作用。
25.设有定义:
chars[80];
inti=0;
,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是______。
A.gets(s);
B.while((s[i++]=getchar())!
s[i]='
/0'
C.scanf("
%s"
s);
D.doscanf("
%c"
&
s[i]);
while(s[i++]!
[解析]本题考查标准输入输出函数和循环语句。
gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。
而scanf()函数接收字符串时的结束标志为回车或者空格。
因此选项C不能,选项B和选项D中按字符逐个读入字符串s中,直到读入的字符是换行符为止。
26.若变量已正确定义为int型,要通过语句scanf("
%d,%d,%d"
&a,&b,&c);
给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(□代表一个空格符)______。
A.□□□1,2,3<回车>B.1□2□3<回车>
C.1,□□□2,□□□3<回车>D.1,2,3<回车>
[解析]本题主要考查scanf函数的输入格式问题:
scanf函数的一般形式为:
scanf(格式控制字符串,地址1,地址2,…):
格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成:
①格式说明符由“%”和格式字符组成,如%c,%d,%s,%f等。
其作用是将输入的数据转换为指定的格式,赋给scanf的两个参量(是地址1)所指定的内存单元(可能一次使用多个)中。
格式说明以“%”字符为标志。
②普通字符,是需要用户在输入时原样输入的字符。
在本题中格式控制字符串为“%d,%d,%d”,表示按十进制输入3个数据。
要求在输入数据时,两个数据间一定以一个逗号“,”作为间隔符。
27.有以下程序段:
inta,b,c;
a=10;
b=50;
c=30;
if(a>b)a=b,b=c;
c=a;
a=%db=%dc=%d/n"
程序的输出结果是______。
A.a=10b=50c=10B.a=10b=50c=30
C.a=10b=30c=10D.a=50b=30c=50
A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 公共 基础知识