鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 9

[已解决]求大神看看

[复制链接]
发表于 2020-5-13 22:12:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
……
i = 0;

while (i < 100)
{
        if (i % 2)
        {
                continue;
        }

        i++;
}
……    假如我执行了continue后他会跳过哪些部分
最佳答案
2020-5-13 22:45:49
一楼:
continue跳过的是此轮循环(循环后面的代码都不执行),执行下一轮循环。
但你这么写会是死循环的,因为你不符合条件跳出循环时每次i都没有+1。当i=1时,1/2余1,1表示true,会执行if语句,但continue时到下一轮i还是2,没有变化,因此会是死循环。
if里加一句:
i++;
再continue即可

3.result++表示result+1
4.result = result*5;  才可以保存起来,除了自加自减都要写成这样才能保存
5.这样强转是直接取整的,如13.8会变为13
  如果想按其他方法转为整数,看代码:
#include<stdio.h>
#include<math.h>
int main(){
    float f = 12.5;
    int a = (int)f;//强制转换 直接取整
    int b = round(f);//四舍五入取百整
    int c = ceil(f);//向上取整
    int d = floor(f);//向下取整
 
    printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);
    getchar();
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-13 22:15:31 | 显示全部楼层
跳过 i++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 22:24:44 | 显示全部楼层
double result = 1.0;  // result == 1.0
result += 2.6;  // result == 3.6
result ++;  // result == 4.6
result * 5;  // result == 4.6,虽然乘以 5,但结果并没有保存起来
result = (int)(result + 0.5)  // result == 5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 22:25:18 | 显示全部楼层
大神我还有几个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 22:27:49 | 显示全部楼层
fuze11 发表于 2020-5-13 22:25
大神我还有几个问题

第三个不是直接加一吗
第四个为什么没有保存呢、
第五个我是这样想的  int(1+0.5)=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 22:28:30 | 显示全部楼层
① 它会跳过之后循环的内柔直接进行下次循环
② 没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 22:33:06 | 显示全部楼层
liuzhengyuan 发表于 2020-5-13 22:28
① 它会跳过之后循环的内柔直接进行下次循环
② 没看懂

double result = 1.0;  // result == 1.0
result += 2.6;  // result == 3.6
3  result ++;  // result == 4.6
4  result * 5;  // result == 4.6,虽然乘以 5,但结果并没有保存起来
5  result = (int)(result + 0.5)  // result == 5

就是3不是自加吗
4就是注释是什么意思
5我认为是  (int)(1+0.5)=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 22:35:48 | 显示全部楼层
fuze11 发表于 2020-5-13 22:25
大神我还有几个问题

自问自答???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 22:45:49 | 显示全部楼层    本楼为最佳答案   
一楼:
continue跳过的是此轮循环(循环后面的代码都不执行),执行下一轮循环。
但你这么写会是死循环的,因为你不符合条件跳出循环时每次i都没有+1。当i=1时,1/2余1,1表示true,会执行if语句,但continue时到下一轮i还是2,没有变化,因此会是死循环。
if里加一句:
i++;
再continue即可

3.result++表示result+1
4.result = result*5;  才可以保存起来,除了自加自减都要写成这样才能保存
5.这样强转是直接取整的,如13.8会变为13
  如果想按其他方法转为整数,看代码:
#include<stdio.h>
#include<math.h>
int main(){
    float f = 12.5;
    int a = (int)f;//强制转换 直接取整
    int b = round(f);//四舍五入取百整
    int c = ceil(f);//向上取整
    int d = floor(f);//向下取整
 
    printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);
    getchar();
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 09:00:09 | 显示全部楼层
谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 19:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表