2023-12-31 02:53来源:m.sf1369.com作者:宇宇
#include <stdio.h>
#include <stdlib.h>
void main()
{
char str[] = 1234;
float num;
printf(the sting is %s\n,str);
num = (float)atof(str);
printf(the number is %.0f\n,num);
}
栈操作~
输入的弄成字符串。
如:a+(b+c*(d+e))
先检索“(”入栈,b入栈,+入栈,c入栈,*入栈,后面的不是数字那么“(”入栈,+,入栈,e入栈,
“)”入栈,遇到“)”,出栈操作,直到遇到第一个“(”。
得到字符:d+e,通过算法计算出值D,然后把D入栈。那么栈中的字符为:a+(b+c*D
向后判断一步看是不是乘或除,不是继续向后入栈,是就出栈。
得到c*D,通过算法计算值为C,入栈,那么栈中的字符为:a+(b+C,向后判断,无乘或除运算,继续入栈:“)”,遇到“)”,出栈操作,直到遇到第一个“(”,得到字符串:b+c,算法计算值为B,入栈
栈中字符串为:a+B 字符串结束,出栈操作计算出a+B,值。
如果字符串的式子很长的话,就反复的入栈出栈计算。
思路是这样的......
关于COS,SIN类的关键字,也是上面的思路,
(入栈,直到遇到)出栈,先计算出括号里的,然后后退一步判断前面的是乘除或者关键字,
如:sin(0.1+0.2)
操作得出sin0.3然后判断前面的是不是关键字,是那句计算sin0.3。
但是遇到关键字的时候不是一个一个字符在一起的,你可以入栈的时候判断是不是字母,是字母,那么入栈直到不是字母为止,出栈判断关键字也是一样......
不明白的继续问~
#include stdio.h int svalue(long m) { long temp=m,n=0; while(temp) { n=n*10+temp%10; temp/=10; } if(n==m) return 1; else return 0; } main() { int m; for(m=11;m<1000;m++) { if(svalue(m) && svalue(m*m) && svalue(m*m*m)) printf(%d ,m); } }