C语言第五章
除了for以外的循环
//
// main.c
// project1
//
// Created by sihan guo on 2019/06/13.
// Copyright © 2019 sihan guo. All rights reserved.
//
#include <stdio.h>
#include <stdbool.h>
int main(int argc, const char * argv[]) {
// insert code here...
//第五章
//循环结构:goto while 'do while' for
//1.循环语句概述
//2.goto:无条件转向语句,用来跳转到某个程序位置进行执行
//一般形式:
//goto 语句标号: 其中语句标号是一个标识符(字母,数字,下划线三种标识符组成,且第一个字符必须是字母或者x下划线)
//并且:标识符不可以是系统中的保留字,int
//goto label;
//goto
//1:与if语句一起构成循环结构
//2:从循环体内调到循环体外 不推荐破坏了结构化程序设计原则,除非万不得已
//1到100的加法运算 用goto语句
//使用loop and goto进行语句循环示例
//loop和goto语句在同一个函数中,不能夸函数使用
int i = 1,sum = 0;
loop:
if(i<=100){
sum = sum + i;
i++;
goto loop;
}
printf("%d\n",sum);//5050
//目前goto语句应用场合比较少
//很多情况下,我们可以用其他循环语句来取代goto
//3:while语句
//一般形式:
//while(表达式) 要执行的语句(一句或者多句)
//先判断表达式的值,如果表达式为真,就执行语句,同时大家不要忘记,如果表达式值为假,则循环体内的语句一次也不执行
//举例:用while实现刚才的goto的1+2+...+100
int x = 1;
int sum2 = 0;
while(x<=100){
sum2 += x;
x++;//本句就是使用while循环趋向于结束的语句
}
printf("sum2=%d\n",sum2);
//(a)while中如果有多条需要执行的语句,需要{}括上 这样才会被当成一个整体执行
//(b)在循环体内,要有使用循环趋向于结束的语句
//4.do...while语句
int a = 1;
int sum3 = 0;
do{
sum3 += a;
a++;
}while(a<=100);
printf("sum3 = %d\n",sum3);
//do..while和while的区别:
//比如说上述:当x的值直接就比其条件大,则while()这个不会进去执行。
//而do while语句中,不管条件如何。则直接先执行该语句然后进行判断,语句必须执行一次,肯定会改变一次x或者sum的值
//当while后边的表达式的第一次值为真时,两种循环结果相同,否则,两种循环的结果是不相同的
}
for循环
//
// main.c
// project1
//
// Created by sihan guo on 2019/06/13.
// Copyright © 2019 sihan guo. All rights reserved.
//
#include <stdio.h>
#include <stdbool.h>
int main(int argc, const char * argv[]) {
// insert code here...
//for循环的详细讲解:
//for:循环语句:
//for语句的一般形式
//for(表达式1;表达式2;表达式3)内嵌的语句
//a 先求解1
//b 再求解表达式2
//b.1 若表达式2的值为真(非0),则执行for语句中指定的内嵌语句 同时求解表达式3的值 反复循环步骤2
//b.2 若表达式2的值为假(0),则整个for循环结束,程序流程跳转到for语句后边的语句执行
//这里注意:表达式1的值只会被执行一次
//for语句最简单最常用的引用形式:
// for(循环变量赋初值;循环变量结束条件;循环变量增加值){
// 内嵌语句;
// }
//for语句的实际操作
//for语句实现1+2+...+100
int x = 0;
int sum = 0;
for(x = 1;x<=100;x++){//x在这里是循环变量
sum += x;
}
printf("sum:%d\n",sum);
//for语句的主要说明
//1 表达式1可以省略 但其后边的 不能省略 当表达式1省略时 应该在for之前就给循环变量赋初值 很少用
//2 表达式2可以省略 也就是不判断循环条件 那么循环就会无终止的执行下去了 此时 就必须用break语句终止循环
//这种写法h也很少用
// int i,sum2 = 0;
// for(i=0;;i++){
// sum2 += i;
// if(i >= 100){
// printf("sum2:%d\n",sum2);//5050
// break;
// }
// }
//也可以将表达式3省略 我们必须要想办法保证for循环能够正常结束,否则循环将无休止的进行下去
int m;
int sum3=0;
for( m=0 ; m<=100 ;){
sum3 += m;
m++;//保证for循环正常结束的办法 这里我们把m++放在循环体内嵌语句中,而没有放在表达式3的位置
//取代了表达式3
}
printf("sum3:%d\n",sum3);
//也可以省略表达式1表达式3,只保留表达式2的数值
//5.三个表达式都可以省略
//导致无终止的执行循环体
//会被认为一直是真,所以会被无限制的执行
//一直会执行其内部的循环体
//....这种循环想要终止,必须要在for内嵌语句中,根据一定的条件增加break;
//for(;;){}
//while(1){}
//如果全都省略
int a = 1;//代替表达式1
int sum4 = 0;
for(;;){
sum4 += a;
if(a>=100){//代替表达式2
break;
}
a++;//代替表达式3
}
printf("sum4 = %d\n",sum4);
//6可以设置循环变量初值,也可以是变量无关的其他表达式
//可以在表达式1设置与循环无关的变量
//for表达式内嵌语句
int i,j = 10000,summary;
for(summary = 0,i=1;i<=100;i++,j--){
summary += i;
}
printf("summary=%d\n",summary);
printf("j:%d\n",j);
//8表达式2的值一般是关系表达式 或者逻辑表达式 只要其值为非0 就执行循环体
//for(;这里只要不是0就是无限循环;
//最后建议大家规矩使用å
}