rgb(51,51,51);font-family:
宋体;font-size:
14px;font-style:
normal;font-variant:
normal;font-weight:
normal;letter-spacing:
normal;line-height:
25px;orphans:
auto;text-align:
left;text-indent:
0px;text-transform:
none;white-space:
normal;widows:
auto;word-spacing:
0px;-webkit-text-stroke-width:
0px;">
func(int a,int b){
int c;
c=a+b:
return c:
}
main(){
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
上面程序的输出结果是________。
a)ll b)20
c)2l d)31
答案:
c
评析:
函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x--,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x--,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。
(31)请读程序:
#include
main()
{
int a,b;
for(a=l,b=1;a<=100;a十+){
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5:
}
printf("%d\n",a);
}
上面程序的输出结果是_________。
a)7 b)8
c)9 d)10
答案:
b
评析:
break语句的作用是用于跳出循环体; continue语句的作用是用于跳出本次循环。
执行第一次循环时,(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时结束循环,共循环8次,即a=8。
(32)设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是__________。
a)x=x*100+0.5/100.0
b)x=(x*100+0.5)/100
c)x=(int)(x*100+0.5)/100.0
d)x=(x/100+0.5)*100.0
答案:
c
评析:
本题通过算术表达式的运算实现小数位数保留两位并四舍五入的操作,其中(int)(x*100+0.5)是指将(x*100+0.5)的值强制转换成整型。
(33)请读程序片段(字符串内没有空格字符):
printf("%d\n",strlen("ats\n012\1\\"));
上面程序片段的输出结果是____________。
a)ll b)10
c)9 d)8
答案:
c
评析:
这个语句的目的是输出"ats\n012\1\\"这个串的长度,在串中"\\"代表一个"\",而"\1"代表数字1,也占一个字符,"\n"是回车换行符,也占一个字符,加上a、t、s、0、l、2,共9个字符。
(34)运行以下程序后,如果从键盘上输入china撑<回车>,则输出结果为_________。
#include
main()
{
int v1=0,v2=0;char ch:
while((ch=getchar())!
=’#’)
switch(ch)
{
case’a’:
case ’h’:
default:
v1++;
case’0’:
v2++:
}
printf("%d,%d\n",v1,v2);
}
a)2,0 b)5,0
c)5,5 d)2,5
答案:
c
评析:
执行完一个case后面的语句后,流程控制转移到下一个case继续执行。
"case常量表达式"只是起语句标号作用,并不是在该处进行条件判断。
在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
(35)请选出可用作c语言用户标识符的一组标识符__________。
a)void b)a3.b3 c)for d)2a
define -123 -abc do
word if case sizeof
答案:
b
评析:
c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。
选项a中的void是c语言的关键字,不合法;选项c中的case和c语言的关键字重名,不合法;选项d中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。
(36)下面能正确定义数组,并正确赋值的语句是_________。
a)int n=5,b[n][n]
b)int a[1][2]={{1},{3}}
c)int c[2][]={{1,2},{3,4}}
d)int d[3][2]={{1,2},{34}}
答案:
d
评析:
可以用下面的方法对二维数组初始化:
l、分行给二维数组赋初值。
如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2、可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。
如:
int a[3][4]={1,2,3,4,5,6,7,8;9,10,1 l,12);
3、可以对部分元素赋初值:
int a[3][4]={{1},{5},{9}};
它的作用是只对各行第一列的元素赋初值,其余元素值自动为0。
4、如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
与下面的定义等价:
int a[][4]={1,2,3,4,5,6,7,8,9,10,1l,12};
(37)请选出以下程序的输出结果___________。
#includergb(51,51,51);font-family:
宋体;font-size:
14px;font-style:
normal;font-variant:
normal;font-weight:
normal;letter-spacing:
normal;line-height:
25px;orphans:
auto;text-align:
left;text-indent:
0px;text-transform:
none;white-space:
normal;widows:
auto;word-spacing:
0px;-webkit-text-stroke-width:
0px;">
sub(int*s,int y)
{ static int t=3;
y=s[t];t--;
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){
sub(a,x);printf("%d",x);)
printf("\n");
}
a)1234 b)432l
c)0000 d)4444
答案:
c
评析:
x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为0。
(38)假定下面程序可执行文件名prg.exe,则该程序所在的子目录下输入命令行:
prg hello
good<回车>后,程序的输出结果是_________。
main(int argc,char*argv[])
{
int i;
for=1;i }
a)heuo good b)hg
c)hel d)hellogood
答案:
b
评析:
带参数的main()函数常用形式为:
main(int argc,char.*argv[]),其中,整型变量argc用来记录命令行中的参数个数。
参数的个数由c程序运行时自动计算出来。
字符型指针数组argv的第一个元素存放命令名,其后各个元素依次存放命令行中各个参数的首地址,数组的大小由argc确定。
for循环语句实现输出各参数的第一个字母。
(39)若有以下说明和语句,请选出哪个是对c数组元素的正确引用_________。
int c[4][5],(*cp)[5];
cp=c;
a)cp+l b)*(cp+3)
c)*(cp+1)+3 d)*(*cp+2)
答案:
d
评析:
cp=c这个语句是将数组第0行的地址赋给了cp。
cp+1使指针指向二维数组c的第一行;+(cp+3)是数组c的第三行的第0列的地址值;+(cp+1)+3是数组c的第一行第三列的地址值。
(40)下列选项中不能正确定义结构体的是_________。
a)typede fstruct b)struct color c1
{ int red; { int red;
int green; int green;
int blue; int blue;
}color; };
color cl;
c)struct color d)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
}cl; }cl;
答案:
b
评析:
将一个变量定义为标准类型与定义为结构体类型不同之处在于:
后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如,struct color),不能只指定结构体名。
其中可以不出现结构体名,答案d就是缺省结构体名的情况。
而变量名列表必须放在成员列表后面,所以b答案不能正确将c1定义为结构体变量。
(41)设有以下语句
char a=3,b=6,c;
c=a^b<<2:
则c的二进制值是_________。
a)00011011 b)00010100
c)00011100 d)00011000
答案:
a
评析:
"<<"是c语言中规定的左移运算符,n是异或运算符,所以,c的二进制值应为0001 1011。
(42)设有如下定义
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下列各输入语句中错误的是__________.
a)scanf("%d",&(*p).age);
b)scanf("%s",&std.name);
c)scanf("%c",&std[o].sex);
d)scanf("%c",&(p->sex));
答案:
b
评析:
在c语言中,结构体变量的引用有三种等价方式:
1、结构体变量.成员名;2、(*p).成员名;3、p->成员名。
因为std.name是字符数组名,-本身代表地址,其前面不应该使用"&"符号,所以选项b错误。
(43)设有
static char str[]="beijing";
则执行
printf(%d\n",strlen(strcpy(str,"china")));
后的输出结果为__________。
a)5 b)7
c)12 d)14
答案:
a
评析:
在执行printf()函数前,数组str的长度是7,但是当使用strcpy()函数将新的值赋给str后,strlenr)函数返回的应当是现在的str字符串的字符个数,即是5。
(44)下列程序段中,不是死循环的是__________。
a)int i=100; b)unsigned k=0;
while
(1) do
{ {
i=i%100+l:
++k;
if(i>=100)break; }
} while(k>=0);
c)for(;;); d)int s=3379;
while(s++%2+s%2)s++;
答案:
a
评析:
当表达式为非0值时,执行while语句中的内嵌语句,可用break语句跳出循环,用continue语句结束本次循环。
选项a不是死循环,当i=100时跳出循环。
选项c为空循环语句。
(45)以下程序的输出结果是________。
#includergb(51,51,51);font-family:
宋体;font-size:
14px;font-style:
normal;font-variant:
normal;font-weight:
normal;letter-spacing:
normal;line-height:
25px;orphans:
auto;text-align:
left;text-indent:
0px;text-transform:
none;white-space:
normal;widows:
auto;word-spacing:
0px;-webkit-text-stroke-width:
0px;">
main()
{ int i;
for(i=l;i<5;i++){
if(i%2)print引剃’);
else continue;
printf("≠f");
}
printf("$\n");
}
a)*#*#*#$ b)#*#*#*$
c)*#*#$ d)#*#*$
答案:
c
评析:
当i不可以整除2时打印"*",然后打印"拌",不能整除2则执行continue,跳过printf("#"):
语句,结束本次循环,返回到循环的起始点。
当循环结束后,打印"$"。
(46)库函数strcpy用以复制字符串,若有以下定义和语句:
char strl[]="china",str2[10],*str3,*str4="china";
则对库函数strcpy的正确的调用是_________。
a)strcpy(strl,"people");b)strcpy(str2,"people");
c)strcpy(str3,"people");d)strcpy(str4,"people");
答案:
b
评析:
strcpy(字符数组1,字符串2)其作用是将字符串2复制到字符数组l中去。
注:
(1)字符数组l必须定义得足够大;
(2)"字符数组1"必须写成数组名的形式; (3)复制时连同字符串后面的’\0’一起复制到字符数组1中。
(47)有以下程序
#includergb(51,51,51);font-family:
宋体;font-size:
14px;font-style:
normal;font-variant:
normal;font-weight:
normal;letter-spacing:
normal;line-height:
25px;orphans:
auto;text-align:
left;text-indent:
0px;text-transform:
none;white-space:
normal;widows:
auto;word-spacing:
0px;-webkit-text-stroke-width:
0px