搜索
首页 电脑/网络 程序设计 其他编程语言

如何用vc 制作一个经济指标计算程?

如何用vc 制作一个经济指标计算程序

全部回答

2014-08-19

47 0
    #include #include #include #include #define N 26 /*根据自己的需要,可以定义要进行运算的数字的最大个数*/ int main(void) { int i,j,k; double num[N]; char sym[N],str[12]; loop1: printf("Input a calculation method like 1+2^3-4*5/10=↙\nPlease:"); /*可以进行加、减、乘、除、乘方的运算*/ for(i=0;i<N;i++) { scanf("%lf%c",&num[i],&sym[i]); /*num[N]用来存储运算数字,sym[N]用来存储运算符号*/ if(sym[i]=='=') break; /*当出现等号时,表示计算式结束*/ } for(j=0;j<=i;j++) if(sym[j]=='^') /*判断优先级中的乘方,它是首先要处理的*/ { if(num[j]==0&&num[j+1]==0) {printf("Input error!\n");goto loop2;} /*指数为零时,底数不为零。
    否则,进入标记位置*/ else num[j]=pow(num[j],num[j+1]); /*将本次出现的乘方运算结果,放在前一项中*/ for(k=j;k<i;k++) { sym[k]=sym[k+1]; /*依次将后面的符号替换到前面,因为符号中有"=",所以要多替换1次*/ if(k!=i-1) num[k+1]=num[k+2]; /*依次将后面的数字替换到前面*/ } j--,i--; /*"j--"表示下一次从本次的位置开始继续判断是否为优先级中的乘方,因为本次位置替换后的符号仍然可能是"^", "i--"表示下次处理的数字将减少1个*/ } for(j=0;j<=i;j++) { if(sym[j]=='*') /*当计算式中没有"^"时,将开始判断优先级中的"*",它是其次要处理的*/ { num[j]=num[j]*num[j+1]; /*将本次出现的乘法运算结果,放在前一项中*/ for(k=j;k<i;k++) { sym[k]=sym[k+1]; /*依次将后面的符号替换到前面,因为符号中有"=",所以要多替换1次*/ if(k!=i-1) num[k+1]=num[k+2]; /*依次将后面的数字替换到前面*/ } j--,i--; /*"j--"表示下一次从本次的位置开始继续判断是否为优先级中的乘法,因为本次位置替换后的符号仍然可能是"*", "i--"表示下次处理的数字将减少1个*/ } if(sym[j]=='/') /*当计算式中没有"^"时,将开始判断优先级中的"/",它也是其次要处理的*/ { if(num[j+1]==0) {printf("Input error!\n");goto loop2;} /*分母不为零。
    否则,进入标记位置*/ else num[j]=num[j]/num[j+1]; /*将本次出现的除法运算结果,放在前一项中*/ for(k=j;k<i;k++) { sym[k]=sym[k+1]; /*依次将后面的符号替换到前面,因为符号中有"=",所以要多替换1次*/ if(k!=i-1) num[k+1]=num[k+2]; /*依次将后面的数字替换到前面*/ } j--,i--; /*"j--"表示下一次从本次的位置开始继续判断是否为优先级中的除法,因为本次位置替换后的符号仍然可能是"/", "i--"表示下次处理的数字将减少1个*/ } } for(j=0;j<=i;j++) switch(sym[j]) /*最后只剩"+"和"-"了,将每次运算的结果放在后一项中*/ { case '+':num[j+1]=num[j]+num[j+1];break; case '-':num[j+1]=num[j]-num[j+1];break; case '=':break; } gcvt(num[i],12,str); /*将浮点数转换成字符串*/ for(j=0;j<12;j++) if(str[j]=='。
    '&&!str[j+1]) str[j]=str[j+1]; /*当小数点后紧接字符串结束标志时,原本应该输出如"5。
    ",处理后为"5"*/ printf("Result=%s\n",str); /*计算式的结果,最终存放在最后一项的字符串中*/ loop2: printf("Continue(y/n)?"); /*是否继续,y表示继续,n表示退出*/ switch(getch()) { case 'y':{system("cls");goto loop1;} /*点击y,清空屏幕,返回标记位置*/ case 'n':exit(0); /*点击n,退出程序*/ default :exit(0); /*点击其它键,也退出程序*/ } getch(); return 0; } 说明:必须将扩展名设置为c,若是cpp,将无法通过系统的编译。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
其他编程语言
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
其他编程语言
VB
数据库
C/C++
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
其他编程语言
举报
举报原因(必选):
取消确定举报