1、若int a,b,c;则表达式(a=2,b=5,b++,a+b)的值是( )。
A. 7 B.8 C.6 D.2
2、若执行以下程序段,则n的值是( )。
int a=1,b=2,m=2,n=2;
(m=a>b)&&++n ;
A. 1 B.2 C.3 D.4
3、以下程序的运行结果是( )。
#include<stdio.h>
void main( )
{
inta=3,b=2,c=1;
{
int b=5,c=12;
c-=b*2;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
a+=c;
}
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
A. a=3,b=2,c=-3
a=0,b=2,c=-3
B. a=3,b=5,c=2
a=5,b=5,c=2
C. a=3,b=2,c=1
a=3,b=5,c=2
D. a=3,b=5,c=2
a=5,b=2,c=1
4、对函数不正确的描述是( )
A. 当用数组名作参数时,形参数组的改变可使实参数组随之改变
B. 允许函数递归调用
C.函数形参的作用范围只是局限于所定义的函数内
D. 函数说明必须在主调函数之前
5、若执行以下程序段,其运行结果是( )。
char c[ ]={‘a’, ‘b’, ‘\0’, ‘c’,‘\0’};
printf(“%s\n”,c);
A. ab c B.’a’’b’ C.abc D.ab
6、若定义int i;则以下循环语句的循环执行次数是( )。
for(i=2;i= =0;) printf(“%d”,i--);
A. 无限次 B.0次 C.1次 D.2次
7、以下程序的输出结果是( )
f(int b[ ],int m, int n)
{
int i,s=0;
for(i=m;i<n;i=i+2) s=s+b[i];
return(s);
}
void main( )
{
int x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf(“%d\n”,x);
}
A. 18 B.15 C.10 D.8
8、以下程序的输出结果是( )
f(int x, int y)
{
int t;
if(x<y) { t=x; x=y; y=t; }
}
void main( )
{
int a=4,b=3,c=5;
f(a,b);
f(a,c);
f(b,c);
printf(“%d,%d,%d\n”,a,b,c);
}
A. 3,4,5 B.5,3,4 C.5,4,3 D.4,3,5
9、已知变量定义如下:
int i=8,a,b;
double x=1.42,y=5.2;
则以下符合C语法的表达式是( )。
A. a+=a-=(b=4)*(a=3) B.a=a*3=2 C.x%(-3) D.y=float(i)
可以请教一下最后两题是怎么得到的吗?
追答第8题,是考察参数值传递的。
例如f(a, b);执行过程是将想a的拷贝赋给x, b的拷贝赋给y,但在函数中对x,y的操作不会影响a,b的值。所以执行f(a,b)并不会改变a,b的值。同样f(a,c);f(b,c);也一样。所以a,b,c的值都没变。
第9题,
首先排除B,C; B:a*3不能为左值; C:double型不能参与%运算
A选项中从右往左运算,可以看出运算中一边改变a的值,同时又让a参与运算。这个地方就有一个矛盾:参与运算的a是改变前的值,还是改变后的值?对于这种情况,编译器一般都是未定义。所以是错误的。
D选项将int型强制转变为float型,然后赋给double型,没什么问题。
嗯嗯!谢谢!以后还可以请教你吗?
追答当然可以。不用客气。
追问嗯嗯!你人很好啦!请问你是大几啊!
追答今年毕业的。现在已经工作了。
本回答被提问者采纳