鱼C论坛

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

[已解决]xxs刚学有点懵

[复制链接]
发表于 2022-2-25 17:26:32 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
   main()
{ int i=7;
do
{
switch(i%2)
{
case 1:i++;break;
case 0:i--;continue;
}
     i=i-2;
printf("i=%d\n",i);
}while(i>0);
}
为什么运行结果为i=0 i=2 i=4 i=6
最佳答案
2022-2-25 17:47:25
  1. #include<stdio.h>
  2. int main()
  3. {        
  4.         int i=7;
  5.         do
  6.         {
  7.                 switch(i%2)
  8.                 {
  9.                         case 1:i++;break;
  10.                         case 0:i--;continue;
  11.                 }       
  12.              i=i-2;
  13.                 printf("i=%d\n",i);
  14.         }while(i>0);
  15.         return 0;
  16. }
  17. /*
  18. 第一次 i=7 -> 7%2= 1 -> 执行i++  -> i=8 -> break跳出switch -> i=i-2=6  -> printf(6)
  19. 第二次 i=6 -> 6%2= 0 ->  执行i-- -> i=5 -> continue开启下次循环
  20. 第三次 i=5 -> 5%2= 1 -> 执行i++  -> i=6 -> break跳出switch -> i=i-2=4  -> printf(4)
  21. 第四次 i=4 -> 4%2= 0 ->  执行i-- -> i=3 -> continue开启下次循环
  22. 第五次 i=3 -> 3%2= 1 -> 执行i++  -> i=4 -> break跳出switch -> i=i-2=2  -> printf(2)
  23. 第六次 i=2 -> 2%2= 0 ->  执行i-- -> i=1 -> continue开启下次循环
  24. 第七次 i=1 -> 1%2= 1 ->  执行i++ -> i=2 -> break跳出switch -> i=i-2=0  -> printf(0)
  25. i = 0 跳出while,程序结束
  26. */
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-2-25 17:47:25 | 显示全部楼层    本楼为最佳答案   
  1. #include<stdio.h>
  2. int main()
  3. {        
  4.         int i=7;
  5.         do
  6.         {
  7.                 switch(i%2)
  8.                 {
  9.                         case 1:i++;break;
  10.                         case 0:i--;continue;
  11.                 }       
  12.              i=i-2;
  13.                 printf("i=%d\n",i);
  14.         }while(i>0);
  15.         return 0;
  16. }
  17. /*
  18. 第一次 i=7 -> 7%2= 1 -> 执行i++  -> i=8 -> break跳出switch -> i=i-2=6  -> printf(6)
  19. 第二次 i=6 -> 6%2= 0 ->  执行i-- -> i=5 -> continue开启下次循环
  20. 第三次 i=5 -> 5%2= 1 -> 执行i++  -> i=6 -> break跳出switch -> i=i-2=4  -> printf(4)
  21. 第四次 i=4 -> 4%2= 0 ->  执行i-- -> i=3 -> continue开启下次循环
  22. 第五次 i=3 -> 3%2= 1 -> 执行i++  -> i=4 -> break跳出switch -> i=i-2=2  -> printf(2)
  23. 第六次 i=2 -> 2%2= 0 ->  执行i-- -> i=1 -> continue开启下次循环
  24. 第七次 i=1 -> 1%2= 1 ->  执行i++ -> i=2 -> break跳出switch -> i=i-2=0  -> printf(0)
  25. i = 0 跳出while,程序结束
  26. */
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-2-25 17:57:16 | 显示全部楼层

谢谢哥,你太照顾新手
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-25 18:04:43 | 显示全部楼层
我只有30天 发表于 2022-2-25 17:57
谢谢哥,你太照顾新手

真xxs?
小学都开始卷了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-26 16:16:51 | 显示全部楼层
大马强 发表于 2022-2-25 18:04
真xxs?
小学都开始卷了吗

哥为什么我发不了帖子了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-26 17:13:33 | 显示全部楼层
我只有30天 发表于 2022-2-26 16:16
哥为什么我发不了帖子了

发不了可能是发帖子地方不对
有些教学的地方只能管理员发的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-26 17:15:22 | 显示全部楼层
大马强 发表于 2022-2-26 17:13
发不了可能是发帖子地方不对
有些教学的地方只能管理员发的

哥快去回答发出来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-26 17:30:14 | 显示全部楼层
你帖子又在审核了,我就在这里说吧
我先说一说
首先你在代码没按着标准来写
其次,我不知道你是不是故意的将这段代码位置颠倒
  1. default:printf("\n");
  2. case 2:printf("&");
复制代码


稍加修改,这个结果又不一样了
  1. #include<stdio.h>
  2. int main() // 要按标准写
  3. {
  4.   int i;
  5.   for(i=1;i<=5;i++)
  6.     switch(i%5)
  7.     {
  8.            
  9.               case 0:printf("*");break;
  10.               case 1:printf("#");break;
  11.               case 2:printf("&");
  12.               default:printf("\n");
  13.              
  14.     }
  15.   return 0; // 要按标准写
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-26 17:32:46 | 显示全部楼层

我等级不够加不了

本帖最后由 我只有30天 于 2022-2-26 17:46 编辑
大马强 发表于 2022-2-26 17:30
你帖子又在审核了,我就在这里说吧
我先说一说
首先你在代码没按着标准来写


太麻烦咱能加v聊吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-26 17:35:42 | 显示全部楼层
  1. i=1;i<=5;i++)
  2.     switch(i%5)
  3.     {
  4.            
  5.               case 0:printf("*");break;
  6.               case 1:printf("#");break; //第一循环  1 % 5 =1
  7.               default:printf("\n");    // 说明还是优先case, 第三次  3 % 5 = 3
  8.               case 2:printf("&");    // 第二次循环 2 % 5 = 2 第三次  3 % 5 = 3, 为啥会执行这个,我觉得就可能是默认执行default后就不拘于case的值了,因为标准写法default一般位于最后一句
  9.     }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 01:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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