-
页眉内容
1
)变量为什么必须初始化
所谓初始化就是赋值的意思。
2
)常量在
C
语言中是如何表示
整数:
十进制:
传统写法
例:
int a = 123;
十六进制:
前面加
< br>0X
(
0
是数字零,
X
可以大小写)
八进制:
前面加
0
(
0
是数字零)
浮点数:
传统写法
例:
float
a = 3.2;
科学计数法
例:
float a = 3.2e3;
或
float a = 3.2e-
2
;
(
e
表示
为
10
)
浮点数的存储所带来的问题
Float
和
double
都不能保证可以精确的存储一个小数。
字符:
单个字符用单引号括起来;字符串用双引号括起来
例:
‘
A<
/p>
’表示字符
A.
(注意:
‘
AB
’是错误的,正确写法“
AB
”
。
)
“
A
”是正
确的,因为“
A
”代表了‘
A
’
‘
0
’的组合(
p>
0
是数字)
<
/p>
3
)常量以什么样的二进制代码存储在计算机中
< br>
整数是以补码的形式转化为二进制代码存储在计算机的
实数是
以
IEEE754
标准转化为二进制代码存储在计算机的
字符的本质实质也是与整数的存储方式相同
4
)什么是字节
字节就
是存储数据的单位,并且是硬件所能访问的最小单位。
(一个字节
=
8
个位)
5
)什么是
ASCII
ASC
II
不是一个值,而是一种规定。
ASCII
< br>规定了不同的字符是使用哪个整数值去表示。
‘
A
’
——
65
;
‘
B
’
——
66
;
‘
a
’——
97
;
‘
b
’
——
98
;
‘
0
’
——
48
(
0
是数字)
6
)运算符
算术运算符
+
—
*
/
(除)
%
(取余)
除法
/
的
运算结果和运算对象的数据类型有关,两个数都是
int
,则商
就是
int
,若商有
p>
小数,
则截取小数部分;
被除数和除数中只
要有一个或两个都是浮点型数据,
则则商也是浮
点型,不截取截取小数部分。
例:
16 / 3 == 5
;
16 / 5.0
==3.20000
;
16.0 /
5 == 3.20000
3 / 5 == 0;
5 / 3 == 1
取余
%
的
运算对象必须是整数,结果是整除后的余数,其余数的符号和被除数相同。
例:
13 % 3 == 1;
13 %
—
3 =
1
;
—
13
% 3 ==
—
1
;
—
13 %
—
3 ==
—
1
页
脚内容
页眉内容
关系运算符
>
>=
<
<=
!=
=
逻辑运算符
!
(不等于)
&&
(并且)
||
(或)
&&
左边的表达式为假,右边的表达式肯定不执行
| |
左边的表达式为真,右边的表达式肯定不执行
赋值运算符
=
*=
(
a *=
3
等价于
a = a *
3
)
优先级别
算术
>
关系
>
逻辑
>
赋值
三目运算符
A
?
B
:
C
等价于
if
(
A
)
B
;
else
C
;
逗号表达式
(
A
,
p>
B
,
C
,
D
)
功能:从左到右执行,最终表达式的值是最后一项的值
7
)如何使用
scanf
编写出高质量代码
1.
使
用
scanf
之前最好先使用
prin
tf
提示用户以什么样的方式输入
p>
如:
printf(
请输入两个值(中间用
空格分隔)
:n
scanf(
printf(
2.
Scanf
中尽量不要使用非输入控制符,尤其不要
n
Scanf
(
“
p>
%c
”
,
ch)<
/p>
;
/ /
%c
前面必须加一个空格
3.
应该编写代码对用户的非法输入做适当的处理
如:
char ch;
While ( ( ch = getchar( ) )
!
=
‘
n
’
)
Continue;
例:
# include
int main(void)
{
int
a;
int b;
char ch;
scanf(
printf(
while ( (ch = getchar()) != 'n' )
continue;
scanf(
printf(
页
脚内容
页眉内容
return 0;
}
8
)
if
的范围问题
1. If
(表达式)
语句
A;
语句
B;
If
默认只控制语句
A
的执行或不执行,
if
无
法控制语句
B
。
2.
If
(表达式)
{
语句
A;
语句
B;
}
此时
if
可
以控制语句
A
和语句
B
由上可知:
if
默认只能控制一个语句,如果想控制
多个语句,就必须把这些语句用
{}
括起来
9
)
if
的常见问题解释
1.
空语句的问题
If ( a >
b)
;
等价于
If ( a > b
;
/ /
这是一个空语句
2. If ( a >
b)
;
/ /
这里不应该加分号
A
;
else
B
;
这是错误的语句
3.
If
(表达式
1
)
A
;
Else if
(表达式
2
)
B
;
Else if
(表达式
3
)
C
;
Else
D
;
p>
即便表达式
1
和
2
都成立,也只会执行
A
语句
4.
If
(表达式
1
)
A
;
Else if
(表达式
2
)
B
;
Else if
(表达式
3
)
C
;
这样写法不会出错,但逻辑上有漏洞
页
脚内容
页眉内容
5.
If
(表达式
1
)
A
;
Else if
(表达式
2
)
B
;
Else if
(表达式
3
)
C
;
Else
(表达式
4
)
/ /
正确写法要么去掉表达式
4
,要么在
else
后面加
if
D
;
这样写是错误的
6.
If
(表达式
1
)
A
;
Else if
(表达式
2
)
B
;
Else if
(表达式
3
)
C
;
Else
(表达式
4
)
;
/ /
无实际意义的语句
D
;
这样写法不会出错,但逻辑上有漏洞
Else
(表达式
4
)
;
/ /
无实际意义的语句
D
;
等价于
Else
(表达
式
4
)
;
D
;
10
)前自增和后自增的异同
相同
<
/p>
最终结果
i
的值加
1
不同
前自增整体表达式的值是
i
加
1
之后的值
后自增整体表达式的值是
i
加
1
之前的值
11
)
for
和
while
可
以相互转换
For ( 1;
2;
3)
A
;
等价于
1
;
While ( 2 )
{
A
;
3
;
}
12
)
do
……
while
格式:
do
页
脚内容
页眉内容
{
……
} while
(表达式)
;
do
……
while
不等价于
for
和
while
主要用于人机交流
例:
#
include
int
main(void)
{
char ch;
do
{
int n;
int i = 0;
int sum = 0;
pri
ntf(
请输入你要求和的数:
scanf(
for
(i; i < n; ++i)
sum +=i;
printf(
pri
ntf(
你想继续吗?继续请输入
Y
或
y
,退出请输入任意键
n
scanf(
/ /
%c
前面必须加一个空格
} while (ch == 'Y' || ch == 'y');
return 0;
}
13
)
switch
语句
例:
# include
int main(void)
{
int num;
printf(
请选择你的楼层数
:
scanf(
switch (num)
页
脚内容
页眉内容
{
case 1:
printf(
< br>第一层到!
n
break;
case 2:
printf(
< br>第二层到!
n
break;
case 3:
printf(
< br>第三层到!
n
break;
case 4:
printf(
< br>第四层到!
n
break;
default:
printf(
< br>还没有盖到这一层!
n
break;
}
return 0;
}
Swi
tch
是选择不是循环,如果在
switch
< br>中出现了
break
语句。该语句的功能只是退出
switch
语句转去执行它下面的语句。在
switch
中出现
continue
是错误的,除非
switch
本身属于
for
或
while
循环的一部分。
14
)
break
和
continue
Break
的用法
Break
如果用于循环是用来终止循环
Break
如果用于
switch
p>
,则是用于终止
switch
Break
不能直接用于
if
,除非
if
属于循环
内部的一个字句
例:
for (i = 0; i < 3; ++i)
{
if (3 > 2)
break; // break
虽然是
if
内部的语句,但
break
终止
的是
if
外部的
for
循
环
printf (
哈哈!
n
永远不会输出
}
p>
在多层
switch
嵌套中,
break
只能终止距离它最近的那个
switch
在多层循环中,
break
只能终止距离它最近的那个循环
页
脚内容
页眉内容
例:
for (i = 0; i <
3; ++i)
{
for (j = 1; j <
4; ++j) / /
被
break
终止了
break; / /
break
只能终止距离它最近的那个循环
printf
(
哈哈!
n
}
Continue
的用法
用于跳过本次循环余下的语句,转去判断是否需要执行下次循环
例:
For ( 1;
2;
3)
{
A;
B;
Continue; / /
如果执行该语句,则执行完该语
句后,会执行语句
3
,
C
和
D
都会被
跳过去,
C
和
D
不会被执行。
< br>
C;
D;
}
15
)数组
一维数组
怎样定义一个一维数组
为
n
个变量
连续分配存储空间
所有的变量数据类型必须相同
所有变量所占的字节大小必须相等
不初始化,所有元素是垃圾值
int a [5]
错误写法:
int a [5]
a [5] = {1
,
2, 3
p>
,
4
,
5}
;
只有在定义数组的同时才可以整体赋值,否则,是错误的。
正确写法:
int a [5] =
{1
,
2, 3
,
4
,
5}
;
int a [5] =
{1
,
2, 3
,
4
,
5}
;
int a [5] =
100
;
/ /
错误,因为没有
int a
[5]
这个元素
int a [5] = {1
,
2,
3
,
4
,
5}
;
int a [b]
;
页
脚内容
页眉内容
如果要把
< br>a
数组中的值全部赋值给
b
数组
错误写法:
b =
a
;
正确写法:
For ( i = 0; i < 5; ++i )
b[i] = a[i]
;
二维数组
int a[3][4];
总过有
12
个元素,可以看做
3
行
4
列。这
12
个元素如下:
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
a[1][1]
a[1][2]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]
初始化
int
a[3][4] = {1
,
2
,
p>
3
,
4
,
5, 6,
7
,
8
,
9,
10
,
11,12}
;
int a[3][4] = {
{1
,<
/p>
2
,
3
,
4}
,
{5, 6, 7
,
8
,
}
,
{9,
10
,
11,12}
}
;
输出数组元素:
For (i = 0; i < 3; ++i)
{
For ( j = 0; j < 4; ++j)
Printf
(
“
%d
”
,
a[i][j])
;
}
多维数组
是否存在多维数组
不存在,因为内存是线性一维的
n
维维数可以当做每个元素是
n
—
1
维数组的一维数组
如:
int a[3][4]
;
该数组是含有
3
个元素的一维数组,
只不过每个元素都可以再分为
4
p>
个小元素
int a[3][4][
5]
;
该数组是含有
3
个元素的一维数组,
只不过每个元素都是
4
行
5
列的二维数组
16
)函数
什么事函数
逻辑上:能够完成特定功能的独立代码块
物理上:
能够接受数据
能够对接受的数据进行处理
能够将数据处理的结果返回【也可以不返回】
页
脚内容
页眉内容
函数是个工具,它是为了解决大量
类似问题而设计的,它可以当做一个黑匣子。
int
f ( void ) /
/
括号中的
void
表示该函数不能
接受数据,
int
表
示该函数返回值类型值是
int
类型
void g( void ) / /
< br>函数名前面的
void
表示该函数没有返回值
函数返回值的类型也称为函数的类型,如果函
数名前面的返回值类型
和函数执行体中的
return
表达式中表达式类型不同时,最终函数返回
值的类型以函数名前面的返回值类型为准
例:
#
include
int f()
{
return 9.6; //
因为函数的返回值类型是
int
,所以
最终
f
返回的是
9
而不是
9.6
}
int main(void)
{
int i = 15;
double j = 5.5;
j =
f();
printf(
j);
return 0;
}
return
表达式的含义
1
、终止被调函数,向主函数返回表
达式的值
2
、如果表达式为空,则只终止函数,不向主函数返回任何值
3
、
p>
break
是用来终止循环和
switch
的,
return
是用来终止函数的<
/p>
例:
void f()
{
return; /
/
只终止函数,不向主函数返回任何值
}
int f()
{
return 10; /
/
第一,终止函数,第二,向主调函数返回
10
}
页
脚内容
-
-
-
-
-
-
-
-
-
上一篇:ARM经典问题.
下一篇:(完整版)初中英语翻译题及答案二