【知识点详解】
1. 自增运算符:在C语言中,`a++`是一个自增运算符,它会先返回`a`当前的值,然后将`a`的值增加1。因此,对于题目中的`printf("%d",a++)`,输出会是`10`,之后`a`的值变为`11`(选项C)。
2. ASCⅡ代码:字符'A'的ASCⅡ代码值是65。在C语言中,字符变量可以直接用于整数运算。所以`printf("%d,%d",c1,c2-2)`会输出`65,63`,因为字符'D'的ASCⅡ值是68,减去2得到66(选项A)。
3. 结构体操作:在C语言中,结构体类型的变量之间可以进行赋值操作(选项C)。但它们不能直接比较大小,也不能地址相同,更不能相加。
4. 数组索引:数组的下标从0开始,所以对于一个长度为10的数组`int a[10]`,最小的下标值是0(选项B)。
5. 逻辑运算符:在C语言中,逻辑或`||`运算符表示逻辑或关系。所以表达式`a>=10 || a<=0`表示`a`大于等于10或者小于等于0,符合题目中的条件(选项D)。
6. switch语句:在C语言的switch语句中,如果没有break语句,case后面的代码会连续执行。在给定的示例中,由于没有break,`a`和`b`都会递增,最终输出`a=2,b=1`(选项B)。
7. 数据类型的混合运算:当不同数据类型进行运算时,会自动提升到更高精度的类型。所以表达式`10+'a'+i*f`的值会被提升为double类型(选项B)。
8. 循环控制:在while循环中,`continue`语句跳过当前循环的剩余部分并继续下一轮循环,而`break`则跳出整个循环。在给定的程序中,由于有`continue`和`break`,循环次数无法确定,形成死循环(选项A)。
9. 字符常量:字符常量'\72'在C语言中表示ASCII值为72的字符,即'H',因此变量`c`包含1个字符(选项C)。
10. 宏定义:预处理器宏`S(a)`被定义为`P*a*a`,在给定的程序中,当`S(3+5)`展开后计算得到`29`,但由于题目要求是`3+5`的平方,所以答案是`25`(选项B)。
11. 判断题:
- 错误:`printf("%d",-i++)`在`i=3`时输出`-3`,因为先取值后自增。
- 错误:表达式`(j=3, j++)`的值是`3`,因为逗号运算符的优先级低于赋值运算符。
- 正确:C语言确实不能一次性引用整个数组,只能逐个引用数组元素。
- 错误:位运算通常只适用于整型数据。
- 错误:`i*=j+8;`执行后,`i`的值是`42`,因为`j+8`是11,`i`乘以11等于42。
- 正确:关系表达式`(a>b)==c`在`a>3`的情况下为真。
- 正确:`S(3,2)`展开后是`3*2`,值为6。
- 错误:宏定义`S(a,b)`即使不定义`t`也是正确的,因为宏替换时会替换实际的变量。
- 正确:`#define`和`printf`都不是C语言的语句,而是预处理器指令和函数调用。
- 错误:关系运算符`<=`的优先级高于`==`。
12. 填空题:
- 表达式`3.5 + 1 / 2`的结果是`3.5`,因为`1 / 2`在C语言中是整数除法,结果是0,然后加上3.5。
- `if(a > 100)`的条件不成立,因此执行`else`分支,输出`1`,表示`a <= 100`。
- 表达式`[(int)[(double)(5/2)+2.5]]`首先进行浮点数到整数的转换,`5/2`是2,加上2.5后是4.5,转换成整数是4。
以上是对C语言考试题库中涉及的知识点的详细解释,涵盖了变量自增、ASCII码、数据类型、结构体、数组、循环控制、逻辑运算、宏定义以及表达式计算等多个方面。这些知识点构成了C语言的基础,对理解和编写C程序至关重要。