题目1:设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( )。 (智洋)
A. float B. char C. int D. double
答案:D
分析:有double参与运行的最终结果均为double
题目2:若有以下类型说明:( ) (北京凝思软件) char w; int x; float y, z; 则表达式w*x+z-y的结果为____类型。
A.float B.char C.int D.double
答案:A
分析:float字节最高
题目3:假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( );(晟安信息)
A. x+=y++ B. ++x=++y
C. x=++y D. x++=y++
答案: B
分析:
题目4:以下程序运行后输出的结果是______。(电工时代)
#include <stdio.h>
int main()
{
int k = 011;
printf("%d\n", k++);
return 0;
}
答案:10
分析:011为八进制,换算成十进制为8+1=9,k++在原基础是加1,即为10
题目5:请正确填写输出结果。(恩易物联2)
int main()
{
int a = 15;
int b = 20;
int c;
a && b = ? (1)
a & b = ? (2)
a || b ? (3)
a | b = ? (4)
a >> 2 = ? (5)
}
(1)________(2)_________(3)________(4)________(5)________
答案:1
0000 0010
1
0001 1111
0000 0011
分析:(1)(3)ab都不等于0,即为1
(2)(4)15二进制为0000 1111,20二进制为0001 0010
(5)a二进制右移两位
题目6:为了表示“a和b都不等于0”应使用( )。(山东丁一)
A. (a!=0) || (b!=0) B. allb
C. !((a==0)&&(b==0)) D. a&&b
答案:D
A应该为&&
B有且只有a=0,b=0一种情况为0故不能判断
C选项意为a=0 b=0
D有且只有a不等于0且b不等于0时为1
题目7:设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为( )。(易购软件)
答案:1
a+b>c为1
b==c为1
a||b+c为1
b==c为1
即结果为1
题目8:已知 a = 13, a << 2的十进制数值为 ( )。(易购软件)
答案:52
分析:13二进制为0000 1101,右移两位0011 0100,换算成十进制为52
题目9:int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为( )。(易购软件)
答案:3
分析:y>!z为1,2+1=3
题目10:能正确表示a和b同时为正或同时为负的逻辑表达式是:( ) (宇视科技,紫光云数,新华三,石峰)
A. (a >= 0 ll b >= 0) && (a < 0 ll b < 0)
B. (a>=0 && b>=0) && ( a < 0 && b < 0)
C. (a + b > 0) && (a + b <= 0)
D. a * b > 0
答案:D
分析:A
BC两边不能同时成立
题目11:int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=________(杭州快越科技)
答案:2
分析:m=a>b为0,n=c>d为0,所以不成立,所以n=2
题目12:语句 printf("%d \n", 12 & 012); 的输出结果是:( ) (紫光云数,新华三,石峰)
A. 12 B. 8 C. 6 D. 012
答案:B
分析:12十进制换算成二进制0000 1100,012八进制换算成二进制0000 1010,结果为0000 1000换算成十进制为10
题目13:有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 ________ (紫光云数)
提示:char是有符号字符型,取值范围[-128 , +127],153属于最大值越界,结果是-103,然后对-103进行右移4位的计算输出。右移规则:
- 对于无符号整数,左侧补0。
- 对于有符号整数,如果原数是正数,则在左侧补0;如果原数是负数,则在左侧补1。
提示到这里,你试试计算一下吧,一定要理解清楚原理啊
答案:134
分析::103换算成二进制0110 0111,右移4位0000 0110,-103为1000 0110换算成十进制为134
题目14:以下所列的C语言常量中,错误的是: (华三外协,紫光云数,新华三,石峰)
A.0.1f B. 1.0e0.1
C. 'z' D. '\110'
答案:A
分析:B是指数型常量,CD是字符
题目15:sizeof(float)是( )。(山东丁一)
A. 一个双精度型表法式 B. 一个整型表达式
C. 一个函数调用 D. 一个不合法的表达式
答案:B
题目16:一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?(广域科技)
答案:-2^31-2^31-1
题目17:下面的代码输出是什么,为什么? (信雅达)
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(">6") : puts("<=6");
}
答案:a+b>6
分析:因为有unsigned int,所以int>>unsigned int,-20为1001 0100反码1110 1011补码1110 1100
即为236,236+6>6
题目18:按位或运算符(|) (深圳元征信息科技) 0x10 | 0x01 = ? 十六进制的结果是多少?
答案:0x11
题目19:按位与运算符(&) (深圳元征信息科技) 0x10 & 0x01 = ? 十六进制的结果是多少?
答案:0x00
题目20:关于条件的书写
判断year是不是闰年
if( )
判断num是偶数
if( )
判断num是一个三位数
if( )
判断字符ch是大写字母
if( )
判断字符ch是偶数数字字符
if( )
答案:year%4==0
num%2==0
num>=100&&num<1000
ch>='A'&&ch<='Z'
if(ch%2==0)