一、数据类型
1.关于C语言布尔类型错误的是?
- A.C语言布尔类型是_Bool,使用需要包含头文件stdbool.h
- B.布尔类型变量的取值是:true或者false
- C.布尔类型是专门用来表示真和假的类型
- D.布尔类型是C99标准之前就有的
知识点:数据类型中布尔类型
布尔类型是C99标准中引入的;
在早期的C语言标准(如ANSI C和C89)中,没有明确定义布尔类型。通常,程序员使用整数类型(如int)来表示布尔值,其中0表示假(false),非零值表示真(true)。
然而,在C99标准中引入了新的布尔类型(stdbool.h头文件),定义了bool类型和true/false常量。布尔类型只有两个取值:true和false,用于表示真和假。故选择D选项。
2.下面哪个不是C语言内置的数据类型:
- A.char
- B.double
- C.struct Stu
- D.short
知识点:C语言中内置数据类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
struct关键字是用户用来自定义的结构体类型,不属于C语言的内置类型。故选择C选项。
二、变量
3.下面代码输出的结果是:( )
#include <stdio.h>
int num = 10;
int main()
{
int num = 1;
printf("num = %d\n", num);
return 0;
}
- A.程序有问题,不能编译
- B.输出1
- C.输出10
- D.输出0
知识点:变量的分类
1. 全局作用域中的num和main中的num可以同时存在,不会冲突,因为不是同一个作用域;
2. 在main函数中访问num时,采用就近原则。故选择选项B。
4.关于C语言变量说法错误的是?
- A.变量是用来描述生活中经常发生变化的值
- B.变量可以分为局部变量和全局变量
- C.局部变量是放在内存的静态区的,全局变量是放在内存的栈区
- D.当全局变量和局部变量名字相同的情况,且都可以使用的时候,局部变量优先
知识点:变量
局部变量是放在内存的栈区的,全局变量是放在内存的静态区。故选择C选项。
三、操作符
5.关于C语言算术操作符说法正确的是?
- A.除号两边都是小数才能执行小数除法
- B.%操作符的操作数可以是整数,也可以是小数
- C.%操作符计算的结果是两个操作数整除之后的商
- D.负数求模的规则是,结果的正负号由第一个运算数的正负号决定。
知识点:算术操作符
A:除号两边只要有一个是小数,就执行小数除法
B:%操作符的操作数只能是整数
C:%操作符计算的结果是两个操作数整除之后的余数
故选择D选项。
6.下面变量的输出结果是:()
#include <stdio.h>
int main()
{
int a = 7;
int b = 2;
float c = 2.0f;
printf("%d\n", a / b);
printf("%f\n", a / c);
return 0;
}
- A.3 3.500000
- B.3.500000 3.500000
- C.3.500000 3
- D.3 3
知识点:算术操作符
2个整数相除,执行的是整数除法,计算的结果也是整数,a/b 是按照整数除法计算的,结果是3。
除法的2个操作数只要有一个数是浮点数,执行的就是小数除法,所以a/c是按照小数除法计算的,结果就是3.5。%f和%lf默认打印小数点后6位,故结果为3.500000。故选择A选项。
7.下面代码的结果是:( )
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;
b = ++c, c++, ++a, a++;
b += a++ + c;
printf("a = %d b = %d c = %d\n:", a, b, c);
return 0;
}
- A.a = 8 b = 23 c = 8
- B.a = 9 b= 23 c = 8
- C.a = 9 b = 25 c = 8
- D.a = 9 b = 24 c = 8
知识点:算术操作符
++运算符:分为前置++和后置++,
前置++:先加1,后使用,即先使用变量中内容,然后给结果加1
后置++:先使用变量中内容,整个表达式结束时,给变量加1
由下列注释选择B选项。
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;
//a = 6、c = 6
b = ++c, c++, ++a, a++;
//b = ++c和后边的整体构成逗号表达式,依次从左向右计算的。
//c = 7、b = 7
//c = 8、a = 8
b += a++ + c;
//b = 8 + 8 + 7 = 23、a = 9
printf("a = %d b = %d c = %d\n:", a, b, c);
//a:9, b:23, c:8
return 0;
}