C语言循环知识

循环预览

  1. 循环:入口条件循环(while\for):就是判断条件在循环入口处。先判断,后执行。
    退出条件循环(do while)就是判断条件在循环尾处。其首先会执行一次循环体,然后判断。
  2. 使用风格:在循环涉及到初期化和更新变量时,使用for恰当。其他条件下while较好。就如while(scanf("%d",&a)==1)这样的,就会使用while比较自然;而涉及到索引计数的循环,如for(a=1;a<=12;a++),使用for比较自然。

while循环

例子

例子

//计算多个鞋码对应的英寸尺长

#include<stdio.h>

#define ADJUST 7.64

#define SCALE 0.325

int main(void)

{

double shoe,foot;

printf(“Shoe size(men’s)
foot length\n”);

shoe = 3.0;

while(shoe<18.5) //while循环

{ //代码块

foot = SCALE*shoe+ADJUST;

    printf("%10.1f %15.2f

inches\n",shoe,foot);

shoe = shoe +1;

}

printf(“If the shoe fits,wear it.\n”);

getchar();

return 0;

}

//对用户输入的整数求和

#include<stdio.h>

int main(void)

{

long num;

long sum=0L;//把sum初始化为0

/后面加L,表示这个零是long类型/

int status;

printf(“Please enter an integer to be summed.”);

printf(“q to quit):”);

status=scanf("%ld",&num);

/*注意:这里是把scanf()的返回值赋给status

scanf()的返回值是它成功读取项目的个数

这里的项目个数你可以看作是占位符的个数*/

while(status==1)//==是否等于

{

sum=sum+num;

printf(“Please enter next integer (q to quit):”);

status = scanf("%ld",&num);

/*如果你输入一个非数字(如q),

那么scanf()就不能读入一个整数

所以其返回值就是0*/

}

printf(“Those integers sum to %ld.\n”,sum);

getchar();

return 0;

}

注意点

  1.  如果循环语句是个简单语句,就不需要用花括号划分。
    

如:while(count++ < 20)
sum=sum+count;

在没有花括号的情况下,while循环范围就是从while到下一个语句。

  1. while循环主要难点就是解决他的循环条件,在进入循环前,首先就会有一次判断,所以我们必须要在循环前得到一个值来进入循环,其次,为了使循环可以进行,必须在循环体里有一个可以得到下一个可以判断循环条件的东西,而且必须要有结束循环的条件,可以看例子中2,

  2. 每次循环称为一次迭代。

while中null statement

  1.  因为while语句在分号(一个循环语句)或花括号(复合语句)结束。
    

在C中,一个分号也是一个语句,被称为一个空语句。
所以,在一些特定的情况下,while或加一个分号,就代表while循环已经结束,就如
while(a++<3);
printf(“a is %d\n”,a);
它在第七行就已经结束了。
在有些情况下,使用空语句,就可以如下
while(scanf(%d",&num)==1)
;

while中注重的关系运算符

  1. 算数运算符>关系运算符>赋值运算符

  2. 关系表达式可以用于字符的比较,进行比较时使用的是机器的字符代码。

  3. 不能使用关系运算符来比较字符串。

  4. //浮点数比较

#include<stdio.h>

#include<math.h>

int main(void)

{

const double ANSWER=3.14159;

double response;

printf(“What is the value of pi?\n”);

scanf("%lf",&response);

while(fabs(response-ANSWER)>0.0001)//fabs()是求参数绝对值

/*因为在浮点数比较的时候

由于舍入误差可能造成两个逻辑上应该相等的数不相等

所以浮点数比较只能用>和<,

在比较浮点数大小时,

可以使用fabs(response-ANSWER)>0.0001这种方法*/

{

printf(“Try again!\n”);

scanf("%lf",&response);

}

printf(“Close enough!\n”);

getchar();

return 0;

}

真与假

就是表达式成立为真,不成立为假,0为假,非0为真,而在返回值的时候,真一般返回1;在这里插入图片描述

  1. while循环条件

循环条件,为真循环(非0),为假结束(0),所以while(a!=0)就可以用while(a)代替

计算机其判断条件是建立在数值(0和非0)的基础上,而不是真假基础
在这里插入图片描述

while判断条件中=和==

  1. 不要把赋值运算符=和关系等于运算符==混淆。

在这里插入图片描述

这俩个有很大的区别。

在判断语句中,区别更大:whill(a=1)这里是将1赋值给a,然后进行条件判断,就会变成while(1),导致死循环。而while(a==1),就是将a与1进行比较,进行判断。

  1. 为了让编译器能发现你在构建相等判断表达式时是否出现错误,我们可以这样写

在这里插入图片描述

因为前者语法错误,编译器就会很快发现错误。

_Bool类型表示真假

  1. _Bool类型的变量就是来表示真假的变量,一个_Bool类型变量只会具有1(真)或0(假),如果把一个非0数值赋给_Bool变量,这个变量就会设置成1.(C把任何非0值都认为是真)

  2. 在C中,表示真/假的变量一直都是由int类型来表示的。

  3. 例子:

//使用_bool变量

#include<stdio.h>

int main(void)

{

long num;

long sum = 0L;

_Bool input_is _good;

printf(“Please enter an integer to be summed.”);

printf("(q to quit)😊;

input_is_good=(scanf("%ld",&num)==1);

//使用_bool类型变量来表示真假

//这里的第二个括号不是必须的,因为==比=的优先级高

while(input_is_good)

{

sum=sum+num;

printf(“Please enter next integer (q to quit):”);

input_is_good=(scanf("%ld",&num)==1);

}

getchar();

return 0;

}

不确定循环和计数循环

在这里插入图片描述

for循环

例子

在这里插入图片描述

for循环灵活性

在这里插入图片描述

for循环的第一个初始化表达式

在这里插入图片描述

do while循环

在这里插入图片描述

嵌套循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值