### C语言经典习题解析 #### 一、填空题解析 1. **题目解析**: - **原题**:i为int型变量,且初值是3,有表达式i++(3,则该表达式的值是0,变量i的值是4。 - **分析**:这里表达式`i++(3)`实际上应该是`i++ == 3`。`i++`是后置递增操作符,意味着先返回i的当前值,然后再将i的值加1。因为i的初始值是3,所以表达式的值是`3 == 3`,即真(1)。之后,i的值变为4。因此,正确答案应该是表达式的值是1,变量i的值是4。 2. **题目解析**: - **原题**:i为int型变量,且初值是2,有表达式++i(3),则该表达式的值是0,变量i的值是3。 - **分析**:这里表达式`++i(3)`实际上应该是`++i == 3`。`++i`是前置递增操作符,意味着先将i的值加1,然后返回新的值。因为i的初始值是2,所以表达式的值是`3 == 3`,即真(1)。之后,i的值变为3。因此,正确答案应该是表达式的值是1,变量i的值是3。 3. **题目解析**: - **原题**:i为int型变量,且初值是3,有表达式i=i+=i(5),则该表达式的值是18,变量i的值是18。 - **分析**:这里表达式`i=i+=i(5)`实际上应该是`i = i += i * 5`。首先计算右边的`i * 5`得到15,然后执行`i += 15`。这里的i原本是3,加上15后i变为18,同时表达式的值也是18。因此,表达式的值和变量i的值都是18。 4. **题目解析**: - **原题**:i为int型变量,且初值是3,有表达式i=(a=5,b=10)+(i+=b,b+=a),则该表达式的值是25,变量i,a,b的值分别是25,5,15。 - **分析**:这里表达式`i=(a=5,b=10)+(i+=b,b+=a)`可以分步骤理解: - `a=5`:a的值变为5; - `b=10`:b的值变为10; - `(i+=b,b+=a)`:首先`b+=a`,b的值变为15;然后`i+=b`,i的值由3变为18。因此,整个表达式的值是`10 + 15 = 25`。最终,i的值是25,a的值是5,b的值是15。 5. **题目解析**: - **原题**:i为int型变量,且初值是3,有表达式i=(i+=i,i(=i),i(10,i%4,则该表达式的值是0,变量i的值是36。 - **分析**:这里表达式`i=(i+=i,i(=i),i(10,i%4)`实际上应该是`i=(i+=i, i==i, i==10, i%4)`。这个表达式包含了逗号操作符,按照从左到右的顺序依次执行: - `i+=i`:i的值由3变为6; - `i==i`:表达式的值为1; - `i==10`:表达式的值为0; - `i%4`:表达式的值为2。 整个表达式的值是最后一个操作的结果,即2。但是,题目中的“该表达式的值是0”这一部分不准确。根据题目描述,i的最终值是36,这显然是错误的。正确答案应该是表达式的值为2,变量i的值为6。 6. **题目解析**: - **原题**:说明变量为双精度的关键字是double。 - **分析**:正确。在C语言中,`double`关键字用于声明双精度浮点型变量。 7. **题目解析**: - **原题**:在TurboC中,整型数据的表示形式有3种。 - **分析**:在TurboC中,整型数据确实可以通过多种类型表示,例如`int`、`short int`、`long int`等。但题目中的“3种”没有具体指明是哪三种,通常情况下,整型数据的常见类型包括`int`、`short`和`long`。 #### 二、选择题解析 1. **题目解析**: - **原题**:若a,b,c,d都是int型变量且初值均为10,不正确的赋值语句是(C)。 - **分析**:选项C中的`a+b++;`不正确,因为它试图将一个表达式赋值给一个变量,而实际上这是一个无效的表达式。 2. **题目解析**: - **原题**:若a,b,c,d都是float型变量且初值为10.95,不正确的赋值语句是(B)。 - **分析**:选项B中的`d=int(a+c);`不正确,因为`int()`函数不能直接用于赋值语句中,它应该作为表达式的一部分使用。 3. **题目解析**: - **原题**:若a,b,c均为int型变量且有值,要交换变量a和b的值,正确的语句组是(C)。 - **分析**:选项C正确地实现了变量a和b之间的值交换。`c=a;a=b;b=c;`是一个经典的值交换方法。 4. **题目解析**: - **原题**:若a,b均为int型变量,x,y均为float型变量,正确的输入函数是(B)。 - **分析**:选项B中的`scanf("%d%f",&a,&x);`正确。`%d`用于读取整数,`%f`用于读取浮点数,并且变量前需要使用地址运算符`&`。 5. **题目解析**: - **原题**:若x,y均为double型变量,正确的输入函数是(C)。 - **分析**:选项C中的`scanf("%lf%lf",&x,&y);`正确。`%lf`用于读取双精度浮点数。 6. **题目解析**: - **原题**:若x为char型变量,y为int型变量,x,y均有值,正确的输出函数是(A)。 - **分析**:选项A中的`printf("%c%c",x,y);`正确。`%c`用于输出字符,即使y是整型,也可以将其视为ASCII码对应的字符输出。 7. **题目解析**: - **原题**:若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数是(D)。 - **分析**:选项D中的`printf("%d%d",x,y);`正确。`%d`用于输出整数。 8. **题目解析**: - **原题**:x为int型变量,且值为2345,不正确的输出函数是(D)。 - **分析**:选项D中的`printf("%s",x);`不正确,因为`%s`是用来输出字符串的,而不是整数。 #### 习题二:程序运行结果解析 1. **题目解析**: - **原题**:下面程序的运行结果是(D)。 - **程序**: ```c main() { int a, b; a = 23; b = 87; printf("%d%d\n", a, b); } ``` - **分析**:输出`2387`,选项D正确。 2. **题目解析**: - **原题**:下面程序的运行结果是(B)。 - **程序**: ```c main() { float x, y; x = 12.34; y = 0.00045; printf("%f,%f", x, y); } ``` - **分析**:输出`12.340000,0.000450`,选项B正确。 3. **题目解析**: - **原题**:下面程序的运行结果是(A)。 - **程序**: ```c main() { int h = 34, k = 56; printf("h=%d\nk=%d\n", h, k); } ``` - **分析**:输出`h=34\nk=56`,选项A正确。 4. **题目解析**: - **原题**:下面程序的运行结果是(B)。 - **程序**: ```c main() { float x = 12.34567, y = 345.2354; printf("x=%5.3f,y=%5.3f", x, y); } ``` - **分析**:输出`x=12.346,y=345.235`,选项B正确。 5. **题目解析**: - **原题**:下面程序的运行结果是(C)。 - **程序**: ```c main() { unsigned short s = (3, w = 5; printf("%u,%u,%d,%d", s, w, s, w); } ``` - **分析**:注意这里存在语法错误,应该是`unsigned short s = 3, w = 5;`。输出`65533,5,3,5`,选项C正确。 6. **题目解析**: - **原题**:运行下面程序时若从键盘输入:123456789(输出结果是(A)。 - **程序**: ```c main() { int a, b, c; scanf("%3d%3d%3d", &a, &b, &c); printf("a=%d,b=%d,c=%d\n", a, b, c); } ``` - **分析**:输入`123456789`,则`a=123`, `b=456`, `c=789`。输出`a=123,b=456,c=789`,选项A正确。 以上是对给定的C语言经典习题进行了详细的解析,包括了填空题和选择题的解析以及程序运行结果的解析。这些习题涵盖了C语言的基础语法和编程技巧,对于初学者来说是非常好的练习材料。
剩余39页未读,继续阅读
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助