【知识点详解】
1. **C程序结构**:C程序由一系列函数构成,其中至少包含一个`main`函数,它是程序的入口点,程序执行从`main`函数开始。`main`函数不能直接调用自身,即不能递归调用。
2. **编译过程**:C程序源代码文件通常是`.c`格式,经过编译生成`.obj`目标文件,再通过链接器生成可执行的`.exe`文件。只有`.exe`文件可以直接由计算机执行。
3. **输入输出函数`scanf`**:正确使用`scanf`进行输入时,需要使用取址符`&`对变量进行引用,例如`scanf("%f%d", &y, &x)`。题目中的选项A和C有误,B和D没有使用取址符。
4. **数组初始化**:对于二维数组,如`int a[][3]={{1,2,3},{4,5,6}}`,第一维的大小可以通过初始化的元素数量推断。题目中第一维大小为3。
5. **switch语句**:`switch`语句的case子句通常匹配整型或字符型常量,不是字符串。所以选项A非法,选项B和D语法错误,选项C是合法的。
6. **逻辑表达式**:表达式`(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)`能正确表示“x的值在[1,10]和[200,210]范围内”,其他选项均不能同时满足两个条件。
7. **循环结构的区别**:`while`和`do-while`循环的主要区别在于,`do-while`循环至少会执行一次,即使条件一开始就为假,而`while`循环在条件为假时可能一次都不执行。
8. **函数声明**:有效的函数声明应包括返回类型、函数名以及参数列表,如`int thisone(char x)`。其他选项缺少逗号或参数类型。
9. **字符数组**:字符数组`x[]`初始化为字符串时,会自动添加结束符`\0`,因此`x`的长度大于`y`的长度。
10. **二维数组索引**:二维数组的第一个元素的行下标和列下标都是0,即`0, 0`。
**填空题答案**
1. `a, b`的值分别为3, 3。
2. 输出`#$`。
3. `sum`的值等于55(1+2+3+4+5+6+7+8+9+10)。
4. 长度为10的`int`类型数组占用的内存更多,因为`int`通常占4个字节,而`double`占8个字节。
5. 字符数组`a[]`占9个字节(包括结束符`\0`)。
6. 表达式`ch>=,A?&& ch<=,Z?`的值取决于`ch`的值,如果是小写字母,则为1,否则为0。
7. 交换`a, b`的值的C语句可以是`temp = a; a = b; b = temp;`。
8. 包含命令`#include <stdio.h>`。
9. 使用`for`语句`for(i=0; i<5; i++) numbers[i]-=3;`。
10. 输出`4`,因为`max(2, 3)`返回3,`max(3, 4)`返回4。
**程序运行结果**
1. 输出小写字母`d`,因为`'A'`加32等于`'a'`,ASCII码上相差32。
2. 输出`x=3,y=1`,因为`x`大于0,所以`y`被赋值为1。
3. 这段代码缺少完整内容,无法给出准确结果,但通常`f1`会被赋值为`1`,`f2`会根据`x`的值赋值`1`、`0`或`-1`。