用C语言设计一个计算器,具有加减乘除的功能即可,看一下我的程序错在哪里了

#include<stdio.h>#include<stdlib.h>#include<math.h>#include<windows.h>floatadd(floata... #include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h>

float add(float a,float b); /*调用函数实现加法*/
float sub(float a,float b); /*调用函数实现减法*/
float mul(float a,float b); /*调用函数实现乘法*/
float dv(float a,float b); /*调用函数实现除法*/
void delay(void); /*仅起延时作用*/
typedef struct jisuanqi //定义结构体存储计算式并对结构体起另名
{
float a; //第一个数
char c; //运算符
float b; //第二个数
char e; //存储等号
float d; //结果数
} AA;
void main()
{
FILE *fp; //用文件永久式储蓄计算式及结果
AA num[100];
float a,b; //a,b分别存储两个数
char ch; //ch用于选择是否继续进行计算
char t='1'; //t用于选择操作类型
int i=0,j; //i为结构体数组下标,j应用于输出结构体元素
printf("\t*********************欢迎使用本计算器!*********************\n");
printf("\t使用说明:数字+enter+运算符+enter+数字+enter,才可得正确结果\n");
delay(); //仅起延时作用
do
{
system("cls"); //清除屏幕
loop: printf("\t请选择需操作的类型:\n\t1、计算式子2、输出并查看计算式及其结果3、退出计算器\n\t\t\t\t");
//定位在这里可避免查看计算式时清除屏幕
scanf("\n%c",&t); //特别注意这里的\n,我始终不明白,但又必须加这\n
getchar();
switch(t) //选择操作类型
{
case '1': //输入计算式及计算和存储
{
ch='1';
}
while(ch=='1') /*用于循环操作*/
{
printf("\t************************************************************\n\t");
printf("输入的数字是:");
scanf("%f",&a);
num[i].a=a;
num[i].e='=';
printf("\t输入的计算符是:");
getchar();
scanf("%c",&ch);
num[i].c=ch;
printf("\t");
switch(ch) /*用于选择算术类型*/
{
case '+':printf("输入的数字是:");scanf("%f",&b);num[i].b=b;num[i].d=add(a,b);
printf("\t************************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
case '-':printf("输入的数字是:");scanf("%f",&b);num[i].b=b;num[i].d=sub(a,b);
printf("\t************************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
case '*':printf("输入的数字是:");scanf("%f",&b);num[i].b=b;num[i].d=mul(a,b);
printf("\t************************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
case '/':printf("输入的数字是:");scanf("%f",&b);
{
if(b==0)
{printf("\tError,divided by zero.\n");break;}
else
{num[i].b=b;num[i].d=dv(a,b);
printf("\t***********************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
}
}
default:printf("输入有误\n");
}
}
}
帮我把这个程序改好行吗?
展开
 我来答
haiyangfenghuo
推荐于2016-05-18 · TA获得超过2439个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:776万
展开全部
char e; //存储等号
float d; //结果数
} AA;
void main()
{
FILE *fp; //用文件永久式储蓄计算式及结果
AA num[100];
float a,b; //a,b分别存储两个数
char ch; //ch用于选择是否继续进行计算
char t='1'; //t用于选择操作类型
int i=0,j; //i为结构体数组下标,j应用于输出结构体元素
printf("\t*********************欢迎使用本计算器!*********************\n");
printf("\t使用说明:数字+enter+运算符+enter+数字+enter,才可得正确结果\n");
delay(); //仅起延时作用
do
{
system("cls"); //清除屏幕
loop: printf("\t请选择需操作的类型:\n\t1、计算式子2、输出并查看计算式及其结果3、退出计算器\n\t\t\t\t");
//定位在这里可避免查看计算式时清除屏幕
scanf("\n%c",&t); //特别注意这里的\n,我始终不明白,但又必须加这\n
getchar();
switch(t) //选择操作类型
{
case '1': //输入计算式及计算和存储
{
ch='1';
}
while(ch=='1') /*用于循环操作*/
{
printf("\t************************************************************\n\t");
printf("输入的数字是:");
scanf("%f",&a);
num[i].a=a;
num[i].e='=';
printf("\t输入的计算符是:");
getchar();
scanf("%c",&ch);
num[i].c=ch;
printf("\t");
switch(ch) /*用于选择算术类型*/
{
case '+':printf("输入的数字是:");scanf("%f",&b);num[i].b=b;num[i].d=add(a,b);
printf("\t************************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
case '-':printf("输入的数字是:");scanf("%f",&b);num[i].b=b;num[i].d=sub(a,b);
printf("\t************************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
case '*':printf("输入的数字是:");scanf("%f",&b);num[i].b=b;num[i].d=mul(a,b);
printf("\t************************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
case '/':printf("输入的数字是:");scanf("%f",&b);
{
if(b==0)
{printf("\tError,divided by zero.\n");break;}
else
{num[i].b=b;num[i].d=dv(a,b);
printf("\t***********************************************************\n\t");printf("\t%f%c%f=%f\n",num[i].a,num[i].c,num[i].b,num[i].d);break;
}
}
default:printf("输入有误\n");
}
}
}
}while (1);
}
更多追问追答
追问
还是不能运行?
追答
因为你的这些函数只有声明,没有定义:
float add(float a,float b); /*调用函数实现加法*/
float sub(float a,float b); /*调用函数实现减法*/
float mul(float a,float b); /*调用函数实现乘法*/
float dv(float a,float b); /*调用函数实现除法*/
void delay(void); /*仅起延时作用*/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式