碎觉觉了 2020-09-04 22:47 采纳率: 0%
浏览 276

c语言循环终止问题及条件

#include
main()
{ char *s="120119110";
int n0,n1,n2,nn,i;
n0=n1=n2=nn=i=0;
do{
switch(s[i++])
{ default : nn++;
case '0' : n0++;
case '1' : n1++;
case '2' : n2++;
}
} while(s[i]);
printf("n0=%d,n1=%d,n2=%d,nn=%d\n",n0,n1,n2,nn);
}

大佬们,这个do while语句在s[2]时为什么不终止循环呢?要怎样才终止?

  • 写回答

3条回答 默认 最新

  • wifiaaa 2020-09-05 02:11
    关注

    首先先明确一个问题,就是s是一个字符数组,它里面存储的是字符,实际上里面存储的是ascii码,s[2]存储的是字符'0',转化成ascii码是十进制的
    48是是16进制的30,也就是说想要实现你的功能,while(s[i]);可以写成while(s[i]-'0');或者写成while(s[i]-48);或者写成while(s[i]-0x30);

    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler