标题:
问下……
[打印本页]
作者:
深红喷火龙
时间:
2008-6-30 16:26
标题:
问下……
别问我这段东西那里不明白,整段都不明白…………
如果输入这样子:
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+
4
”
,
while
之前那一段把
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 error
,
input again\n
/
(这里继续输入)
假如再输入
2
,那
+4
后边那一部分是继续执行,还是只算了
2/2
就完了……再帮我一下吧……
*/
}
break;
default:
printf("input error,input again\n");
goto loop1;
}
}
printf("=%.2f\n",x);
}
总之很不明白,达人帮忙解答下……
作者:
最美我中文
时间:
2008-6-30 17:52
用调试器一步一步的走走看不就知道了
作者:
深红喷火龙
时间:
2008-6-30 19:00
调过了……第二个懒得弄……第一个ms我的猜想是对的,发来证实一下……
作者:
最美我中文
时间:
2008-6-30 19:06
C确实不懂
某人也确实不编写这种实用性不很强的东西
据说小火这两天在研究C
作者:
深红喷火龙
时间:
2008-6-30 22:20
转移话题无罪……
楼上的头像太惊人了,使自己画的么……水平……—个字,高~
ps:那就有请火sama……
[
本帖最后由 深红喷火龙 于 2008-6-30 22:23 编辑
]
作者:
最美我中文
时间:
2008-7-1 08:03
引用:
原帖由
深红喷火龙
于 2008-6-30 22:20 发表
转移话题无罪……
楼上的头像太惊人了,使自己画的么……水平……—个字,高~
ps:那就有请火sama……
头像是Sata在某人过生日时候的贺礼……被缩小了,签名看不到……
欢迎光临 口袋社区-Poke The BBS (https://ww.poketb.com/)
Powered by Discuz! 6.1.0F