目录
1.C语言的结构
2.三种循环结构
3.逻辑真假判断
4. printf函数
5. 强制类型转化
6. 多分支选择结构
7. 标识符的定义
8. 三目运算符
1.C语言的结构
选择结构、顺序结构、循环结构
2.三种循环结构
for、while、do-while
3.逻辑真假判断
C语言用0表示false,用非0(不止1)表示true
0不能用来表示“真”
①下边的表达式哪个满足:-10<=x<=10,和100<=x<=110时值为“真”,否则为“假”( B )
A. ((10>x)&&(x>-10))||(100>x-100)
B. !((x<-10)||(x>10))||!((x<100)||(x>110))
C. (x<10)&&(x>-10)&&(x>100)&&(x<110)
D. (x>-10)&&(x<10)||(x<110)&&(x>100)
选项 A
- 分析逻辑表达式:
((10>x)&&(x>-10))||(100>x-100)
,后半部分100>x-100
可化简为200 > x
,这个表达式主要判断的是x
小于10
且大于-10
或者x
小于200
,并不能准确实现题目要求的-10<=x<=10
和100<=x<=110
这两个区间判断,存在多余的取值范围情况,所以不符合题意。选项 B
- 分析逻辑表达式:
!((x<-10)||(x>10))||!((x<100)||(x>110))
,!((x<-10)||(x>10))
等价于(x >= -10) && (x <= 10)
,!((x<100)||(x>110))
等价于(x >= 100) && (x <= 110)
,整体表示x
在-10
到10
这个区间或者x
在100
到110
这个区间时表达式为真,刚好满足题目要求的条件,符合题意。选项 C
- 分析逻辑表达式:
(x<10)&&(x>-10)&&(x>100)&&(x<110)
,按照逻辑与运算规则,要求x
同时满足小于10
、大于-10
、大于100
和小于110
,这是不可能同时满足的条件,所以不符合题意。选项 D
- 分析逻辑表达式:
(x>-10)&&(x<10)||(x<110)&&(x>100)
,前半部分表示x
在-10
到10
区间,后半部分表示x
在100
到110
区间,但该表达式在x
取值稍微超出这两个区间一点时也可能为真(比如x = 11
时后半部分就为真了),不能精准符合题目要求,所以不符合题意。综上,答案是 B 选项。
②下边的表达式哪个满足:当x和y的值都大于0,小于n时值为“真”,否则为“假”( D )
A. (x>0)&&(y>0)&&(x<n)&&(y<n)
B. (x<n)&&(y<n)&&x&&y
C. !(x<=0)||(y<=0)||(y>=n)||(x>=n)
D. !(x<=0)&&!(y<=0)&&!(y>=n)&&!(x>=n)
选项 A
- 分析逻辑表达式:
(x>0)&&(y>0)&&(x<n)&&(y<n)
,这个表达式要求x
既要大于0
又要小于n
,同时y
也要既大于0
又要小于n
,是x
和y
各自都要同时满足大于0
且小于n
的条件,而题目要求的是x
和y
的值整体满足大于0
、小于n
即可,并非各自都要同时满足,所以该选项不符合题意。选项 B
- 分析逻辑表达式:
(x<n)&&(y<n)&&x&&y
,表达式中的x&&y
部分只是简单判断x
和y
不为0
,而前面(x<n)&&(y<n)
也只是分别判断x
和y
小于n
,无法准确体现出x
和y
都要在0
到n
这个区间内的要求,所以不符合题意。选项 C
- 分析逻辑表达式:
!(x<=0)||(y<=0)||(y>=n)||(x>=n)
,根据逻辑或运算的规则,只要其中一个子表达式为真,整个表达式就为真。该表达式只要x
或者y
出现小于等于0
、大于等于n
这些不符合要求的情况之一,表达式就为真了,与题目要求的当不符合条件时表达式为假不符,所以不符合题意。选项 D
- 分析逻辑表达式:
!(x<=0)&&!(y<=0)&&!(y>=n)&&!(x>=n)
,!(x<=0)
等价于x > 0
,!(y<=0)
等价于y > 0
,!(y>=n)
等价于y < n
,!(x>=n)
等价于x < n
,整体就是要求x
大于0
且小于n
,同时y
也要大于0
且小于n
,正好符合当x
和y
的值都大于0
、小于n
时值为 “真”,否则为 “假” 的要求,所以符合题意。综上,答案是 D 选项。
4. printf函数
如:printf ("%d",3>2>1)
在 C 语言(以及很多遵循类似语法规则的编程语言中),关系运算符(如
>
)的结合性是从左到右依次进行运算的。首先计算
3>2
,这个比较的结果是1
(在 C 语言中,关系表达式成立时返回值为1
,表示逻辑真;不成立时返回0
,表示逻辑假)。然后用这个结果
1
再去和1
进行>
比较,也就是计算1>1
,该比较的结果是0
(因为1
并不大于1
,关系表达式不成立)。如:printf ("%d\n”,034)
在 C 语言(以及一些相关的编程语言中),以
0
开头的数字常量表示八进制数。所以这里的034
实际上是一个八进制数。要计算八进制数
034
对应的十进制数值,可以使用按权展开的方法。八进制数从右到左每位的权值依次是8^0
、8^1
、8^2
……对于八进制数
034
,其转换为十进制数的计算过程如下:
5. 强制类型转化
①float x = 3.1415926;输出语句printf (“%6d”,(int)x);
运行的输出结果是:3
②计算题
int a=3,b=4; float x=3.5,y=2.5;
则表达式 (float)(a+b)/2 + (int)x%(int)y 的值为:4.5
6. 多分支选择结构
①嵌套的if语句
②switch语句,case后只能为常量和常量表达式
7. 标识符的定义
不能使用关键字
- 不能与 C 语言的关键字相同,如
int
、float
、if
、else
、while
等都是关键字,不能用作用户定义的标识符。合法字符组成
- 只能由字母(包括大写和小写)、数字和下划线
_
组成。- 标识符的第一个字符必须是字母或下划线,不能是数字。
8. 三目运算符
①x=1,y=3 x=y>2?6:5
这里的结果为x=6
思路:首先计算
y > 2
这个条件表达式的值
- 如果
y
的值大于2
,那么y > 2
的结果为真(在 C 语言中就是值为1
),此时整个三元条件表达式y > 2? 6 : 5
的值就为6
,然后再将这个值6
赋给变量x
,即x
的值最终变为6
。- 如果
y
的值小于等于2
,那么y > 2
的结果为假(值为0
),此时整个三元条件表达式y > 2? 6 : 5
的值就为5
,然后再将这个值5
赋给变量x
,即x
的值最终变为5
。②表达式x>0?1:(x<0?-1:0)在x>0时的结果是:
对于表达式
x>0?1:(x<0?-1:0)
,首先判断最外层的条件x>0
。已知当前情况是
x>0
,根据三元条件运算符的运算规则,当x>0
这个条件成立(也就是为真)时,整个表达式x>0?1:(x<0?-1:0)
的值就取1
,而不会再去管后面嵌套部分(x<0?-1:0)
的情况了。所以,表达式
x>0?1:(x<0?-1:0)
在x>0
时的结果是1
。