C7,c8

ctrl+A   全选    肯臭
Alt+f8   规范对齐代码   熬特




if 常见问题解析
1 空语句的问题
   if (3 > 2);
   等价于
   if (3 > 2)
        ;  //这是一个空语句




2  
    if (表达式1)
         A;
    else
         B;
    是正确的
    if (表达式1);
         A;
    else
         B;
    是错误的


3   if (表达式1)
   A;
    else if (表达式2)
   B;
    else if (表达式3)
   C;
    else
           D
即便表达式1和2都成立,也只会执行A语句




4   if (表达式1)
   A;
    else if (表达式2)
   B;
    else (表达式3)
   C;
这样写语法不会出错,但逻辑上有漏洞


5   if (表达式1)
   A;
    else if (表达式2)
   B;
    else if (表达式3)
   C;
    else (表达式4)  // 7行
            D;
这样写是不对的,正确的写法是:
   要么去掉7星的(表达式4)
   要么在7行的else 后面加if
如果else加了表示式了前面就要加if判断,因为去掉if就能判断表达式那就可以不用写else if了


   else ()
如果else 有加(表达式)就要加if 要不会出错


6   if (表达式1)
   A;
    else if (表达式2)
   B;
    else if (表达式3)
   C;
    else (表达式4);  // 
            D;
这样写语法不会出错,但逻辑上是错误的


else (表达式4);
      D;
等价于
else
    (表达式4);
    D;




循环
    定义:
         某些代码被重复执行


    分类
         for
              1格式
                 for(1; 2; 3)
                      语句A;
              2 执行的流程[ 重点]


              3 for的范围问题
               
              4 举例:
                  1+2+3+.....+100


???????????????????????????????????????????????????????????????????第八课
                  1+1/2+1/3+.....1/100




int main(void)
{
int i;
float sum = 0;


for (i=1; i<=100; ++i)
{
sum = sum + 1.0/i;  //这样是OK的  推荐使用
   //sum = sum + (float)(1/i) 这样写是不对可以自己算下  
//也可以这样写: sum = sum + 1/(float)(i);  不推荐
}
printf("sum = %f\n", sum);


return 0;
}
试数   按上面的代码
   1 不要问为什么
   把自己当计算机一步一步的执行,计算机不知道你代码有什么功能他只会执行代码
   2 不要把某一部分给省略了
   3 写整齐
   4 一般写4行,也可以在纸上试


1  i=1 1<100 成立
   sum=0+1/1.00=1   ++i  i=2
2  i=2 2<100 成立
   sum=1+1/2.00=1   ++i  i=3
3  i=3 3<100 成立
   sum=1+1/2.00+1/3.00=1   ++i  i=4
...................................省略
----------------------------------------------------------------------------


     break和continue   不瑞课   肯天妞  


强制类型转化
   格式:
       (数据类型)(表达式)     注意表达式可不括起来但是最好括起来因为在其他语言通用还好看
   功能:
        把表达式的值强制转化为前面所执行的数据类型
   例子:
        (int)(4.5+2.2)  最终值是6
        (float)(5)      最终值是5.000000     6个0


试数
   1 不要问为什么
   把自己当计算机一步一步的执行,计算机不知道你代码有什么功能他只会执行代码
   2 不要把某一部分给省略了
   3 写整齐


浮点数的存错所带来的问题
     float和double都不能保证可以精确的存储一个小数
      如用2.0  用他的编码存入计算机可能是一个2.199999相近的值,也可能有些数能准确的存
举例:
     有一个浮点型变量x,如何判断x的值是否是零
     if (|x-0.000001| <= 0.000001)
            是零
     else
            不是零


为什么循环中的更新变量不能定义成浮点型
因为浮点型是非准确存储   如2.0  用他的编码存入计算机可能是一个2.199999相近的值
如 for (i=1.0; i<=100;++i)  在++i的时候如加到100时,存在内存中可能是100.000001这个值
就少了一次循环所以不能更新变量不能用浮点型


8 练习题
求1到100之间的奇数之和       和用变量sum
for (i=1; i<101; ++i)
if (i%2 == 1)      //1%2=余数1   2%2=0  判断是否是偶数,偶数能整除余数为0
{
printf("%d\n", i);
sum +=i;   //sum = sum + i;
}
printf("sum = %d\n", sum);








求1到100之间的奇数个数      个数用cnt 是count  卡特的缩写
int i;
int cnt = 0;


for (i=1; i<101; ++1)
if (i%2 == 1)
{
++cnt;
}
printf("%d\n", cnt);










求1到100之间的奇数平均数    平均数 avg   是average  的缩写    鸭瑞句
int i;
int sum = 0;
int cnt = 0;
float avg=0;   //是average的缩写


for (i=1; i<101; ++i)
{
if (i%2 == 1)
{
sum +=i;
++cnt;
}
}
avg = 1.0*sum / cnt;    //如果有警告 1.0默认是double类型  ,将double赋值给float类型会丢失数据


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




求1到100之间的奇数之和,在求1到100之间的偶数之和

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值