i++;可以写在switc语句里面,但是如果写在switc语句里面,就要在每一个case、default中都加上i++;
你可以用很简洁的方式解决问题,也可以用很繁琐的方式解决问题,就是这个区别。
什么意思?当然可以啊,上面的代码等价于:
while(sym!='#')
{
switch(sym)
{
case '+':result=a+b;i++;break;
case '-':result=a-b;i++;break;
case '*':result=a*b;i++;break;
case '/':result=a/b;i++;break;
default:flag=2;i++;
}
if(flag==0)
。。。。。
i用来标识执行的动作是第几次,而i定义的位置是在while外面,所以i的作用域是整个main函数,而i++,是执行一次运算,i就加1,表示又执行了一次运算,而后面需要对i进行输出,所以i++的操作在while循环内,在输出前都是可以的,所以放在switch语句中也一样,但是要每个case都要加上这个语句,比较麻烦。
另外,你定义i的时候,要初始化为0,否则它里面存的值是随机的,这样进行++后输出的值也不正确。
希望对你帮助,如果还有疑问,请继续提问。
看似这个程序是用来计算一个整数里面有几个2
int main()
{
int x,number,digit;
int countdigit(int number,int digit);
scanf("%d",&number); //输入一个值付给变量number
digit=2;
x=countdigit(number,digit); //调用countdigit函数
printf("%d",x); //输出x的值
return 0;
}
int countdigit(int number,int digit)
{ int s;
s=0;
do
{
if(number%10==digit) //如果number除10的余数是2,执行s=s+1语句
s=s+1; //s加1
number=number/10; //number除10
}while(number!=0); //判断语句,如果number不等于0,重复执行do语句
return s; //返回s的值。
}