69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
int main()
{
char array[30],temp[10];
int i,j;
int a=0,b=0,c=0;
int neg,equal;
int add(int j,char *temp,int *neg,int *equal);
void clear(int *j,int *neg);
//输入
printf("intput the equantion :");
gets(array);
//初始化
j=0;
neg=0;
equal=0;
strlwr(array);
//扫描
for(i=0;i<(int)strlen(array);i++)
{
//数字
if(array[i]>47&&array[i]<58)
{
temp[j]=array[i];
j++;
if(i+1==(int)strlen(array))//以数字结尾
{
c+=add(j,temp,&neg,&equal);
clear(&j,&neg);
}
}
//X
if(array[i]=='x')
{
//x*x||x^2二次项--&&--i<28
if(i<28&&((array[i+1]=='*'&&array[i+2]=='x')||(array[i+1]=='^'&&array[i+2]=='2')))
{
if(i==0||(i>0&&array[i-1]=='+')) a+=1; //【+x^2】
if(i>0&&array[i-1]=='-') a-=1; //【-x^2】
if(i>0&&array[i-1]>47&&array[i+1]<58) //【ax^2】
{
a+=add(j,temp,&neg,&equal);
clear(&j,&neg);
}
i+=2;//一共三个字符,跳过后面两个
}
else//X一次项
{
if(i==0||(i>0&&array[i-1]=='+')) b+=1; //【+x】
if(i>0&&array[i-1]=='-') b-=1; //【-x】
if(i>0&&array[i-1]>47&&array[i+1]<58) //【bx】
{
b+=add(j,temp,&neg,&equal);
clear(&j,&neg);
}
}
}
//"+"
if(array[i]=='+')
{
if((array[i-1]>47&&array[i-1]<58)&&!(array[i-1]=='2'&&array[i-2]=='^')) //+前面是数字而且不是^2
{
c+=add(j,temp,&neg,&equal);
clear(&j,&neg);
}
}
//"-"
if(array[i]=='-')
{
if(i==0) neg=1;
if((array[i-1]>47&&array[i-1]<58)&&!(array[i-1]=='2'&&array[i-2]=='^')) //-前面是数字而且不是^2
{
c+=add(j,temp,&neg,&equal);
clear(&j,&neg);
}
neg=1; //标记负号
}
//"="
if(array[i]=='=')
{
if((array[i-1]>47&&array[i-1]<58)&&!(array[i-1]=='2'&&array[i-2]=='^')) //=前面是数字而且不是^2
{
c+=add(j,temp,&neg,&equal);
clear(&j,&neg);
}
equal=1; //标记等号
}
}
printf("%d,%d,%d",a,b,c);
return 0;
}
int add(int j,char *temp,int *neg,int *equal)
{
int itemp=0,i,e;
for(i=0,e=1;i<j;i++) //j从零累加,j++多一个以后与i从零累加到i<j等效
{
itemp+=(*(temp+j-1-i)-48)*e;
e*=10;
}
if(*neg) itemp*=(-1);
if(*equal) itemp*=(-1);
return itemp;
}
void clear(int *j,int *neg)
{
*j=0;
*neg=0;
}
#include<string.h>
int main()
{
char array[30],temp[10];
int i,j;
int a=0,b=0,c=0;
int neg,equal;
int add(int j,char *temp,int *neg,int *equal);
void clear(int *j,int *neg);
//输入
printf("intput the equantion :");
gets(array);
//初始化
j=0;
neg=0;
equal=0;
strlwr(array);
//扫描