| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:帮忙看看我的代码,教下我如何计算1+2+sin30这样的
只看楼主 加入收藏
hc810787576
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
帮忙看看我的代码,教下我如何计算1+2+sin30这样的
#include<stdio.h>
#include<math.h>
#include<ctype.h>
#define pi 3.1415926
#include<stdlib.h>
void function2(float x,char name[3]);      /*用于计算三角函数*/
char token[61]; /*存放表达式字符串的数组*/
int n=0;
void error(void) /*报告错误函数*/
{
printf("ERROR!\n");
exit(1);
}
void match(char expected) /*检查字符匹配的函数*/
{
if(token[n]==expected)
token[++n]=getchar();
else error();
}
double term(void); /*计算乘除的函数*/
double factor(void); /*处理括号和数字的函数*/
double exp(void) /*计算加减的函数*/
{
double temp=term();
while((token[n]=='+')||(token[n]=='-'))
switch(token[n])
{
case'+':match('+');
temp+=term();
break;
case'-':match('-');
temp-=term();
break;
}
return temp;
}
double term(void)
{
double div;
double temp=factor();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':match('*');
temp*=factor();
break;
case'/':match('/');
div=factor();
if(div==0) /*处理除数为零的情况*/
{
printf("The divisor is zero!\n");
exit(1);
}
temp/=div;
break;
}
return temp;
}
double factor(void)
{
double temp;
char number[61];
int i=0;
if(token[n]=='(')
{
match('(');
temp=exp();
match(')');
}
else if(isdigit(token[n])||token[n]=='.')
{
while(isdigit(token[n])||token[n]=='.') /*将字符串转换为浮点数*/
{
number[i++]=token[n++];
token[n]=getchar();
}
number[i]='\0';
temp=atof(number);
}
else error();
return temp;
}
main()
{
double result;
char choise1,choise2;
char name[3];
float num;
x:
printf("计算包含三角函数吗?(y/n)\n");
scanf("%c",&choise1);
getchar();
if(choise1=='n'||choise1=='N')
{do
{
printf("请输入普通四则运算:\n");
FILE *data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return 0;
token[n]=getchar();
result=exp();
if(token[n]=='\n')
{
token[n]='\0';
printf("%s=%g\n",token,result);
fprintf(data,"%s=%g\n",token,result);
}
else error();
printf("继续?(y/n)\n");
scanf("%c",&choise2);
            getchar();
            fclose(data);
}while(choise2=='y'||choise2=='Y');}
else if(choise1=='y'||choise1=='Y')
{
            printf("请输入需要计算的三角函数名与度数(中间以空格隔开):\n");
            scanf("%s%f",name,&num);
            getchar();
            printf("输入的角度为:%f\n",num);
            printf("输入的三角函数为:%s\n",name);
            function2(num,name);
            }
            
else
{       printf("输入错误,请重新输入!\n");
        printf("\n");
        goto x;
}
printf("谢谢使用!\n");
return 0;
getchar();
}
void function2(float x,char name[3])/*计算三角函数*/
{
    float m,n,i,j;
    m=(x*pi)/180;
    printf("此度数的所有三角函数结果为:\n");
    n=sin(m);
    printf("sin %.2f=%.2f\n",x,n);
    i=cos(m);
    printf("cos %.2f=%.2f\n",x,i);
    if(i!=0)
    {
    j=n/i;
    printf("tan %.2f=%.2f\n",x,j);
    printf("\n\n");
    }
    else
    {
        printf("tan的值不存在\n");
        printf("\n\n");
    }
}
2015-10-25 10:41
hc810787576
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
收藏
得分:0 
注册没上过。。不多分。。
2015-10-25 10:42
sally02468
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:17
专家分:14
注 册:2015-10-17
收藏
得分:10 
我也差不多

生活可以廉价,但是梦想不可以
2015-10-25 10:44
hc810787576
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
收藏
得分:0 
回复 3楼 sally02468
帮我看看代码,教一下我呗
2015-10-25 10:50
快速回复:帮忙看看我的代码,教下我如何计算1+2+sin30这样的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022243 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved