Anonymous 发表于 2022-3-2 14:07:02

do whlie

#include <stdio.h>
main()

char *s="120119110";int n0,n1,n2,nn,i;

n0=n1=n2=nn=i=0;
do{

switch(s)
{
default : nn+ ;
case '0': n0+ +;
case‘1':n1++;
case '2': n2++;
}while(s);

printf(" n0=%d,n1 =%d,n2=%d,nn= %d[n",n0,n1,n2,nn);
}
解析
s='1', 匹配case'1', n1=1, n2=1; s='2’, 匹配case'2', n2=2; s=’0‘, 匹配case‘0',n0=1, n1=2,n2=3; s='1',为什么while(s)=while(0)时不是退出循环而是继续执行

番杰 发表于 2022-3-2 17:28:53


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

程序中判断时,应该是while(‘0’),而不是你说的while(0),前者为真,后者为假。
页: [1]
查看完整版本: do whlie