求C语言的“计算器代码”(必须能在C++6.0上运行不出错)

随便一个计算器程序代码,考试用。必须在C++6.0上运行。100行以上的,特急!
唉!高分急求!!

难道就没有能办到的吗?

3小时内回答,好用再加200分!!!!

邮136775356 qq点com

刚才测试了下您回答的代码,出现以下错误,请帮我看下。
-------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\Cpp1.cpp(86) : error C2065: 'printf' : undeclared identifier
执行 cl.exe 时出错.
Cpp1.obj - 1 error(s), 0 warning(s)

试试这个以前发过

#include <stdlib.h> 
#include <math.h>
char* getn(char *c)
{
  int dot = 0;
  while(*c)
  {
    if (*c >= '0' && *c <='9'){}
    else if (*c == '.'){dot++;if (dot>2){return 0;}}
    else break;
    c++;
  }
  return c;
}
char mark(char m)
{
  switch(m){
    case 1:return '+';
    case 2:return '-';
    case 3:return '*';
    case 4:return '/';
    case 5:return '^';
  }
  return ' ';
}
char oper(char c)
{
  switch(c)
  {
    case '+':return 1;
    case '-':return 2;
    case '*':return 3;
    case '/':return 4;
    case '^':return 5;
  }
  return -1;
}
char* skipbrac(char* c, int* pri)
{
  while (*c == '(' || *c == ')')
  {
    if (*c == '(')*pri += 10;
    else if (*pri >=10) *pri -= 10;
    else return 0;
    c++;
  }
  return c;
}

int calc(char* exp)
{
  double op[100];
  double res = 0;
  int    n = 0;
  char   opr[100];
  char  *pos = exp;
  char  *nxt;
  int    pri = 0;
  pos = skipbrac(pos, &pri);
  while(pos && (nxt = getn(pos)))
  {
    if (*nxt == 0){break;}
    op[n] = atof(pos);
    nxt = skipbrac(nxt, &pri);
    if (!nxt)return -4;
    if (*nxt == 0)break;
    opr[n] = oper(*nxt)+pri;
    if (opr[n] < 0){return -1;}
    if (n++ > 99){return -2;}
    pos = nxt+1;
    pos = skipbrac(pos, &pri);
    if (!pos) return -4;
    if (*pos == 0)break;
    if (*pos >= '0' && *pos <='9'){}
    else return -3;
  }
  if (pri != 0) return -4;
  pos = skipbrac(pos, &pri);
  op[n] = atof(pos);
  while (n > 0)
  {
    char b = opr[0];
    int i = 0,j = 0;
    for (i=1;i<n;i++){if (opr[i]>=b){b=opr[i];j=i;}}
    b = b%10;
    printf("%f%c%f\n",op[j],mark(b),op[j+1]);
    switch(b)
    {
      case 1:op[j]= op[j]+op[j+1];break;
      case 2:op[j]= op[j]-op[j+1];break;
      case 3:op[j]= op[j]*op[j+1];break;
      case 4:if (op[j+1] != 0)op[j]= op[j]/op[j+1];
             else return -4;
             break;
      case 5:op[j] = pow(op[j],op[j+1]);break;
    }
    for (i=j;i<n;i++){op[i+1]=op[i+2];opr[i]=opr[i+1];}
    n--;
  }
  
  printf("\n%s=%f\n", exp, op[0]);
  return 0;
}
int main()
{
  calc("3*(1+1)*((2-5)*3)^2");
  calc("1+(2+2^2)*3/(4-2)-2+3/4");
  return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

用C++6.0上运行的,简单容易看懂的,我初学 设计一个稀疏多项式简单计算...
void main(){ int a,b;char op;printf("输入一个数");scanf("%d",&a);printf("\\n输入运算符:");scanf("%s",&op);printf("\\n输入另一个数");scanf("%d",&b);switch(op){ case '+':printf("\\n =%d\\n",a+b);break;case '-':printf("\\n =%d\\n",a-b);break;c...

c语言求错error C2065: 'printf' : undeclared identifier
这是你的代码运行的结果 ,没报错。我在VC++6.0上运行的。

...一下俄罗斯方块的c++代码能在VisuaiC++6.0上运行的急用,谢各位了...
int if_full(int y); \/\/判定是否满行 int get_table(int x, int y); \/\/获取棋盘上点信息 void paint(); \/\/绘制棋盘 void move_line(int y); \/\/整行下移 void set_count(int c); \/\/记录得分 int get_count(); \/\/获取得分private: int table[TABLE_SIZE][TABLE_SIZE];\/\/棋盘 int height, ...

用C语言写个程序,输入一个hello就能出来一个?
1、点击确定即可,创建出一个helloworld.c的小程序,然后我们就可以编写我们的Hello World小程序了。此时就需要我们的VC++ 6.0来编译此程序,编译无错误才运行此程序,编译按钮和运行按钮如下图的红色箭头处:2、或者可以点击组建工具栏下的编译菜单项,然后再点击执行菜单项,也有快捷键,按Ctrl+F7编译...

...可以在VC++ 6.0上运行的C++代码,再不行C也可以 在线等
point& a, const point& b) {return a.cost > b.cost;}int dij(int sx, int sy, int ex, int ey, int size,int matrix[][100], int K, int A, int B, int C) {priority_queue<point> q;int i;bool vis[100][100][11];point temp, temp2;dir[0][2] = dir[1][...

C语言编程 统计不同分数段学生人数
80之间的学生数=%d\\n",a[5]);printf("得分在60——41之间的学生数=%d\\n",a[6]);printf("得分在0——40之间的学生数=%d\\n",a[3]);system("pause");return 0;} 呵呵,初学者来的,锻炼一下自己同时希望能帮到你,已经在Microsoft Visual c++6.0上运行过,你可以把10替换成任何数 ...

C语言灵魂拷问: ++i为何比i++执行效率高!
对于i=10;(++i)+(++i)+(++i);这样的语句,C语言标准未作明确规定。不同的编译器会产生不同的结果,如VisaulC++6.0会计算出37,而其他编译器可能计算出39。理解求值顺序后,可以清晰地洞悉不同编译器的处理规则。回到最初的问题,对于printf("%d,%d",i++,++i);的求值问题,参数从左到右...

在C++6.0中,怎么求绝对值,用什么函数??
!最后,写程序别忘了注意头文件和主函数别写错了!!你要想在vc6.0上运行c语言,就把程序前面定义成:include<iostream> using namespace std;include<math.h>\/\/c++在头文件定义比较严格!!!int main(){ double a,b;scanf("%lf",&a);b=fabs(a);printf("%lf",b);return 0;} ...

c语言中strlen()怎么用
strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\\0为止,计数结果不包括\\0.其声明为:unsigned int strlen(char *s);比如定义字符串:char *p = "this is for testing";调用 strlen(p);返回的结果就是p中元素的个...

如何用Visual C++ 6.0创建文件?
Visual C++ 6.0是一种编程开发工具。学习计算机类专业的学生,刚开始的时候都会接触到这个软件吧。无论是C语言代码,还是C++语言代码,都可以在软件上运行。对于初学者来说,Visual C++ 6.0是一个陌生而又强大的工具。如何用它创建一个文件呢?下面就告诉大家具体的方法。打开Visual C++ 6.0软件,出现...

相似回答
大家正在搜