Visual C++计算数列的总和
解决时间 2021-03-19 14:51
- 提问者网友:王者佥
- 2021-03-18 20:02
#include
void main ()
{
float m,b=1,sum=0;
printf("******************\n");
printf("计算数列\n");
printf("******************\n");
while(m!=-1)
{printf("\n给出最大值:");
scanf("%f",&m);
if (m<0)
{printf("输入有误\n");}
else
{while (b<=m)
{
sum=sum+b;
b=b+1;
}
}
printf("最后一项%f\n",m);
printf("数列的和%f\n",sum);
}
}
先算10之后,再算比10小的,输出都是55,为什么?
还有如果用double,应该改变哪里?
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-03-18 20:14
先算10之后,再算比10小的,输出都是55,为什么?——可能程序错了呗。
还有如果用double,应该改变哪里?——输入输出格式中的 %f 改为 %lf
全部回答
- 1楼网友:持酒劝斜阳
- 2021-03-18 21:33
不要求界面和用类实现的话,用下面这个吧:
#include
#include
#include
#include
#include
int resultprocess(char mexp[],double * result);
int tokenprocess(char mexp[],double shuzhi[],char signs[]);
double resultadd(double shuzhi[],char signs[],int sp);
void main()
{
char mexp[100];
double result=0;
printf("please input the maths expression:\n\nmexp=");
gets(mexp);
if(resultprocess(mexp,&result))
printf("\nthe result of the maths expression is:\n\nresult=%lf\n",result);
else
printf("\nthe maths expression is wrong,can't be processed!");
getch();
}
int resultprocess(char mexp[],double * result)
{
char signs[100];
double shuzhi[100];
int sp;
sp=tokenprocess(mexp,shuzhi,signs);
if(sp>0)
{
*result=resultadd(shuzhi,signs,sp);
return 1;
}
else
return 0;
}
int tokenprocess(char mexp[],double shuzhi[],char signs[])
{
char strtemp[100],chartemp;
int shuzhiflag=0,spaceflag=0,dotflag=0,sp=0,i;
signs[0]='+';
for(i=0;mexp[i]!='\0';i++)
{
chartemp=mexp[i];
if(chartemp=='+'||chartemp=='-'||chartemp=='*'||chartemp=='/'||chartemp=='^')
{
if(shuzhiflag==0)
{
if(chartemp=='-'&&sp==0)
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
else
return 0;
}
else
{
shuzhi[sp]=atof(strtemp);
sp++;
shuzhiflag=0;
spaceflag=0;
dotflag=0;
signs[sp]=chartemp;
}
}
else
if(chartemp>='0'&&chartemp<='9')
{
if(spaceflag==2)
return 0;
else
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp=='.')
{
if(dotflag==1)
return 0;
else
if(dotflag==0&&shuzhiflag==0)
return 0;
else
{
dotflag=1;
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp==' ')
{
if(shuzhiflag>0)
spaceflag=2;
else
spaceflag=1;
}
else
return 0;
}
if(shuzhiflag>0)
{
shuzhi[sp]=atof(strtemp);
sp++;
return sp;
}
else
return 0;
}
double resultadd(double shuzhi[],char signs[],int sp)
{
int i;
double result=0;
for(i=1;i
我要举报
大家都在看
推荐资讯