断桥·残雪112 2022-10-20 09:45 采纳率: 0%
浏览 26

while循环中循环标志的问题

#include<stdio.h>

int main()
{ int n, i, count;
i=0;
count=0;
scanf("%d", &n);
char pinyin [11][5]={"ling","yi","er","san"
,"si","wu","liu","qi","ba","jiu"};
int store [10];

if (n==0)
printf("ling");

while (n!=0)
{if (n>0)
 {store [i]=n%10;
  n/=10;
  i++;}

  else
  
  {store [i]=-n%10;
  n=-n/10;
  i++;
  printf("fu ");}
}
  

 while (i>=0)
{ 
  i--;
  if (count>0)
  {printf(" ");}
  count++;
  printf("%s", pinyin [store [i]]);
 
  
}
 return 0;

}

一个数字拼音的程序,想问问大家,为什么最后while输出时候,必须i--在最前(不然结果就奇怪的错了),其他while自增自减都在循环最后。

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-10-20 09:51
    关注

    因为上面while循环中,i++在后面,导致实际i值多加了1
    因此下面的while,必须i先减去1

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日

悬赏问题

  • ¥100 科大讯飞语音唤醒词,unbuntu环境,报错
  • ¥15 可以实现这个有不同背景颜色的九九乘法表吗?
  • ¥50 python写segy数据时出错2
  • ¥20 关于R studio 做精确稳定检验的问题!(语言-r语言)
  • ¥50 用贝叶斯决策方法,设计CAD程序
  • ¥20 关于#目标检测#的问题:(qq收集表到时间才能填写,填写的份数有上限)
  • ¥50 ZYNQ7020双核FLAHS烧写的问题
  • ¥20 ue 5 中想要实现第一人称人物左右行走摆动的效果,摄像头只向右摆动一次(关键词-结点)
  • ¥15 AD9164瞬时带宽1.8G,怎么计算出来?
  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除? HKEY_CLASSES_ROOT*\shellex\ContextMenuHandlers 没用