C语言程序设计 6 for 循环详解 1

循环语句

  定义

        某些代码会被重复执行

分类

         for

             1 .格式

                       for(1;2;3)

                       语句A

              2 . 执行的流程

                  单个 for循环的使用

                 多个for循环的嵌套的使用

                  1.

                   for (1; 2; 3)           //1

                        for (4; 5; 6)       //2

                              A;               //3

                              B;               //4

              整体是两个语句,1 2 3 是第一个语句,4是第二个语句

      2.         for (1 ; 2; 3)

                      for (4; 5; 6)        先运行 1   2   4   5    6 

                                            当5不符合要求,再开始   3  2 4 5  6 

                  {  

                              A:

                              B;

                  }

           整体是一个语句

        3.    

              for (7 ; 8; 9)               

                  for (1; 2; 3)

               {

                     A;

                     B;

              for (4; 5; 6)

                 C;

                }

       整体是 个语句

3. 范围问题

4. 举例:

1 + 2 + 3 +.. ..+ 100

1 + 1/2 + 1/3 +. ... + 1/100


 

/*
    2023年2月14日 17点30分
    本程序不对,因为循环中更新的变量不能定义成浮点数

*/

#include<stdio.h>

int main(void)

{

    float   i;

    float  sum = 0;

    for (i = 1.0; i <= 100; ++i)

    {

        sum = sum + 1 / i; // 错误 i为int型,1/i得到的结果依然会是 整形
        sum = sum + 1 / (float) (i)  // 正确写法

    }
    printf("sum= %f", sum);
        return 0;

}

输出结果----
sum= 5.187378

for循环中的变量‘i’不能定义为浮点型(float),因为浮点型是非准确存储大一点点或小一点点存储的。如 i <=100 有可能最后加到100时比100大一点点而不能参加循环。

for循环的语法定义 ++i i++的结果是一样 .但是i++   由于是在使 用当前值之后再+1,所 以需要一个临时的变量 来转存i

++i则是在直接+1,省 去了对内存的操作的环节,相对而言能够提高性能

求1到100的奇数个数以及之和

#include<stdio.h>
int main(void)

{
	int i;
	int sum = 0;
	int cnt = 0;
	float avg;

	for (i = 1; i < 101; ++i)
	{
		if (i % 2 == 1)
		{
			sum += i;
			++cnt;
		}
	}
	avg = sum / cnt;  //错误写法,sum cng 默认为int类型,相除以后也会是 int类型,所以存在错误
	
    avg =  1.0* sum / cnt ; //简单写法  1.0 默认的是double类型
    avg = (float) sum /cnt; //  强制转换,需要看情况,本题目只是刚好合适

	printf("sum=%d\n", sum);
	printf("cnt=%d\n", cnt);
	printf("avg=%f\n", avg);

	return 0;
}

强制类型转化

格式:

        (数据类型) (表达式)

  功能:

      把表达式的值强制转化为前面所执行的数据类型

例子:

(int) (4. 5+2. 2)    最终值是    6

(float) (5)            最终值是 5.000000

浮点数的存错所带来的问题

float   double都不能保证可以把所有的实数都准确的保存在计算机中

 例子

float i = 99.9:

printf("%f\n",i);

最终在Vc++6.0 中的输出结果是: 99. 900002

因为浮点数无法准确存储,所以就衍生出来两个编程问题

有一个浮点型变量X.  如何判断 的值是否是零

if (Ix-o. 000001 I <= 0.000001)

是零

else

不是零

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值