1.在C语言中,不正确的int类型(默认是在16位机器中)的常数是(A)
A.32768 B.0 C.0xAF D.037
解析:
我们常常看到int取值范围为-32768~32767,实际上int的取值范围依赖于计算机系统,在16位机器中,int占16位,取值范围为前面所说的-32768~32767(-2^16~2^16-1)。
而在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647(-2^32~2^32-1) 。ISO/ANSI C规定,int类型的最小范围为-32768到32767。
C、D转换成10进制都没有超过这个范围。
字符常量是(C)
A.'\17' B.'\t' C."\n" D.'\xaa'
解析:
单引号中的字符表示一个整型值,比如’A’是一个字符常量,在ascii字符集中其值为65;
双引号中是字符串常量,比如”A”在存储中是: A\0,即用字符’\0’表示字符串的结束。
3.下面的函数调用语句中func函数的实参个数是(A)
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A.3 B.4 C.8 D.5
解析:
逗号表达式,c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60。
逗号表达式的形式如下:
表达式1,表达式2,表达式3,...... ,表达式n
逗号表达式的要领:
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。
举例:
void Fun(int a,int b)
{
cout<<"第一个参数:"<<a<<endl<<"第二个参数:"<<b<<endl;
}
void main()
{
Fun((1,2),(1,2+3,3+4));
}
输出结果:
第一个参数:2
第二个参数:7
4.下面四个选项中,均是合法转义字符的选项是(A)
A.'\'' '\\' '\n' B. '\018' '\f' 'xab'
C.'\' '\017' '\"' D.'\\0' '\101' 'x1f'
解析:
B'\018',8进制中怎么会出现8呢 C'\'不对的 D'\\0' 'xlf'这两个都不对
常见字符表:
转义字符 | 意义 | ASCII码值(十进制) |
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符''\' | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\? | 代表一个问号 | 063 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
'\x2f', '\013';\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。例如十进制的17用十六进制表示就是
‘\x11’,用八进制表示就是‘\021’;
5.下面程序段 结果正确的是(B)
int x = 3;
do{
int y = x--;
if (!y)
{
printf("x");
break;
}
printf("#");
} while (1 <= x <= 2);
A.是死循环 B.将输出###x C将输出## D含有不合法的控制表达式
这道题一看条件表达式是错误的,直接选了D。
解析:
while(1<=x<=2)是个死循环,这样的表达式应该一步步做出返回,先(1<=x)返回0或1,然后再判断(1<=x)<=2,返回0或1,返回值永远是1。
6.以下程序输出的结果是
int a = 252;
printf("a=%o a=%#o\n",a,a);
printf("a=%x a=%#x\n", a, a);
这里的"c=%#x\n"意思是:是一个格式控制符,其中c=是普通字符,%#x是格式说明,\n是;其中的%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x