分享到新浪微博 分享到QQ空间 打印

问下……

问下……

别问我这段东西那里不明白,整段都不明白…………

如果输入这样子:2+4*2/3+4\n
输出2+4*2/3+4=8.00\n(大概这里的运算法则加法和乘除法优先级一样)
(先写出输出结果, 后边说明我哪里不明白比较方便一些。)
#include"stdio.h"
int main(void)
{

double x,y;


char c;

loop1:

printf("input expression");


scanf("%lf",&x);


printf("%.0f",x);


while((c=getchar())!='\n')


{/*
这里开始有疑问了*/

loop2:

printf("%c",c);



scanf("%lf",&y);


printf("%.0f",y);

/*第一个问题:如果输入“2+3+4while之前那一段把2赋予给x了,然后while一行中那getchar()把‘+’赋予c,额,大概有个读入焦点(用词不知准确否)的东西,焦点就移到‘+’之后,scanf就把3赋予给y。这个读入焦点之类的我假设的,不知有没有,如果没有,就不明白了……请达人证实一下有无这东东*/

switch(c)


{


case '+':


x=x+y;


break;


case '-':


x=x-y;


break;


case '*':


x=x*y;


break;


case '/':


if(y!=0)


x=x/y;


else


{


printf("input error,input again\n");


goto loop2;

/*这里这里,所以说很讨厌goto,无条件退出。如果输入2/0+4
输出:input errorinput again\n


/
(这里继续输入)
       假如再输入2,那+4后边那一部分是继续执行,还是只算了2/2就完了……再帮我一下吧……*/




}


break;


default:


printf("input error,input again\n");


goto loop1;


}


}


printf("=%.2f\n",x);

}

总之很不明白,达人帮忙解答下……

TOP

用调试器一步一步的走走看不就知道了
谁不怀念苏联,谁就没有良心;谁想回到苏联,谁就没有头脑.

Woodu.ME--从零开始的博客生活

TOP

调过了……第二个懒得弄……第一个ms我的猜想是对的,发来证实一下……

TOP

C确实不懂


某人也确实不编写这种实用性不很强的东西

据说小火这两天在研究C
谁不怀念苏联,谁就没有良心;谁想回到苏联,谁就没有头脑.

Woodu.ME--从零开始的博客生活

TOP

转移话题无罪……









楼上的头像太惊人了,使自己画的么……水平……—个字,高~

ps:那就有请火sama……

[ 本帖最后由 深红喷火龙 于 2008-6-30 22:23 编辑 ]

TOP

引用:
原帖由 深红喷火龙 于 2008-6-30 22:20 发表
转移话题无罪……








楼上的头像太惊人了,使自己画的么……水平……—个字,高~

ps:那就有请火sama……
头像是Sata在某人过生日时候的贺礼……被缩小了,签名看不到……
谁不怀念苏联,谁就没有良心;谁想回到苏联,谁就没有头脑.

Woodu.ME--从零开始的博客生活

TOP