E36.C语言模拟试卷1第一大题选题解析与提示(未完)
点我去下载C语言模拟试卷1的文件
备注:ZIP文件中的参考答案仅仅提供最终结果
目录
第3题
第5题
第7题
第9题
第14题
第16题
第19题
第3题
3.若有说明语句:char c = ‘\64’ ; 则变量C包含: 。
A)1个字符 B)2个字符
C)3个字符 D)说明不合法,C值不确定
解析:\64不是解析为3个字符(\,6,4),在8.【C语言】转义字符文说过
其中有一个表格,下面节选了\ddd的内容
注意看细节:1到3位
所以有\d,\dd,\ddd这3种情况
八进制64==十进制52=十六进制34
VS验证:
#include <stdio.h>
int main()
{char c = '\64';return 0;
}
x86+debug,调试模式运行至return 0;
内存窗口输入&c
c在内存中存储的值为34
所以选A
第5题
5.语言中,运算对象必须是整型数的运算符是 。
A)% B)\ C)% 和 \ D)**
解析:%只能用于整数,/可以用于小数,如9/2.0==4.5
所以选A
第7题
7.以下选项中,能用作用户标识符的是___
A)void B)8_8 C)_0_ D)unsigned
解析:有关标识符的规则
1.标识符的时候是不能和关键字重复(A,D错)
2.标识符可包含A~Z,a~z,0~9,下划线,但第一个字符必须为字母或下划线(B错)
所以选C
第9题
9.表达式:(int)((double)9/2)-(9)%2的值是___
A)0 B)3 C)4 D)5
解析:复习有关优先级的知识点 15.25【C语言】操作符的属性 点我跳转
本题要用到: 优先级: /和% 大于 -
因此先进行(int)((double)9/2)和(9)%2的运算
9/2==4,先强制类型转换为double,再强制类型转换为int,结果为4 (9)%2==1
4-1=3,所以选B
第14题
14.以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是
A)if((a>b)&&(b>c)) k=1;else k=0;
B)if((a>b)||(b>c) k=1;else k=0;
C)if(a<=b) k=0;else if(b<=c) k=1;
D)if(a>b) k=1;else if(b>c) k=1; else k=0;
解析:回顾三目操作符,15.【C语言】初识操作符 下 点我跳转
本题属于三目操作符的嵌套类型
可以将题目的语句转换为if语句
可写为
if (a > b)
{执行(b > c ? 1 : 0)
}
else
{k = 0;
}
exp2的if语句
if (b > c)
{k = 1;
}
else
{k = 0;
}
合并为
if (a > b)
{if (b > c){k = 1;}else{k = 0;}
}
else
{k = 0;
}
显然选A
第16题
16.有以下程序
#include <stdio.h>
int main()
{
int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d\n”,k,n);
return 0;
}
程序运行后的输出结果是___
A)0 2 B)1 3 C)5 7 D)1 2
解析:后置++的特性:先使用,后++
有关++和--的特性见15.【C语言】初识操作符 下
while(k++&&n++>2);这里有陷阱
由于是从左向右运算,0>2为假,k++正常执行,后方的n++不在执行
所以k==1,n==2
所以选D
第19题
19.有以下程序
#include <stdio.h>
void fun(int p)
{
int d=2;
p=d++; printf(“%d”,p);
}
int main()
{
int a=1;
fun(a);
printf(“%d\n”,a);
return 0;
}
程序运行后的输出结果是___
A)32 B)12 C)21 D)22
提示:这里注意fun函数的调用方式为传值调用(要与传址调用做区分),不会改变a的值
有关传值调用和传址调用见29.【C语言】函数系列中 自定义函数
所以选A