c语言计算器码修改

来源:百度知道 编辑:UC知道 时间:2024/06/03 03:56:29
#include<stdio.h>
#include<math.h>
void displaymenu();
double add(double a,double b);
double sub(double a,double b);
double multi(double a,double b);
double div(double a,double b);
int leijia(int a,int b);
int qiuyu(int a,int b);
int jiecheng(int a);
main()
{
int choice;
double a,b;
double c;
int x,y;
int s=0;
int w=0;
int l=0;
displaymenu();
scanf("%d",&choice);
switch(choice)
{
case 1:scanf("%lf,%lf",&a,&b);c=add(a,b);printf("%lf",c);
case 2:scanf("%lf,%lf",&a,&b);c=sub(a,b);printf("%lf",c);
case 3:scanf("%lf,%lf",&a,&b);c=multi(a,b);printf("%lf",c);
case 4:scanf("%lf,%lf",&a,&b);c=div(a,b);
if(b=0)
printf("ERRO!");
else
printf("%lf",c);
case 5:scanf("%d,%d",&x,&y);s=leijia(x,y);p

你的错误太多了;
主要是switch语句中的错误,没有加break,if语句错误(y=0)正确表示为:(y==0) 。还有你的阶乘函数返还短整形,w的值也是短整形,7以上的阶乘就溢出了就会出错,还有你要注意的是c=jiecheng(x);printf("%d",w);改.c=jiecheng(x);printf("%d",c);这样就容易知道输出的值是阶乘函数返还的值。当然你那样写在这段程序中也是不会报错只是输出的值不正确,
下面是我根据你的程序做了一些基本的修改,在TC上面运行正常:
#include<stdio.h>
#include<math.h>
void displaymenu();
double add(double a,double b);
double sub(double a,double b);
double multi(double a,double b);
double div(double a,double b);
int leijia(int a,int b);
int qiuyu(int a,int b);
unsigned long int jiecheng(int a);
main()
{
int choice;
double a,b;
double c;
int x,y;
unsigned long int s=0;
int w=0;
int l=0;
displaymenu();
scanf("%d",&choice);
switch(choice)
{
case 1:scanf("%lf,%lf",&a,&b);c=add(a,b);printf("%lf",c);break;
case 2:scanf("%lf,%lf",&a,&b);c=sub(a,b);printf("%lf"