上学的小白 2021-12-17 16:20 采纳率: 85.7%
浏览 51
已结题

C语言 do while循环的问题

#include<stdio.h>
main()
int i=20,n=0;
do{
    n++;
    switch(i%4)
    {  case 0: i=i-7; break;
       case 1:
       case 2:
       case 3: i++; break;
    }
}while(i>0);
printf("%d",n);
}

用计算机编译出来是17,我想知道算到了i取值为4的时候,那时候n的取值不是应该是15吗,取值为4的时候进行case0计算为-3,退出循环,直接进入while判断真假 结果为假输出15, 我一直算不懂为什么等于17 n++不是先取值再+1吗

  • 写回答

3条回答 默认 最新

  • 南七灵 2021-12-17 16:30
    关注

    i = 20,n = 1,20%4 = 0,i=i-7=13
    i = 13,n = 2,13%4 =1,i++, i=14
    i = 14,n = 3,14%4 = 2,i++,i=15
    i = 15,n = 4,15%4 = 3,i++,i=16
    i = 16,n = 5,16%4 = 0,i=i-7=9
    i = 9,n = 6,9%4 =5,i++, i=10
    i = 10,n = 7,10%4 = 2,i++,i=11
    i = 11,n = 8,11%4 = 3,i++,i=12
    i = 12,n = 9,12%4 = 0,i=i-7=5
    i = 5,n = 10,5%4 =1,i++, i=6
    i = 6,n = 11,6%4 = 2,i++,i=7
    i = 7,n = 12,7%4 = 3,i++,i=8
    i = 8,n = 13,8%4 = 0,i=i-7=1
    i = 1,n = 14,1%4 =1,i++, i=2
    i = 2,n = 15,2%4 = 2,i++,i=3
    i = 3,n = 16,3%4 = 3,i++,i=4
    i = 4,n = 17,4%4 = 0,i=i-7=-3
    退出循环

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月17日

悬赏问题

  • ¥15 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?