三个循环结构
- for循环
- while循环
- do…while循环
for(循环变量赋初值【可选】; 循环条件判断【可选】; 循环变量增值【可选】) { 循环体 }
程序结构图如下:
执行for(expression1;expression2;expression3)这行代码的流程是,先初始化循环变量,再判断是否符合循环条件,也就是开始总是先执行条件判断部分。
while(表达式【判断是否符合循环条件】) {循环体 }
do{循环体} while(循环条件判断);
程序结构图如下:
do { } while();
必须执行一次循环体,因为它先执行结构体再判断,而while( ) { }
和for(exp1;exp2;exp3){ }
可以先判断循环条件再执行循环体,可以实现一次也不执行循环体.
例子:
int main()//这是输出第1~12个fibonacci数字的程序
{
int i,a=1,b=1,c=0;
printf("%d\t%d\t",1,1);//输出前两个fibonacci数字
for(i=0;i<10;i+=1)//输出第3~12个fibonacci数字
{
c=a+b;
a=b;
b=c;
printf("%d\t",c);
}
//***************************************************************************************
//用while语句:
a=1;b=1;c=0;//重置变量值
printf("%c",10);//空格
printf("%d\t%d\t",1,1);//输出前两个fibonacci数字
i=0;
while(i<10)
{
c=a+b;
a=b;
b=c;
printf("%d\t",c);
i++;
}
//****************************************************************************************
//用do while语句:
a=1;b=1;c=0;
printf("%c",10);
printf("%d\t%d\t",1,1);//输出前两个fibonacci数字
i=0;
do
{
c=a+b;
a=b;
b=c;
printf("%d\t",c);
i++;
}
while(i<10);
}
两个选择结构
第一个选择结构:
- 不带else的:
if (expression) {codeblock}
- 带else的:
if(expression) esle {codeblock}
- else部分嵌套多层if的:
if(expression1) else if(expression2)else if(expression3){codeblock}
例子:
int main()
//输出1900年到2025年的闰年
{
int i,start,end;
start =1900;
end=2025;
for(i=start;i<=end;i+=1)
{
if(i%4==0&&i%100!=0||i%400==0)//优先级:% 大于 != 大于 == 大于 && 大于 ||
printf("%d leap year\n",i);
else printf("%d\n",i);
}
}
第二个选择结构:
switch () {case 1:{ };break;case 2 { };break; default : { } };
例子:
int main()
{
char n;
n=getchar();
switch(n)
{
case '1':printf("case 1");printf("\ncase有多个语句时,可以不加{}");break;
case '2':printf("case 2");;break;
case '3': case 4: {printf("case 3 or case 4");};break;
case 'q':printf("q");break;
default :printf("default");
}
}
说明:
1.switch后面的括号内应该是个整型值,要知道,字符型是特殊的整型;
2.case 和 default 只是“入口”,
(1).它们出现的顺序不重要,因为case和default只是“入口”的标志。例如你可以将default放在最前面;
(2).进入某个“入口”后,程序就一直执行下去,不遇到break不会停止,直到执行完所有switch内的语句;这就是为什么
每个case后面都需要加break、
好几个case可以共用一段程序、
case后执行多个语句的话不用加{ }