- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
加减四则运算
问题描述:
输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值
注:
3.1、表达式只含 +, -, *, / 四则运算符,不含括号
3.2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况
3.3、要考虑加减乘除按通常四则运算规定的计算优先级
3.4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生
3.5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况
要求实现函数:
#includestdio.h
#includestring.h
#includestdlib.h
int fun(char *a,int len) //字符数组和字符数组的长度
{ int num[20];
char str[20];
int k1=0,k2=0;
int data=0;
for(int i=0;ilen;i++) //主要运算
{ if(a[i]=0a[i]=9)
num[k1++]=a[i]-0;
if(a[i]==-||a[i]==+)
str[k2++]=a[i];
if(a[i]==*)
{num[k1-1]=num[k1-1]*(a[i+1]-0);i++;}//遇见*,就运算,结果保存在数组中
if(a[i]==/)
{ num[k1-1]=num[k1-1]/(a[i+1]-0);i++;}
}
int temp=num[0];
int j=0; //两个数组只剩下数组和加减运算符
while(jk2){ //顺序运算
if(str[j]==-)
temp=temp-num[j+1];
else if(str[j]=+)
temp=temp+num[j+1];
j++;
}
return temp;
}
int main()
{ char *a;
int k,len;
a=(char*)malloc(sizeof(char));
gets(a);
len=strlen(a);
k=fun(a,len);
printf(%d\n,k);
return 0;
}
三、题目描述(50分): 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:1、操作数为正整数,不需要考虑计算结果溢出的情况。2、若输入算式格式错误,输出结果为“0”。
要求实现函数: void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例 输入:“4 + 7” 输出:“11”输入:“4 - 7” 输出:“-3”输入:“9 ++ 7” 输出:“0” 注:格式错误
[cpp] view plain
#includestdio.h
#includestring.h
#includestdlib.h
#define MAXCHAR 256
void arithmetic(const char* pInputStr , long lInputLen , char* pOutputStr)
{
int i , j , num1 , num2 , result , num_space;
char buffer[4];
bool add , sub;
add = sub = false;
for(i = 0 , num_space = 0 ; i lInputLen ; ++i)
{
if(pInputStr[i] == )
++num_space;
}
if(2 != num_space) //空格数非法
{
pOutputStr[0] = 0;
pOutputStr[1] = \0;
文档评论(0)