1、设a=2,b;则执行b=a&&1;语句后,b的结果是____。
- A:0
- B:1
- C:2
- D:3
解析
因为=比&&的优先级低,所以先执行逻辑与操作。a=2是非零,即为真,所以a&&1为真,真为1,则b=1。
答案:B
2、以下程序的运行结果是____。
int main()
{
int a=5,b=0,c=0;
if(a=b+c) printf("***\n");
else printf("$$$\n");
return 0;
}
- A:$$$***
- B:***$$$
- C:***
- D:$$$
解析
先判断if语句。由于赋值语句a=b+c返回值为0,故执行else语句。
答案:D
3、下面程序段的运行结果是____。
char *p="%d,a=%d,b=%d\n";
int a=11,b=10,c;
c=a%b; p+=3;
printf(p,c,a,b);
- A :1,a=111,b=10;
- B:a=1,b=111;
- C:a=111,b=10;
- D:以上结果都不对
解析
题中字符指针p指向了字符串“%d,a=%d,b=%d\n”,c=a%b=11%10=1,p+=3使指针p向后移动了3个字符的位置。printf(p,c,a,b)相当于printf(“a=%d,b=%d\n”,c,a,b);,格式控制串指明输出两个数据,输出项有3项,则最后一项不输出,所以最后结果是a=1,b=11。
答案:D
4、以下程序的输出结果是____。
main(){
printf("%f",2.5+1*7%2/4);
}
- A:2.50000
- B:2.75000
- C:3.37500
- D:3.00000
解析
优先级“%”>“”和“/”>“+”和“-”,计算过程:2.5+17%2/4=2.5+1*1/4=2.5+1/4=2.5+0=2.5。
“%f”表示输出浮点型,保留6位小数,所以输出的结果为2.500000。
答案:A
5、有如下程序,该程序的输出的结果是____。
int main()
{
int i='\X80',j='\200';
printf("i=%d,j=%d",i,j);
return 0;
}
- A:-128,-128
- B:80,200
- C:128,128
- D:128,200
解析
‘\X’开头代表十六进制的数,因此将’\X80’换算成十进制为128;
'\200’代表八进制数,转换成十进制为128。
答案:C
6、若在定义语句int a,b,c,*p=&c之后,接着执行以下选项中的语句,能正确执行的是____。
- A:scanf(“%d”,a,b,c);
- B:scanf(“%d%d%d”,a,b,c);
- C:scanf(“%d”,p);
- D:scanf(“%d”,&p);
解析
程序语句int a,b,c,*p=&c;定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为"scanf(“格式控制字符串”,地址列表)",其中的地址列表应当是存放输入数据变量的地址。
答案:C
7、在VC上执行下列语句后,a的值是____。
int a=3;
a+=--a*a;
- A:12
- B:24
- C:20
- D:6
解析
a+=–aa;
等价于a=a-1; a=a+aa;
答案:D
8、可以用数组名作为字符串变量整体输出的合法的数组说明语句是____。
- A:char a[] = “string”;
- B:int a[5]={0,1,2,3,4,5};
- C:char a = “string”;
- D:char a[] = {“1”,“2”,“3”,“4”,“5”};
解析
B中数组长度不够,D中数组未给出长度。
答案:A
9、设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是____。
- A:auto
- B:register
- C:static
- D:auto或register
解析
在C语言中,对于静态局部变量static,编译时会自动给数值型变量赋初值0或者给字符变量赋初值"\0"。
答案:C
10、以下能正确定义数组并正确赋初值的语句为____。
- A:
int N=3,a[N][N];
- B:
int b[1][2]={{1}.{3}};
- C:
int c[2][]={{1,2},{3,4}};
- D:
int d[3][2]={{1,2}.{3,4}};
解析
A无法用变量定义数组大小;
B二维数组定义错误;
C二维数组缺少第二维大小。