鱼C论坛

 找回密码
 立即注册
查看: 923|回复: 1

do whlie

[复制链接]
匿名鱼油
匿名鱼油  发表于 2022-3-2 14:07:02 |阅读模式

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

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

x
#include <stdio.h>
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);
}
解析
s[0]='1', 匹配case'1', n1=1, n2=1; s[1]='2’, 匹配case'2', n2=2; s[2]=’0‘, 匹配case‘0',n0=1, n1=2,n2=3; s[3]='1',为什么while(s[i])=while(0)时不是退出循环而是继续执行

回复

使用道具 举报

发表于 2022-3-2 17:28:53 | 显示全部楼层

你这里面的s[ i ] = '0',
这个0是字符型的,是一个数值,所以它在逻辑上表示的是真,
所以就不会退出循环。

程序中判断时,应该是while(‘0’),而不是你说的while(0),前者为真,后者为假。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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