一、switch语句
switch是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的if else语句,基本格式如下:
switch ( 表达式)
{
case 整型数值1 : 语句1 ;
case 整型数值2 : 语句2 ;
. . . . . .
case 整型数值n: 语句n;
default : 语句n+ 1 ;
}
它的执行过程是: ①、首先计算表达式
的值,假设为value
。 ②、从第一个case
开始,比较value
和整型数值1
,如果它们相等,就执行冒号后面的所有语句,也就是从语句1
一直执行到语句n+1
,而不管后面的case是否匹配成功。 ③、如果value
和整型数值1
不相等,就跳过冒号后面的语句1
,继续比较第二个case、第三个case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 value
和整型数值5
相等,那么就会从语句5
一直执行到语句n+1
。 ④、如果直到最后一个整型数值n
都没有找到相等的值,那么就执行default后的语句 n+1
。 需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。
#include <stdio.h>
int main ( )
{
int day= 0 ;
printf ( "请输入0-6之间的数字:" ) ;
scanf ( "%d" , & day) ;
switch ( day)
{
case 0 : printf ( "星期天\n" ) ;
case 1 : printf ( "星期一\n" ) ;
case 2 : printf ( "星期二\n" ) ;
case 3 : printf ( "星期三\n" ) ;
case 4 : printf ( "星期四\n" ) ;
case 5 : printf ( "星期五\n" ) ;
case 6 : printf ( "星期六\n" ) ;
default : printf ( "输入错误。\n" ) ;
}
}
运行结果:
(一)、注意事项
case后面必须是整数和字符,或者是结果为整数和字符的表达式,但不能包含任何变量。请看下面的例子。
switch ( result)
{
case 10 : printf ( "..." ) ; break ;
case 8 + 9 : printf ( "..." ) ; break ;
case '5' : printf ( "..." ) ; break ;
case 'A' : printf ( "..." ) ; break ;
case 'A' + 10 : printf ( "..." ) ; break ;
case 3.14 : printf ( "..." ) ; break ;
case ii: printf ( "..." ) ; break ;
}
default不是必须的。当没有 default时,如果所有case都匹配失败,那么就什么都不执行。
二、while循环
while ( 表达式)
{
语句块
}
意思是,先计算表达式
的值,当值为真时(非0即是真),执行语句块
,执行完语句块
后,回到循环首部再次计算表达式
的值,如果为真,又执行一次语句块
……,这个过程会一直重复,直到表达式
的值为假,就不再执行语句块
。 循环也常常出现在我们的生活中,以海贼王船员登场为例。
while ( 是否有未出场的海贼王船员)
{
}
海贼王船员就是一个循环,是否有未出场的海贼王船员是循环首部要判断的条件,它的取值会随着循环次数的增加而改变,判断海贼王船员的名字、判断超女的绝技,随着循环次数的增加,全部的海贼王船员已出场,循环体不再执行。
三、do while循环
do
{
语句块
} while ( 表达式)
do while先执行一次循环,然后再判断表达式的值,如果为真,再执行一次循环体,如此重复下去。
四、while循环的应用
#include <stdio.h>
int main ( )
{
int times = 0 ;
int value = 0 ;
int sum = 0 ;
while ( sum < 5000 ) {
printf ( "请输入数字:" ) ;
scanf ( "%d" , & value) ;
times++ ;
sum = sum + value;
}
printf ( "您一共输入了%d个数据,和为%d。\n" , times, sum) ;
}
运行结果:
五、for循环
for循环的一般形式为: ①、for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句1。 ②、接着判断表达式的条件,如果条件成立,就执行一次循环体中的语句块。 ③、语句块执行完后,接下来会执行语句2。 ④、重复第②步和第③,直到表达式的条件不成立才结束for循环。
for ( 语句1 ; 表达式; 语句2 )
{
语句块
}
注意: ①、在for循环中,语句1、表达式和语句2都可以为空,for (;;)等同于while (1)。 ②、continue和break两个关键字也可以用在for循环体中。 for循环一般与计数器一起使用。例如:把1到100之间的数值累加起来。
#include <stdio.h>
int main ( )
{
int i = 1 ;
int sum = 0 ;
for ( i = 1 ; i<= 100 ; i++ ) {
sum = sum + i;
}
printf ( "1到100的累积值为%d。\n" , sum) ;
}
#include <stdio.h>
#include <string.h>
int main ( )
{
int i;
int j;
for ( i = 1 ; i <= 9 ; i++ ) {
for ( j = 1 ; j <= i; j++ ) {
printf ( "%d * %d = %-2d " , j, i, i* j) ;
}
printf ( "\n" ) ;
}
}
运行结果: