永发信息网

Visual C++计算数列的总和

答案:2  悬赏:40  手机版
解决时间 2021-03-19 14:51
#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,应该改变哪里?
最佳答案
先算10之后,再算比10小的,输出都是55,为什么?——可能程序错了呗。
还有如果用double,应该改变哪里?——输入输出格式中的 %f 改为 %lf
全部回答
不要求界面和用类实现的话,用下面这个吧: #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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯