麻烦c++高手帮忙看看这个程序哪里错了,怎么改 10
#include<iostream.h>#include<stdlib.h>#include<string.h>intsum(inti,char*p[10]);intsu...
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int sum( int i,char *p[10]);
int sum_sum(int a,int i,char *p[10]);
int main(int argc,char *argv[])
{
int c,i=1;
c=sum(i,argv);
i=i+3;
while(i+2<argc)
{
c=sum_sum(c,i,argv);
i=i+2;
}
cout<<c<<endl;
}
int sum(int i,char *p[10])
{
int c;
if(strcmp(p[i+1],"+")==0)
c=atoi(p[i])+atoi(p[i+2]);
if((p[i+1],"-")==0)
c=atoi(p[i])-atoi(p[i+2]);
if(strcmp(p[i+1],"*")==0)
c=atoi(p[i])*atoi(p[i+2]);
if(strcmp(p[i+1],"/")==0)
c=atoi(p[i])/atoi(p[i+2]);
return c;
}
int sum_sum(int a,int i,char *p[10])
{
int c;
if(strcmp(p[i],"+")==0)
c=a+atoi(p[i+1]);
if(strcmp(p[i],"-")==0)
c=a-atoi(p[i+1]);
if(strcmp(p[i],"*")==0)
c=a*atoi(p[i+1]);
if(strcmp(p[i],"/")==0)
c=a/atoi(p[i+1]);
return c;
} 展开
#include<stdlib.h>
#include<string.h>
int sum( int i,char *p[10]);
int sum_sum(int a,int i,char *p[10]);
int main(int argc,char *argv[])
{
int c,i=1;
c=sum(i,argv);
i=i+3;
while(i+2<argc)
{
c=sum_sum(c,i,argv);
i=i+2;
}
cout<<c<<endl;
}
int sum(int i,char *p[10])
{
int c;
if(strcmp(p[i+1],"+")==0)
c=atoi(p[i])+atoi(p[i+2]);
if((p[i+1],"-")==0)
c=atoi(p[i])-atoi(p[i+2]);
if(strcmp(p[i+1],"*")==0)
c=atoi(p[i])*atoi(p[i+2]);
if(strcmp(p[i+1],"/")==0)
c=atoi(p[i])/atoi(p[i+2]);
return c;
}
int sum_sum(int a,int i,char *p[10])
{
int c;
if(strcmp(p[i],"+")==0)
c=a+atoi(p[i+1]);
if(strcmp(p[i],"-")==0)
c=a-atoi(p[i+1]);
if(strcmp(p[i],"*")==0)
c=a*atoi(p[i+1]);
if(strcmp(p[i],"/")==0)
c=a/atoi(p[i+1]);
return c;
} 展开
展开全部
你这个程序是完成简单的计算器功能,需要修改的注意有以下几个地方
1.i的值,数组的起始下标是0,而不是1
2.sum函数,sum函数需要给c设置初值,我使用了第一个参数
不然如果没有+-*/运输费的话输出的就是乱值
3.sum_sum函数,同样也需要给c设置初值
这个程序比较简单,实际使用过程中还需要进行很多的错误处理
简单修改了代码,argc,argv都写死了,仅供测试
实际运行中请从命令行输入
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int sum( int i,char *p[10]);
int sum_sum(int a,int i,char *p[10]);
int main(int argc,char *argv[])
{
argc = 5;
argv[0] = "1";
argv[1] = "+";
argv[2] = "3";
argv[3] = "-";
argv[4] = "1";
int c,i=0;
c=sum(i,argv);
i=i+3;
while(i+2<=argc)
{
c=sum_sum(c,i,argv);
i=i+2;
}
cout<<c<<endl;
return 0;
}
int sum(int i,char *p[10])
{
int c;
c = atoi(p[0]);
if(strcmp(p[i+1],"+")==0)
c=atoi(p[i])+atoi(p[i+2]);
if((p[i+1],"-")==0)
c=atoi(p[i])-atoi(p[i+2]);
if(strcmp(p[i+1],"*")==0)
c=atoi(p[i])*atoi(p[i+2]);
if(strcmp(p[i+1],"/")==0)
c=atoi(p[i])/atoi(p[i+2]);
return c;
}
int sum_sum(int a,int i,char *p[10])
{
int c;
c = a;
if(strcmp(p[i],"+")==0)
c=a+atoi(p[i+1]);
if(strcmp(p[i],"-")==0)
c=a-atoi(p[i+1]);
if(strcmp(p[i],"*")==0)
c=a*atoi(p[i+1]);
if(strcmp(p[i],"/")==0)
c=a/atoi(p[i+1]);
return c;
}
1.i的值,数组的起始下标是0,而不是1
2.sum函数,sum函数需要给c设置初值,我使用了第一个参数
不然如果没有+-*/运输费的话输出的就是乱值
3.sum_sum函数,同样也需要给c设置初值
这个程序比较简单,实际使用过程中还需要进行很多的错误处理
简单修改了代码,argc,argv都写死了,仅供测试
实际运行中请从命令行输入
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int sum( int i,char *p[10]);
int sum_sum(int a,int i,char *p[10]);
int main(int argc,char *argv[])
{
argc = 5;
argv[0] = "1";
argv[1] = "+";
argv[2] = "3";
argv[3] = "-";
argv[4] = "1";
int c,i=0;
c=sum(i,argv);
i=i+3;
while(i+2<=argc)
{
c=sum_sum(c,i,argv);
i=i+2;
}
cout<<c<<endl;
return 0;
}
int sum(int i,char *p[10])
{
int c;
c = atoi(p[0]);
if(strcmp(p[i+1],"+")==0)
c=atoi(p[i])+atoi(p[i+2]);
if((p[i+1],"-")==0)
c=atoi(p[i])-atoi(p[i+2]);
if(strcmp(p[i+1],"*")==0)
c=atoi(p[i])*atoi(p[i+2]);
if(strcmp(p[i+1],"/")==0)
c=atoi(p[i])/atoi(p[i+2]);
return c;
}
int sum_sum(int a,int i,char *p[10])
{
int c;
c = a;
if(strcmp(p[i],"+")==0)
c=a+atoi(p[i+1]);
if(strcmp(p[i],"-")==0)
c=a-atoi(p[i+1]);
if(strcmp(p[i],"*")==0)
c=a*atoi(p[i+1]);
if(strcmp(p[i],"/")==0)
c=a/atoi(p[i+1]);
return c;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询