C++考试题求解答

好几道题不会想请大家讲一下:
2、若有以下类型标识符定义: ( D)为啥最后是DOUBLE
int x=2; char w='a'; float y=23.45f; double z=45.6712;
则表达式w*x+y-z的结果类型是
A. float B. char C. int D. double
3、若有int x=10,y=20,z=30; 则执行下面语句后,x的值是B
if(x>y)
z=x;
x=y;
y=z;
A. 10 B. 20 C. 30 D. 0 x明明小于Y都不满足IF的条件 怎么还能执行IF语句?
4、循环语句whlie(int i=0 )i--;的循环次数是A 疑问:这题没初始值吧?怎么判断?
A. 0 B. 1 C. 5 D. 无限
7、以下能正确定义数组并正确赋初值的语句是d
疑问点:d选项第一个数组应赋3个值,若不填,有默认的实参赋值?
A. int N=5,b[N][N];
B. int a[2]={{1},{3},{4},{5}};
C. int c[2][]={{1,2},{3,4}};
D. int d[3][2]={{1,2},{3,4}};
8、下列给字符数组进行的初始化中,不正确的是d
疑问点:C选项和A选项,若数组不说明参数的个数,则可以按任意参数的个数赋值?
A. char s1[]="abcd";
B. char s2[3]={'x','y','\0'};
C. char s3[]={'a','x','y','\0'};
D. char s4[6]={"xyz","mnp"};
??? 15、若有函数说明void fA(int m, int n); 和指针变量的定义 void (*p)(int,int);并且有p= fA则下列操作不正确的是
A.(*p)(3,4); B.p(3,4);
C.fA(3,4); D.*p++;
我的理解是A为指向对象成员的指针并赋2个实参的值,C为直接给外联函数FA给2个形参赋值。至于B和D就不懂了。

第1个回答  2013-09-09
2.几个类型转换的时候默认的转换是小的转化成大的。这里double最大。(因为大的转小的会丢失,小的转大的只是浪费一点空间)
3.if条件判断执行的是这样的if( ……) { ……}如果是这样的形式,if条件满足时执行{}内的内容 如果没有{} 则if条件所影响的之后if条件语句后紧跟着的一句话而已。也就是说此题目中if影响的只有z=x这一句而已。
4.while的退出是因为while内部的条件为false 此时第一次执行到while这条话的时候我们初识设定了int i=0 然后看一下while(int i=0) 此种0即为false 所以while条件为false 不执行while内语句 即不循环
7.额 我看你的理解好像二维数组有点问题吧。二维数组d[3][2]其中我们赋值的时候默认两两一起赋值 也就是说他就好像是3个大小为2的一维数组,此题中的赋值方式就好像是a[10]={0};这种赋值。
8.你的理解是正确的,如果定义和初始化数组在一起的时候是可以这样写的,此时相当于你=后面的数据告诉了前面大小。
15.是函数指针的问题吧。函数指针的问题我也解释不太明白,总之好像是d的错误吧。
希望对你有所帮助。
第2个回答  2013-09-09
2 简单地说 double可以兼容全部类型
3 值得注意的是if语句后面没有括号,说明if语句仅仅包含第一句z=x; 而后面并不是if语句的范围
4 whlie(int i=0 )i--; 这里面定义i的同时赋值0 然后while(0) 直接退出了循环。所以运行次数是0
7 若初始化个数不足且有赋初值,则补0; 若没有赋初值则全部随机
8数组不说明参数的个数,则可以按任意参数的个数赋值 这句话是对的,最终数组的元素个数由赋值的初始值决定,字符串多一个‘\0’。
15 实际上 这种情况下 fa跟p是等价的 ABC都是一样的 而D答案是无意义的,并且是错误的本回答被提问者采纳
第3个回答  2013-09-09
2 只有有比较高等级的参数参加运算,结果就为最高等级的
3 if语句后面的z=x;没有执行,但是x=y;执行了,所以x值最后为20
4 会执行0次的
7 不填没有关系,系统会胡乱给它赋值
8 d内是两个字符串,但是给定的只有一个字符串,如果去掉逗号还是可以
15 只有d不行,b相当于a,仍然是合法的
第4个回答  2013-09-09
2.不同类型的参数做运算的时候,自动转换为较长字节的参数类型
3.if的判断因为没有加{},所以只有下面第一句z=x是判断成立才进行的,之后两句与判断无关。
4.while()里的语句是判断为真才进行循环,为真条件中其中一种就是不为0,这边设定i=0,就为假了,不进行循环。
7.未赋初值默认为0。
8.没说明参数个数的情况下,以初始值的个数自动分配。
15.*p++中++的优先级高于*,意思是先指针地址+1后再取值,地址变了自然没法取到这个值fa了
第5个回答  2013-09-09
C++ 以前学的 , 忘记了不少了
相似回答