在C++程序设计中,习题涵盖了多个基本概念和语法要点。以下是针对这些习题的详细解释:
1. 正确的C语言标识符:标识符由字母、数字和下划线组成,且不能以数字开头。选项A、B、D都有非法的标识符,而选项C中的所有标识符都是合法的。
2. 表达式数据类型:表达式`w * x + z – y`中,`w`和`x`是`char`类型,`z`是`double`类型,`y`是`float`类型。根据C语言的类型提升规则,`char`会被提升为`int`,然后与`float`和`double`进行操作。最终结果的数据类型将是`double`,因此答案是D。
3. 赋值语句:`ch`是字符型变量,只能存储单个字符。选项A中使用了双引号,表示字符串,是错误的;选项B、C、D都是对的,因为它们分别表示ASCII码的'a'、十六进制的'a'和八进制的'a'。
4. 字符串长度:字符串`"\\\"BBB\123\xbb\t"`包含一个转义字符`\`、一个双引号`"`、一个字面量`BBB`、一个八进制转义序列`\123`(代表字符'S')、一个十六进制转义序列`\xbb`(代表字符'bbe')和一个制表符`\t`。加上结束的空字符`\0`,长度是14,所以答案是C。
5. `long`类型大小:在C语言中,`int`通常占用2个字节,`long`至少是`int`的两倍,因此`long`至少占用4个字节,答案是C。
6. 合法的数据类型关键字:C语言中的数据类型关键字包括`unsigned`、`char`等,但不包括`Float`(应该是`float`)、`integer`(应该是`int`)和`Char`(应该是`char`的小写形式)。答案是B。
7. 表达式求值:`k=a + + + b + + + c + +`中的`+ +`是自增运算符,按照运算符优先级,`a++`、`b++`和`c++`都会先执行,然后是加法运算。所以`a`、`b`和`c`都会增加一次,但最后的`++`对`k`无效。因此,输出结果是`1,3,3,6`,答案是D。
8. 合法的用户标识符:在C语言中,标识符不能以数字开头,不能是保留字,也不能包含除下划线之外的特殊字符。所以,选项A的`for`是保留字,B的`tt-2`包含非法字符`-`,C的`long`是保留字,只有D的`num_19`是合法的。
9. 变量声明:在C语言中,变量声明应该使用逗号分隔,而不是分号,所以选项A、B和D都是错误的,只有C是正确的。
10. 赋值语句:给`int`类型的`c`赋值97,应该使用整数97,不是字符或字符串。所以选项A、B和C都是错误的,只有D是正确的。
11. 语句执行结果:`i=3; k=(i++)+(++i)+(i++);`这个表达式中,`i++`会先返回`i`的当前值,然后`i`增加;`++i`则是先增加`i`,再返回新值。所以`k`的值是11,`i`最后的值是6,答案是B。
12. 程序输出:`int i=0x10`表示`i`是16进制的16,`j=10`是十进制的10。`++i`使得`i`变成17,`j--`使`j`变成9。所以输出是`17,9`,答案是C。
13. 变量类型:将`int`类型的`x`赋值给`double`类型的`y`,`x`保持不变,依然是`int`类型。
习题二:
1. `scanf`函数读取:`%3d`读取一个不超过3位的整数,`%3c`读取3个字符。当输入`12345, abc`时,`c1`会是'123',`c2`会是'a',因为逗号被跳过,答案是C。
2. 输入字符:要从键盘输入一个字符,应使用`getchar()`函数,答案是A。
3. 整数输出:在`int`数据占2字节的情况下,-1的二进制表示是11111111 11111111,转换为十进制是-1。打印`%d`会显示-1,而`%u`打印无符号整数,会是65535(因为补码表示的-1在无符号中是最大的16位整数),答案是B。
4. 剩余题目未提供,无法给出答案。
以上是关于C++程序设计习题的解析,涉及标识符、数据类型、运算符优先级、字符串处理、变量声明、输入输出等基础知识。理解并掌握这些概念对于学习C++编程至关重要。