内容正文:
专题三 运算符、表达式和常见函数
(一)单项选择题
1. 以下运算符优先级最高的是( )
A. &&
B. +
C. !=
D. =
答案:B
解析:算术运算符(+)优先级高于关系运算符(!=)、逻辑运算符(&&)和赋值运算符(=)。
2.表达式 5 + 3 * 2 % 4 的值是( )
A. 5
B. 7
C. 11
D. 12
答案:B
3.以下代码的输出是( )
int a = 5, b = 2;
printf("%d", a++ * --b);
A. 10
B. 5
C. 4
D. 6
答案:B
解析:--b先减为1,a++取原值5,5*1=5,之后a变为6。
4.表达式 !0 + 5 && 2 的值是( )
A. 0
B. 1
C. 2
D. 7
答案:B
解析:!0=1,1+5=6(非零为真),6 && 2(真 && 真)结果为1。
5.以下代码的输出是( )
printf("%.1f", (int)3.8 + 0.5);
A. 3.5
B. 4.0
C. 4.3
D. 3.0
答案:A
解析:(int)3.8=3,3 + 0.5=3.5,输出3.5。
6.以下代码的输出是( )
int a = 3, b = 4;
printf("%d", a = b);
A. 3
B. 4
C. 0
D. 1
答案:B
解析:赋值表达式返回左值,a = b后a为4,输出4。
7.以下选项中,能正确输出字符串前3个字符的是( )
A. printf("%.3s", "hello");
B. printf("%3s", "hello");
C. printf("%*s", 3, "hello");
D. printf("%3.0s", "hello");
答案:A
解析:%.3s表示截取前3个字符;%3s是最小宽度3,不足补空格。
8.以下代码的输出是( )
printf("%d", 7 / 2 * 2 == 7);
A. 0
B. 1
C. 7
D. 10
答案:A
解析:7/2=3,3*2=6,6 == 7为假,输出0。
9.以下代码的输出是( )
int a = 5;
printf("%d", !a + !!a);
A. 0
B. 1
C. 2
D. 5
答案:B
解析:!a=0,!!a=1,0+1=1。
10.以下输入语句正确的是( )
A. scanf("%d", a);
B. scanf("%d", &5);
C. scanf("%d", &a);
D. scanf("%d", int a);
答案:C
解析:必须传递变量地址(C正确),A缺&,B和D语法错误。
11.以下代码的输出是( )
printf("%d", sizeof(3.14f));
A. 4
B. 8
C. 6
D. 2
答案:A
解析:3.14f是float类型,占4字节。
12.以下代码的输出是( )
printf("%c", 65 + 2);
A. A
B. B
C. C
D. 67
答案:C
解析:ASCII码中65是'A',加2后67是'C'。
13.以下代码的输出是( )
int a = 10;
printf("%d %d", a, a++);
A. 10 10
B. 11 10
C. 10 11
D. 11 11
答案:B
14.以下代码的输出是( )
printf("%d", 1 << 2 + 3);
A. 32
B. 16
C. 12
D. 7
答案:A
解析:+优先级高于<<,等价于1 << (2+3) = 1<<5 = 32。
(二)判断题
1. scanf("%d,%d", &a, &b); 可以正确读取输入 5 6。( )
答案:×
2.printf("%%d"); 会输出 %d。( )
答案:√
3.getchar() 函数可以读取包含空格的字符串。( )
答案:×
4.printf("%5.2f", 3.1415); 的输出为 3.14。( )
答案:√
5.表达式 a = b = c = 5; 是合法的。( )
答案:√
6.scanf 的格式控制字符串中可以使用
。( )
答案:×
7.int a = 3; printf("%d", a++); 的输出为4。( )
答案:×
8.printf("%d", sizeof(5.0)); 的输出为8。( )
答案:√
9.逻辑表达式 0 && (a = 5); 执行后,a的值仍为原值。( )
答案:√
10 .printf("%d", 10 % 3.5); 是合法的表达式。( )
答案:×
(三)填空题
1. 表达式 (5 > 3) ? 10 : 20 的值是______。
答案:10
2.用scanf读取一个整数并存入变量x,语句为:______。
答案:scanf("%d", &x);
3.以下代码的输出是______。
printf("%d", 1 + 2 * 3 / 4);
答案:2
4.输出浮点数3.1415保留两位小数:______。
答案:printf("%.2f", 3.1415);
5.表达式 !!5 + !0 的值是______。
答案:2
(四)应用题
1.补全代码:输入两个整数,计算它们的平方和并输出
#include <stdio.h>
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", ______); // 填空1
int sum = ______; // 填空2(表达式:a² + b²)
printf("平方和为:%d
", sum);
return 0;
}
答案
&a, &b
a*a + b*b
2. 补全代码:判断输入年份是否为闰年
#include <stdio.h>
int main() {
int year;
printf("请输入年份:");
scanf("%d", &year);
int is_leap = (______) ? 1 : 0; // 填空(闰年条件)
printf("%d年是%s闰年
", year, is_leap ? "" : "不");
return 0;
}
答案
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
学科网(北京)股份有限公司
$$
专题三 运算符、表达式和常见函数
(一)单项选择题
1. 以下运算符优先级最高的是( )
A. &&
B. +
C. !=
D. =
2.表达式 5 + 3 * 2 % 4 的值是( )
A. 5
B. 7
C. 11
D. 12
3.以下代码的输出是( )
int a = 5, b = 2;
printf("%d", a++ * --b);
A. 10
B. 5
C. 4
D. 6
4.表达式 !0 + 5 && 2 的值是( )
A. 0
B. 1
C. 2
D. 7
5.以下代码的输出是( )
printf("%.1f", (int)3.8 + 0.5);
A. 3.5
B. 4.0
C. 4.3
D. 3.0
6.以下代码的输出是( )
int a = 3, b = 4;
printf("%d", a = b);
A. 3
B. 4
C. 0
D. 1
7.以下选项中,能正确输出字符串前3个字符的是( )
A. printf("%.3s", "hello");
B. printf("%3s", "hello");
C. printf("%*s", 3, "hello");
D. printf("%3.0s", "hello");
8.以下代码的输出是( )
printf("%d", 7 / 2 * 2 == 7);
A. 0
B. 1
C. 7
D. 10
9.以下代码的输出是( )
int a = 5;
printf("%d", !a + !!a);
A. 0
B. 1
C. 2
D. 5
10.以下输入语句正确的是( )
A. scanf("%d", a);
B. scanf("%d", &5);
C. scanf("%d", &a);
D. scanf("%d", int a);
11.以下代码的输出是( )
printf("%d", sizeof(3.14f));
A. 4
B. 8
C. 6
D. 2
12.以下代码的输出是( )
printf("%c", 65 + 2);
A. A
B. B
C. C
D. 67
13.以下代码的输出是( )
int a = 10;
printf("%d %d", a, a++);
A. 10 10
B. 11 10
C. 10 11
D. 11 11
14.以下代码的输出是( )
printf("%d", 1 << 2 + 3);
A. 32
B. 16
C. 12
D. 7
(二)判断题
1. scanf("%d,%d", &a, &b); 可以正确读取输入 5 6。( )
2.printf("%%d"); 会输出 %d。( )
3.getchar() 函数可以读取包含空格的字符串。( )
4.printf("%5.2f", 3.1415); 的输出为 3.14。( )
5.表达式 a = b = c = 5; 是合法的。( )
6.scanf 的格式控制字符串中可以使用
。( )
7.int a = 3; printf("%d", a++); 的输出为4。( )
8.printf("%d", sizeof(5.0)); 的输出为8。( )
9.逻辑表达式 0 && (a = 5); 执行后,a的值仍为原值。( )
10 .printf("%d", 10 % 3.5); 是合法的表达式。( )
(三)填空题
1. 表达式 (5 > 3) ? 10 : 20 的值是______。
2.用scanf读取一个整数并存入变量x,语句为:______。
3.以下代码的输出是______。
printf("%d", 1 + 2 * 3 / 4);
4.输出浮点数3.1415保留两位小数:______。
5.表达式 !!5 + !0 的值是______。
(四)应用题
1.补全代码:输入两个整数,计算它们的平方和并输出
#include <stdio.h>
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", ______); // 填空1
int sum = ______; // 填空2(表达式:a² + b²)
printf("平方和为:%d
", sum);
return 0;
}
2. 补全代码:判断输入年份是否为闰年
#include <stdio.h>
int main() {
int year;
printf("请输入年份:");
scanf("%d", &year);
int is_leap = (______) ? 1 : 0; // 填空(闰年条件)
printf("%d年是%s闰年
", year, is_leap ? "" : "不");
return 0;
}
学科网(北京)股份有限公司
$$