内容正文:
专题二 赋值语句与格式化输入输出
一:单选题
1:设int a=20;则执行语句a+=a-=a+a;后a的值是( )
A.40 B.-40 C.30 D.-30
2:已知char a;int b;double c;float d;,执行d = a + b + c;后,变量d的数据类型为( )
A.char B.int C.double D.float
3:定义变量k,若变量k为强制转换为int类型的变量,执行的语句是( )
A.int(k); B.k(int) C.(int)k D.(k)int
4:设a,b,c均为 int 类型,执行语句 scanf("a=%d,b=%d,c=%d",&a,&b,&c); ,若要使得a为3,b为4,c为5则以下选项中正确的输入形式是( )
A.a=3 B.3,4,5 C.a=3,b=4,c=5 D.3 4 5
b=4
c=5
5:设float a;double b;int c;char d;执行语句a+b+c+d;,表达式a+b+c+d的值类型为( )
A.float B.double C.int D.char
6:已知 int a,b;用scanf语句输入 a,b 的值时,不能作为输入数据分隔符的是 ( )
A., B.空格 C.回车 D.Tab 键
二:分析题
假设下列示例是完整程序的一部分,它们打印的结果分别是什么?
1:printf("The price he should pay is %3.2f",5.1695);
2:printf("%c%c%c", 'Y', '\0x3E', 83 );
3:#define page 996
printf("*%d*
", page);
printf("*%2d*
", page);
printf("*%9d*
", page);
printf("*%-9d*
", page);
打印下面各项内容要分别使用什么样的转换说明?
4:一个字符宽度为7,左对齐字符串当中的前5个字符
5:一个形如0x8A,字符宽度为6的十六进制整数
6:一个字符宽度为4,保留3位小数的浮点数
7:阅读以下程序的输出结果:
int main() {
int a = 304;
char c;
c = a;
printf("c = %c", c);
}
8:阅读以下程序,当输入为“1,2,3<回车>”,该程序的输出结果:
int main() {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("a = %d,b = %d,c = %d", a, b, c);
}
三:编程题
1:输入一矩形的长和宽,计算该矩形的面积
2:输入三个数,求出三个数的平均值,保留2位小数
学科网(北京)股份有限公司
$$
专题二 赋值语句与格式化输入输出
一:单选题
1:设int a=20;则执行语句a+=a-=a+a;后a的值是( )
A.40 B.-40 C.30 D.-30
【答案】B
【解析】变量a为整型,复合赋值语句的结合为从右向左进行。因此,先计算a+a=20+20=40,执行a-=40,即a=a-40=20-40=-20,此时变量a的值为-20,执行a+=-20,即a=a+(-20)=-40。
2:已知char a;int b;double c;float d;,执行d = a + b + c;后,变量d的数据类型为( )
A.char B.int C.double D.float
【答案】D
【解析】执行表达式a+b+c,因变量c为double类型的变量,所以表达式a+b+c的数据类型为double类型,当“=”左边的变量与右边的表达式数据类型不一致,将右边表达式值的类型转换成与左边变量相同的类型再进行赋值,因此为float类型。
3:定义变量k,若变量k为强制转换为int类型的变量,执行的语句是( )
A.int(k); B.k(int) C.(int)k D.(k)int
【答案】C
【解析】将变量强制转换为对应的类型,格式为(类型)表达式。
4:设a,b,c均为 int 类型,执行语句 scanf("a=%d,b=%d,c=%d",&a,&b,&c); ,若要使得a为3,b为4,c为5则以下选项中正确的输入形式是( )
A.a=3 B.3,4,5 C.a=3,b=4,c=5 D.3 4 5
b=4
c=5
【答案】C
【解析】scanf函数的输入除格式符外,其余的非格式符输入需要与格式字符串一致。因此,需要按照“a=值1,b=值2,c=值3”的形式进行输入。