神龙pk挂里的详细设置:好似语法错了,谁能帮我一下.

来源:百度文库 编辑:高校问答 时间:2024/04/28 06:38:24
#include <stdio.h>
#include <math.h>
int p;
char a[20];
/* 数组a用来保存表达式,p用于记录位置 */
float getnum( int k )
{
float sum=0,temp=0;
int point=1;
p=k;
while( a[p]<='9'&&a[p]>='0'||a[p]=='.' )//当是数字时,转化为实数
{
if( a[p]=='.' ) //如果在小数点后面
{
p++;
while( a[p]<='9'&&a[p]>='0' )
{
temp=temp+pow( (float)(a[p]-'0'),-point ); //像0.54那样,为5*10^(-1)+4*10^(-2)
point--; //控制指数部分
p++;
}
sum=sum+temp;
}
else //如果在小数字点前面
{
temp=(float)(a[p]-'0');
sum=sum*10+temp;
p++;
printf("%f ",sum);getch();
}
}
/* ......可以加其它数据 */
return sum;
}

float treat(int k)
{
float a1=0;
float a2;
p=k;
if( a[p]=='{'||a[p]=='['||a[p]=='(' )
a1=answer( p+1 );
else a1=getnum( p );

/*if( a[p]=='+' )
return a1+treat( p+1 );

if( a[p]=='-' )
return a1-treat( p+1 ); */

while( a[p]=='*'||a[p]=='/' )
{
if( a[p]=='*' )
a1= a1*getnum( p+1 );

if( a[p]=='/' )
{
a2=getnum( p+1 );
if( a2==0 )
{printf("Error: divior can't be zero.");getch();exit(0);}
a1= a1/a2;
}
}

/*if( (a[p]==')'||a[p]==']'||a[p]=='}')||a[p]=='\0'||a[p]=='+'||a[p]=='-' )
{
if( a[p]!='\0' ) p++;是为了在括号计算时可以继续下 */
return a1;

}

float answer( int k )
{
float ans=0;
p=k;
while( a[p]!='\0'&&a[p]!=')'&&a[p]!=']'&&a[p]!='}' )
{
if( a[p]=='{'||a[p]=='['||a[p]=='(' )
ans=answer( ++p );
else if( a[p]=='+' )
ans=ans+treat( ++p );
else if( a[p]=='-' )
ans=ans-treat( ++p );
else ans=treat( p );
}
if( a[p]!=')'||a[p]!=']'||a[p]!='}' ) p++; /* 让计算继续下去 */
return ans;
}

main()
{
char c;
printf("input the data:\n");
gets( a );
printf("\nthe result is : %f ",answer(0));
getch();
}
错误 noname.c 73: 与'answer'声明中的类型不匹配
好像格式不好,本好设置好的,可是都展示不出来,这样就难看多了,真不好意思.
zh_m_zhou - 助理 三级 :很多谢你的帮助,可是改了以后还是不行.可是我觉得不用改了;float answer( int k ) 是表示传入一个整形变量k,返回一个浮点型数据.而ans定义为浮点型应该没问题.

不好意思,看错了。看来不调试还是不行,这回帮你认真调试了,结果是缺少了函数申明。修改如下:



#include <stdio.h>
#include <math.h>
int p;
char a[20];
/* 数组a用来保存表达式,p用于记录位置 */
float getnum( int k )

这段开头程序中添改成:

#include <stdio.h>
#include <math.h>
int p;
char a[20];
float treat(int k) ; //函数申明
float answer( int k ); //函数申明
/* 数组a用来保存表达式,p用于记录位置 */
float getnum( int k )

后面不变。

我这里已经通过了调试,也祝你好运!