内容正文:
专题三 运算符、表达式和语句
一:单选题
1:以下变量均已正确定义并赋值,以下合法的赋值语句是 ( )
A.x=y>6 B.x=y%6.2; C.4=k+6; D.y=z-2;
【答案】D
【解析】x=y>6 是一个关系表达式,缺少分号,不是赋值语句。模运算的结果赋值给 x,但模运算的右侧必须是整数,不能是浮点数。常量不能作为赋值的目标。
2:若有定义 int x=6,y=3,z=9;则表达式(x=y)+z-2*y+z%x 的值是 ( )
A.0 B.1 C.6 D.9
【答案】C
【解析】赋值运算符 = 的优先级最高,所以首先执行 x=y,由于 y 的值是 3,所以 x 也变为 3。然后是乘法 2*y,由于 y 是 3,所以 2*y 的结果是 6。接下来是求模运算符 %,z%x 即 9%3 的结果是 0。现在,表达式变为 (x)+z-2*y+(z%x),即 3+9-6+0。最后,按照从左到右的顺序执行加法和减法。
3:设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是( )
A.3 B.0 C.9 D.-12
【答案】B
【解析】a*=a:这里 a 的初始值是 3,所以 a 乘以自己就是 3*3=9。此时 a 的值变为 9。
a-=a:此时 a 是 9,a-=a 就是 9-9,所以 a 的值变为 0。a+=a:此时 a 是 0,a+=a 就是 0+0,所以 a 的值保持为 0。因此,执行了语句 a+=a-=a*=a; 后,变量 a 的值是 0。
4:若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是( )
A.1 B.2 C.2.0 D.2.5
【答案】B
【解析】当进行整数除法时,结果会自动截断为整数部分。由于 3/2 是整数除法(因为两个操作数都是整数),其结果为 1(而不是 1.5)。所以,表达式 x=1, y=x+3/2 的计算过程如下:x=1:将 x 赋值为 1。y=x+3/2:此时 x 是 1,3/2 是整数除法,结果为 1,所以 y 被赋值为 1+1=2。
5:以下运算符中,结合性与其他运算符不同的是( )
A.++ B.% C.+ D.-
【答案】A
【解析】后缀递增运算符 ++具有右结合性,选项其他的运算符均具有左结合性。
6:算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为 ( )
A.算术运算、赋值运算、关系运算 B.关系运算、赋值运算、算术运算
C.算术运算、关系运算、赋值运算 D.关系运算、算术运算、赋值运算
【答案】C
【解析】C语言中,算术运算符、赋值运算符和关系运算符的运算优先级从高到低依次为:
算术运算符(如 +, -, *, /)
关系运算符(如 >, <, ==, !=, >=, <=)
赋值运算符(如 =, +=, -=, *=, /=)
二:分析题
假设所有变量的类型都是int,下列各项变量的值是多少?
1:x = ( 4 + 3 ) * 2;
【答案】14
2:y = x = ( 7 + 9 )/ 2 * 5;
【答案】y和x的值均为40
3:x = 22.0 * 3 / 5;
【答案】13
下列程序将打印出什么内容?
4:#include <stdio.h>
#define FORMAT "Please input!
"
int main() {
int num = 10;
printf(FORMAT);
printf("%d
", ++num);
printf("%d
", num++);
printf("%d
", num--);
printf("%d
", num);
return 0;
}
【答案】
Please input!
11
11
12
11
5:编写语句,完成对应的任务
a与b之积除以c和d的和,并将结果赋给x
【答案】x = a * b / (c + d);
6:编写语句,完成对应的任务
q除以b减去a的差,并将结果赋给p
【答案】p = q/(b - a);
7:下列程序的输出结果是( )
void main(){
int a = 7,b = 5;
printf(“%d
”,b = b % a);
}
A.0 B.1 C.5 D.不确定
【答案】C
8:已知x = 4.5,y = 2.5,求表达式(x + y)/2 + (int)y % (int)x的值是( )
A.3 B.5 C.3.5 D.5.5
【答案】D
三:编程题
1:编写一个程序,提示用户输入天数,然后转换成周数和天数。例如,用户输入18,则转换成2周4天。
【答案】
#include <stdio.h>
int main() {
int days;
printf("请输入天数:");
scanf("%d", &days); // 读取用户输入的天数
// 计算周数和剩余天数
int weeks = days / 7; // 整除得到周数
int remaining_days = days % 7; // 取模得到剩余天数
// 输出结果
printf("%d天等于%d周和%d天
", days, weeks, remaining_days);
return 0;
}
2:编写一个程序,提示用户输入一个double类型的数,并打印该数的立方值(采用数学函数pow())
【答案】
#include <stdio.h>
#include <math.h>
int main() {
double num;
printf("请输入一个double类型的数:");
scanf("%lf", &num); // 读取用户输入的double类型数
// 使用pow函数计算立方值,pow(base, exponent),这里底数是num,指数是3
double cube = pow(num, 3);
// 输出立方值
printf("%lf 的立方是 %lf
", num, cube);
return 0;
}
学科网(北京)股份有限公司
$$
专题三 运算符、表达式和语句
一:单选题
1:以下变量均已正确定义并赋值,以下合法的赋值语句是 ( )
A.x=y>6 B.x=y%6.2; C.4=k+6; D.y=z-2;
2:若有定义 int x=6,y=3,z=9;则表达式(x=y)+z-2*y+z%x 的值是 ( )
A.0 B.1 C.6 D.9
3:设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是( )
A.3 B.0 C.9 D.-12
4:若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是( )
A.1 B.2 C.2.0 D.2.5
5:以下运算符中,结合性与其他运算符不同的是( )
A.++ B.% C.+ D.-
6:算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为 ( )
A.算术运算、赋值运算、关系运算 B.关系运算、赋值运算、算术运算
C.算术运算、关系运算、赋值运算 D.关系运算、算术运算、赋值运算
二:分析题
假设所有变量的类型都是int,下列各项变量的值是多少?
1:x = ( 4 + 3 ) * 2;
2:y = x = ( 7 + 9 )/ 2 * 5;
3:x = 22.0 * 3 / 5;
下列程序将打印出什么内容?
4:#include <stdio.h>
#define FORMAT "Please input!
"
int main() {
int num = 10;
printf(FORMAT);
printf("%d
", ++num);
printf("%d
", num++);
printf("%d
", num--);
printf("%d
", num);
return 0;
}
5:编写语句,完成对应的任务
a与b之积除以c和d的和,并将结果赋给x
6:编写语句,完成对应的任务
q除以b减去a的差,并将结果赋给p
7:下列程序的输出结果是( )
void main(){
int a = 7,b = 5;
printf(“%d
”,b = b % a);
}
A.0 B.1 C.5 D.不确定
8:已知x = 4.5,y = 2.5,求表达式(x + y)/2 + (int)y % (int)x的值是( )
A.3 B.5 C.3.5 D.5.5
三:编程题
1:编写一个程序,提示用户输入天数,然后转换成周数和天数。例如,用户输入18,则转换成2周4天。
2:编写一个程序,提示用户输入一个double类型的数,并打印该数的立方值(采用数学函数pow())
学科网(北京)股份有限公司
$$