一、决策语句
1. if语句
(1) 一般形式
or
if (condition)
{
compound statement
}
(2) 流程图和交通图
(3) 例子
#define TRUE 1
#define FALSE 0
main ()
{
int i;
if (TRUE)
{
printf ("This is always printed");
}
if (FALSE)
{
printf ("This is never printed");
}
}
2. if-else语句
(1) 一般形式
or
if (condition)
{
statements
}
else
{
statements
}
(2) 流程图和交通图
(3) 例子
main ()
{
int i;
scanf ("%ld",i);
if (i > 0)
{
printf ("That number was positive!");
}
else
{
printf ("That number was negative or zero!");
}
}
3. switch语句
(1) 一般形式
{
case constant expression 1 : statement 1;
break; /* optional */
case constant expression 2 : statement 2;
break; /* optional */
case constant expression n : statement n;
break; /* optional */
default : default statement;
break;
}
(2) 语句说明
对于switch条件语句,如果找到相同的结果值则执行case内的程序语句,当执行完case块后,并不会直接离开switch块,还是会住下继续执行其他case语句和default语句,这种情形称为“失败经过”(Falling Through)现象。
因此,每一道case语句最后,必须加上break语句来结束switch语句,才可以避免“失败经过”的情况。default语句可放在switch条件语句的任何位置,如果找不到吻合的结果值,最后会执行default语句,除非摆在最后时,才可以省略default语句内的break语句,否则还是必须加上break语句。
(3) 例子
main()
{
for(int i=0; i<3; i++)
{
switch(i)
{
default: printf("%d", i);
case 1: printf("%d", i); break;
case 2: printf("%d", i);
}
}
return 0;
}
二、循环语句
1. while语句
(1) 一般形式
{
statements;
}
(2) 流程图
(3) 例子
#include <stdio.h>
main ()
{
char ch;
short count = 0;
printf ("Type in a line of text\n");
while ((ch = getchar()) != '\n')
{
if (ch == ' ')
{
count++;
}
}
printf ("Number of space = %d\n",count);
}
2. do-while语句
(1) 一般形式
{
statements;
}
while (condition)
(2) 流程图
(3) 例子
/* */
/* do .. while demo */
/* */
/**********************************************/
/* print a string enclosed by quotes " " */
/* gets input from stdin i.e. keyboard */
/* skips anything outside the quotes */
#include <stdio.h>
/*************************************************/
/* Level 0 */
/*************************************************/
main ()
{
char ch,skipstring();
do
{
if ((ch = getchar()) == '"')
{
printf ("The string was:\n");
ch = skipstring();
}
}
while (ch != '\n')
{
}
}
/*************************************************/
/* Level 1 */
/*************************************************/
char skipstring () /* skip a string "" */
{
char ch;
do
{
ch = getchar();
putchar(ch);
if (ch == '\n')
{
printf ("\nString was not closed ");
printf ("before end of line\n");
break;
}
}
while (ch != '"')
{
}
return (ch);
}
3. for语句
(1) 一般形式
{
}
(2) 流程图
(3) 例子
/* */
/* Prime Number Generator #1 */
/* */
/************************************************/
/* Check for prime number by raw number */
/* crunching. Try dividing all numbers */
/* up to half the size of a given i, if */
/* remainder == 0 then not prime! */
#include <stdio.h>
#define MAXINT 500
#define TRUE 1
#define FALSE 0
/*************************************************/
/* Level 0 */
/*************************************************/
main ()
{
int i;
for (i = 2; i <= MAXINT; i++)
{
if (prime(i))
{
printf ("%5d",i);
}
}
}
/*************************************************/
/* Level 1 */
/*************************************************/
prime (i) /* check for a prime number */
int i;
{
int j;
for (j = 2; j <= i/2; j++)
{
if (i % j == 0)
{
return FALSE;
}
}
return TRUE;
}
三、打断循环
1. break语句
(1) 说明
break语句的作用是跳出整个循环。如有嵌套的循环,则跳出最近的循环体。
(2) 例子
for (i = 1; i <= 20; i++)
{
if (i == 12)
{
break;
}
}
/* another way of making skipgarb() */
while (TRUE)
{
ch = getchar();
if (ch == '\n')
{
break;
}
}
2. continue语句
(1) 说明
continue语句的作用是跳出一次循环,即忽略continue后面的其它语句,紧接着执行下一次循环。
(2) 例子
for (i = -10; i <= 10; i++)
{
if (i == 0)
{
continue;
}
printf ("%d", 20/i);
}