分支语句
(if)
if
语句形式一
适用只有一个分支判断
if(
表达式
1) //
如果
{
语句块
1 }
if
语句形式二
适用有两个分支判断
if(
表达式
1) //
如果
{
语句块
1 }
else //
否则
{
语句块
2 }
例
:
求方程的根
int
main
()
{
int
a
,
b
,
c
;
scanf
(
"%d%d%d"
,
&
a
,
&
b
,
&
c
);
int
d
=
b
*
b
-
4
*
a
*
c
;
double
x1
,
x2
;
//
根
if
(
a
==
0
)
{
x1
= -
1.0
*
c
/
b
;
printf
(
"%.2f\n"
,
x1
);
}
else
{
if
(
d
<
0
)
{
printf
(
"
无实根
\n"
);
}
else
{
if
(
d
==
0
)
{
x1
= -
b
/
(
2.0
*
a
);
printf
(
"
一个实根
:%.2f\n"
,
x1
);
}
else
//d>0
{
x1
=
(
-
b
+
sqrt
(
d
))
/
(
2
*
a
);
x2
=
(
-
b
-
sqrt
(
d
))
/
(
2
*
a
);
printf
(
"
两个不同的实根
:%.2f,%.2f\n"
,
x1
,
x2
);
}
}
}
return
0
;
}
if
语句形式三
适用多分支判断
if(
表达式
1) //
多分支
{
语句块
1 }
else if(
表达式
2)
{
语句块
2 }
....
else
{
语句块
n }
int
main
()
{
int
a
,
b
,
c
;
scanf
(
"%d%d%d"
,
&
a
,
&
b
,
&
c
);
int
d
=
b
*
b
-
4
*
a
*
c
;
double
x1
,
x2
;
//
根
if
(
a
==
0
)
{
x1
= -
1.0
*
c
/
b
;
printf
(
"%.2f\n"
,
x1
);
}
else if
(
d
<
0
)
{
printf
(
"
无实根
\n"
);
}
else if
(
d
==
0
)
{
x1
= -
b
/
(
2.0
*
a
);
printf
(
"
一个实根
:%.2f\n"
,
x1
);
}
else
//d>0
{
x1
=
(
-
b
+
sqrt
(
d
))
/
(
2
*
a
);
x2
=
(
-
b
-
sqrt
(
d
))
/
(
2
*
a
);
printf
(
"
两个不同的实根
:%.2f,%.2f\n"
,
x1
,
x2
);
}
return
0
;
}
循环语句
(for,while,do while)
for
循环
for(
表达式
1;
表达式
2;
表达式
3)
{
语句块
1 }
表达式
1:
初始化
,
最早执行
,
有且执行一次
表达式
2:
判断
,
真循环继续
,
假循环结束
,
每次进入都需要执行
,
默认为真
表达式
3:
步进
,
修改循环因子的值
,
每次执行
,
在语句块
1
之后执行
int
main
()
{
int
i
;
for
(
i
=
0
,
printf
(
"
表达式
1:%d\n"
,
i
);
printf
(
"
表达式
2:%d\n"
,
i
),
i
<
3
;
++
i
,
printf
(
"
表达式
3:%d\n"
,
i
))
{
printf
(
"
语句块
1:%d\n"
,
i
);
}
return
0
;
}
利用
for
实现
1+2+3+...+n
的和
while
循环
while(
表达式
1)
{
语句块
1 }
表达式
1:
判断
,
为真循环继续
,
为假循环结束
,
不能缺省
利用
while
实现
1+2+3+...+n
的和
//1+2+3+4+...+n
int
main
()
{
int
n
;
scanf
(
"%d"
,
&
n
);
int
sum
=
0
;
//
和
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
sum
+=
i
;
}
printf
(
"%d\n"
,
sum
);
return
0
;
}
int
main
()
{
int
n
;
scanf
(
"%d"
,
&
n
);
int
sum
=
0
;
//
和
int
i
=
1
;
while
(
i
<=
n
)
{
sum
+=
i
;
i
++
;
//
漏写这一句会出现死循环
}
printf
(
"%d\n"
,
sum
);
return
0
;
}
do while
循环
do
{
语句块
1
}while(
表达式
1);
表达式
1:
判断
,
为真循环继续
,
为假循环结束
,
不能缺省
利用
do while
实现
1+2+3+...+n
的和
while
和
dowhile
的区别
:
只有
"0"
和
"1"
的区别
,while
保证语句块至少执行
0
次
,do while
保证语句块至少执行
1
次
,
当表达式
1
可能
为真后没有任何区别
.
for,while
和
dowhile
三种循环相互之间可以